valtech-components 2.0.253 → 2.0.255
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"valtech-components.mjs","sources":["../../../projects/valtech-components/src/lib/components/atoms/avatar/avatar.component.ts","../../../projects/valtech-components/src/lib/services/icons.service.ts","../../../projects/valtech-components/src/lib/components/atoms/box/box.component.ts","../../../projects/valtech-components/src/lib/components/types.ts","../../../projects/valtech-components/src/lib/services/download.service.ts","../../../projects/valtech-components/src/lib/services/in-app-browser.service.ts","../../../projects/valtech-components/src/lib/services/navigation.service.ts","../../../projects/valtech-components/src/lib/components/atoms/button/button.component.ts","../../../projects/valtech-components/src/lib/components/atoms/button/factory.ts","../../../projects/valtech-components/src/lib/components/atoms/display/display.component.ts","../../../projects/valtech-components/src/lib/components/atoms/divider/divider.component.ts","../../../projects/valtech-components/src/lib/components/atoms/href/href.component.ts","../../../projects/valtech-components/src/lib/components/atoms/icon/icon.component.ts","../../../projects/valtech-components/src/lib/components/atoms/image/image.component.ts","../../../projects/valtech-components/src/lib/components/atoms/progress-bar/progress-bar.component.ts","../../../projects/valtech-components/src/lib/components/atoms/text/text.component.ts","../../../projects/valtech-components/src/lib/components/atoms/title/title.component.ts","../../../projects/valtech-components/src/lib/components/molecules/alert-box/alert-box.component.ts","../../../projects/valtech-components/src/lib/components/molecules/button-group/button-group.component.ts","../../../projects/valtech-components/src/lib/components/molecules/card/types.ts","../../../projects/valtech-components/src/lib/components/molecules/card/card.component.ts","../../../projects/valtech-components/src/lib/components/molecules/check-input/check-input.component.ts","../../../projects/valtech-components/src/lib/components/molecules/comment-input/comment-input.component.ts","../../../projects/valtech-components/src/lib/components/molecules/content-loader/content-loader.component.ts","../../../projects/valtech-components/src/lib/components/molecules/date-input/date-input.component.ts","../../../projects/valtech-components/src/lib/components/molecules/email-input/email-input.component.ts","../../../projects/valtech-components/src/lib/shared/utils/styles.ts","../../../projects/valtech-components/src/lib/components/molecules/expandable-text/expandable-text.component.ts","../../../projects/valtech-components/src/lib/components/molecules/file-input/file-input.component.ts","../../../projects/valtech-components/src/lib/components/molecules/hint/hint.component.ts","../../../projects/valtech-components/src/lib/components/molecules/hour-input/hour-input.component.ts","../../../projects/valtech-components/src/lib/components/molecules/link/link.component.ts","../../../projects/valtech-components/src/lib/components/molecules/links-cake/links-cake.component.ts","../../../projects/valtech-components/src/lib/components/molecules/notes-box/notes-box.component.ts","../../../projects/valtech-components/src/lib/components/molecules/number-input/number-input.component.ts","../../../projects/valtech-components/src/lib/components/molecules/password-input/password-input.component.ts","../../../projects/valtech-components/src/lib/components/molecules/pin-input/pin-input.component.ts","../../../projects/valtech-components/src/lib/components/molecules/title-block/title-block.component.ts","../../../projects/valtech-components/src/lib/components/molecules/progress-status/progress-status.component.ts","../../../projects/valtech-components/src/lib/components/molecules/prompter/prompter.component.ts","../../../projects/valtech-components/src/lib/components/molecules/radio-input/radio-input.component.ts","../../../projects/valtech-components/src/lib/shared/utils/text.ts","../../../projects/valtech-components/src/lib/components/molecules/searchbar/searchbar.component.ts","../../../projects/valtech-components/src/lib/components/molecules/select-search/select-search.component.ts","../../../projects/valtech-components/src/lib/components/molecules/select-input/select-input.component.ts","../../../projects/valtech-components/src/lib/components/molecules/text-input/text-input.component.ts","../../../projects/valtech-components/src/lib/shared/constants/storage.ts","../../../projects/valtech-components/src/lib/services/local-storage.service.ts","../../../projects/valtech-components/src/lib/services/theme.service.ts","../../../projects/valtech-components/src/lib/components/molecules/layered-card/layered-card.component.ts","../../../projects/valtech-components/src/lib/components/organisms/banner/banner.component.ts","../../../projects/valtech-components/src/lib/components/organisms/toolbar/toolbar.component.ts","../../../projects/valtech-components/src/lib/components/organisms/footer/footer.component.ts","../../../projects/valtech-components/src/lib/components/organisms/form/factory.ts","../../../projects/valtech-components/src/lib/components/organisms/form/form-footer/form-footer.component.ts","../../../projects/valtech-components/src/lib/shared/utils/dom.ts","../../../projects/valtech-components/src/lib/components/organisms/form/form.component.ts","../../../projects/valtech-components/src/lib/components/organisms/header/header.component.ts","../../../projects/valtech-components/src/lib/components/organisms/item-list/item-list.component.ts","../../../projects/valtech-components/src/lib/components/organisms/no-content/no-content.component.ts","../../../projects/valtech-components/src/lib/components/organisms/wizard/types.ts","../../../projects/valtech-components/src/lib/components/organisms/wizard/wizard-footer/wizard-footer.component.ts","../../../projects/valtech-components/src/lib/components/organisms/wizard/wizard.component.ts","../../../projects/valtech-components/src/lib/components/templates/layout/layout.component.ts","../../../projects/valtech-components/src/lib/components/templates/simple/simple.component.ts","../../../projects/valtech-components/src/lib/services/lang-provider/types.ts","../../../projects/valtech-components/src/lib/services/types.ts","../../../projects/valtech-components/src/lib/services/lang-provider/lang-provider.service.ts","../../../projects/valtech-components/src/lib/services/toast.service.ts","../../../projects/valtech-components/src/public-api.ts","../../../projects/valtech-components/src/valtech-components.ts"],"sourcesContent":["import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { IonAvatar } from '@ionic/angular/standalone';\nimport { AvatarMetadata } from './types';\n\n@Component({\n selector: 'val-avatar',\n standalone: true,\n imports: [IonAvatar],\n template: `\n <ion-avatar\n aria-hidden=\"true\"\n [class]=\"props.size\"\n [class.box]=\"props.box\"\n [class.grayscale]=\"props.grayscale\"\n (click)=\"onClickHandler()\"\n >\n <img alt=\"profile image\" [src]=\"props.image || props.default\" />\n </ion-avatar>\n `,\n styleUrls: ['./avatar.component.scss'],\n})\n/**\n * val-avatar\n *\n * Displays a user or profile image, optionally with a box style and different sizes.\n *\n * @example\n * <val-avatar [props]=\"{ image: 'url', size: 'medium', box: true }\" (onClick)=\"handler()\"></val-avatar>\n *\n * @input props: AvatarMetadata - Configuration for the avatar (image, size, box, default image)\n * @output onClick - Emits when the avatar is clicked\n */\nexport class AvatarComponent implements OnInit {\n @Input() props: AvatarMetadata;\n\n /**\n * Event emitted when the avatar is clicked.\n */\n @Output()\n onClick = new EventEmitter();\n\n constructor() {}\n\n ngOnInit() {}\n\n onClickHandler() {\n this.onClick.emit();\n }\n}\n","/* eslint-disable no-underscore-dangle */\n\n/**\n * Service for registering and managing custom Ionicons icons in the application.\n * Automatically registers a set of commonly used icons on initialization.\n */\n\nimport { Injectable } from '@angular/core';\nimport { addIcons } from 'ionicons';\nimport {\n addCircleOutline,\n addOutline,\n alertCircleOutline,\n alertOutline,\n arrowBackOutline,\n arrowDownOutline,\n arrowForwardOutline,\n businessOutline,\n calendarOutline,\n chatbubblesOutline,\n checkmarkCircleOutline,\n checkmarkOutline,\n chevronDownOutline,\n chevronForwardOutline,\n clipboardOutline,\n closeOutline,\n copyOutline,\n ellipsisHorizontalOutline,\n eyeOffOutline,\n eyeOutline,\n filterOutline,\n heart,\n heartOutline,\n homeOutline,\n locationOutline,\n notificationsOutline,\n openOutline,\n scanOutline,\n shareOutline,\n} from 'ionicons/icons';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class IconService {\n /**\n * Registers a set of Ionicons icons for use throughout the app.\n */\n constructor() {\n addIcons({\n addOutline,\n addCircleOutline,\n alertOutline,\n alertCircleOutline,\n arrowBackOutline,\n arrowForwardOutline,\n arrowDownOutline,\n checkmarkCircleOutline,\n ellipsisHorizontalOutline,\n notificationsOutline,\n openOutline,\n closeOutline,\n chatbubblesOutline,\n shareOutline,\n heart,\n heartOutline,\n homeOutline,\n eyeOffOutline,\n eyeOutline,\n scanOutline,\n chevronDownOutline,\n chevronForwardOutline,\n checkmarkOutline,\n clipboardOutline,\n copyOutline,\n filterOutline,\n locationOutline,\n calendarOutline,\n businessOutline,\n });\n }\n}\n","import { CommonModule, NgStyle } from '@angular/common';\nimport { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { IonCard, IonIcon } from '@ionic/angular/standalone';\nimport { IconService } from '../../../services/icons.service';\nimport { BoxMetadata } from './types';\n\n@Component({\n selector: 'val-box',\n standalone: true,\n imports: [CommonModule, IonCard, IonIcon, NgStyle],\n template: `\n <ion-card\n class=\"box\"\n [color]=\"props.color\"\n [class.rounded]=\"props.rounded\"\n [class.bordered]=\"props.bordered\"\n [class.transparent]=\"!props.color\"\n [class.left-border]=\"props.leftBorder\"\n [ngStyle]=\"{\n padding: props.padding ? props.padding : '0px',\n }\"\n >\n @if (props.icon) {\n <ion-icon class=\"icon\" [name]=\"props.icon\" (click)=\"clickHandler()\"></ion-icon>\n }\n <div\n [ngStyle]=\"{\n 'margin-right': props.icon ? '24px' : '0px',\n }\"\n >\n <ng-content select=\"[body]\"></ng-content>\n </div>\n </ion-card>\n `,\n styleUrls: ['./box.component.scss'],\n})\n/**\n * val-box\n *\n * A stylized card container for grouping content, with optional icon, color, border, and click event.\n *\n * @example\n * <val-box [props]=\"{ color: 'primary', rounded: true, icon: 'star' }\" (onClick)=\"handler()\">\n * <div body>Content here</div>\n * </val-box>\n *\n * @input props: BoxMetadata - Configuration for the box (color, icon, border, etc.)\n * @output onClick - Emits when the box or its icon is clicked\n */\nexport class BoxComponent implements OnInit {\n /**\n * Box configuration object.\n * @type {BoxMetadata}\n * @property color - The color of the box (Ionic color string).\n * @property icon - The name of the icon to display (optional).\n * @property bordered - Whether the box has a border (optional).\n * @property leftBorder - Whether the box has a left border (optional).\n * @property rounded - Whether the box has rounded corners (optional).\n * @property padding - Custom padding for the box (optional).\n */\n @Input()\n props: BoxMetadata;\n\n /**\n * Event emitted when the box or its icon is clicked.\n */\n @Output()\n onClick = new EventEmitter();\n\n constructor(icon: IconService) {}\n\n ngOnInit() {}\n\n clickHandler() {\n this.onClick.emit();\n }\n}\n","import { FormControl, ValidatorFn } from '@angular/forms';\nimport { Color } from '@ionic/core';\nimport { ImageMetadata } from './atoms/image/types';\n\n/**\n * Possible states for an interactive component.\n */\nexport type ComponentState = 'ENABLED' | 'DISABLED' | 'WORKING' | 'ERROR';\nconst ENABLED: ComponentState = 'ENABLED';\nconst DISABLED: ComponentState = 'DISABLED';\nconst WORKING: ComponentState = 'WORKING';\nconst ERROR: ComponentState = 'ERROR';\n\n/**\n * Object containing all possible component states.\n */\nexport const ComponentStates = { ENABLED, DISABLED, WORKING, ERROR };\n\n/**\n * Types of actions that a button or link can perform.\n */\nexport enum ActionType {\n BROWSER_NEW_TAB, // Open in a new browser tab\n BROWSER_DOWNLOAD, // Download via browser\n NATIVE_DOWNLOAD, // Download using native capabilities\n APP_NAVIGATION, // Internal app navigation\n BROWSER_NAVIGATION, // Navigation in the browser\n}\n\n/**\n * Represents an executable action for a button or link.\n */\nexport type Action = {\n /** Action description */\n description: string;\n /** Action type */\n type: ActionType;\n /** Action source or destination */\n source: string;\n};\n\n/**\n * Supported input types for forms.\n */\nexport enum InputType {\n TEXT,\n EMAIL,\n PASSWORD,\n COMMENT,\n NUMBER,\n PIN_CODE,\n DATE,\n HOUR,\n CHECK,\n RADIO,\n SELECT,\n SEARCH_SELECT,\n FILE,\n}\n\n/**\n * Option for select, radio, etc. inputs.\n */\nexport type InputOption = {\n /** Unique option identifier */\n id: string;\n /** Display name */\n name: string;\n /** Whether the option is selected by default */\n selected?: boolean;\n /** Display order */\n order: number;\n};\n\n/**\n * Metadata for a form field.\n */\nexport type InputMetadata = {\n /** Associated form control */\n control: FormControl;\n /** Unique token for the input */\n token: string;\n /** Display label */\n label: string;\n /** Field name */\n name: string;\n /** Help text */\n hint: string;\n /** Input placeholder */\n placeholder: string;\n /** Input type */\n type: InputType;\n /** Display order */\n order: number;\n /** Associated validators */\n validators: ValidatorFn[];\n /** Options (for select, radio, etc.) */\n options?: InputOption[];\n /** Allowed range (for number, date, etc.) */\n range?: {\n min: number;\n max: number;\n };\n /** Custom error messages */\n errors: {\n [key: string]: string;\n };\n /** Current value */\n value?: string;\n /** Field state */\n state: ComponentState;\n};\n\n/**\n * A section in a form, grouping multiple fields.\n */\nexport type FormSection = {\n /** Section name */\n name: string;\n /** Display order */\n order: number;\n /** Fields included in the section */\n fields: InputMetadata[];\n};\n\n/**\n * Data sent when submitting a form.\n */\nexport type FormSubmit = {\n /** List of fields and their values */\n fields: { key: string; value: string }[];\n /** Optional token for the operation */\n token?: string;\n};\n\n/**\n * Metadata for a complete form.\n */\nexport type FormMetadata = {\n /** Form name */\n name: string;\n /** Form sections */\n sections: FormSection[];\n /** Action buttons configuration */\n actions: ButtonMetadata;\n /** Global form state */\n state: ComponentState;\n};\n\n/**\n * Possible action types for a toolbar.\n */\nexport enum ToolbarActionType {\n AVATAR = 'AVATAR',\n ICON = 'ICON',\n IMAGE = 'IMAGE',\n BUTTON = 'BUTTON',\n}\n\n/**\n * Toolbar action definition.\n */\nexport type ToolbarAction = {\n /** Action type */\n type: 'AVATAR' | 'ICON' | 'IMAGE' | 'BUTTON';\n /** Optional token identifier */\n token?: string;\n /** Toolbar position */\n position: 'left' | 'right' | 'center';\n /** Optional description */\n description?: string;\n /** Associated image (if any) */\n image?: ImageMetadata;\n};\n\n/**\n * Metadata for an icon.\n */\nexport interface IconMetada {\n /** Icon name */\n name: string;\n /** Icon slot position */\n slot: 'start' | 'end';\n}\n\n/**\n * Button configuration object.\n * @type {ButtonMetadata}\n * @property text - The button label.\n * @property color - The button color (Ionic color string).\n * @property icon - Icon to display (optional).\n * @property state - Button state (enabled, disabled, working, etc.).\n * @property expand, fill, size, shape, href, target, download, handler, etc. - See ButtonMetadata for all options.\n */\nexport interface ButtonMetadata {\n /** Associated action type */\n actionType?: ActionType;\n /** Button expansion */\n expand?: 'full' | 'block';\n /** Associated link */\n link?: string;\n /** Associated href link */\n href?: string;\n /** Link target */\n target?: '_blank' | '_self' | '_parent' | '_top';\n /** Download file name */\n download?: string;\n /** Button color */\n color: Color;\n /** Button state */\n state: ComponentState;\n /** Display text */\n text: string;\n /** Associated icon */\n icon?: IconMetada;\n /** Button shape */\n shape?: 'round';\n /** Button size */\n size?: 'small' | 'default' | 'large';\n /** Button fill */\n fill?: 'clear' | 'outline' | 'solid' | 'default';\n /** Button type */\n type: 'button' | 'submit' | 'reset';\n /** Optional token identifier */\n token?: string;\n /** Optional reference */\n ref?: any;\n /** Action handler */\n handler?: (value: any) => any | Promise<any>;\n}\n","/**\n * Service for downloading files and opening links in new tabs.\n * Provides utility methods for browser-based file downloads and extracting file names from URLs.\n */\nimport { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class DownloadService {\n /**\n * Extracts the file name from a given URL.\n * @param url The file URL\n * @returns The file name\n */\n getFileNameFromUrl(url: string): string {\n try {\n const pathSegments = url.split('/');\n const lastSegment = pathSegments[pathSegments.length - 1];\n const fileName = decodeURIComponent(lastSegment);\n return fileName;\n } catch (error) {\n console.error('Error al obtener nombre de archivo: ', JSON.stringify(error));\n return 'filename';\n }\n }\n\n /**\n * Opens a given URL in a new browser tab and triggers download if possible.\n * @param url The file URL\n */\n openNewTab(url: string): void {\n if (url) {\n const fileName = this.getFileNameFromUrl(url);\n const link = document.createElement('a');\n link.href = url;\n link.download = fileName;\n link.target = '_blank';\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n } else {\n console.error('La URL no está definida');\n }\n }\n\n /**\n * Downloads a file from the browser using fetch and triggers a download dialog.\n * @param url The file URL\n */\n downloadLinkFromBrowser(url: string): void {\n console.log('trying to download file from url');\n if (url) {\n fetch(url)\n .then(response => response.blob())\n .then(blob => {\n const url = window.URL.createObjectURL(blob);\n const link = document.createElement('a');\n link.href = url;\n\n const fileName = this.getFileNameFromUrl(url);\n link.download = `${+new Date()}-${fileName}`;\n link.target = '_self';\n link.click();\n\n window.URL.revokeObjectURL(url);\n })\n .catch(error => {\n console.error('Error al descargar el archivo:', JSON.stringify(error));\n });\n } else {\n console.error('La URL no está definida');\n }\n }\n}\n","/* eslint-disable no-underscore-dangle */\n\n/**\n * Service for opening URLs using Capacitor's InAppBrowser plugin.\n * Provides a method to open links in a popover-style browser within the app.\n */\nimport { Injectable } from '@angular/core';\nimport { Browser, OpenOptions } from '@capacitor/browser';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class InAppBrowserService {\n /**\n * Default options for the in-app browser.\n */\n options: OpenOptions = {\n presentationStyle: 'popover',\n url: '',\n };\n constructor() {}\n\n /**\n * Opens a URL using Capacitor's InAppBrowser with the configured options.\n * @param url The URL to open\n */\n async openWithInAppBrowser(url: string) {\n await Browser.open({ ...this.options, url });\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { NavigationExtras, Router } from '@angular/router';\nimport { InAppBrowserService } from './in-app-browser.service';\n\n/**\n * Service for navigation and routing within the application.\n * Supports navigation with data transfer, in-app browser, and opening links in new tabs.\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class NavigationService {\n /**\n * Arbitrary data to be transferred during navigation.\n */\n data: any;\n router = inject(Router);\n inAppBrowser = inject(InAppBrowserService);\n\n constructor() {}\n\n /**\n * Opens a URL using the in-app browser service.\n * @param url The URL to open\n */\n navigateInApp(url: string) {\n this.inAppBrowser.openWithInAppBrowser(url);\n }\n\n /**\n * Navigates to a route and transfers data using Angular Router state.\n * @param route The route to navigate to\n * @param dataTransfer The data to transfer\n */\n navigateWithData(route: string, dataTransfer: any) {\n const navigationExtras: NavigationExtras = {\n state: {\n data: dataTransfer,\n },\n };\n\n this.router.navigate([route], navigationExtras);\n }\n\n /**\n * Navigates to a URL using Angular Router.\n * @param url The URL to navigate to\n */\n navigateByUrl(url: string) {\n this.router\n .navigateByUrl(url)\n .then(response => {})\n .catch(error => {});\n }\n\n /**\n * Opens a URL in a new browser tab.\n * @param url The URL to open\n */\n openInNewTab(url: string): void {\n window.open(url, '_blank', 'noopener,noreferrer');\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { IonButton, IonIcon, IonSpinner, IonText } from '@ionic/angular/standalone';\nimport { DownloadService } from '../../../services/download.service';\nimport { IconService } from '../../../services/icons.service';\nimport { NavigationService } from '../../../services/navigation.service';\nimport { ActionType, ButtonMetadata, ComponentStates } from '../../types';\n\n@Component({\n selector: 'val-button',\n standalone: true,\n imports: [CommonModule, IonButton, IonIcon, IonSpinner, IonText],\n template: `\n <ion-button\n [type]=\"props.type\"\n [color]=\"props.color\"\n [expand]=\"props.expand\"\n [fill]=\"props.fill\"\n [size]=\"props.size\"\n [href]=\"props.href\"\n [target]=\"props.target\"\n [shape]=\"props.shape\"\n (click)=\"clickHandler()\"\n [disabled]=\"props.state === states.DISABLED\"\n [ngClass]=\"[props.size]\"\n >\n <ion-icon *ngIf=\"props.icon\" [slot]=\"props.icon.slot\" [name]=\"props.icon.name\"></ion-icon>\n <ion-spinner *ngIf=\"props.state === states.WORKING\" name=\"circular\"></ion-spinner>\n <ion-text *ngIf=\"props.state !== states.WORKING\">{{ props.text }}</ion-text>\n </ion-button>\n `,\n styleUrls: ['./button.component.scss'],\n})\n/**\n * val-button\n *\n * A customizable button supporting icons, loading state, navigation, and custom handlers.\n *\n * @example\n * <val-button [props]=\"{ text: 'Save', color: 'primary', icon: { name: 'save', slot: 'start' } }\" (onClick)=\"handler()\"></val-button>\n *\n * @input props: ButtonMetadata - Configuration for the button (text, color, icon, state, etc.)\n * @output onClick - Emits when the button is clicked\n */\nexport class ButtonComponent {\n states = ComponentStates;\n\n @Input()\n props!: ButtonMetadata;\n\n /**\n * Event emitted when the button is clicked.\n */\n @Output()\n onClick = new EventEmitter<string>();\n\n constructor(\n private download: DownloadService,\n icon: IconService,\n private navigation: NavigationService\n ) {}\n\n ngOnInit() {}\n\n clickHandler() {\n if (this.props.state === this.states.DISABLED) {\n return;\n }\n\n if (this.props.actionType === ActionType.APP_NAVIGATION) {\n this.navigation.navigateByUrl(this.props.link);\n }\n\n if (this.props.download) {\n this.download.downloadLinkFromBrowser(this.props.download);\n }\n if (this.props.handler) {\n this.props.handler(this.props.ref);\n }\n this.onClick.emit(this.props.token);\n }\n}\n","import { ButtonMetadata, IconMetada } from '../../types';\n\nexport const Icon = (name: string, slot: 'start' | 'end'): IconMetada => {\n return {\n name,\n slot,\n };\n};\n\n/* name convention: COLOR FILL SIZE [optionals: SHAPE EXPAND ICON HREF/DOWNLOAD] TYPE */\n\nexport const BaseDefault = (text: string, type: 'button' | 'submit' | 'reset'): ButtonMetadata => {\n return {\n color: 'primary',\n state: 'ENABLED',\n text,\n size: 'default',\n type,\n };\n};\n\nexport const ClearDefault = (text: string, type: 'button' | 'submit' | 'reset'): ButtonMetadata => {\n return { ...BaseDefault(text, type), fill: 'clear' };\n};\n\nexport const ClearDefaultRound = (\n text: string,\n type: 'button' | 'submit' | 'reset'\n): ButtonMetadata => {\n return { ...ClearDefault(text, type), shape: 'round' };\n};\n\nexport const SolidDefault = (text: string, type: 'button' | 'submit' | 'reset'): ButtonMetadata => {\n return { ...BaseDefault(text, type), fill: 'solid' };\n};\n\nexport const SolidDefaultRound = (\n text: string,\n type: 'button' | 'submit' | 'reset'\n): ButtonMetadata => {\n return { ...SolidDefault(text, type), shape: 'round' };\n};\n\nexport const OutlineDefault = (\n text: string,\n type: 'button' | 'submit' | 'reset'\n): ButtonMetadata => {\n return { ...BaseDefault(text, type), fill: 'outline' };\n};\n\nexport const OutlineDefaultRound = (\n text: string,\n type: 'button' | 'submit' | 'reset'\n): ButtonMetadata => {\n return { ...OutlineDefault(text, type), shape: 'round' };\n};\n\nexport const ClearDefaultFull = (\n text: string,\n type: 'button' | 'submit' | 'reset'\n): ButtonMetadata => {\n return { ...ClearDefault(text, type), expand: 'full' };\n};\n\nexport const ClearDefaultRoundFull = (\n text: string,\n type: 'button' | 'submit' | 'reset'\n): ButtonMetadata => {\n return { ...ClearDefaultRound(text, type), expand: 'full' };\n};\n\nexport const ClearDefaultBlock = (\n text: string,\n type: 'button' | 'submit' | 'reset'\n): ButtonMetadata => {\n return { ...ClearDefault(text, type), expand: 'block' };\n};\n\nexport const ClearDefaultRoundBlock = (\n text: string,\n type: 'button' | 'submit' | 'reset'\n): ButtonMetadata => {\n return { ...ClearDefaultRound(text, type), expand: 'block' };\n};\n\nexport const SolidDefaultFull = (\n text: string,\n type: 'button' | 'submit' | 'reset'\n): ButtonMetadata => {\n return { ...SolidDefault(text, type), expand: 'full' };\n};\n\nexport const SolidDefaultRoundFull = (\n text: string,\n type: 'button' | 'submit' | 'reset'\n): ButtonMetadata => {\n return { ...SolidDefaultRound(text, type), expand: 'full' };\n};\n\nexport const SolidDefaultBlock = (\n text: string,\n type: 'button' | 'submit' | 'reset'\n): ButtonMetadata => {\n return { ...SolidDefault(text, type), expand: 'block' };\n};\n\nexport const SolidDefaultRoundBlock = (\n text: string,\n type: 'button' | 'submit' | 'reset'\n): ButtonMetadata => {\n return { ...SolidDefaultRound(text, type), expand: 'block' };\n};\n\nexport const OutlineDefaultFull = (\n text: string,\n type: 'button' | 'submit' | 'reset'\n): ButtonMetadata => {\n return { ...OutlineDefault(text, type), expand: 'full' };\n};\n\nexport const OutlineDefaultRoundFull = (\n text: string,\n type: 'button' | 'submit' | 'reset'\n): ButtonMetadata => {\n return { ...OutlineDefaultRound(text, type), expand: 'full' };\n};\n\nexport const OutlineDefaultBlock = (\n text: string,\n type: 'button' | 'submit' | 'reset'\n): ButtonMetadata => {\n return { ...OutlineDefault(text, type), expand: 'block' };\n};\n\nexport const OutlineDefaultRoundBlock = (\n text: string,\n type: 'button' | 'submit' | 'reset'\n): ButtonMetadata => {\n return { ...OutlineDefaultRound(text, type), expand: 'block' };\n};\n\nexport const SolidDefaultButton = (text: string): ButtonMetadata => {\n return SolidDefault(text, 'button');\n};\n\nexport const SolidSmallButton = (text: string): ButtonMetadata => {\n return { ...SolidDefault(text, 'button'), size: 'small' };\n};\n\nexport const SolidLargeButton = (text: string): ButtonMetadata => {\n return { ...SolidDefault(text, 'button'), size: 'large' };\n};\n\nexport const SolidDefaultRoundButton = (text: string): ButtonMetadata => {\n return SolidDefaultRound(text, 'button');\n};\n\nexport const SolidSmallRoundButton = (text: string): ButtonMetadata => {\n return { ...SolidDefaultRound(text, 'button'), size: 'small' };\n};\n\nexport const SolidLargeRoundButton = (text: string): ButtonMetadata => {\n return { ...SolidDefaultRound(text, 'button'), size: 'large' };\n};\n\nexport const SolidFullButton = (text: string): ButtonMetadata => {\n return SolidDefaultFull(text, 'button');\n};\n\nexport const SolidBlockButton = (text: string): ButtonMetadata => {\n return SolidDefaultBlock(text, 'button');\n};\n\n/** PRIMARY */\n\nexport const PrimarySolidDefaultRoundButton = (text: string): ButtonMetadata => {\n return { ...SolidDefaultRoundButton(text), color: 'primary' };\n};\n\nexport const PrimarySolidDefaultRoundIconButton = (\n text: string,\n icon: IconMetada\n): ButtonMetadata => {\n return { ...PrimarySolidDefaultRoundButton(text), icon };\n};\n\nexport const PrimarySolidDefaultRoundHrefButton = (\n text: string,\n href: string,\n target: '_blank' | '_self' | '_parent' | '_top'\n): ButtonMetadata => {\n return { ...PrimarySolidDefaultRoundButton(text), href, target };\n};\n\nexport const PrimarySolidDefaultRoundIconHrefButton = (\n text: string,\n icon: IconMetada,\n href: string,\n target: '_blank' | '_self' | '_parent' | '_top'\n): ButtonMetadata => {\n return { ...PrimarySolidDefaultRoundIconButton(text, icon), href, target };\n};\n\nexport const PrimarySolidSmallRoundButton = (text: string): ButtonMetadata => {\n return { ...SolidSmallRoundButton(text), color: 'primary' };\n};\n\nexport const PrimarySolidSmallRoundIconButton = (\n text: string,\n icon: IconMetada\n): ButtonMetadata => {\n return { ...PrimarySolidSmallRoundButton(text), icon };\n};\n\nexport const PrimarySolidSmallRoundHrefButton = (\n text: string,\n href: string,\n target: '_blank' | '_self' | '_parent' | '_top'\n): ButtonMetadata => {\n return { ...PrimarySolidSmallRoundButton(text), href, target };\n};\n\nexport const PrimarySolidSmallRoundIconHrefButton = (\n text: string,\n icon: IconMetada,\n href: string,\n target: '_blank' | '_self' | '_parent' | '_top'\n): ButtonMetadata => {\n return { ...PrimarySolidSmallRoundIconButton(text, icon), href, target };\n};\n\nexport const PrimarySolidLargeRoundButton = (text: string): ButtonMetadata => {\n return { ...SolidLargeRoundButton(text), color: 'primary' };\n};\n\nexport const PrimarySolidLargeRoundIconButton = (\n text: string,\n icon: IconMetada\n): ButtonMetadata => {\n return { ...PrimarySolidLargeRoundButton(text), icon };\n};\n\nexport const PrimarySolidLargeRoundHrefButton = (\n text: string,\n href: string,\n target: '_blank' | '_self' | '_parent' | '_top'\n): ButtonMetadata => {\n return { ...PrimarySolidLargeRoundButton(text), href, target };\n};\n\nexport const PrimarySolidLargeRoundIconHrefButton = (\n text: string,\n icon: IconMetada,\n href: string,\n target: '_blank' | '_self' | '_parent' | '_top'\n): ButtonMetadata => {\n return { ...PrimarySolidLargeRoundIconButton(text, icon), href, target };\n};\n\nexport const PrimarySolidBlockButton = (text: string): ButtonMetadata => {\n return { ...SolidBlockButton(text), color: 'primary' };\n};\n\nexport const PrimarySolidBlockIconButton = (text: string, icon: IconMetada): ButtonMetadata => {\n return { ...PrimarySolidBlockButton(text), icon };\n};\n\nexport const PrimarySolidBlockHrefButton = (\n text: string,\n href: string,\n target: '_blank' | '_self' | '_parent' | '_top'\n): ButtonMetadata => {\n return { ...PrimarySolidBlockButton(text), href, target };\n};\n\nexport const PrimarySolidBlockIconHrefButton = (\n text: string,\n icon: IconMetada,\n href: string,\n target: '_blank' | '_self' | '_parent' | '_top'\n): ButtonMetadata => {\n return { ...PrimarySolidBlockIconButton(text, icon), href, target };\n};\n\nexport const PrimarySolidFullButton = (text: string): ButtonMetadata => {\n return { ...SolidFullButton(text), color: 'primary' };\n};\n\nexport const PrimarySolidFullIconButton = (text: string, icon: IconMetada): ButtonMetadata => {\n return { ...PrimarySolidFullButton(text), icon };\n};\n\nexport const PrimarySolidFullHrefButton = (\n text: string,\n href: string,\n target: '_blank' | '_self' | '_parent' | '_top'\n): ButtonMetadata => {\n return { ...PrimarySolidFullButton(text), href, target };\n};\n\nexport const PrimarySolidFullIconHrefButton = (\n text: string,\n icon: IconMetada,\n href: string,\n target: '_blank' | '_self' | '_parent' | '_top'\n): ButtonMetadata => {\n return { ...PrimarySolidFullIconButton(text, icon), href, target };\n};\n\n/** SECONDARY */\n\nexport const SecondarySolidDefaultRoundButton = (text: string): ButtonMetadata => {\n return { ...SolidDefaultRoundButton(text), color: 'secondary' };\n};\n\nexport const SecondarySolidDefaultRoundIconButton = (\n text: string,\n icon: IconMetada\n): ButtonMetadata => {\n return { ...SecondarySolidDefaultRoundButton(text), icon };\n};\n\nexport const SecondarySolidDefaultRoundHrefButton = (\n text: string,\n href: string,\n target: '_blank' | '_self' | '_parent' | '_top'\n): ButtonMetadata => {\n return { ...SecondarySolidDefaultRoundButton(text), href, target };\n};\n\nexport const SecondarySolidDefaultRoundIconHrefButton = (\n text: string,\n icon: IconMetada,\n href: string,\n target: '_blank' | '_self' | '_parent' | '_top'\n): ButtonMetadata => {\n return { ...SecondarySolidDefaultRoundIconButton(text, icon), href, target };\n};\n\nexport const SecondarySolidSmallRoundButton = (text: string): ButtonMetadata => {\n return { ...SolidSmallRoundButton(text), color: 'secondary' };\n};\n\nexport const SecondarySolidSmallRoundIconButton = (\n text: string,\n icon: IconMetada\n): ButtonMetadata => {\n return { ...SecondarySolidSmallRoundButton(text), icon };\n};\n\nexport const SecondarySolidSmallRoundHrefButton = (\n text: string,\n href: string,\n target: '_blank' | '_self' | '_parent' | '_top'\n): ButtonMetadata => {\n return { ...SecondarySolidSmallRoundButton(text), href, target };\n};\n\nexport const SecondarySolidSmallRoundIconHrefButton = (\n text: string,\n icon: IconMetada,\n href: string,\n target: '_blank' | '_self' | '_parent' | '_top'\n): ButtonMetadata => {\n return { ...SecondarySolidSmallRoundIconButton(text, icon), href, target };\n};\n\nexport const SecondarySolidLargeRoundButton = (text: string): ButtonMetadata => {\n return { ...SolidLargeRoundButton(text), color: 'secondary' };\n};\n\nexport const SecondarySolidLargeRoundIconButton = (\n text: string,\n icon: IconMetada\n): ButtonMetadata => {\n return { ...SecondarySolidLargeRoundButton(text), icon };\n};\n\nexport const SecondarySolidLargeRoundHrefButton = (\n text: string,\n href: string,\n target: '_blank' | '_self' | '_parent' | '_top'\n): ButtonMetadata => {\n return { ...SecondarySolidLargeRoundButton(text), href, target };\n};\n\nexport const SecondarySolidLargeRoundIconHrefButton = (\n text: string,\n icon: IconMetada,\n href: string,\n target: '_blank' | '_self' | '_parent' | '_top'\n): ButtonMetadata => {\n return { ...SecondarySolidLargeRoundIconButton(text, icon), href, target };\n};\n\nexport const SecondarySolidFullButton = (text: string): ButtonMetadata => {\n return { ...SolidFullButton(text), color: 'secondary' };\n};\n\nexport const SecondarySolidFullIconButton = (text: string, icon: IconMetada): ButtonMetadata => {\n return { ...SecondarySolidFullButton(text), icon };\n};\n\nexport const SecondarySolidFullHrefButton = (\n text: string,\n href: string,\n target: '_blank' | '_self' | '_parent' | '_top'\n): ButtonMetadata => {\n return { ...SecondarySolidFullButton(text), href, target };\n};\n\nexport const SecondarySolidFullIconHrefButton = (\n text: string,\n icon: IconMetada,\n href: string,\n target: '_blank' | '_self' | '_parent' | '_top'\n): ButtonMetadata => {\n return { ...SecondarySolidFullIconButton(text, icon), href, target };\n};\n\nexport const SecondarySolidBlockButton = (text: string): ButtonMetadata => {\n return { ...SolidBlockButton(text), color: 'secondary' };\n};\n\nexport const SecondarySolidBlockIconButton = (text: string, icon: IconMetada): ButtonMetadata => {\n return { ...SecondarySolidBlockButton(text), icon };\n};\n\nexport const SecondarySolidBlockHrefButton = (\n text: string,\n href: string,\n target: '_blank' | '_self' | '_parent' | '_top'\n): ButtonMetadata => {\n return { ...SecondarySolidBlockButton(text), href, target };\n};\n\nexport const SecondarySolidBlockIconHrefButton = (\n text: string,\n icon: IconMetada,\n href: string,\n target: '_blank' | '_self' | '_parent' | '_top'\n): ButtonMetadata => {\n return { ...SecondarySolidBlockIconButton(text, icon), href, target };\n};\n","import { Component, Input, OnInit } from '@angular/core';\nimport { IonText } from '@ionic/angular/standalone';\nimport { DisplayMetadata } from './types';\n\n@Component({\n selector: 'val-display',\n standalone: true,\n imports: [IonText],\n template: `\n <ion-text [color]=\"props.color\">\n <p [class]=\"props.size\">\n {{ props.content }}\n </p>\n </ion-text>\n `,\n styleUrls: ['./display.component.scss'],\n})\n/**\n * val-display\n *\n * Displays prominent text or titles with custom color and size.\n *\n * @example\n * <val-display [props]=\"{ content: 'Title', color: 'dark', size: 'large' }\"></val-display>\n *\n * @input props: DisplayMetadata - Configuration for the display (content, color, size)\n */\nexport class DisplayComponent implements OnInit {\n /**\n * Display configuration object.\n * @type {DisplayMetadata}\n * @property content - The text to display.\n * @property color - The text color (Ionic color string).\n * @property size - The text size ('small' | 'medium' | 'large' | 'xlarge').\n */\n @Input()\n props: DisplayMetadata;\n\n constructor() {}\n\n ngOnInit() {}\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, Input, OnInit } from '@angular/core';\nimport { DividerMetadata } from './types';\n\n/**\n * val-divider\n *\n * A horizontal divider for separating content sections.\n *\n * @example\n * <val-divider [props]=\"{ size: 'medium', color: 'light', fill: 'solid' }\"></val-divider>\n *\n * @input props: DividerMetadata - Configuration for the divider (size, color, fill)\n */\n@Component({\n selector: 'val-divider',\n standalone: true,\n imports: [CommonModule],\n template: ` <div [ngClass]=\"['divider', props.size, props.color, props.fill]\"></div> `,\n styleUrls: ['./divider.component.scss'],\n})\nexport class DividerComponent implements OnInit {\n /**\n * Divider configuration object.\n * @type {DividerMetadata}\n * @property size - The divider size ('small' | 'medium' | 'large').\n * @property color - The divider color.\n * @property fill - The divider fill style ('solid' | 'gradient').\n */\n @Input()\n props: DividerMetadata;\n constructor() {}\n\n ngOnInit() {}\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { DownloadService } from '../../../services/download.service';\nimport { HrefMetadata } from './types';\n\n@Component({\n selector: 'val-href',\n standalone: true,\n imports: [CommonModule],\n template: `\n <a\n [ngClass]=\"[props.color]\"\n [class.hoverable]=\"props.hoverable\"\n [href]=\"props.url\"\n target=\"_blank\"\n (click)=\"onClickHandler($event)\"\n >{{ props.text }}</a\n >\n `,\n styleUrls: ['./href.component.scss'],\n})\n/**\n * val-href\n *\n * A styled anchor/link element, supporting download and click events.\n *\n * @example\n * <val-href [props]=\"{ url: 'https://...', text: 'Open', color: 'primary', download: true }\" (onClick)=\"handler()\"></val-href>\n *\n * @input props: HrefMetadata - Configuration for the link (url, text, color, download, etc.)\n * @output onClick - Emits when the link is clicked\n */\nexport class HrefComponent implements OnInit {\n /**\n * Link configuration object.\n * @type {HrefMetadata}\n * @property url - The URL to open.\n * @property text - The link text.\n * @property color - The link color (Ionic color string).\n * @property download - Whether to trigger a download (optional).\n * @property hoverable - Whether the link is hoverable (optional).\n * @property token - Optional token for event identification.\n */\n @Input() props: HrefMetadata;\n\n @Output()\n onClick = new EventEmitter<string>();\n\n constructor(private downloadService: DownloadService) {}\n\n ngOnInit() {}\n\n getFileName() {\n return this.downloadService.getFileNameFromUrl(this.props.url);\n }\n\n onClickHandler(event: MouseEvent) {\n if (this.props.download && this.props.url) {\n event.preventDefault();\n this.downloadService.downloadLinkFromBrowser(this.props.url);\n }\n this.onClick.emit(this.props.token);\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, Input, OnInit } from '@angular/core';\nimport { IonIcon } from '@ionic/angular/standalone';\nimport { IconService } from '../../../services/icons.service';\nimport { IconMetadata } from './types';\n\n@Component({\n selector: 'val-icon',\n standalone: true,\n imports: [CommonModule, IonIcon],\n template: ` <ion-icon aria-hidden=\"true\" [ngClass]=\"[props.size]\" [name]=\"props.name\" [color]=\"props.color\" /> `,\n styleUrls: ['./icon.component.scss'],\n})\n/**\n * val-icon\n *\n * Displays an icon from the Ionicons set, with configurable size and color.\n *\n * @example\n * <val-icon [props]=\"{ name: 'star', size: 'large', color: 'warning' }\"></val-icon>\n *\n * @input props: IconMetadata - Configuration for the icon (name, color, size)\n */\nexport class IconComponent implements OnInit {\n /**\n * Icon configuration object.\n * @type {IconMetadata}\n * @property name - The icon name (Ionicons).\n * @property color - The icon color (Ionic color string).\n * @property size - The icon size ('small' | 'medium' | 'large' | 'xlarge').\n */\n @Input()\n props: IconMetadata;\n\n constructor(service: IconService) {}\n\n ngOnInit() {}\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, Input, OnInit } from '@angular/core';\nimport { ImageMetadata } from './types';\n\n@Component({\n selector: 'val-image',\n standalone: true,\n imports: [CommonModule],\n template: `\n @if (props.src.includes('--')) {\n <img\n [ngClass]=\"['image', props.mode, props.size]\"\n [ngStyle]=\"{\n content: 'var(' + props.src + ')',\n }\"\n [class.bordered]=\"props.bordered\"\n [class.shaded]=\"props.shaded\"\n [class.dark]=\"props.dark\"\n [class.limited]=\"props.limited\"\n [alt]=\"props.alt\"\n [style.width.px]=\"props.width\"\n [style.max-width.px]=\"props.width\"\n [style.height.px]=\"props.height\"\n />\n } @else {\n <img\n [ngClass]=\"['image', props.mode, props.size]\"\n [class.bordered]=\"props.bordered\"\n [class.shaded]=\"props.shaded\"\n [class.dark]=\"props.dark\"\n [class.limited]=\"props.limited\"\n [src]=\"props.src\"\n [alt]=\"props.alt\"\n [style.width.px]=\"props.width\"\n [style.max-width.px]=\"props.width\"\n [style.height.px]=\"props.height\"\n />\n }\n `,\n styleUrls: ['./image.component.scss'],\n})\n/**\n * val-image\n *\n * Displays an image with various display options (bordered, shaded, dark, etc).\n *\n * @example\n * <val-image [props]=\"{ src: 'url', alt: 'desc', width: 100, height: 100, bordered: true }\"></val-image>\n *\n * @input props: ImageMetadata - Configuration for the image (src, alt, size, mode, etc.)\n */\nexport class ImageComponent implements OnInit {\n @Input()\n props: ImageMetadata;\n\n available: boolean = true;\n\n constructor() {}\n\n ngOnInit() {}\n\n changeToVisible() {\n setInterval(() => {\n this.available = true;\n }, 100);\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, Input, OnInit } from '@angular/core';\nimport { IonProgressBar } from '@ionic/angular/standalone';\nimport { ProgressBarMetadata } from './types';\n\n@Component({\n selector: 'val-progress-bar',\n standalone: true,\n imports: [CommonModule, IonProgressBar],\n template: `\n <ion-progress-bar\n [ngClass]=\"[props.size]\"\n [class.rounded]=\"props.rounded\"\n [value]=\"props.progress\"\n [color]=\"props.color\"\n [buffer]=\"props.buffer\"\n [type]=\"props.type\"\n ></ion-progress-bar>\n `,\n styleUrls: ['./progress-bar.component.scss'],\n})\n/**\n * val-progress-bar\n *\n * A progress bar for indicating completion or loading state.\n *\n * @example\n * <val-progress-bar [props]=\"{ progress: 0.5, color: 'success', size: 'small' }\"></val-progress-bar>\n *\n * @input props: ProgressBarMetadata - Configuration for the progress bar (progress, color, size, etc.)\n */\nexport class ProgressBarComponent implements OnInit {\n /**\n * Progress bar configuration object.\n * @type {ProgressBarMetadata}\n * @property progress - The progress value (0 to 1).\n * @property size - The progress bar size ('small' | 'medium' | 'large' | 'xlarge').\n * @property color - The progress bar color (Ionic color string).\n * @property buffer - The buffer value for the bar.\n * @property type - The type of progress bar ('determinate' | 'indeterminate').\n * @property rounded - Whether the bar has rounded corners.\n */\n @Input()\n props: ProgressBarMetadata;\n\n constructor() {}\n\n ngOnInit() {}\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { IonText } from '@ionic/angular/standalone';\nimport { TextMetadata } from './types';\n\n@Component({\n selector: 'val-text',\n standalone: true,\n imports: [IonText],\n template: `\n <ion-text [color]=\"props.color\">\n <p [class]=\"props.size\" [class.bold]=\"props.bold\">{{ props.content }}</p>\n </ion-text>\n `,\n styleUrls: ['./text.component.scss'],\n})\n/**\n * val-text\n *\n * For displaying styled text with color, size, and bold options.\n *\n * @example\n * <val-text [props]=\"{ content: 'Some text', color: 'medium', size: 'small', bold: true }\"></val-text>\n *\n * @input props: TextMetadata - Configuration for the text (content, color, size, bold)\n */\nexport class TextComponent implements OnInit {\n /**\n * Text configuration object.\n * @type {TextMetadata}\n * @property content - The text to display.\n * @property color - The text color (Ionic color string).\n * @property size - The text size ('small' | 'medium' | 'large' | 'xlarge').\n * @property bold - Whether the text is bold.\n */\n @Input()\n props: TextMetadata;\n\n constructor() {}\n\n ngOnInit() {}\n}\n","import { CommonModule, NgIf } from '@angular/common';\nimport { Component, Input, OnInit } from '@angular/core';\nimport { IonText } from '@ionic/angular/standalone';\nimport { TitleMetadata } from './types';\n\n@Component({\n selector: 'val-title',\n standalone: true,\n imports: [CommonModule, NgIf, IonText],\n template: `\n <ion-text [color]=\"props.color\">\n <p *ngIf=\"!props.bold\" [ngClass]=\"[props.size]\" [class.thin]=\"props.thin\">\n {{ props.content }}\n </p>\n <b *ngIf=\"props.bold\">\n <p [class]=\"props.size\">{{ props.content }}</p>\n </b>\n </ion-text>\n `,\n styleUrls: ['./title.component.scss'],\n})\n/**\n * val-title\n *\n * A styled title or heading, with options for size, color, and boldness.\n *\n * @example\n * <val-title [props]=\"{ content: 'Section', size: 'large', color: 'primary', bold: true }\"></val-title>\n *\n * @input props: TitleMetadata - Configuration for the title (content, color, size, bold, thin)\n */\nexport class TitleComponent implements OnInit {\n /**\n * Title configuration object.\n * @type {TitleMetadata}\n * @property content - The title text to display.\n * @property color - The title color (Ionic color string).\n * @property size - The title size ('small' | 'medium' | 'large' | 'xlarge').\n * @property bold - Whether the title is bold.\n * @property thin - Whether the title is thin (optional).\n */\n @Input()\n props: TitleMetadata;\n\n constructor() {}\n\n ngOnInit() {}\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { BoxComponent } from '../../atoms/box/box.component';\nimport { IconComponent } from '../../atoms/icon/icon.component';\nimport { TextComponent } from '../../atoms/text/text.component';\nimport { AlertBoxMetadata } from './types';\n\n@Component({\n selector: 'val-alert-box',\n standalone: true,\n imports: [BoxComponent, IconComponent, TextComponent],\n template: `\n <val-box [props]=\"props.box\">\n <div class=\"content-container\" body>\n <val-icon [props]=\"props.icon\"></val-icon>\n <val-text class=\"text\" [props]=\"props.text\"></val-text>\n </div>\n </val-box>\n `,\n styleUrls: ['./alert-box.component.scss'],\n})\n/**\n * val-alert-box\n *\n * Displays an alert box with an icon and text, using a styled box container.\n *\n * @example\n * <val-alert-box [props]=\"{ box: {...}, icon: {...}, text: {...} }\"></val-alert-box>\n *\n * @input props: AlertBoxMetadata - Configuration for the alert box (box, icon, text)\n */\nexport class AlertBoxComponent implements OnInit {\n /**\n * Alert box configuration object.\n * @type {AlertBoxMetadata}\n * @property box - Box configuration (see BoxMetadata).\n * @property icon - Icon configuration (see IconMetadata).\n * @property text - Text configuration (see TextMetadata).\n */\n @Input()\n props: AlertBoxMetadata;\n\n constructor() {}\n\n ngOnInit() {}\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { ButtonComponent } from '../../atoms/button/button.component';\nimport { ButtonGroupMetadata } from './types';\n\n@Component({\n selector: 'val-button-group',\n standalone: true,\n imports: [CommonModule, ButtonComponent],\n template: `\n <div [ngClass]=\"['group-container', Position]\" [class.column]=\"props.columned\" style=\"width: 100%;\">\n <val-button\n *ngFor=\"let b of props.buttons\"\n [props]=\"b\"\n (onClick)=\"clickHandler(b?.token)\"\n [ngStyle]=\"{ width: props.buttons.length === 1 ? '100%' : 'auto' }\"\n ></val-button>\n </div>\n `,\n styleUrls: ['./button-group.component.scss'],\n})\n/**\n * val-button-group\n *\n * Displays a group of buttons with configurable layout and position.\n *\n * @example\n * <val-button-group [props]=\"{ buttons: [...], position: 'center', columned: false }\" (onClick)=\"handler($event)\"></val-button-group>\n *\n * @input props: ButtonGroupMetadata - Configuration for the button group (buttons, position, columned)\n * @output onClick - Emits the token of the clicked button\n */\nexport class ButtonGroupComponent implements OnInit {\n /**\n * Button group configuration object.\n * @type {ButtonGroupMetadata}\n * @property buttons - Array of button configurations.\n * @property position - Position of the button group ('center' | 'left' | 'right' | 'spaced').\n * @property columned - Whether the buttons are displayed in a column.\n */\n @Input()\n props: ButtonGroupMetadata;\n\n /**\n * Event emitted with the token of the clicked button.\n */\n @Output()\n onClick = new EventEmitter<string>();\n\n constructor() {}\n\n ngOnInit() {}\n\n clickHandler(token?: string) {\n this.onClick.emit(token);\n }\n\n get Position(): string {\n if (this.props.buttons.length === 1 && this.props.position === 'spaced') {\n return 'right';\n }\n\n return this.props.position;\n }\n}\n","import { ButtonMetadata, ToolbarAction } from '../../types';\n\nexport enum CardType {\n native = 'native',\n checker = 'checker',\n tappable = 'tappable',\n complex = 'complex',\n}\n\nexport interface CardClickEvent {\n section: CardSection;\n token?: string;\n}\n\nexport enum CardSection {\n headerLeft,\n headerRight,\n content,\n footer,\n footerExtra,\n}\n\nexport interface CardMetadata {\n token?: string;\n type: CardType;\n title?: string;\n overtitle?: string;\n content?: string;\n image?: string;\n footerActions: ButtonMetadata[];\n footerComplexActions: ToolbarAction[];\n leftActions: ToolbarAction[];\n rightActions: ToolbarAction[];\n selected: boolean;\n headerText?: string;\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport {\n IonButton,\n IonButtons,\n IonCard,\n IonCardContent,\n IonCardHeader,\n IonCardSubtitle,\n IonCardTitle,\n IonCheckbox,\n IonIcon,\n} from '@ionic/angular/standalone';\nimport { AvatarComponent } from '../../atoms/avatar/avatar.component';\nimport { ButtonComponent } from '../../atoms/button/button.component';\nimport { ImageComponent } from '../../atoms/image/image.component';\nimport { TextComponent } from '../../atoms/text/text.component';\nimport { ToolbarActionType } from '../../types';\nimport { CardClickEvent, CardMetadata, CardSection, CardType } from './types';\n\n@Component({\n selector: 'val-card',\n standalone: true,\n imports: [\n CommonModule,\n ButtonComponent,\n AvatarComponent,\n ImageComponent,\n TextComponent,\n IonCard,\n IonCardContent,\n IonCardHeader,\n IonCardTitle,\n IonCardSubtitle,\n IonCheckbox,\n IonButtons,\n IonButton,\n IonIcon,\n ],\n template: `\n <ion-card *ngIf=\"props.type === types.native\">\n <img alt=\"image\" [src]=\"props.image\" />\n <ion-card-header *ngIf=\"props.title || props.overtitle\">\n <ion-card-title *ngIf=\"props.title\">{{ props.title }}</ion-card-title>\n <ion-card-subtitle *ngIf=\"props.overtitle\">{{ props.overtitle }}</ion-card-subtitle>\n </ion-card-header>\n\n <ion-card-content *ngIf=\"props.content\">{{ props.content }}</ion-card-content>\n\n <val-button\n *ngFor=\"let b of props.footerActions\"\n [props]=\"b\"\n (onClick)=\"clickHandler(sections.footer, b.token)\"\n ></val-button>\n </ion-card>\n\n <ion-card\n *ngIf=\"props.type === types.tappable\"\n (click)=\"clickHandler(sections.content, props.token)\"\n class=\"tapable\"\n >\n <img alt=\"image\" [src]=\"props.image\" />\n <ion-card-header *ngIf=\"props.title || props.overtitle\">\n <ion-card-title *ngIf=\"props.title\">{{ props.title }}</ion-card-title>\n <ion-card-subtitle *ngIf=\"props.overtitle\">{{ props.overtitle }}</ion-card-subtitle>\n </ion-card-header>\n\n <ion-card-content *ngIf=\"props.content\">{{ props.content }}</ion-card-content>\n </ion-card>\n\n <ion-card\n *ngIf=\"props.type === types.checker\"\n (click)=\"clickHandler(sections.content, props.token)\"\n class=\"tapable\"\n >\n <ion-card-header *ngIf=\"props.title || props.overtitle\" class=\"checker\">\n <div>\n <ion-card-subtitle *ngIf=\"props.overtitle\">{{ props.overtitle }}</ion-card-subtitle>\n <ion-card-title *ngIf=\"props.title\">{{ props.title }}</ion-card-title>\n </div>\n <div>\n <ion-checkbox [checked]=\"props.selected\"></ion-checkbox>\n </div>\n </ion-card-header>\n\n <ion-card-content *ngIf=\"props.content\">{{ props.content }}</ion-card-content>\n </ion-card>\n\n <ion-card *ngIf=\"props.type === types.complex\" class=\"complex\">\n <ion-card-header class=\"complex-header\">\n <ion-buttons style=\"display: flex; align-items: center\" *ngIf=\"props.leftActions.length > 0\">\n <ng-container *ngFor=\"let action of props.leftActions\">\n <ion-button\n *ngIf=\"action.type === actionTypes.ICON\"\n (click)=\"clickHandler(sections.headerLeft, action.token)\"\n >\n <ion-icon slot=\"icon-only\" [name]=\"action.description\" color=\"dark\"></ion-icon>\n </ion-button>\n <val-avatar\n style=\"margin-right: 4px; cursor: pointer\"\n *ngIf=\"action.type === actionTypes.AVATAR\"\n [props]=\"{ size: 'small', image: action.description, default: '' }\"\n (onClick)=\"clickHandler(sections.headerLeft, action.token)\"\n ></val-avatar>\n <val-image\n *ngIf=\"action.type === actionTypes.IMAGE\"\n [props]=\"action.image\"\n (click)=\"clickHandler(sections.headerLeft, action.token)\"\n ></val-image>\n <ion-button\n *ngIf=\"action.type === actionTypes.BUTTON\"\n (click)=\"clickHandler(sections.headerLeft, action.token)\"\n >\n {{ action.description }}\n </ion-button>\n <div *ngIf=\"props.headerText\">\n <val-text [props]=\"{ content: props.headerText, color: 'dark', bold: true, size: 'medium' }\" />\n </div>\n </ng-container>\n </ion-buttons>\n <ion-buttons style=\"display: flex; align-items: center\" *ngIf=\"props.rightActions.length > 0\">\n <ng-container *ngFor=\"let action of props.rightActions\">\n <ion-button\n *ngIf=\"action.type === actionTypes.ICON\"\n (click)=\"clickHandler(sections.headerRight, action.token)\"\n >\n <ion-icon slot=\"icon-only\" [name]=\"action.description\" color=\"dark\"></ion-icon>\n </ion-button>\n <val-avatar\n style=\"margin-right: 4px; cursor: pointer\"\n *ngIf=\"action.type === actionTypes.AVATAR\"\n [props]=\"{ size: 'small', image: action.description, default: '' }\"\n (onClick)=\"clickHandler(sections.headerRight, action.token)\"\n ></val-avatar>\n <val-image\n *ngIf=\"action.type === actionTypes.IMAGE\"\n [props]=\"action.image\"\n (click)=\"clickHandler(sections.headerRight, action.token)\"\n ></val-image>\n <ion-button\n *ngIf=\"action.type === actionTypes.BUTTON\"\n (click)=\"clickHandler(sections.headerRight, action.token)\"\n >\n {{ action.description }}\n </ion-button>\n </ng-container>\n </ion-buttons>\n </ion-card-header>\n\n <div class=\"tapable\" (click)=\"clickHandler(sections.content, props.token)\">\n <ion-card-header *ngIf=\"props.title || props.overtitle\" class=\"complex-header\">\n <div>\n <ion-card-subtitle *ngIf=\"props.overtitle\">{{ props.overtitle }}</ion-card-subtitle>\n <ion-card-title *ngIf=\"props.title\">{{ props.title }}</ion-card-title>\n </div>\n </ion-card-header>\n\n <img alt=\"image\" [src]=\"props.image\" />\n <ion-card-content *ngIf=\"props.content\" class=\"complex-content\">{{ props.content }}</ion-card-content>\n </div>\n <val-button\n *ngFor=\"let b of props.footerActions\"\n [props]=\"b\"\n (onClick)=\"clickHandler(sections.footer, b.token)\"\n ></val-button>\n <ion-buttons\n style=\"display: flex; align-items: center; justify-content: flex-end; margin: 8px\"\n *ngIf=\"props.footerComplexActions.length > 0\"\n >\n <ng-container *ngFor=\"let action of props.footerComplexActions\">\n <ion-button\n *ngIf=\"action.type === actionTypes.ICON\"\n (click)=\"clickHandler(sections.footerExtra, action.token)\"\n >\n <ion-icon slot=\"icon-only\" [name]=\"action.description\" color=\"dark\"></ion-icon>\n </ion-button>\n <val-avatar\n style=\"margin-right: 4px; cursor: pointer\"\n *ngIf=\"action.type === actionTypes.AVATAR\"\n [props]=\"{ size: 'small', image: action.description, default: '' }\"\n (onClick)=\"clickHandler(sections.footerExtra, action.token)\"\n ></val-avatar>\n <val-image\n *ngIf=\"action.type === actionTypes.IMAGE\"\n [props]=\"action.image\"\n (click)=\"clickHandler(sections.footerExtra, action.token)\"\n ></val-image>\n <ion-button\n *ngIf=\"action.type === actionTypes.BUTTON\"\n (click)=\"clickHandler(sections.footerExtra, action.token)\"\n color=\"dark\"\n >\n {{ action.description }}\n </ion-button>\n </ng-container>\n </ion-buttons>\n </ion-card>\n `,\n styleUrls: ['./card.component.scss'],\n})\n/**\n * val-card\n *\n * A flexible card component supporting images, titles, content, actions, and custom sections.\n *\n * @example\n * <val-card [props]=\"{ type: 'native', title: 'Card', image: 'url', content: '...', actions: [...] }\" (onClick)=\"handler($event)\"></val-card>\n *\n * @input props: CardMetadata - Configuration for the card (type, title, image, content, actions, etc.)\n * @output onClick - Emits a CardClickEvent when the card or an action is clicked\n */\nexport class CardComponent implements OnInit {\n /**\n * Card configuration object.\n * @type {CardMetadata}\n * @property type - The card type (see CardType).\n * @property title - The card title.\n * @property image - The card image URL.\n * @property content - The card content.\n * @property actions - Array of action buttons (optional).\n * @property sections - Custom card sections (optional).\n * @property overtitle - Subtitle or overtitle (optional).\n */\n @Input()\n props: CardMetadata;\n\n /**\n * Event emitted when the card or an action is clicked.\n */\n @Output()\n onClick = new EventEmitter<CardClickEvent>();\n\n types = CardType;\n actionTypes = ToolbarActionType;\n sections = CardSection;\n\n constructor() {}\n\n ngOnInit() {}\n\n clickHandler(section: CardSection, token?: string) {\n this.onClick.emit({ section, token });\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, OnInit } from '@angular/core';\nimport { IonCheckbox } from '@ionic/angular/standalone';\n\n@Component({\n selector: 'val-check-input',\n standalone: true,\n imports: [CommonModule, IonCheckbox],\n template: ` <ion-checkbox>I agree to the terms and conditions</ion-checkbox> `,\n styleUrls: ['./check-input.component.scss'],\n})\n/**\n * val-check-input\n *\n * A simple checkbox input for boolean values or agreements.\n *\n * @example\n * <val-check-input></val-check-input>\n */\nexport class CheckInputComponent implements OnInit {\n constructor() {}\n\n ngOnInit() {}\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, Input, OnInit } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { IonCheckbox, IonTextarea } from '@ionic/angular/standalone';\nimport { InputMetadata } from '../../types';\n\n@Component({\n selector: 'val-comment-input',\n standalone: true,\n imports: [CommonModule, ReactiveFormsModule, IonCheckbox, IonTextarea],\n template: `\n <ion-textarea [formControl]=\"props.control\" [counter]=\"true\" [maxlength]=\"props.range.max\"></ion-textarea>\n `,\n styleUrls: ['./comment-input.component.scss'],\n})\n/**\n * val-comment-input\n *\n * A textarea input for multi-line comments, integrated with Angular forms.\n *\n * @example\n * <val-comment-input [props]=\"{ control: myControl, range: { max: 200 } }\"></val-comment-input>\n *\n * @input props: InputMetadata - Configuration for the textarea (form control, range, etc.)\n */\nexport class CommentInputComponent implements OnInit {\n /**\n * Input configuration object.\n * @type {InputMetadata}\n * @property control - The Angular FormControl for the textarea.\n * @property range - The range object with max length.\n */\n @Input() props: InputMetadata;\n\n constructor() {}\n\n ngOnInit() {}\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, Input, OnInit } from '@angular/core';\nimport { IonSpinner, IonText } from '@ionic/angular/standalone';\nimport { ContentLoaderMetadata } from './types';\n\n@Component({\n selector: 'val-content-loader',\n standalone: true,\n imports: [CommonModule, IonSpinner, IonText],\n template: `\n <div [ngClass]=\"['spinner-wrapper', props.size]\">\n <ion-spinner [ngClass]=\"[props.size]\" [name]=\"props.name\" [color]=\"props.color\"></ion-spinner>\n <ion-text [color]=\"props.color\">\n <p>{{ props.text }}</p>\n </ion-text>\n </div>\n `,\n styleUrls: ['./content-loader.component.scss'],\n})\n/**\n * val-content-loader\n *\n * A loading spinner with optional text, for indicating loading states.\n *\n * @example\n * <val-content-loader [props]=\"{ size: 'large', color: 'primary', text: 'Loading...' }\"></val-content-loader>\n *\n * @input props: ContentLoaderMetadata - Configuration for the loader (size, color, text, etc.)\n */\nexport class ContentLoaderComponent implements OnInit {\n /**\n * Loader configuration object.\n * @type {ContentLoaderMetadata}\n * @property size - The spinner size.\n * @property color - The spinner color.\n * @property text - The loading text (optional).\n * @property name - The spinner name (optional).\n */\n @Input()\n props: ContentLoaderMetadata;\n\n constructor() {}\n\n ngOnInit() {}\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, Input, OnInit } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { IonDatetime, IonDatetimeButton, IonModal } from '@ionic/angular/standalone';\nimport { InputMetadata } from '../../types';\n\n@Component({\n selector: 'val-date-input',\n standalone: true,\n imports: [CommonModule, ReactiveFormsModule, IonDatetime, IonDatetimeButton, IonModal],\n template: `\n <div class=\"button-container\">\n <ion-datetime-button class=\"action\" [datetime]=\"props.token\"></ion-datetime-button>\n </div>\n <ion-modal [keepContentsMounted]=\"true\">\n <ng-template>\n <ion-datetime\n [formControl]=\"props.control\"\n [id]=\"props.token\"\n presentation=\"date\"\n locale=\"es-ES\"\n [firstDayOfWeek]=\"1\"\n [showDefaultButtons]=\"true\"\n doneText=\"Aceptar\"\n cancelText=\"Cancelar\"\n formatOptions=\"{\n date: { dateStyle: 'medium' },\n time: { timeStyle: 'short' }\n }\"\n >\n <span slot=\"title\">{{ props.hint }}</span>\n </ion-datetime>\n </ng-template>\n </ion-modal>\n `,\n styleUrls: ['./date-input.component.scss'],\n})\n/**\n * val-date-input\n *\n * A date picker input integrated with Angular forms, using Ionic's datetime component.\n *\n * @example\n * <val-date-input [props]=\"{ control: myControl, hint: 'Select a date' }\"></val-date-input>\n *\n * @input props: InputMetadata - Configuration for the date input (form control, hint, etc.)\n */\nexport class DateInputComponent implements OnInit {\n /**\n * Input configuration object.\n * @type {InputMetadata}\n * @property control - The Angular FormControl for the date input.\n * @property hint - The hint text for the input.\n */\n @Input() props: InputMetadata;\n\n constructor() {}\n\n ngOnInit() {}\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, Input, OnInit } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { IonInput } from '@ionic/angular/standalone';\nimport { InputMetadata } from '../../types';\n\n@Component({\n selector: 'val-email-input',\n standalone: true,\n imports: [CommonModule, ReactiveFormsModule, IonInput],\n template: ` <ion-input [formControl]=\"props.control\" type=\"email\" [placeholder]=\"props.placeholder\"></ion-input> `,\n styleUrls: ['./email-input.component.scss'],\n})\n/**\n * val-email-input\n *\n * An email input field integrated with Angular forms.\n *\n * @example\n * <val-email-input [props]=\"{ control: myControl, placeholder: 'Enter your email' }\"></val-email-input>\n *\n * @input props: InputMetadata - Configuration for the input (form control, placeholder, etc.)\n */\nexport class EmailInputComponent implements OnInit {\n /**\n * Input configuration object.\n * @type {InputMetadata}\n * @property control - The Angular FormControl for the input.\n * @property placeholder - The placeholder text.\n */\n @Input() props: InputMetadata;\n\n constructor() {}\n\n ngOnInit() {}\n}\n","/**\n * Resolves a color string to a valid CSS value for use in styles.\n * Supports Ionic color names, CSS variables, and custom colors.\n *\n * @param color The color name, CSS variable, or custom color string\n * @returns A valid CSS color value\n *\n * @example\n * resolveColor('primary'); // returns 'var(--ion-color-primary)'\n * resolveColor('--my-custom-color'); // returns 'var(--my-custom-color)'\n * resolveColor('#ff0000'); // returns '#ff0000'\n */\nexport function resolveColor(color: string): string {\n // Si el color empieza con \"--\", se asume que es una variable CSS válida\n if (color.startsWith('--')) {\n return `var(${color})`;\n }\n\n // Lista de colores predefinidos de Ionic\n const ionicColors = [\n 'primary',\n 'secondary',\n 'tertiary',\n 'success',\n 'warning',\n 'danger',\n 'light',\n 'medium',\n 'dark',\n ];\n\n // Verificar si el color es un color de Ionic\n if (ionicColors.includes(color)) {\n return `var(--ion-color-${color})`;\n }\n\n // Si no es una variable CSS ni un color de Ionic, devolver el color tal cual\n return color;\n}\n","import { Component, Input } from '@angular/core';\nimport { IonText } from '@ionic/angular/standalone';\nimport { resolveColor } from '../../../shared/utils/styles';\nimport { ExpandableTextInput } from './types';\n\n@Component({\n selector: 'val-expandable-text',\n standalone: true,\n imports: [IonText],\n template: `\n <div class=\"description-container\" [class.expanded]=\"expanded\" [class.has-gradient]=\"!expanded && isTruncated\">\n <ion-text>\n <p class=\"description\">\n <span class=\"content\">{{ expanded ? props.content : truncatedText }}</span>\n @if (!expanded && isTruncated) {\n <span class=\"see-more\" [style.color]=\"this.color()\" (click)=\"toggleExpand()\">\n {{ props.expandText || 'ver más' }}\n </span>\n }\n </p>\n </ion-text>\n </div>\n `,\n styles: [\n `\n .description-container {\n position: relative;\n overflow: hidden;\n max-height: 10rem; /* Altura para texto truncado */\n transition: max-height 0.3s ease-in-out;\n }\n\n .description-container.expanded {\n max-height: none; /* Sin límite de altura al expandir */\n }\n\n .description {\n position: relative;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n .description-container:not(.expanded) .description::after {\n content: '';\n position: absolute;\n bottom: 0;\n left: 0;\n right: 0;\n height: 3.5rem; /* Altura del gradiente */\n background: linear-gradient(to top, var(--ion-background-color), rgba(255, 255, 255, 0));\n pointer-events: none; /* Ignorar interacciones en el gradiente */\n }\n\n .description-container:not(.has-gradient) .description::after {\n background: transparent; /* Fondo transparente si no hay gradiente */\n }\n\n .see-more {\n position: relative;\n font-weight: bold;\n cursor: pointer;\n z-index: 1;\n margin-left: 0.3rem;\n }\n `,\n ],\n})\n/**\n * val-expandable-text\n *\n * A text component that can be expanded/collapsed to show more or less content.\n *\n * @example\n * <val-expandable-text [props]=\"{ content: '...', limit: 180, color: 'primary', expandText: 'más' }\"></val-expandable-text>\n *\n * @input props: ExpandableTextInput - Configuration for the expandable text (content, limit, color, expandText)\n */\nexport class ExpandableTextComponent {\n /**\n * Expandable text configuration object.\n * @type {ExpandableTextInput}\n * @property content - The text content to display.\n * @property limit - The character limit before truncation.\n * @property color - The color for the \"see more\" link.\n * @property expandText - The text for the expand link (optional).\n */\n @Input() props: ExpandableTextInput;\n expanded = false;\n defaultColor = 'primary';\n\n get truncatedText(): string {\n const maxLength = this.props.limit || 100; // Longitud por defecto\n return this.props.content?.length > maxLength ? this.props.content.slice(0, maxLength) + '...' : this.props.content;\n }\n\n get isTruncated(): boolean {\n return this.props.content?.length > (this.props.limit || 100);\n }\n\n toggleExpand() {\n this.expanded = !this.expanded;\n }\n\n color() {\n return resolveColor(this.props.color || this.defaultColor);\n }\n}\n","import { Component, Input, OnInit, ViewChild } from '@angular/core';\nimport { IonIcon } from '@ionic/angular/standalone';\nimport { ButtonComponent } from '../../atoms/button/button.component';\nimport { PrimarySolidDefaultRoundButton } from '../../atoms/button/factory';\nimport { TextComponent } from '../../atoms/text/text.component';\nimport { ButtonMetadata, InputMetadata } from '../../types';\n\n@Component({\n selector: 'val-file-input',\n standalone: true,\n imports: [IonIcon, TextComponent, ButtonComponent],\n template: `\n <div class=\"file-container\">\n <input style=\"display: none\" type=\"file\" (change)=\"onFileSelected($event)\" #fileInput />\n <div class=\"name-container\">\n <ion-icon [name]=\"selectedFile ? 'checkmark-circle-outline' : 'alert-circle-outline'\"></ion-icon>\n <val-text\n style=\"margin-left: 4px;\"\n [props]=\"{\n content: selectedFile ? selectedFile.name : 'No has seleccionado archivo',\n color: 'dark',\n bold: false,\n size: 'medium',\n }\"\n ></val-text>\n </div>\n <val-button [props]=\"contrastButton\" (onClick)=\"fileInput.click()\"></val-button>\n </div>\n `,\n styleUrls: ['./file-input.component.scss'],\n})\n/**\n * val-file-input\n *\n * A file input component for uploading files, integrated with Angular forms.\n *\n * @example\n * <val-file-input [props]=\"{ control: myControl }\"></val-file-input>\n *\n * @input props: InputMetadata - Configuration for the file input (form control, etc.)\n */\nexport class FileInputComponent implements OnInit {\n /**\n * Input configuration object.\n * @type {InputMetadata}\n * @property control - The Angular FormControl for the file input.\n */\n @Input() props: InputMetadata;\n\n @ViewChild('fileInput') fileInput;\n\n contrastButton: ButtonMetadata = {\n ...PrimarySolidDefaultRoundButton('Subir archivo'),\n color: 'light',\n };\n selectedFile: File;\n\n constructor() {}\n\n ngOnInit() {}\n\n onFileSelected(event): void {\n this.selectedFile = event.target.files[0];\n this.props.control.setValue(this.selectedFile);\n }\n\n reset(): void {\n this.selectedFile = null;\n this.fileInput.nativeElement.value = '';\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, Input, OnInit } from '@angular/core';\nimport { TextComponent } from '../../atoms/text/text.component';\nimport { InputMetadata } from '../../types';\n\n@Component({\n selector: 'val-hint',\n standalone: true,\n imports: [CommonModule, TextComponent],\n template: `\n <div class=\"hint-container\" *ngIf=\"props.control.invalid && (props.control.touched || props.control.dirty)\">\n <val-text\n *ngFor=\"let e of Errors\"\n [props]=\"{\n content: e,\n color: 'danger',\n bold: false,\n size: 'small',\n }\"\n ></val-text>\n </div>\n `,\n styleUrls: ['./hint.component.scss'],\n})\n/**\n * val-hint\n *\n * Displays validation error messages for a form input, using Angular forms.\n *\n * @example\n * <val-hint [props]=\"{ control: myControl, errors: { required: 'Required field' } }\"></val-hint>\n *\n * @input props: InputMetadata - Configuration for the input (form control, errors, etc.)\n */\nexport class HintComponent implements OnInit {\n /**\n * Input configuration object.\n * @type {InputMetadata}\n * @property control - The Angular FormControl for the input.\n * @property errors - The error messages mapping.\n */\n @Input() props: InputMetadata;\n\n constructor() {}\n\n ngOnInit() {}\n\n get Errors(): string[] {\n const keys = Object.keys(this.props.errors);\n const errors = [];\n keys.map((e: string) => {\n if (this.props.control.hasError(e)) {\n errors.push(this.props.errors[e]);\n }\n });\n return errors;\n }\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { IonDatetime } from '@ionic/angular/standalone';\nimport { InputMetadata } from '../../types';\n\n@Component({\n selector: 'val-hour-input',\n standalone: true,\n imports: [ReactiveFormsModule, IonDatetime],\n template: ` <ion-datetime [formControl]=\"props.control\" presentation=\"time\"></ion-datetime>`,\n styleUrls: ['./hour-input.component.scss'],\n})\n/**\n * val-hour-input\n *\n * A time picker input integrated with Angular forms, using Ionic's datetime component.\n *\n * @example\n * <val-hour-input [props]=\"{ control: myControl }\"></val-hour-input>\n *\n * @input props: InputMetadata - Configuration for the time input (form control, etc.)\n */\nexport class HourInputComponent implements OnInit {\n /**\n * Input configuration object.\n * @type {InputMetadata}\n * @property control - The Angular FormControl for the time input.\n */\n @Input() props: InputMetadata;\n\n constructor() {}\n\n ngOnInit() {}\n}\n","import { Component, EventEmitter, inject, Input, OnInit, Output } from '@angular/core';\nimport { IonButton, IonIcon, IonText } from '@ionic/angular/standalone';\nimport { addIcons } from 'ionicons';\nimport { chevronForwardOutline } from 'ionicons/icons';\nimport { NavigationService } from '../../../services/navigation.service';\nimport { LinkMetadata } from './types';\n\n@Component({\n selector: 'val-link',\n standalone: true,\n imports: [IonButton, IonIcon, IonText],\n template: `\n <div>\n <ion-button type=\"button\" [color]=\"props.color\" fill=\"clear\" [size]=\"props.size\" (click)=\"onClickHandler()\">\n <ion-icon slot=\"end\" name=\"chevron-forward-outline\"></ion-icon>\n <ion-text>{{ props.text }}</ion-text>\n </ion-button>\n </div>\n `,\n styleUrls: ['./link.component.scss'],\n})\n/**\n * val-link\n *\n * A stylized link button with navigation support for internal, in-app, or new tab links.\n *\n * @example\n * <val-link [props]=\"{ text: 'Go', color: 'primary', link: '/home', type: 'internal' }\" (onClick)=\"handler($event)\"></val-link>\n *\n * @input props: LinkMetadata - Configuration for the link (text, color, link, type, etc.)\n * @output onClick - Emits the token of the clicked link\n */\nexport class LinkComponent implements OnInit {\n /**\n * Link configuration object.\n * @type {LinkMetadata}\n * @property text - The link text.\n * @property color - The button color (Ionic color string).\n * @property link - The URL or route to navigate to.\n * @property type - The navigation type ('internal', 'browse', 'tab').\n * @property token - Optional token for event identification.\n * @property size - The button size (optional).\n */\n @Input()\n props: LinkMetadata;\n\n @Output()\n onClick = new EventEmitter<string>();\n\n service = inject(NavigationService);\n\n constructor() {\n addIcons({ chevronForwardOutline });\n }\n\n ngOnInit() {}\n\n onClickHandler() {\n this.onClick.emit(this.props.token);\n\n switch (this.props.type) {\n case 'internal':\n this.service.navigateByUrl(this.props.link);\n break;\n case 'browse':\n this.service.navigateInApp(this.props.link);\n break;\n case 'tab':\n this.service.openInNewTab(this.props.link);\n break;\n }\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, Input, OnInit } from '@angular/core';\nimport { HrefComponent } from '../../atoms/href/href.component';\nimport { TitleComponent } from '../../atoms/title/title.component';\nimport { LinkCakeMetadata } from './types';\n\n@Component({\n selector: 'val-links-cake',\n standalone: true,\n imports: [CommonModule, TitleComponent, HrefComponent],\n template: `\n <div>\n @if (props.title) {\n <div class=\"title\">\n <val-title [props]=\"{ content: props.title, color: 'dark', bold: false, size: props.size }\"></val-title>\n </div>\n }\n <div class=\"link\" *ngFor=\"let l of props.links\">\n <val-href [props]=\"l\"></val-href>\n </div>\n </div>\n `,\n styleUrls: ['./links-cake.component.scss'],\n})\n/**\n * val-links-cake\n *\n * Displays a list of links with an optional title, styled as a \"cake\" of links.\n *\n * @example\n * <val-links-cake [props]=\"{ title: 'Links', links: [...], size: 'medium' }\"></val-links-cake>\n *\n * @input props: LinkCakeMetadata - Configuration for the links cake (title, links, size)\n */\nexport class LinksCakeComponent implements OnInit {\n /**\n * Links cake configuration object.\n * @type {LinkCakeMetadata}\n * @property title - The title for the links section (optional).\n * @property links - Array of link configurations.\n * @property size - The size of the title and links.\n */\n @Input()\n props: LinkCakeMetadata;\n\n constructor() {}\n\n ngOnInit() {}\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, Input, OnInit } from '@angular/core';\nimport { BoxComponent } from '../../atoms/box/box.component';\nimport { TextComponent } from '../../atoms/text/text.component';\nimport { NotesBoxMetadata } from './types';\n\n@Component({\n selector: 'val-notes-box',\n standalone: true,\n imports: [CommonModule, BoxComponent, TextComponent],\n template: `\n <val-box\n [props]=\"{\n icon: '',\n bordered: false,\n color: props.color,\n leftBorder: true,\n rounded: props.rounded,\n padding: props.padding,\n }\"\n >\n <div [ngClass]=\"['content-container', props.size]\" body>\n @if (props.prefix) {\n <val-text\n [props]=\"{ content: props.prefix, color: props.textColor, bold: true, size: props.size }\"\n ></val-text>\n }\n <val-text [props]=\"{ content: props.text, color: props.textColor, bold: false, size: props.size }\"></val-text>\n </div>\n </val-box>\n `,\n styleUrls: ['./notes-box.component.scss'],\n})\n/**\n * val-notes-box\n *\n * Displays a styled notes/info box with optional prefix and configurable color, size, and padding.\n *\n * @example\n * <val-notes-box [props]=\"{ text: 'Note', prefix: 'Info', color: 'primary', textColor: 'dark', size: 'medium', rounded: true, padding: '8px' }\"></val-notes-box>\n *\n * @input props: NotesBoxMetadata - Configuration for the notes box (text, prefix, color, textColor, size, rounded, padding)\n */\nexport class NotesBoxComponent implements OnInit {\n /**\n * Notes box configuration object.\n * @type {NotesBoxMetadata}\n * @property text - The main text content.\n * @property prefix - Optional prefix text (bold).\n * @property color - The background color of the box.\n * @property textColor - The color of the text.\n * @property size - The size of the text and box.\n * @property rounded - Whether the box has rounded corners.\n * @property padding - Custom padding for the box.\n */\n @Input()\n props: NotesBoxMetadata;\n\n constructor() {}\n\n ngOnInit() {}\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { IonInput } from '@ionic/angular/standalone';\nimport { InputMetadata } from '../../types';\n\n@Component({\n selector: 'val-number-input',\n standalone: true,\n imports: [ReactiveFormsModule, IonInput],\n template: ` <ion-input [formControl]=\"props.control\" type=\"number\" [placeholder]=\"props.placeholder\"></ion-input> `,\n styleUrls: ['./number-input.component.scss'],\n})\n/**\n * val-number-input\n *\n * A number input field integrated with Angular forms.\n *\n * @example\n * <val-number-input [props]=\"{ control: myControl, placeholder: 'Enter a number' }\"></val-number-input>\n *\n * @input props: InputMetadata - Configuration for the input (form control, placeholder, etc.)\n */\nexport class NumberInputComponent implements OnInit {\n /**\n * Input configuration object.\n * @type {InputMetadata}\n * @property control - The Angular FormControl for the input.\n * @property placeholder - The placeholder text.\n */\n @Input() props: InputMetadata;\n\n constructor() {}\n\n ngOnInit() {}\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { IonButton, IonIcon, IonInput } from '@ionic/angular/standalone';\nimport { IconService } from '../../../services/icons.service';\nimport { InputMetadata } from '../../types';\n\n@Component({\n selector: 'val-password-input',\n standalone: true,\n imports: [ReactiveFormsModule, IonInput, IonButton, IonIcon],\n template: `\n <div class=\"input-container\">\n <ion-input\n class=\"sign-in__input-password\"\n [formControl]=\"props.control\"\n [type]=\"hidePassword ? 'password' : 'text'\"\n [placeholder]=\"props.placeholder\"\n ></ion-input>\n <ion-button color=\"dark\" fill=\"clear\" (click)=\"hidePassword = !hidePassword\" size=\"small\">\n <ion-icon slot=\"icon-only\" [name]=\"hidePassword ? 'eye-off-outline' : 'eye-outline'\"></ion-icon>\n </ion-button>\n </div>\n `,\n styleUrls: ['./password-input.component.scss'],\n})\n/**\n * val-password-input\n *\n * A password input field with show/hide toggle, integrated with Angular forms.\n *\n * @example\n * <val-password-input [props]=\"{ control: myControl, placeholder: 'Enter password' }\"></val-password-input>\n *\n * @input props: InputMetadata - Configuration for the input (form control, placeholder, etc.)\n */\nexport class PasswordInputComponent implements OnInit {\n /**\n * Input configuration object.\n * @type {InputMetadata}\n * @property control - The Angular FormControl for the input.\n * @property placeholder - The placeholder text.\n */\n @Input() props: InputMetadata;\n\n hidePassword = true;\n\n constructor(icon: IconService) {}\n\n ngOnInit() {}\n}\n","import { Component, Input, OnInit, ViewChild } from '@angular/core';\nimport { NgOtpInputComponent, NgOtpInputConfig, NgOtpInputModule } from 'ng-otp-input';\nimport { InputMetadata } from '../../types';\n\n@Component({\n selector: 'val-pin-input',\n standalone: true,\n imports: [NgOtpInputModule],\n template: `\n <div class=\"otp\">\n <ng-otp-input [formCtrl]=\"props.control\" [config]=\"otpInputConfig\"></ng-otp-input>\n </div>\n `,\n styleUrls: ['./pin-input.component.scss'],\n})\n/**\n * val-pin-input\n *\n * A PIN code input using ng-otp-input, integrated with Angular forms.\n *\n * @example\n * <val-pin-input [props]=\"{ control: myControl }\"></val-pin-input>\n *\n * @input props: InputMetadata - Configuration for the PIN input (form control, etc.)\n */\nexport class PinInputComponent implements OnInit {\n @ViewChild(NgOtpInputComponent, { static: false }) pinCode: NgOtpInputComponent | undefined;\n\n /**\n * Input configuration object.\n * @type {InputMetadata}\n * @property control - The Angular FormControl for the PIN input.\n */\n @Input() props: InputMetadata;\n\n codeLength = 5;\n otpInputConfig: NgOtpInputConfig = {\n inputStyles: {\n 'font-size': '32px',\n width: '58px',\n height: '60px',\n },\n inputClass: 'otp-input-box',\n length: this.codeLength,\n allowNumbersOnly: true,\n };\n\n constructor() {}\n\n ngOnInit() {}\n\n reset() {\n if (this.pinCode) {\n this.pinCode.setValue('');\n }\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, Input, OnInit } from '@angular/core';\nimport { DisplayComponent } from '../../atoms/display/display.component';\nimport { TitleComponent } from '../../atoms/title/title.component';\nimport { TitleBlockMetada } from './types';\n\n@Component({\n selector: 'val-title-block',\n standalone: true,\n imports: [CommonModule, TitleComponent, DisplayComponent],\n template: `\n <div [ngClass]=\"['titles-container', props.position]\">\n <val-title\n *ngIf=\"props.aboveTitle\"\n [props]=\"{\n content: props.aboveTitle.content | uppercase,\n color: props.aboveTitle.color,\n bold: false,\n size: props.aboveTitle.size,\n }\"\n ></val-title>\n <val-display\n *ngIf=\"props.title\"\n [props]=\"{\n content: props.title.content,\n color: props.title.color,\n size: props.title.size,\n }\"\n ></val-display>\n <val-title\n style=\"margin-top: 16px;\"\n *ngIf=\"props.bellowTitle\"\n [props]=\"{\n content: props.bellowTitle.content,\n color: props.bellowTitle.color,\n bold: false,\n size: props.bellowTitle.size,\n thin: props.bellowTitle.thin,\n }\"\n ></val-title>\n </div>\n `,\n styleUrls: ['./title-block.component.scss'],\n})\n/**\n * val-title-block\n *\n * Displays a block of titles (above, main, below) with configurable styles and positions.\n *\n * @example\n * <val-title-block [props]=\"{ title: {...}, aboveTitle: {...}, bellowTitle: {...}, position: 'center' }\"></val-title-block>\n *\n * @input props: TitleBlockMetada - Configuration for the title block (title, aboveTitle, bellowTitle, position)\n */\nexport class TitleBlockComponent implements OnInit {\n @Input()\n props: TitleBlockMetada;\n\n constructor() {}\n\n ngOnInit() {}\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { ProgressBarComponent } from '../../atoms/progress-bar/progress-bar.component';\nimport { TextComponent } from '../../atoms/text/text.component';\nimport { TitleBlockComponent } from '../title-block/title-block.component';\nimport { ProgressStatusMetadata } from './types';\n\n//TODO: support automatic or manual interval for messages. Include the interval number as a parameter.\n@Component({\n selector: 'val-progress-status',\n standalone: true,\n imports: [TitleBlockComponent, ProgressBarComponent, TextComponent],\n template: `\n <div class=\"status-container\">\n <div class=\"title-container\">\n <val-title-block\n [props]=\"{\n position: 'center',\n aboveTitle: props.titles.aboveTitle,\n title: props.titles.title,\n bellowTitle: props.titles.bellowTitle,\n }\"\n ></val-title-block>\n </div>\n <div class=\"progress-bar-container\">\n <val-progress-bar\n [props]=\"{\n progress: props.progress,\n size: 'xlarge',\n color: props.color,\n rounded: true,\n type: 'determinate',\n buffer: 1,\n }\"\n ></val-progress-bar>\n </div>\n <div class=\"subtitle-container\">\n <div class=\"subtitle\" [class.blink]=\"blinking\">\n <val-text [props]=\"{ content: Content, color: 'medium', bold: false, size: props.size }\"></val-text>\n </div>\n </div>\n </div>\n `,\n styleUrls: ['./progress-status.component.scss'],\n})\n/**\n * val-progress-status\n *\n * Displays a progress bar with status messages and titles, useful for multi-step or loading processes.\n *\n * @example\n * <val-progress-status [props]=\"{ progress: 0.5, color: 'primary', size: 'medium', titles: {...}, messages: [...] }\"></val-progress-status>\n *\n * @input props: ProgressStatusMetadata - Configuration for the progress status (progress, color, size, titles, messages)\n */\nexport class ProgressStatusComponent implements OnInit {\n /**\n * Progress status configuration object.\n * @type {ProgressStatusMetadata}\n * @property progress - The progress value (0 to 1).\n * @property color - The color of the progress bar.\n * @property size - The size of the text and bar.\n * @property titles - Title block configuration.\n * @property messages - Array of status messages.\n */\n @Input()\n props: ProgressStatusMetadata;\n\n currentIndex = 0;\n blinking = false;\n\n constructor() {}\n\n ngOnInit() {\n setInterval(() => {\n this.blinking = !this.blinking;\n }, 1000);\n\n setInterval(() => {\n this.getNextMessage();\n }, 9000);\n }\n\n get Content(): string {\n return this.props.messages[this.currentIndex];\n }\n\n getNextMessage(): void {\n this.currentIndex = (this.currentIndex + 1) % this.props.messages.length;\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { BoxComponent } from '../../atoms/box/box.component';\nimport { HrefComponent } from '../../atoms/href/href.component';\nimport { TextComponent } from '../../atoms/text/text.component';\nimport { ButtonGroupComponent } from '../button-group/button-group.component';\nimport { PrompterMetadata } from './types';\n\n@Component({\n selector: 'val-prompter',\n standalone: true,\n imports: [CommonModule, BoxComponent, ButtonGroupComponent, TextComponent, HrefComponent],\n template: `\n <val-box\n class=\"teleprompter-container\"\n [props]=\"{ icon: '', bordered: props.bordered, color: props.color, leftBorder: false, padding: props.padding }\"\n (onClick)=\"clickHandler()\"\n >\n <div class=\"container\" [class.teleprompter-content]=\"props.teleprompter\" body>\n <div>\n <val-text\n [props]=\"{\n content: props.content,\n color: '',\n bold: true,\n size: props.size,\n }\"\n ></val-text>\n </div>\n @if (props.buttons || props.hrefs) {\n <div class=\"actions-container\">\n <val-button-group\n class=\"buttons-container\"\n [props]=\"{ buttons: props.buttons, position: 'right', columned: false }\"\n (onClick)=\"clickHandler($event)\"\n ></val-button-group>\n <val-href\n class=\"link\"\n *ngFor=\"let l of props.hrefs\"\n [props]=\"l\"\n (onClick)=\"clickHandler($event)\"\n ></val-href>\n </div>\n }\n </div>\n </val-box>\n `,\n styleUrls: ['./prompter.component.scss'],\n})\n/**\n * val-prompter\n *\n * Displays a prompt/info box with text, actions (buttons/links), and custom styles.\n *\n * @example\n * <val-prompter [props]=\"{ content: 'Message', buttons: [...], hrefs: [...], color: 'primary', size: 'medium' }\"></val-prompter>\n *\n * @input props: PrompterMetadata - Configuration for the prompter (content, buttons, hrefs, color, size, etc.)\n * @output onClick - Emits when an action is clicked\n */\nexport class PrompterComponent implements OnInit {\n /**\n * Prompter configuration object.\n * @type {PrompterMetadata}\n * @property content - The main text content.\n * @property buttons - Array of button configurations (optional).\n * @property hrefs - Array of link configurations (optional).\n * @property color - The background color of the box.\n * @property size - The size of the text and box.\n * @property bordered - Whether the box has a border.\n * @property padding - Custom padding for the box.\n * @property teleprompter - Whether to use teleprompter style (optional).\n */\n @Input()\n props: PrompterMetadata;\n\n @Output()\n onClick = new EventEmitter<string>();\n\n constructor() {}\n\n ngOnInit() {}\n\n clickHandler(token?: string) {\n this.onClick.emit(token);\n }\n}\n","import { NgFor } from '@angular/common';\nimport { Component, Input, OnInit } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { IonRadio, IonRadioGroup } from '@ionic/angular/standalone';\nimport { InputMetadata } from '../../types';\n\n@Component({\n selector: 'val-radio-input',\n standalone: true,\n imports: [NgFor, ReactiveFormsModule, IonRadioGroup, IonRadio],\n template: `\n <ion-radio-group [allowEmptySelection]=\"true\" [formControl]=\"props.control\">\n <ng-container *ngFor=\"let o of props.options\">\n <ion-radio [value]=\"o.id\">{{ o.name }}</ion-radio>\n <br />\n </ng-container>\n </ion-radio-group>\n `,\n styleUrls: ['./radio-input.component.scss'],\n})\n/**\n * val-radio-input\n *\n * A radio group input for selecting one option, integrated with Angular forms.\n *\n * @example\n * <val-radio-input [props]=\"{ control: myControl, options: [{ id: '1', name: 'Option 1' }] }\"></val-radio-input>\n *\n * @input props: InputMetadata - Configuration for the radio input (form control, options, etc.)\n */\nexport class RadioInputComponent implements OnInit {\n /**\n * Input configuration object.\n * @type {InputMetadata}\n * @property control - The Angular FormControl for the radio input.\n * @property options - The available options for the radio group.\n */\n @Input() props: InputMetadata;\n\n constructor() {}\n\n ngOnInit() {}\n}\n","/**\n * Removes diacritical marks (accents) from a string using Unicode normalization.\n * Useful for text search and comparison.\n *\n * @param text The input string\n * @returns The normalized string without diacritical marks\n *\n * @example\n * replaceSpecialChars('canción') // returns 'cancion'\n */\nexport const replaceSpecialChars = (text: string) =>\n text.normalize('NFD').replace(/[\\u0300-\\u036f]/g, '');\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { IonSearchbar } from '@ionic/angular/standalone';\n\n@Component({\n selector: 'val-searchbar',\n standalone: true,\n imports: [IonSearchbar],\n template: `\n <ion-searchbar\n mode=\"ios\"\n debounce=\"500\"\n placeholder=\"Búsqueda\"\n [disabled]=\"disabled\"\n showCancelButton=\"focus\"\n cancelButtonText=\"Cancelar\"\n (ionInput)=\"onSearch($event)\"\n (ionBlur)=\"onBlur()\"\n (ionFocus)=\"onFocus()\"\n >\n </ion-searchbar>\n `,\n styleUrls: ['./searchbar.component.scss'],\n})\n/**\n * val-searchbar\n *\n * A search bar component with debounce and event emitters for filtering, focus, and blur.\n *\n * @example\n * <val-searchbar (filterEvent)=\"onFilter($event)\" (focusEvent)=\"onFocus()\" (blurEvent)=\"onBlur()\"></val-searchbar>\n *\n * @input disabled - Whether the searchbar is disabled.\n * @output filterEvent - Emits the search term on input.\n * @output focusEvent - Emits when the searchbar gains focus.\n * @output blurEvent - Emits when the searchbar loses focus.\n */\nexport class SearchbarComponent {\n /**\n * Whether the searchbar is disabled.\n */\n @Input() disabled: boolean;\n\n /**\n * Emits the search term on input.\n */\n @Output() filterEvent = new EventEmitter<string>();\n\n /**\n * Emits when the searchbar gains focus.\n */\n @Output() focusEvent = new EventEmitter<void>();\n\n /**\n * Emits when the searchbar loses focus.\n */\n @Output() blurEvent = new EventEmitter<void>();\n\n constructor() {}\n\n onSearch($event: any) {\n const searchTerm = $event.detail.value;\n this.filterEvent.emit(searchTerm);\n }\n\n onFocus() {\n this.focusEvent.emit();\n }\n\n onBlur() {\n this.blurEvent.emit();\n }\n}\n","import { CommonModule } from '@angular/common';\nimport {\n ChangeDetectorRef,\n Component,\n inject,\n Input,\n OnChanges,\n OnDestroy,\n SimpleChanges,\n ViewChild,\n} from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { IonicModule, IonModal } from '@ionic/angular';\nimport { Subscription } from 'rxjs';\nimport { IconService } from '../../../services/icons.service';\nimport { replaceSpecialChars } from '../../../shared/utils/text';\nimport { InputMetadata, InputOption } from '../../types';\nimport { SearchbarComponent } from '../searchbar/searchbar.component';\n\n@Component({\n selector: 'val-select-search',\n standalone: true,\n imports: [CommonModule, IonicModule, FormsModule, SearchbarComponent, ReactiveFormsModule],\n template: `\n <ion-input\n type=\"text\"\n [value]=\"displayValue\"\n [placeholder]=\"props?.placeholder || placeholder\"\n readonly\n (mousedown)=\"preventDefaultBehavior($event)\"\n />\n\n <ion-input style=\"position: absolute;\" [formControl]=\"props.control\" type=\"hidden\"></ion-input>\n\n <ion-modal #modal trigger=\"open-modal\" [initialBreakpoint]=\"0.75\" [breakpoints]=\"[0, 0.5, 0.75, 1]\">\n <ng-template>\n <ion-header>\n <ion-toolbar>\n <ion-title>{{ label }}</ion-title>\n <ion-buttons slot=\"end\">\n <ion-button (click)=\"cancelModal()\">Cerrar</ion-button>\n </ion-buttons>\n </ion-toolbar>\n <ion-toolbar>\n <val-searchbar (filterEvent)=\"onFilter($event)\" (focusEvent)=\"onFocus()\" (blurEvent)=\"onBlur()\" />\n </ion-toolbar>\n </ion-header>\n <ion-content>\n <ion-list>\n <ion-item *ngFor=\"let item of filteredItems\" button (click)=\"selectItem(item)\" detail=\"false\">\n <ion-label>{{ item[labelProperty] }}</ion-label>\n <ion-icon *ngIf=\"isItemSelected(item)\" name=\"checkmark-outline\" slot=\"end\" color=\"primary\"></ion-icon>\n </ion-item>\n <ion-item *ngIf=\"filteredItems.length === 0\" lines=\"none\">\n <ion-label color=\"dark\">No se encontraron resultados</ion-label>\n </ion-item>\n </ion-list>\n </ion-content>\n </ng-template>\n </ion-modal>\n `,\n styles: [\n `\n ion-header {\n padding: 8px 8px 0px 8px;\n }\n `,\n ],\n})\n/**\n * val-select-search\n *\n * A searchable select/dropdown input with modal and filtering, integrated with Angular forms.\n *\n * @example\n * <val-select-search [props]=\"{ control: myControl, label: 'Choose', options: [{ id: '1', name: 'Option 1' }] }\"></val-select-search>\n *\n * @input props: InputMetadata - Configuration for the select input (form control, label, options, etc.)\n */\nexport class SelectSearchComponent implements OnChanges, OnDestroy {\n @ViewChild('modal') modal!: IonModal;\n\n @Input() label: string = 'Seleccionar';\n @Input() labelProperty: string = 'name';\n @Input() valueProperty: string = 'id';\n @Input() multiple: boolean = false;\n @Input() placeholder: string = 'Seleccione una opción';\n /**\n * Input configuration object.\n * @type {InputMetadata}\n * @property control - The Angular FormControl for the select input.\n * @property label - The label for the select.\n * @property options - The available options for the select.\n * @property placeholder - The placeholder text.\n */\n @Input() props: InputMetadata;\n\n icon = inject(IconService);\n private changeDetector = inject(ChangeDetectorRef);\n\n searchTerm: string = '';\n filteredItems: InputOption[] = [];\n selectedItems: InputOption[] = [];\n displayValue: string = '';\n\n private previousOptions: any[] = [];\n private isProcessingChanges = false;\n private valueChangesSubscription?: Subscription;\n\n ngOnInit() {\n this.initializeItems();\n this.syncControlValueWithSelectedItems();\n this.updateDisplayValue();\n this.subscribeToValueChanges();\n }\n\n ngOnDestroy() {\n // Limpiar suscripciones para evitar memory leaks\n if (this.valueChangesSubscription) {\n this.valueChangesSubscription.unsubscribe();\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n // Evitar bucles infinitos\n if (this.isProcessingChanges) {\n return;\n }\n\n // Cuando cambia props o props.options\n if (changes['props']) {\n try {\n this.isProcessingChanges = true;\n\n // Desuscribirse del antiguo control si existe\n if (this.valueChangesSubscription) {\n this.valueChangesSubscription.unsubscribe();\n }\n\n if (this.props?.options) {\n // Verificar si las opciones han cambiado realmente\n const optionsChanged = !this.areOptionsEqual(this.previousOptions, this.props.options);\n\n if (optionsChanged) {\n this.previousOptions = [...this.props.options];\n this.initializeItems();\n }\n }\n\n // Sincronizar con el nuevo control si existe\n this.syncControlValueWithSelectedItems();\n this.updateDisplayValue();\n\n // Suscribirse al nuevo control\n this.subscribeToValueChanges();\n } finally {\n this.isProcessingChanges = false;\n }\n }\n }\n\n ionViewWillEnter(): void {\n if (this.isProcessingChanges) {\n return;\n }\n\n try {\n this.isProcessingChanges = true;\n this.initializeItems();\n this.syncControlValueWithSelectedItems();\n this.updateDisplayValue();\n this.subscribeToValueChanges();\n } finally {\n this.isProcessingChanges = false;\n }\n }\n\n // Suscribirse a cambios en el FormControl\n private subscribeToValueChanges() {\n if (!this.props?.control) return;\n\n this.valueChangesSubscription = this.props.control.valueChanges.subscribe(value => {\n if (this.isProcessingChanges) return;\n\n try {\n this.isProcessingChanges = true;\n this.syncControlValueWithSelectedItems();\n this.updateDisplayValue();\n } finally {\n this.isProcessingChanges = false;\n }\n });\n }\n\n // Compara si dos arrays de opciones son iguales\n private areOptionsEqual(prevOptions: any[], newOptions: any[]): boolean {\n // PERF: Use reference equality first for fast path\n if (prevOptions === newOptions) return true;\n if (!prevOptions || !newOptions) return prevOptions === newOptions;\n if (prevOptions.length !== newOptions.length) return false;\n // Only compare valueProperty for equality\n for (let i = 0; i < prevOptions.length; i++) {\n if (prevOptions[i][this.valueProperty] !== newOptions[i][this.valueProperty]) {\n return false;\n }\n }\n return true;\n }\n\n private initializeItems(): void {\n // PERF: Avoid unnecessary array copies\n this.filteredItems = this.props?.options || [];\n }\n\n private syncControlValueWithSelectedItems(): void {\n if (!this.props?.control) {\n this.selectedItems = [];\n return;\n }\n const controlValue = this.props.control.value;\n if (controlValue === null || controlValue === undefined) {\n this.selectedItems = [];\n return;\n }\n // PERF: Use a Map for faster lookup if options are large\n if (this.props.options && this.props.options.length > 0) {\n const map = new Map(this.props.options.map(opt => [opt[this.valueProperty], opt]));\n const selectedOption = map.get(controlValue);\n this.selectedItems = selectedOption ? [selectedOption] : [];\n } else {\n this.selectedItems = [];\n }\n }\n\n onFilter(event) {\n // If no search term, show all options\n if (!event || event.trim() === '') {\n this.filteredItems = this.props?.options ? [...this.props.options] : [];\n this.changeDetector.detectChanges();\n return;\n }\n\n // If no options, nothing to filter\n if (!this.props?.options || this.props.options.length === 0) {\n this.filteredItems = [];\n this.changeDetector.detectChanges();\n return;\n }\n\n // PERF: Avoid repeated replaceSpecialChars and toLowerCase for each option\n const search = replaceSpecialChars(event.toLowerCase());\n this.filteredItems = this.props.options.filter(element => {\n // Only use labelProperty and valueProperty for filtering (faster)\n const label = element[this.labelProperty]\n ? replaceSpecialChars(String(element[this.labelProperty]).toLowerCase())\n : '';\n const value = element[this.valueProperty]\n ? replaceSpecialChars(String(element[this.valueProperty]).toLowerCase())\n : '';\n return label.includes(search) || value.includes(search);\n });\n this.changeDetector.detectChanges();\n }\n\n onFocus() {\n console.log('onFocus');\n }\n\n onBlur() {\n console.log('onBlur');\n }\n\n openModal() {\n if (this.modal) {\n this.modal.present();\n }\n }\n\n preventDefaultBehavior(event: MouseEvent) {\n event.preventDefault();\n event.stopPropagation();\n this.openModal();\n }\n\n cancelModal() {\n // Reset filter and show all options when closing modal\n this.searchTerm = '';\n this.filteredItems = this.props?.options ? [...this.props.options] : [];\n this.changeDetector.detectChanges();\n if (this.modal) {\n this.modal.dismiss();\n }\n }\n\n selectItem(item: any) {\n if (this.multiple) {\n const index = this.selectedItems.findIndex(\n selectedItem => selectedItem[this.valueProperty] === item[this.valueProperty]\n );\n\n if (index === -1) {\n this.selectedItems.push(item);\n } else {\n this.selectedItems.splice(index, 1);\n }\n } else {\n this.selectedItems = [item];\n this.cancelModal();\n }\n\n this.updateDisplayValue();\n this.applyChanges();\n }\n\n isItemSelected(item: any): boolean {\n return this.selectedItems.some(selectedItem => selectedItem[this.valueProperty] === item[this.valueProperty]);\n }\n\n updateDisplayValue() {\n if (this.selectedItems.length === 0) {\n this.displayValue = '';\n return;\n }\n\n if (this.multiple) {\n if (this.selectedItems.length === 1) {\n this.displayValue = this.selectedItems[0][this.labelProperty];\n } else {\n this.displayValue = `${this.selectedItems.length} elementos seleccionados`;\n }\n } else {\n this.displayValue = this.selectedItems[0][this.labelProperty];\n }\n }\n\n applyChanges() {\n if (!this.props?.control) {\n return;\n }\n\n try {\n this.isProcessingChanges = true;\n\n if (this.selectedItems.length > 0) {\n this.props.control.setValue(this.selectedItems[0][this.valueProperty]);\n } else {\n this.props.control.setValue(null);\n }\n\n this.props.control.markAsDirty();\n this.props.control.updateValueAndValidity();\n } finally {\n this.isProcessingChanges = false;\n }\n }\n\n // Método público para reiniciar el componente\n reset() {\n this.selectedItems = [];\n this.displayValue = '';\n if (this.props?.control) {\n this.props.control.setValue(null);\n }\n this.changeDetector.detectChanges();\n }\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { IonSelect, IonSelectOption } from '@ionic/angular/standalone';\nimport { InputMetadata } from '../../types';\n\n@Component({\n selector: 'val-select-input',\n standalone: true,\n imports: [ReactiveFormsModule, IonSelect, IonSelectOption],\n template: `\n <ion-select\n [formControl]=\"props.control\"\n [label]=\"props.label\"\n [interfaceOptions]=\"customModalOptions\"\n interface=\"modal\"\n [placeholder]=\"[props.placeholder]\"\n cancelText=\"Cancelar\"\n okText=\"Ok\"\n >\n @for (o of props.options; track o.id) {\n <ion-select-option [value]=\"o.id\">{{ o.name }}</ion-select-option>\n }\n </ion-select>\n `,\n styleUrls: ['./select-input.component.scss'],\n})\n/**\n * val-select-input\n *\n * A select/dropdown input integrated with Angular forms, using Ionic's select component.\n *\n * @example\n * <val-select-input [props]=\"{ control: myControl, label: 'Choose', options: [{ id: '1', name: 'Option 1' }] }\"></val-select-input>\n *\n * @input props: InputMetadata - Configuration for the select input (form control, label, options, etc.)\n */\nexport class SearchSelectorComponent implements OnInit {\n /**\n * Input configuration object.\n * @type {InputMetadata}\n * @property control - The Angular FormControl for the select input.\n * @property label - The label for the select.\n * @property options - The available options for the select.\n * @property placeholder - The placeholder text.\n */\n @Input() props: InputMetadata;\n\n customModalOptions = {\n header: 'Seleccione',\n breakpoints: [0, 0.6],\n initialBreakpoint: 0.6,\n };\n\n constructor() {}\n\n ngOnInit() {\n this.customModalOptions.header = this.props.label;\n }\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { IonInput } from '@ionic/angular/standalone';\nimport { ComponentStates, InputMetadata } from '../../types';\n\n@Component({\n selector: 'val-text-input',\n standalone: true,\n imports: [ReactiveFormsModule, IonInput],\n template: ` <ion-input [formControl]=\"props.control\" type=\"text\" [placeholder]=\"props.placeholder\" /> `,\n styleUrls: ['./text-input.component.scss'],\n})\n/**\n * val-text-input\n *\n * A text input field integrated with Angular forms.\n *\n * @example\n * <val-text-input [props]=\"{ control: myControl, placeholder: 'Enter text', ... }\"></val-text-input>\n *\n * @input props: InputMetadata - Configuration for the input (form control, placeholder, label, etc.)\n */\nexport class TextInputComponent implements OnInit {\n /**\n * Input configuration object.\n * @type {InputMetadata}\n * @property control - The Angular FormControl for the input.\n * @property placeholder - The placeholder text.\n * @property label, name, hint, type, validators, etc. - See InputMetadata for all options.\n */\n @Input() props: InputMetadata;\n\n states = ComponentStates;\n\n constructor() {}\n\n ngOnInit() {}\n}\n","export const LANG = 'LANG';\nexport const THEME = 'THEME';\n","/**\n * Utility service for interacting with browser localStorage in a type-safe way.\n * Provides static methods for setting, getting, removing, and clearing items.\n */\nexport class LocalStorageService {\n /**\n * Stores a value in localStorage under the given reference key.\n * @param reference The key to store the value under\n * @param value The value to store\n */\n static set<T>(reference: string, value: T): void {\n localStorage.setItem(reference, JSON.stringify(value));\n }\n\n /**\n * Retrieves a value from localStorage by key.\n * @param reference The key to retrieve\n * @returns The parsed value\n */\n static get<T>(reference: string): T {\n const value = localStorage.getItem(reference);\n return JSON.parse(value) as T;\n }\n\n /**\n * Removes an item from localStorage by key.\n * @param reference The key to remove\n */\n static remove(reference: string): void {\n localStorage.removeItem(reference);\n }\n\n /**\n * Clears all items from localStorage.\n */\n static clear() {\n localStorage.clear();\n }\n}\n","/**\n * Service for managing application themes (light, dark, auto).\n * Handles user preferences, system theme detection, and theme toggling.\n * Uses localStorage to persist the selected theme.\n */\n\nimport { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { THEME } from '../shared/constants/storage';\nimport { LocalStorageService } from './local-storage.service';\n\nexport enum ThemeOption {\n LIGHT = 'light',\n DARK = 'dark',\n AUTO = 'auto',\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ThemeService {\n /**\n * Indicates if the light theme is active.\n */\n lightToggle = false;\n /**\n * Indicates if the dark theme is active.\n */\n darkToggle = false;\n /**\n * Indicates if the auto theme is active.\n */\n autoToggle = false;\n /**\n * The current selected theme option.\n */\n currentOption = ThemeOption.AUTO;\n /**\n * Enum with all available theme options.\n */\n themeOptions = ThemeOption;\n /**\n * Whether the system prefers dark mode.\n */\n prefersDark = false;\n /**\n * The default theme option.\n */\n default = ThemeOption.AUTO;\n /**\n * Observable for the current theme.\n */\n theme: BehaviorSubject<ThemeOption>;\n\n constructor() {\n const current = LocalStorageService.get<ThemeOption>(THEME);\n console.log('💡 ThemeConfig current::: ', current);\n this.theme = new BehaviorSubject<ThemeOption>(current || this.default);\n this.currentOption = this.Theme;\n console.log('💡 ThemeConfig this.currentOption::: ', this.currentOption);\n this.toggleUserPreference(this.currentOption);\n\n const prefersDarkQuery = window.matchMedia('(prefers-color-scheme: dark)');\n this.prefersDark = prefersDarkQuery.matches;\n this.handleAutoConfiguration();\n\n prefersDarkQuery.addEventListener('change', mediaQuery => {\n console.log('💡 ThemeConfig addEventListener change::: ', mediaQuery);\n this.prefersDark = mediaQuery.matches;\n this.handleAutoConfiguration();\n });\n }\n\n private handleAutoConfiguration() {\n if (this.prefersDark && this.currentOption === ThemeOption.AUTO) {\n console.log('💡 ThemeConfig prefersDark::: ', this.prefersDark);\n this.toggleUserPreference(ThemeOption.AUTO);\n }\n if (!this.prefersDark && this.currentOption === ThemeOption.AUTO) {\n console.log('💡 ThemeConfig prefersDark::: ', this.prefersDark);\n this.toggleUserPreference(ThemeOption.AUTO);\n }\n }\n\n private handleDarkPreference() {\n this.toggleTheme(ThemeOption.DARK, true);\n this.toggleTheme(ThemeOption.LIGHT, false);\n }\n\n private handleLightPreference() {\n this.toggleTheme(ThemeOption.LIGHT, true);\n this.toggleTheme(ThemeOption.DARK, false);\n }\n\n /**\n * Returns true if the system prefers dark mode.\n */\n get IsDark(): boolean {\n return this.prefersDark;\n }\n\n /**\n * Gets the current theme option.\n */\n get Theme(): ThemeOption {\n return this.theme.value;\n }\n\n /**\n * Sets the current theme option and persists it.\n */\n set Theme(theme: ThemeOption) {\n this.theme.next(theme);\n LocalStorageService.set<ThemeOption>(THEME, theme);\n }\n\n /**\n * Toggles a theme class on the document body.\n * @param name The theme name\n * @param shouldAdd Whether to add or remove the class\n */\n toggleTheme(name: string, shouldAdd: boolean) {\n console.log('toggleTheme::: ', name, shouldAdd);\n document.body.classList.toggle(name, shouldAdd);\n }\n\n /**\n * Sets the user theme preference and updates toggles and theme classes.\n * @param option The selected theme option\n */\n toggleUserPreference(option: ThemeOption) {\n this.currentOption = option;\n this.Theme = option;\n this.lightToggle = option === ThemeOption.LIGHT;\n this.darkToggle = option === ThemeOption.DARK;\n this.autoToggle = option === ThemeOption.AUTO;\n\n switch (option) {\n case ThemeOption.LIGHT:\n this.handleLightPreference();\n break;\n case ThemeOption.DARK:\n this.handleDarkPreference();\n break;\n case ThemeOption.AUTO:\n if (this.prefersDark) {\n this.handleDarkPreference();\n } else {\n this.handleLightPreference();\n }\n break;\n }\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, inject, Input } from '@angular/core';\nimport { ThemeService } from '../../../services/theme.service';\nimport { resolveColor } from '../../../shared/utils/styles';\nimport { ButtonGroupComponent } from '../button-group/button-group.component';\nimport { TitleBlockComponent } from '../title-block/title-block.component';\nimport { LayeredCardMetadata } from './types';\n\n@Component({\n selector: 'layered-card',\n standalone: true,\n imports: [CommonModule, ButtonGroupComponent, TitleBlockComponent],\n template: `\n <div\n class=\"fun-card\"\n [class.big-space]=\"props.bigSpace\"\n [class.hoverable]=\"props.hoverable\"\n [class.with-opacity]=\"props.withOpacity\"\n [class.layered]=\"props.mode === 'layered'\"\n [class.poster]=\"props.mode === 'poster'\"\n [ngStyle]=\"{\n background: theme.IsDark ? 'var(--ion-background-color)' : color(props.background),\n minHeight: props.withMin ? '340px' : 'auto',\n }\"\n >\n @if (props.mode === 'poster') {\n <img class=\"poster-image\" [class.dark]=\"props.dark\" alt=\"image\" [src]=\"props.image\" />\n }\n @if (props.mode === 'layered') {\n <img class=\"layer-image\" [class.dark]=\"props.dark\" alt=\"image\" [src]=\"props.image\" />\n }\n\n <section>\n <val-title-block [props]=\"props.content\" />\n @if (props.actions) {\n <val-button-group style=\"display:block; margin-top: 16px;\" [props]=\"props.actions\" />\n }\n </section>\n </div>\n `,\n styleUrl: './layered-card.component.scss',\n})\nexport class LayeredCardComponent {\n theme = inject(ThemeService);\n\n @Input()\n props: LayeredCardMetadata;\n\n color(background) {\n if (!background) {\n return '';\n }\n return resolveColor(background);\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { BoxComponent } from '../../atoms/box/box.component';\nimport { ButtonGroupComponent } from '../../molecules/button-group/button-group.component';\nimport { TitleBlockComponent } from '../../molecules/title-block/title-block.component';\nimport { BannerMetadata } from './types';\n\n@Component({\n selector: 'val-banner',\n standalone: true,\n imports: [CommonModule, BoxComponent, TitleBlockComponent, ButtonGroupComponent],\n template: `\n <val-box\n [props]=\"{\n icon: props.closable ? 'close-outline' : '',\n bordered: props.bordered,\n color: '',\n padding: props.padding,\n }\"\n (onClick)=\"closeHandler()\"\n >\n <div [ngClass]=\"['content-container', props.mode, props.alignment]\" body>\n <val-title-block\n [props]=\"{\n position: props.content.position,\n aboveTitle: props.content.aboveTitle,\n title: props.content.title,\n bellowTitle: props.content.bellowTitle,\n }\"\n ></val-title-block>\n @if (props.actions) {\n <val-button-group\n [ngClass]=\"['buttons-container', props.mode, props.alignment]\"\n [props]=\"props.actions\"\n (onClick)=\"clickHandler($event)\"\n ></val-button-group>\n }\n </div>\n </val-box>\n `,\n styleUrls: ['./banner.component.scss'],\n})\n/**\n * val-banner\n *\n * Displays a banner with title block, actions, and optional close button.\n *\n * @example\n * <val-banner [props]=\"{ content: {...}, actions: {...}, closable: true, bordered: true, mode: 'center', alignment: 'center', padding: '8px' }\" (onClick)=\"handler($event)\" (onClose)=\"closeHandler()\"></val-banner>\n *\n * @input props: BannerMetadata - Configuration for the banner (content, actions, closable, bordered, mode, alignment, padding)\n * @output onClick - Emits when an action is clicked\n * @output onClose - Emits when the banner is closed\n */\nexport class BannerComponent implements OnInit {\n @Input()\n props: BannerMetadata;\n\n @Output()\n onClick = new EventEmitter<string>();\n\n @Output()\n onClose = new EventEmitter();\n\n constructor() {}\n\n ngOnInit() {}\n\n clickHandler(token?: string) {\n this.onClick.emit(token);\n }\n\n closeHandler() {\n this.onClose.emit();\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { NavController } from '@ionic/angular';\nimport {\n IonButton,\n IonButtons,\n IonIcon,\n IonMenuButton,\n IonText,\n IonTitle,\n IonToolbar,\n} from '@ionic/angular/standalone';\nimport { addIcons } from 'ionicons';\nimport { chevronBackOutline } from 'ionicons/icons';\nimport { IconService } from '../../../services/icons.service';\nimport { AvatarComponent } from '../../atoms/avatar/avatar.component';\nimport { ImageComponent } from '../../atoms/image/image.component';\nimport { ToolbarAction, ToolbarActionType } from '../../types';\nimport { ToolbarMetadata } from './types';\n\n/**\n * ToolbarComponent\n *\n * Componente de barra de herramientas reutilizable para encabezados y pies de página.\n * Permite acciones, botón de retroceso, menú y personalización de colores y título.\n *\n * @example\n * <val-toolbar [props]=\"{ title: 'Mi App', withBack: true, actions: [...] }\" (onClick)=\"handleToolbarAction($event)\"></val-toolbar>\n *\n * @input props {ToolbarMetadata} - Metadatos de la barra de herramientas.\n * @output onClick - Emite el token de la acción clicada.\n */\n@Component({\n selector: 'val-toolbar',\n standalone: true,\n imports: [\n CommonModule,\n IonToolbar,\n IonButtons,\n IonButton,\n IonIcon,\n IonText,\n IonTitle,\n AvatarComponent,\n ImageComponent,\n IonMenuButton,\n ],\n template: `\n <ion-toolbar [color]=\"props.color\" [class.background]=\"props.color === 'background'\">\n <ng-container *ngIf=\"props.withBack\">\n <ion-buttons class=\"left-buttons\" slot=\"start\" *ngIf=\"props.withBack\">\n <ion-button fill=\"clear\" (click)=\"goBack()\" [color]=\"props.textColor\" style=\"margin-left: 8px;\">\n <ion-icon name=\"chevron-back-outline\" [slot]=\"props.backText ? 'start' : 'icon-only'\"></ion-icon>\n <ion-text *ngIf=\"props.backText\">{{ props.backText }}</ion-text>\n </ion-button>\n </ion-buttons>\n </ng-container>\n <ng-container *ngIf=\"props.withActions\">\n <ion-buttons slot=\"end\" *ngIf=\"someInRight() || props.withMenu\">\n <ng-container *ngFor=\"let action of rightActions()\">\n <ion-button *ngIf=\"action.type === actionTypes.ICON\" (click)=\"clickHandler(action.token)\">\n <ion-icon slot=\"icon-only\" [name]=\"action.description\" [color]=\"props.textColor\"></ion-icon>\n </ion-button>\n <val-avatar\n *ngIf=\"action.type === actionTypes.AVATAR\"\n [props]=\"{ size: 'small', image: action.description, default: '' }\"\n (onClick)=\"clickHandler(action.token)\"\n ></val-avatar>\n <val-image\n *ngIf=\"action.type === actionTypes.IMAGE\"\n [props]=\"action.image\"\n (click)=\"clickHandler(action.token)\"\n ></val-image>\n <ion-button\n [color]=\"props.textColor\"\n *ngIf=\"action.type === actionTypes.BUTTON\"\n (click)=\"clickHandler(action.token)\"\n >{{ action.description }}</ion-button\n >\n </ng-container>\n @if (props.withMenu) {\n <ion-menu-button color=\"dark\"></ion-menu-button>\n }\n </ion-buttons>\n <ion-buttons slot=\"start\" *ngIf=\"someInLeft()\" style=\"padding-left: 4px;\">\n <ng-container *ngFor=\"let action of leftActions()\">\n <ion-button *ngIf=\"action.type === actionTypes.ICON\" (click)=\"clickHandler(action.token)\">\n <ion-icon slot=\"icon-only\" [name]=\"action.description\" [color]=\"props.textColor\"></ion-icon>\n </ion-button>\n <val-avatar\n *ngIf=\"action.type === actionTypes.AVATAR\"\n [props]=\"{ size: 'small', image: action.description, default: '' }\"\n (onClick)=\"clickHandler(action.token)\"\n ></val-avatar>\n <val-image\n *ngIf=\"action.type === actionTypes.IMAGE\"\n [props]=\"action.image\"\n (click)=\"clickHandler(action.token)\"\n ></val-image>\n <ion-button *ngIf=\"action.type === actionTypes.BUTTON\" (click)=\"clickHandler(action.token)\">{{\n action.description\n }}</ion-button>\n </ng-container>\n </ion-buttons>\n </ng-container>\n <ion-title *ngIf=\"props.title\" [color]=\"props.textColor\">{{ props.title }}</ion-title>\n <!-- experimental -->\n <ng-content select=\"[toolbar-bottom]\"></ng-content>\n </ion-toolbar>\n `,\n styleUrls: ['./toolbar.component.scss'],\n})\nexport class ToolbarComponent implements OnInit {\n /**\n * Metadatos de la barra de herramientas.\n */\n @Input()\n props: ToolbarMetadata;\n\n /**\n * Evento emitido al hacer click en una acción o botón de la barra.\n */\n @Output()\n onClick = new EventEmitter<string>();\n\n actionTypes = ToolbarActionType;\n\n constructor(\n private navCtrl: NavController,\n icon: IconService\n ) {\n addIcons({ chevronBackOutline });\n }\n\n ngOnInit() {}\n\n /**\n * Emite el token de la acción clicada.\n * @param token Token de la acción\n */\n clickHandler(token?: string) {\n this.onClick.emit(token);\n }\n\n /**\n * Navega hacia atrás usando NavController.\n */\n goBack() {\n this.navCtrl.back();\n }\n\n /**\n * Determina si hay acciones a la derecha.\n */\n someInRight(): boolean {\n return !!this.props.actions.find(x => x.position === 'right');\n }\n\n /**\n * Determina si hay acciones a la izquierda.\n */\n someInLeft(): boolean {\n return !!this.props.actions.find(x => x.position === 'left');\n }\n\n /**\n * Devuelve las acciones de la derecha.\n */\n rightActions(): ToolbarAction[] {\n return this.props.actions.filter(x => x.position === 'right');\n }\n\n /**\n * Devuelve las acciones de la izquierda.\n */\n leftActions(): ToolbarAction[] {\n return this.props.actions.filter(x => x.position === 'left');\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { IonFooter } from '@ionic/angular/standalone';\nimport { ToolbarComponent } from '../toolbar/toolbar.component';\nimport { FooterMetadata } from './types';\n\n/**\n * FooterComponent\n *\n * Componente de pie de página reutilizable para aplicaciones Ionic/Angular.\n * Permite mostrar una barra de herramientas (toolbar) y contenido adicional.\n *\n * @example\n * <val-footer [props]=\"footerProps\" (onClick)=\"handleFooterAction($event)\">\n * <div extra>Contenido extra</div>\n * </val-footer>\n *\n * @input props {FooterMetadata} - Metadatos del pie de página y su toolbar.\n * @output onClick - Emite el token de la acción clicada en la toolbar.\n */\n@Component({\n selector: 'val-footer',\n standalone: true,\n imports: [CommonModule, IonFooter, ToolbarComponent],\n template: `\n <ion-footer\n [class.ion-no-border]=\"!props.bordered\"\n [translucent]=\"props.translucent\"\n [class.background]=\"props.toolbar.color === 'background'\"\n >\n <val-toolbar\n *ngIf=\"props.toolbar.title || props.toolbar.withActions || props.toolbar.withBack\"\n [props]=\"props.toolbar\"\n (onClick)=\"clickHandler($event)\"\n ></val-toolbar>\n <ng-content select=\"[extra]\"></ng-content>\n </ion-footer>\n `,\n styleUrls: ['./footer.component.scss'],\n})\nexport class FooterComponent implements OnInit {\n /**\n * Metadatos del pie de página y su toolbar.\n */\n @Input()\n props: FooterMetadata;\n\n /**\n * Evento emitido al hacer click en una acción de la toolbar.\n */\n @Output()\n onClick = new EventEmitter<string>();\n\n constructor() {}\n\n ngOnInit() {}\n\n /**\n * Emite el token de la acción clicada en la toolbar.\n * @param token Token de la acción\n */\n clickHandler(token?: string) {\n this.onClick.emit(token);\n }\n}\n","import { ValidatorFn, Validators } from '@angular/forms';\n\nexport const maxLength = (\n field: string,\n max: number\n): { validator: ValidatorFn; error: string } => {\n return {\n validator: Validators.maxLength(max),\n error: `El campo ${field} no debe superar los ${max} caracteres.`,\n };\n};\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { ButtonGroupComponent } from '../../../molecules/button-group/button-group.component';\nimport { ButtonMetadata, ComponentStates, FormMetadata, FormSubmit } from '../../../types';\nimport { FooterComponent } from '../../footer/footer.component';\n\n@Component({\n selector: 'val-form-footer',\n standalone: true,\n imports: [FooterComponent, ButtonGroupComponent],\n template: `\n <val-footer\n [props]=\"{\n bordered: false,\n translucent: false,\n toolbar: {\n title: '',\n actions: [],\n color: 'background',\n withBack: false,\n withActions: false,\n },\n }\"\n >\n <val-button-group\n extra\n [props]=\"{ buttons: actions, position: 'center', columned: false }\"\n (onClick)=\"submitHandler($event)\"\n ></val-button-group>\n </val-footer>\n `,\n styleUrls: ['./form-footer.component.scss'],\n})\nexport class FormFooterComponent implements OnInit {\n @Input()\n props: { form: FormGroup; data: FormMetadata };\n\n @Output()\n onSubmit = new EventEmitter<FormSubmit>();\n\n constructor() {}\n\n ngOnInit() {}\n\n async submitHandler(token?: string) {\n this.onSubmit.emit({ fields: this.props.form.value, token });\n }\n\n get actions(): ButtonMetadata[] {\n if (!this.props.form) {\n return [];\n }\n\n if (this.props.form.valid) {\n this.props.data.actions.state = ComponentStates.ENABLED;\n }\n\n if (this.props.data.state === ComponentStates.WORKING) {\n this.props.data.actions.state = ComponentStates.WORKING;\n }\n\n if (this.props.data.state === ComponentStates.ENABLED) {\n this.props.data.actions.state = ComponentStates.ENABLED;\n }\n\n if (this.props.data.state === ComponentStates.DISABLED) {\n this.props.data.actions.state = ComponentStates.DISABLED;\n }\n\n return [this.props.data.actions];\n }\n}\n","import { ElementRef } from '@angular/core';\n\n/**\n * Scrolls smoothly to the top of the element with the given id.\n * @param id The id of the element to scroll to\n */\nexport const goToTop = (id: string): void => {\n const element = document.getElementById(id);\n if (element) {\n element.scrollIntoView({\n block: 'start',\n inline: 'nearest',\n behavior: 'smooth',\n });\n }\n};\n\n/**\n * Checks if the bottom of the given ElementRef is within the viewport.\n * Useful for determining if a form or element is fully visible.\n * @param elementRef The Angular ElementRef to check\n * @returns True if the element's bottom is at or above the window's bottom\n */\nexport const isAtEnd = (elementRef: ElementRef): boolean => {\n const formElement = elementRef.nativeElement;\n const rect = formElement.getBoundingClientRect();\n const windowHeight = window.innerHeight;\n return rect.bottom <= windowHeight;\n};\n","import { CommonModule } from '@angular/common';\nimport { Component, ElementRef, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { FormBuilder, FormControl, FormGroup, ReactiveFormsModule } from '@angular/forms';\nimport { Subscription } from 'rxjs';\nimport { isAtEnd } from '../../../shared/utils/dom';\nimport { DisplayComponent } from '../../atoms/display/display.component';\nimport { DividerComponent } from '../../atoms/divider/divider.component';\nimport { TitleComponent } from '../../atoms/title/title.component';\nimport { ButtonGroupComponent } from '../../molecules/button-group/button-group.component';\nimport { CheckInputComponent } from '../../molecules/check-input/check-input.component';\nimport { CommentInputComponent } from '../../molecules/comment-input/comment-input.component';\nimport { DateInputComponent } from '../../molecules/date-input/date-input.component';\nimport { EmailInputComponent } from '../../molecules/email-input/email-input.component';\nimport { FileInputComponent } from '../../molecules/file-input/file-input.component';\nimport { HintComponent } from '../../molecules/hint/hint.component';\nimport { HourInputComponent } from '../../molecules/hour-input/hour-input.component';\nimport { NumberInputComponent } from '../../molecules/number-input/number-input.component';\nimport { PasswordInputComponent } from '../../molecules/password-input/password-input.component';\nimport { PinInputComponent } from '../../molecules/pin-input/pin-input.component';\nimport { RadioInputComponent } from '../../molecules/radio-input/radio-input.component';\nimport { SearchSelectorComponent } from '../../molecules/select-input/select-input.component';\nimport { SelectSearchComponent } from '../../molecules/select-search/select-search.component';\nimport { TextInputComponent } from '../../molecules/text-input/text-input.component';\nimport { ButtonMetadata, ComponentStates, FormMetadata, FormSubmit, InputMetadata, InputType } from '../../types';\n\n@Component({\n selector: 'val-form',\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n DisplayComponent,\n TitleComponent,\n TextInputComponent,\n CheckInputComponent,\n ButtonGroupComponent,\n DividerComponent,\n HintComponent,\n CommentInputComponent,\n DateInputComponent,\n FileInputComponent,\n HourInputComponent,\n EmailInputComponent,\n NumberInputComponent,\n RadioInputComponent,\n PasswordInputComponent,\n PinInputComponent,\n SelectSearchComponent,\n SearchSelectorComponent,\n ],\n template: `\n <div class=\"container\">\n <form [formGroup]=\"form\">\n <val-display\n *ngIf=\"props.name\"\n [props]=\"{\n content: props.name,\n color: 'dark',\n size: 'large',\n }\"\n ></val-display>\n <div class=\"section\" *ngFor=\"let s of props.sections\">\n <val-title [props]=\"{ content: s.name, size: 'large', color: '', bold: false }\"></val-title>\n <div class=\"input\" *ngFor=\"let f of s.fields\">\n <val-title [props]=\"{ content: f.label, size: 'small', color: 'dark', bold: false }\"></val-title>\n <ng-container *ngIf=\"f.type === types.TEXT\">\n <val-text-input [props]=\"getFieldProp(f)\"></val-text-input>\n </ng-container>\n <ng-container *ngIf=\"f.type === types.CHECK\">\n <val-check-input></val-check-input>\n </ng-container>\n <ng-container *ngIf=\"f.type === types.COMMENT\">\n <val-comment-input [props]=\"getFieldProp(f)\"></val-comment-input>\n </ng-container>\n <ng-container *ngIf=\"f.type === types.DATE\">\n <val-date-input [props]=\"getFieldProp(f)\"></val-date-input>\n </ng-container>\n <ng-container *ngIf=\"f.type === types.EMAIL\">\n <val-email-input [props]=\"getFieldProp(f)\"></val-email-input>\n </ng-container>\n <ng-container *ngIf=\"f.type === types.FILE\">\n <val-file-input [props]=\"getFieldProp(f)\"></val-file-input>\n </ng-container>\n <ng-container *ngIf=\"f.type === types.HOUR\">\n <val-hour-input [props]=\"getFieldProp(f)\"></val-hour-input>\n </ng-container>\n <ng-container *ngIf=\"f.type === types.NUMBER\">\n <val-number-input [props]=\"getFieldProp(f)\"></val-number-input>\n </ng-container>\n <ng-container *ngIf=\"f.type === types.PASSWORD\">\n <val-password-input [props]=\"getFieldProp(f)\"></val-password-input>\n </ng-container>\n <ng-container *ngIf=\"f.type === types.PIN_CODE\">\n <val-pin-input [props]=\"getFieldProp(f)\"></val-pin-input>\n </ng-container>\n <ng-container *ngIf=\"f.type === types.RADIO\">\n <val-radio-input [props]=\"getFieldProp(f)\"></val-radio-input>\n </ng-container>\n <ng-container *ngIf=\"f.type === types.SELECT\">\n <val-select-input [props]=\"getFieldProp(f)\"></val-select-input>\n </ng-container>\n <ng-container *ngIf=\"f.type === types.SEARCH_SELECT\">\n <val-select-search [props]=\"getFieldProp(f)\"></val-select-search>\n </ng-container>\n <val-hint [props]=\"getFieldProp(f)\"></val-hint>\n </div>\n <val-divider [props]=\"{ fill: 'solid', size: 'medium', color: 'medium' }\"></val-divider>\n <ng-content></ng-content>\n </div>\n <val-button-group\n [props]=\"{ buttons: actions, position: 'center', columned: false }\"\n (onClick)=\"submitHandler($event)\"\n ></val-button-group>\n </form>\n </div>\n `,\n styleUrls: ['./form.component.scss'],\n})\nexport class FormComponent implements OnInit {\n @Input()\n props: FormMetadata;\n\n @Output()\n onSubmit = new EventEmitter<FormSubmit>();\n\n @Output()\n onInvalid = new EventEmitter();\n\n @Output()\n onSelectChange = new EventEmitter<{ field: string; value: any }>();\n\n form: FormGroup;\n types = InputType;\n private subscriptions: Subscription[] = [];\n\n constructor(\n private fb: FormBuilder,\n private elementRef: ElementRef\n ) {}\n\n ngOnInit() {\n const formControls = {};\n this.props.sections.forEach(section => {\n section.fields.forEach(field => {\n formControls[field.name] = [undefined, field.validators || []];\n });\n });\n this.form = this.fb.group(formControls);\n this.props.sections.forEach(section => {\n section.fields\n .filter(x => x.type === this.types.SELECT || x.type === this.types.TEXT || x.type === this.types.SEARCH_SELECT)\n .forEach(field => {\n this.trackSelectChanges(field.name);\n });\n });\n }\n\n ngOnDestroy() {\n // Cleanup subscriptions to avoid memory leaks\n this.subscriptions.forEach(sub => sub.unsubscribe());\n }\n\n trackSelectChanges(fieldName: string) {\n const control = this.getControl(fieldName);\n const subscription = control.valueChanges.subscribe(value => {\n this.onSelectChange.emit({ field: fieldName, value });\n });\n this.subscriptions.push(subscription);\n }\n\n async submitHandler(token?: string) {\n this.onSubmit.emit({ fields: this.form.getRawValue(), token });\n }\n\n getControl(field: string): FormControl {\n return this.Form.get(field) as FormControl;\n }\n\n getFieldProp(field: InputMetadata): InputMetadata {\n field.token;\n if (!field.token) {\n field.token = `input-${field.type}-${field.name}`;\n }\n const control = this.getControl(field.name);\n if (field.state === ComponentStates.DISABLED) {\n control.disable();\n } else {\n control.enable();\n }\n return {\n ...field,\n control,\n };\n }\n\n get isAtEndOfForm(): boolean {\n return isAtEnd(this.elementRef);\n }\n\n get Form(): FormGroup {\n return this.form;\n }\n\n get FormState(): { form: FormGroup; data: FormMetadata } {\n return {\n form: this.Form,\n data: this.props,\n };\n }\n\n get actions(): ButtonMetadata[] {\n if (!this.form) {\n return [];\n }\n\n if (this.form.valid) {\n this.props.actions.state = ComponentStates.ENABLED;\n }\n\n if (this.props.state === ComponentStates.WORKING) {\n this.props.actions.state = ComponentStates.WORKING;\n }\n\n if (this.props.state === ComponentStates.ENABLED) {\n this.props.actions.state = ComponentStates.ENABLED;\n }\n\n if (this.props.state === ComponentStates.DISABLED) {\n this.props.actions.state = ComponentStates.DISABLED;\n }\n\n return [this.props.actions];\n }\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { IonHeader } from '@ionic/angular/standalone';\nimport { ToolbarComponent } from '../toolbar/toolbar.component';\nimport { HeaderMetadata } from './types';\n\n@Component({\n selector: 'val-header',\n standalone: true,\n imports: [IonHeader, ToolbarComponent],\n template: `\n <ion-header [class.ion-no-border]=\"!props.bordered\" [translucent]=\"props.translucent\">\n <val-toolbar [props]=\"props.toolbar\" (onClick)=\"clickHandler($event)\"></val-toolbar>\n </ion-header>\n `,\n styleUrls: ['./header.component.scss'],\n})\n/**\n * HeaderComponent\n *\n * Componente de encabezado reutilizable para aplicaciones Ionic/Angular.\n * Permite mostrar una barra de herramientas (toolbar) configurable.\n *\n * @example\n * <val-header [props]=\"headerProps\" (onClick)=\"handleHeaderAction($event)\"></val-header>\n *\n * @input props {HeaderMetadata} - Metadatos del encabezado y su toolbar.\n * @output onClick - Emite el token de la acción clicada en la toolbar.\n */\nexport class HeaderComponent implements OnInit {\n /**\n * Metadatos del encabezado y su toolbar.\n */\n @Input()\n props: HeaderMetadata;\n\n /**\n * Evento emitido al hacer click en una acción de la toolbar.\n */\n @Output()\n onClick = new EventEmitter<string>();\n\n constructor() {}\n\n ngOnInit() {}\n\n /**\n * Emite el token de la acción clicada en la toolbar.\n * @param token Token de la acción\n */\n clickHandler(token?: string) {\n this.onClick.emit(token);\n }\n}\n","import { NgClass, NgStyle } from '@angular/common';\nimport { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { RouterLink } from '@angular/router';\nimport {\n IonAvatar,\n IonButton,\n IonIcon,\n IonItem,\n IonLabel,\n IonList,\n IonListHeader,\n IonNote,\n IonSpinner,\n} from '@ionic/angular/standalone';\nimport { IconService } from '../../../services/icons.service';\nimport { resolveColor } from '../../../shared/utils/styles';\nimport { ComponentStates } from '../../types';\nimport { ListMetadata } from './types';\n\n@Component({\n selector: 'val-item-list',\n standalone: true,\n imports: [\n RouterLink,\n NgStyle,\n NgClass,\n IonList,\n IonListHeader,\n IonLabel,\n IonNote,\n IonItem,\n IonAvatar,\n IonIcon,\n IonButton,\n IonSpinner,\n ],\n template: `\n <ion-list\n [inset]=\"props.rounded\"\n [class.shadowed]=\"props.shadowed\"\n [class.bordered]=\"props.bordered\"\n [style.borderColor]=\"this.color()\"\n >\n @if (props.title) {\n <ion-list-header>\n <ion-label>{{ props.title }}</ion-label>\n </ion-list-header>\n }\n @for (item of props.items; track item.token) {\n @if (item.mode == 'justext') {\n <ion-item\n [lines]=\"item.lines\"\n [button]=\"item.clickable\"\n [disabled]=\"item.disabled\"\n (click)=\"clickHandler(item.token)\"\n >\n @if (item.unreadIndicator) {\n <div class=\"unread-indicator-wrapper\" slot=\"start\">\n <div class=\"unread-indicator\"></div>\n </div>\n }\n\n <ion-label [ngClass]=\"{ 'ion-text-nowrap': item.ellipsis }\">\n <h2>{{ item.text }}</h2>\n\n @if (item.comments) {\n <ion-note color=\"medium\"> {{ item.comments }} </ion-note>\n }\n\n @if (item.subtitle) {\n <p>{{ item.subtitle }}</p>\n }\n </ion-label>\n\n @if (item.endNote) {\n <ion-note slot=\"end\">{{ item.endNote }}</ion-note>\n }\n </ion-item>\n }\n\n @if (item.mode == 'actionable') {\n <ion-item [lines]=\"item.lines\" [button]=\"item.clickable\" [disabled]=\"item.disabled\">\n @if (item.unreadIndicator) {\n <div class=\"unread-indicator-wrapper\" slot=\"start\">\n <div class=\"unread-indicator\"></div>\n </div>\n }\n\n <ion-label [ngClass]=\"{ 'ion-text-nowrap': item.ellipsis }\">\n <h2>{{ item.text }}</h2>\n\n @if (item.endNote) {\n <h3>{{ item.endNote }}</h3>\n }\n\n @if (item.subtitle) {\n <ion-note color=\"medium\"> {{ item.subtitle }} </ion-note>\n }\n\n @if (item.comments) {\n <ion-note color=\"medium\"> {{ item.comments }} </ion-note>\n }\n </ion-label>\n\n @if (item.actions) {\n @for (action of item.actions; track action.token) {\n <ion-button\n fill=\"outline\"\n color=\"dark\"\n slot=\"end\"\n [disabled]=\"action.state === states.WORKING\"\n (click)=\"onActionClickHandler(action.token)\"\n >\n @if (action.state !== states.WORKING) {\n @if (action.icon) {\n <ion-icon aria-hidden=\"true\" [name]=\"action.icon\" size=\"medium\" slot=\"start\"></ion-icon>\n }\n\n {{ action.description }}\n }\n\n @if (action.state === states.WORKING) {\n <ion-spinner class=\"action-spinner\" name=\"circular\"></ion-spinner>\n }\n </ion-button>\n }\n }\n </ion-item>\n }\n\n @if (item.mode == 'route') {\n <ion-item\n [lines]=\"item.lines\"\n [button]=\"item.clickable\"\n [disabled]=\"item.disabled\"\n (click)=\"clickHandler(item.token)\"\n [routerLink]=\"item.routerLink\"\n >\n @if (item.unreadIndicator) {\n <div class=\"unread-indicator-wrapper\" slot=\"start\">\n <div class=\"unread-indicator\"></div>\n </div>\n }\n @if (item.icon) {\n <ion-icon aria-hidden=\"true\" [name]=\"item.icon\" size=\"medium\" slot=\"start\"></ion-icon>\n }\n\n <ion-label [ngClass]=\"{ 'ion-text-nowrap': item.ellipsis }\">\n <h2>{{ item.text }}</h2>\n\n @if (item.comments) {\n <ion-note color=\"medium\"> {{ item.comments }} </ion-note>\n }\n </ion-label>\n </ion-item>\n }\n\n @if (item.mode == 'subtitule') {\n <ion-item\n [lines]=\"item.lines\"\n [button]=\"item.clickable\"\n [disabled]=\"item.disabled\"\n (click)=\"clickHandler(item.token)\"\n >\n @if (item.unreadIndicator) {\n <div class=\"unread-indicator-wrapper\" slot=\"start\">\n <div class=\"unread-indicator\"></div>\n </div>\n }\n\n <ion-label [ngClass]=\"{ 'ion-text-nowrap': item.ellipsis }\">\n <h1>{{ item.text }}</h1>\n <p>{{ item.subtitle }}</p>\n </ion-label>\n </ion-item>\n }\n\n @if (item.mode == 'avatar') {\n <ion-item\n [lines]=\"item.lines\"\n [button]=\"item.clickable\"\n [disabled]=\"item.disabled\"\n (click)=\"clickHandler(item.token)\"\n >\n <ion-avatar aria-hidden=\"true\" slot=\"start\">\n <img alt=\"\" [src]=\"item.image\" />\n </ion-avatar>\n <ion-label>{{ item.text }}</ion-label>\n </ion-item>\n }\n\n @if (item.mode == 'icon') {\n <ion-item\n [lines]=\"item.lines\"\n [button]=\"item.clickable\"\n [disabled]=\"item.disabled\"\n (click)=\"clickHandler(item.token)\"\n >\n <ion-icon aria-hidden=\"true\" [name]=\"item.icon\" size=\"medium\" slot=\"start\"></ion-icon>\n <ion-label>{{ item.text }}</ion-label>\n </ion-item>\n }\n }\n </ion-list>\n `,\n styleUrls: ['./item-list.component.scss'],\n})\n/**\n * ItemListComponent\n *\n * Componente de lista reutilizable para mostrar una colección de elementos con diferentes modos de visualización (texto, subtítulo, avatar, icono, ruta, acciones).\n * Permite acciones por elemento, indicadores de no leído, y personalización de estilos.\n *\n * @example\n * <val-item-list [props]=\"{ title: 'Usuarios', items: [{ text: 'Juan', mode: 'avatar', image: 'avatar.jpg' }] }\" (onClick)=\"handleClick($event)\"></val-item-list>\n *\n * @input props {ListMetadata} - Metadatos de la lista y sus elementos.\n * @output onClick - Emite el token del elemento clicado.\n * @output onActionClick - Emite el token de la acción clicada en un elemento.\n */\nexport class ItemListComponent implements OnInit {\n states = ComponentStates;\n defaultColor = 'primary';\n\n /**\n * Metadatos de la lista y sus elementos.\n */\n @Input()\n props: ListMetadata;\n\n /**\n * Evento emitido al hacer click en un elemento de la lista.\n */\n @Output()\n onClick = new EventEmitter<string>();\n\n /**\n * Evento emitido al hacer click en una acción de un elemento.\n */\n @Output()\n onActionClick = new EventEmitter<string>();\n\n constructor(icon: IconService) {}\n\n ngOnInit() {}\n\n /**\n * Emite el token del elemento clicado.\n * @param token Token del elemento\n */\n clickHandler(token?: string) {\n this.onClick.emit(token);\n }\n\n /**\n * Emite el token de la acción clicada.\n * @param token Token de la acción\n */\n onActionClickHandler(token?: string) {\n this.onActionClick.emit(token);\n }\n\n /**\n * Devuelve el color de borde de la lista.\n */\n color() {\n return resolveColor(this.props.color || this.defaultColor);\n }\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { ImageComponent } from '../../atoms/image/image.component';\nimport { BannerComponent } from '../banner/banner.component';\nimport { NoContentMetadata } from './types';\n\n@Component({\n selector: 'val-no-content',\n standalone: true,\n imports: [ImageComponent, BannerComponent],\n template: `\n @if (props.topContent) {\n <div>\n <val-banner [props]=\"props.topContent\" (onClick)=\"onClickHandler($event)\"></val-banner>\n </div>\n }\n <val-image class=\"image-container\" [props]=\"props.image\"></val-image>\n <div>\n <val-banner [props]=\"props.bottomContent\" (onClick)=\"onClickHandler($event)\"></val-banner>\n </div>\n `,\n styleUrls: ['./no-content.component.scss'],\n})\n/**\n * NoContentComponent\n *\n * Componente para mostrar una pantalla de \"sin contenido\" con imagen y banners opcionales arriba y abajo.\n * Útil para estados vacíos, errores o mensajes informativos.\n *\n * @example\n * <val-no-content [props]=\"{ image: { src: 'empty.svg' }, bottomContent: { ... } }\"></val-no-content>\n *\n * @input props {NoContentMetadata} - Metadatos de la imagen y banners a mostrar.\n * @output onClick - Emite el token de acción de los banners si corresponde.\n */\nexport class NoContentComponent implements OnInit {\n /**\n * Metadatos de la imagen y banners a mostrar.\n */\n @Input()\n props: NoContentMetadata;\n\n /**\n * Evento emitido al hacer click en un banner.\n */\n @Output()\n onClick = new EventEmitter<string>();\n\n constructor() {}\n\n ngOnInit() {}\n\n /**\n * Emite el token de acción del banner clicado.\n * @param token Token de la acción\n */\n onClickHandler(token: string) {\n this.onClick.emit(token);\n }\n}\n","/**\n * Tipos y metadatos para el componente WizardComponent.\n * Permiten definir los pasos, botones, estado y navegación del wizard.\n */\nimport { ButtonMetadata, ComponentState } from '../../types';\nimport { NoContentMetadata } from '../no-content/types';\n\n/**\n * Metadatos del wizard.\n * @property state Estado global del wizard.\n * @property current Paso actual.\n * @property steps Colección de pasos.\n * @property error Paso de error.\n */\nexport type WizardMetadata = {\n state: ComponentState;\n current: number;\n steps: Steps;\n error: Step;\n};\n\n/**\n * Representa un paso del wizard.\n * @property titles Metadatos de \"no contenido\" para el paso.\n * @property buttons Botones disponibles en el paso.\n */\nexport type Step = {\n titles: NoContentMetadata;\n buttons: ButtonMetadata[];\n};\n\n/**\n * Colección de pasos del wizard, indexados por número de paso.\n */\nexport type Steps = {\n [step: number]: Step;\n};\n\n/**\n * Enumera los posibles movimientos de navegación en el wizard.\n */\nexport enum MOTION {\n BACKWARD,\n FORWARD,\n RETRY,\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { ProgressBarComponent } from '../../../atoms/progress-bar/progress-bar.component';\nimport { ButtonGroupComponent } from '../../../molecules/button-group/button-group.component';\nimport { ButtonMetadata, ComponentStates } from '../../../types';\nimport { FooterComponent } from '../../footer/footer.component';\nimport { MOTION, Step, WizardMetadata } from '../types';\n\n@Component({\n selector: 'val-wizard-footer',\n standalone: true,\n imports: [FooterComponent, ProgressBarComponent, ButtonGroupComponent],\n template: `\n <val-footer\n [props]=\"{\n bordered: false,\n translucent: false,\n toolbar: {\n title: '',\n actions: [],\n color: '',\n withBack: false,\n withActions: false,\n },\n }\"\n >\n <val-progress-bar\n extra\n [props]=\"{ progress: Progress, color: '', type: 'determinate', buffer: 1, size: 'small', rounded: false }\"\n ></val-progress-bar>\n <val-button-group\n extra\n [props]=\"{ buttons: actions, position: 'spaced', columned: false }\"\n (onClick)=\"clickHandler($event)\"\n ></val-button-group>\n </val-footer>\n `,\n styleUrls: ['./wizard-footer.component.scss'],\n})\nexport class WizardFooterComponent implements OnInit {\n @Input()\n props: WizardMetadata;\n\n @Output()\n onClick = new EventEmitter<{ current: number; motion: MOTION }>();\n\n wrapperId = 'wizard-wrapper';\n\n constructor() {}\n\n ngOnInit() {}\n\n clickHandler(token?: string) {\n if (!token) {\n return;\n }\n if (token.includes('right')) {\n this.tryToStep(MOTION.FORWARD);\n }\n if (token.includes('left')) {\n this.tryToStep(MOTION.BACKWARD);\n }\n }\n\n get Current(): Step {\n return this.props.steps[this.props.current];\n }\n\n get Progress(): number {\n if (this.props.steps && this.props.current) {\n return this.props.current / Object.keys(this.props.steps).length;\n }\n return 0;\n }\n\n get actions(): ButtonMetadata[] {\n if (this.props.state === ComponentStates.ERROR && this.Current.buttons.length > 1) {\n this.Current.buttons[1].state = ComponentStates.DISABLED;\n }\n\n if (this.props.current === 1 && this.Current.buttons.length > 1) {\n return [this.Current.buttons[1]];\n }\n return this.Current.buttons;\n }\n\n tryToStep(motion: MOTION): void {\n this.onClick.emit({ current: this.props.current, motion });\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { goToTop } from '../../../shared/utils/dom';\nimport { ContentLoaderComponent } from '../../molecules/content-loader/content-loader.component';\nimport { ComponentStates } from '../../types';\nimport { NoContentComponent } from '../no-content/no-content.component';\nimport { MOTION, Step, WizardMetadata } from './types';\n\n@Component({\n selector: 'val-wizard',\n standalone: true,\n imports: [CommonModule, NoContentComponent, ContentLoaderComponent],\n template: `\n <div [id]=\"wrapperId\" class=\"wrapper\">\n <ng-container *ngIf=\"props.state !== 'ERROR'\">\n <val-no-content [props]=\"Current.titles\"></val-no-content>\n <div class=\"step\">\n <div *ngIf=\"props.state === 'WORKING'\">\n <val-content-loader\n [props]=\"{\n name: 'circular',\n color: 'primary',\n size: 'large',\n text: 'Por favor espere...',\n }\"\n />\n </div>\n <ng-content select=\"[step]\"></ng-content>\n </div>\n </ng-container>\n <ng-container *ngIf=\"props.state === 'ERROR'\">\n <val-no-content [props]=\"props.error.titles\" (onClick)=\"clickHandler($event)\"></val-no-content>\n </ng-container>\n </div>\n `,\n styleUrls: ['./wizard.component.scss'],\n})\n/**\n * WizardComponent\n *\n * Componente para flujos de pasos (wizard) reutilizable, con soporte para estados, errores y navegación entre pasos.\n * Permite mostrar contenido personalizado por paso y manejar acciones de navegación.\n *\n * @example\n * <val-wizard [props]=\"wizardProps\" (onClick)=\"handleWizardNav($event)\">\n * <div step>Contenido del paso</div>\n * </val-wizard>\n *\n * @input props {WizardMetadata} - Metadatos del wizard, pasos y estado.\n * @output onClick - Emite el paso actual y la acción de navegación (MOTION).\n */\nexport class WizardComponent implements OnInit {\n /**\n * Metadatos del wizard, pasos y estado.\n */\n @Input()\n props: WizardMetadata;\n\n /**\n * Evento emitido al hacer click en una acción de navegación.\n */\n @Output()\n onClick = new EventEmitter<{ current: number; motion: MOTION }>();\n\n wrapperId = 'wizard-wrapper';\n\n constructor() {}\n\n ngOnInit() {}\n\n /**\n * Cambia el estado del wizard a 'WORKING' y deshabilita los botones del paso actual.\n */\n working() {\n this.props.state = ComponentStates.WORKING;\n this.Current.buttons.map(x => {\n x.state = ComponentStates.DISABLED;\n });\n }\n\n /**\n * Cambia el estado del wizard a 'ENABLED' y habilita los botones del paso actual.\n * No realiza cambios si ya está en estado 'ENABLED'.\n */\n done() {\n if (this.props.state === ComponentStates.ENABLED) {\n return;\n }\n\n this.props.state = ComponentStates.ENABLED;\n this.Current.buttons.map(x => {\n x.state = ComponentStates.ENABLED;\n });\n }\n\n /**\n * Devuelve el paso actual del wizard.\n */\n get Current(): Step {\n return this.props.steps[this.props.current];\n }\n\n /**\n * Cambia el paso actual del wizard y hace scroll al inicio.\n * @param newStep Nuevo índice de paso\n */\n setCurrent(newStep: number) {\n if (newStep === this.props.current) {\n return;\n }\n this.props.current = newStep;\n goToTop(this.wrapperId);\n }\n\n /**\n * Establece el estado de error y muestra el mensaje de error en el banner inferior.\n * @param error Mensaje de error a mostrar\n */\n setError(error: string) {\n if (this.props.state === ComponentStates.ERROR) {\n return;\n }\n\n this.props.error.titles.bottomContent.content.bellowTitle.content = error;\n this.props.state = ComponentStates.ERROR;\n goToTop(this.wrapperId);\n }\n\n /**\n * Reinicia el estado de error y vuelve a estado 'ENABLED'.\n */\n reset() {\n this.props.error.titles.bottomContent.content.bellowTitle.content = '';\n this.done();\n }\n\n /**\n * Maneja el click en el banner de error y emite el evento de navegación.\n * Si el token contiene 'retry', reinicia el wizard.\n * @param token Token de la acción clicada\n */\n clickHandler(token?: string) {\n if (!token) {\n return;\n }\n if (token.includes('retry')) {\n this.reset();\n }\n\n this.onClick.emit({ current: this.props.current, motion: MOTION.RETRY });\n }\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'val-layout',\n standalone: true,\n imports: [],\n template: `\n <div class=\"layout-container\">\n <ng-content></ng-content>\n </div>\n `,\n styleUrl: './layout.component.scss',\n})\nexport class LayoutComponent {}\n","import { NgStyle } from '@angular/common';\nimport { Component, EventEmitter, inject, Input, Output } from '@angular/core';\nimport { IonContent, IonHeader, IonTitle, IonToolbar } from '@ionic/angular/standalone';\nimport { ThemeService } from '../../../services/theme.service';\nimport { DividerComponent } from '../../atoms/divider/divider.component';\nimport { ExpandableTextComponent } from '../../molecules/expandable-text/expandable-text.component';\nimport { LinkComponent } from '../../molecules/link/link.component';\nimport { HeaderComponent } from '../../organisms/header/header.component';\nimport { LayoutComponent } from '../layout/layout.component';\nimport { SimpleMetadata } from './types';\n\n@Component({\n selector: 'val-simple',\n standalone: true,\n imports: [\n NgStyle,\n IonHeader,\n IonToolbar,\n IonTitle,\n IonContent,\n HeaderComponent,\n LayoutComponent,\n DividerComponent,\n LinkComponent,\n ExpandableTextComponent,\n ],\n template: `\n <val-header [props]=\"props.header\" />\n\n <ion-content\n [fullscreen]=\"true\"\n [ngStyle]=\"{\n '--background': theme.IsDark ? 'var(--ion-background-color)' : props.background,\n }\"\n [scrollEvents]=\"true\"\n (ionScroll)=\"onScrollHandler($event)\"\n >\n <ion-header collapse=\"condense\">\n <ion-toolbar style=\"--background: transparent;\">\n <ion-title style=\"padding: 0;\" size=\"large\">{{ props.pageTitle }}</ion-title>\n </ion-toolbar>\n </ion-header>\n @if (props.pageDescription) {\n <div class=\"description-container\">\n <val-expandable-text\n [props]=\"{\n limit: 180,\n content: props.pageDescription,\n color: 'primary',\n expandText: 'más',\n }\"\n />\n </div>\n }\n @if (props.link) {\n <val-link [props]=\"props.link\" (onClick)=\"onClickHandler($event)\"></val-link>\n }\n @if (props.withDivider) {\n <val-divider [props]=\"{ fill: 'solid', size: 'medium', color: 'dark' }\" />\n }\n <val-layout>\n <ng-content select=\"[inner-container]\"></ng-content>\n </val-layout>\n </ion-content>\n <ng-content select=\"[outter-container]\"></ng-content>\n `,\n styles: `\n .description-container {\n padding: 0px 16px;\n }\n `,\n})\nexport class SimpleComponent {\n @Input()\n props: SimpleMetadata;\n\n @Output()\n onClick = new EventEmitter<string>();\n\n @Output()\n onScrollEvent = new EventEmitter<boolean>();\n\n theme = inject(ThemeService);\n\n onClickHandler(token?: string) {\n this.onClick.emit(token);\n }\n\n onScrollHandler($event: Event) {\n this.onScrollEvent.emit(true);\n }\n}\n","import { Provider } from './content';\n\nexport type LanguageText = {\n [key: string]: string;\n};\n\nexport type LanguagesContent = {\n [key: string]: LanguageText;\n};\n\nexport class TextContent {\n text: LanguagesContent;\n constructor(text: LanguagesContent) {\n this.text = text;\n }\n\n get Content(): LanguagesContent {\n return this.text;\n }\n}\n\nexport enum LangOption {\n ES = 'es',\n EN = 'en',\n}\n","import { InjectionToken } from '@angular/core';\nimport { Provider } from './lang-provider/content';\n\nexport interface ValtechConfig {\n content: Provider;\n}\n\nexport const ValtechConfigService = new InjectionToken<ValtechConfig>('ValtechConfig');\n","import { Inject, Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { Provider } from './content';\nimport { LangOption, LanguageText } from './types';\nimport { LocalStorageService } from '../local-storage.service';\nimport { LANG } from '../../shared/constants/storage';\nimport { ValtechConfig, ValtechConfigService } from '../types';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class LangService {\n content: Provider;\n default = LangOption.ES;\n selectedLang: BehaviorSubject<LangOption>;\n config: ValtechConfig;\n\n constructor(@Inject(ValtechConfigService) config: ValtechConfig) {\n console.log('injected config: ', config);\n this.content = config.content;\n this.config = config;\n const current = LocalStorageService.get<LangOption>(LANG);\n this.selectedLang = new BehaviorSubject<LangOption>(current || this.default);\n }\n\n Text(className: string): LanguageText {\n return this.content[className].Content[this.selectedLang.value];\n }\n\n get Lang(): LangOption {\n return this.selectedLang.value;\n }\n\n set Lang(lang: LangOption) {\n this.selectedLang.next(lang);\n LocalStorageService.set<LangOption>(LANG, lang);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ToastController, ToastOptions } from '@ionic/angular';\n\n/**\n * Service for displaying toast notifications using Ionic's ToastController.\n * Provides methods to show and present toasts with custom options.\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class ToastService {\n constructor(private toastController: ToastController) {}\n\n /**\n * Presents a toast notification with the given options.\n * @param request Toast options (message, duration, position, color, etc.)\n */\n async presentToast(request: ToastOptions) {\n const toast = await this.toastController.create({\n message: request.message,\n duration: request.duration,\n position: request.position,\n color: request.color,\n });\n\n await toast.present();\n }\n\n /**\n * Shows a toast notification and logs the result.\n * @param request Toast options (message, duration, position, color, etc.)\n */\n show(request: ToastOptions) {\n this.presentToast(request)\n .then(() => {\n console.info('Toast created');\n })\n .catch(error => {\n console.error(JSON.stringify(error));\n });\n }\n}\n","/*\n * Public API Surface of valtech-components\n */\n\n/*\n * Public API Surface of valtech-components\n */\n\nexport * from './lib/components/atoms/avatar/avatar.component';\nexport * from './lib/components/atoms/avatar/types';\nexport * from './lib/components/atoms/box/box.component';\nexport * from './lib/components/atoms/box/types';\nexport * from './lib/components/atoms/button/button.component';\nexport * from './lib/components/atoms/button/factory';\nexport * from './lib/components/atoms/display/display.component';\nexport * from './lib/components/atoms/display/types';\nexport * from './lib/components/atoms/divider/divider.component';\nexport * from './lib/components/atoms/divider/types';\nexport * from './lib/components/atoms/href/href.component';\nexport * from './lib/components/atoms/href/types';\nexport * from './lib/components/atoms/icon/icon.component';\nexport * from './lib/components/atoms/icon/types';\nexport * from './lib/components/atoms/image/image.component';\nexport * from './lib/components/atoms/image/types';\nexport * from './lib/components/atoms/progress-bar/progress-bar.component';\nexport * from './lib/components/atoms/progress-bar/types';\nexport * from './lib/components/atoms/text/text.component';\nexport * from './lib/components/atoms/text/types';\nexport * from './lib/components/atoms/title/title.component';\nexport * from './lib/components/atoms/title/types';\n\nexport * from './lib/components/molecules/alert-box/alert-box.component';\nexport * from './lib/components/molecules/alert-box/types';\nexport * from './lib/components/molecules/button-group/button-group.component';\nexport * from './lib/components/molecules/button-group/types';\nexport * from './lib/components/molecules/card/card.component';\nexport * from './lib/components/molecules/card/types';\nexport * from './lib/components/molecules/check-input/check-input.component';\nexport * from './lib/components/molecules/comment-input/comment-input.component';\nexport * from './lib/components/molecules/content-loader/content-loader.component';\nexport * from './lib/components/molecules/content-loader/types';\nexport * from './lib/components/molecules/date-input/date-input.component';\nexport * from './lib/components/molecules/email-input/email-input.component';\nexport * from './lib/components/molecules/expandable-text/expandable-text.component';\nexport * from './lib/components/molecules/expandable-text/types';\nexport * from './lib/components/molecules/file-input/file-input.component';\nexport * from './lib/components/molecules/hint/hint.component';\nexport * from './lib/components/molecules/hour-input/hour-input.component';\nexport * from './lib/components/molecules/link/link.component';\nexport * from './lib/components/molecules/link/types';\nexport * from './lib/components/molecules/links-cake/links-cake.component';\nexport * from './lib/components/molecules/links-cake/types';\nexport * from './lib/components/molecules/notes-box/notes-box.component';\nexport * from './lib/components/molecules/notes-box/types';\nexport * from './lib/components/molecules/number-input/number-input.component';\nexport * from './lib/components/molecules/password-input/password-input.component';\nexport * from './lib/components/molecules/pin-input/pin-input.component';\nexport * from './lib/components/molecules/progress-status/progress-status.component';\nexport * from './lib/components/molecules/progress-status/types';\nexport * from './lib/components/molecules/prompter/prompter.component';\nexport * from './lib/components/molecules/prompter/types';\nexport * from './lib/components/molecules/radio-input/radio-input.component';\nexport * from './lib/components/molecules/select-search/select-search.component';\nexport * from './lib/components/molecules/searchbar/searchbar.component';\nexport * from './lib/components/molecules/select-input/select-input.component';\nexport * from './lib/components/molecules/text-input/text-input.component';\nexport * from './lib/components/molecules/title-block/title-block.component';\nexport * from './lib/components/molecules/title-block/types';\nexport * from './lib/components/molecules/layered-card/layered-card.component';\nexport * from './lib/components/molecules/layered-card/types';\n\nexport * from './lib/components/organisms/banner/banner.component';\nexport * from './lib/components/organisms/banner/types';\nexport * from './lib/components/organisms/footer/footer.component';\nexport * from './lib/components/organisms/form/factory';\nexport * from './lib/components/organisms/form/form-footer/form-footer.component';\nexport * from './lib/components/organisms/form/form.component';\nexport * from './lib/components/organisms/header/header.component';\nexport * from './lib/components/organisms/header/types';\nexport * from './lib/components/organisms/item-list/item-list.component';\nexport * from './lib/components/organisms/item-list/types';\nexport * from './lib/components/organisms/no-content/no-content.component';\nexport * from './lib/components/organisms/no-content/types';\nexport * from './lib/components/organisms/toolbar/toolbar.component';\nexport * from './lib/components/organisms/toolbar/types';\nexport * from './lib/components/organisms/wizard/types';\nexport * from './lib/components/organisms/wizard/wizard-footer/wizard-footer.component';\nexport * from './lib/components/organisms/wizard/wizard.component';\n\nexport * from './lib/components/templates/layout/layout.component';\nexport * from './lib/components/templates/simple/simple.component';\nexport * from './lib/components/templates/simple/types';\n\nexport * from './lib/services/download.service';\nexport * from './lib/services/icons.service';\nexport * from './lib/services/in-app-browser.service';\nexport * from './lib/services/lang-provider/lang-provider.service';\nexport * from './lib/services/lang-provider/types';\nexport * from './lib/services/local-storage.service';\nexport * from './lib/services/navigation.service';\nexport * from './lib/services/theme.service';\nexport * from './lib/services/toast.service';\nexport * from './lib/services/types';\n\nexport * from './lib/components/types';\nexport * from './lib/shared/utils/dom';\nexport * from './lib/shared/utils/text';\nexport * from './lib/shared/utils/styles';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.IconService","i2","i1.DownloadService","i2.IconService","i3.NavigationService","i1","i3"],"mappings":";;;;;;;;;;;;;;;;;AAqBA;;;;;;;;;;AAUG;MACU,eAAe,CAAA;AAS1B,IAAA,WAAA,GAAA;AANA;;AAEG;AAEH,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,YAAY,EAAE;;AAI5B,IAAA,QAAQ;IAER,cAAc,GAAA;AACZ,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;;+GAdV,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,eAAe,EAxBhB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;;;;;;AAUT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,mjFAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAXS,SAAS,EAAA,QAAA,EAAA,YAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAyBR,eAAe,EAAA,UAAA,EAAA,CAAA;kBA5B3B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,cACV,IAAI,EAAA,OAAA,EACP,CAAC,SAAS,CAAC,EACV,QAAA,EAAA;;;;;;;;;;AAUT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,mjFAAA,CAAA,EAAA;wDAeQ,KAAK,EAAA,CAAA;sBAAb;gBAMD,OAAO,EAAA,CAAA;sBADN;;;ACtCH;AAEA;;;AAGG;MAuCU,WAAW,CAAA;AACtB;;AAEG;AACH,IAAA,WAAA,GAAA;AACE,QAAA,QAAQ,CAAC;YACP,UAAU;YACV,gBAAgB;YAChB,YAAY;YACZ,kBAAkB;YAClB,gBAAgB;YAChB,mBAAmB;YACnB,gBAAgB;YAChB,sBAAsB;YACtB,yBAAyB;YACzB,oBAAoB;YACpB,WAAW;YACX,YAAY;YACZ,kBAAkB;YAClB,YAAY;YACZ,KAAK;YACL,YAAY;YACZ,WAAW;YACX,aAAa;YACb,UAAU;YACV,WAAW;YACX,kBAAkB;YAClB,qBAAqB;YACrB,gBAAgB;YAChB,gBAAgB;YAChB,WAAW;YACX,aAAa;YACb,eAAe;YACf,eAAe;YACf,eAAe;AAChB,SAAA,CAAC;;+GAnCO,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAX,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAW,cAFV,MAAM,EAAA,CAAA,CAAA;;4FAEP,WAAW,EAAA,UAAA,EAAA,CAAA;kBAHvB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;ACPD;;;;;;;;;;;;AAYG;MACU,YAAY,CAAA;AAoBvB,IAAA,WAAA,CAAY,IAAiB,EAAA;AAN7B;;AAEG;AAEH,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,YAAY,EAAE;;AAI5B,IAAA,QAAQ;IAER,YAAY,GAAA;AACV,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;;+GAzBV,YAAY,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAZ,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,YAAY,EAvCb,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;AAuBT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,y6FAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAxBS,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,OAAO,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,MAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,OAAO,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,KAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,KAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAwC7B,YAAY,EAAA,UAAA,EAAA,CAAA;kBA3CxB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,SAAS,EACP,UAAA,EAAA,IAAI,EACP,OAAA,EAAA,CAAC,YAAY,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EACxC,QAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;AAuBT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,y6FAAA,CAAA,EAAA;6EA4BD,KAAK,EAAA,CAAA;sBADJ;gBAOD,OAAO,EAAA,CAAA;sBADN;;;AC1DH,MAAM,OAAO,GAAmB,SAAS;AACzC,MAAM,QAAQ,GAAmB,UAAU;AAC3C,MAAM,OAAO,GAAmB,SAAS;AACzC,MAAM,KAAK,GAAmB,OAAO;AAErC;;AAEG;AACI,MAAM,eAAe,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK;AAElE;;AAEG;IACS;AAAZ,CAAA,UAAY,UAAU,EAAA;AACpB,IAAA,UAAA,CAAA,UAAA,CAAA,iBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,iBAAe;AACf,IAAA,UAAA,CAAA,UAAA,CAAA,kBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,kBAAgB;AAChB,IAAA,UAAA,CAAA,UAAA,CAAA,iBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,iBAAe;AACf,IAAA,UAAA,CAAA,UAAA,CAAA,gBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,gBAAc;AACd,IAAA,UAAA,CAAA,UAAA,CAAA,oBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,oBAAkB;AACpB,CAAC,EANW,UAAU,KAAV,UAAU,GAMrB,EAAA,CAAA,CAAA;AAcD;;AAEG;IACS;AAAZ,CAAA,UAAY,SAAS,EAAA;AACnB,IAAA,SAAA,CAAA,SAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAI;AACJ,IAAA,SAAA,CAAA,SAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAK;AACL,IAAA,SAAA,CAAA,SAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAQ;AACR,IAAA,SAAA,CAAA,SAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAO;AACP,IAAA,SAAA,CAAA,SAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAM;AACN,IAAA,SAAA,CAAA,SAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAQ;AACR,IAAA,SAAA,CAAA,SAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAI;AACJ,IAAA,SAAA,CAAA,SAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAI;AACJ,IAAA,SAAA,CAAA,SAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAK;AACL,IAAA,SAAA,CAAA,SAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAK;AACL,IAAA,SAAA,CAAA,SAAA,CAAA,QAAA,CAAA,GAAA,EAAA,CAAA,GAAA,QAAM;AACN,IAAA,SAAA,CAAA,SAAA,CAAA,eAAA,CAAA,GAAA,EAAA,CAAA,GAAA,eAAa;AACb,IAAA,SAAA,CAAA,SAAA,CAAA,MAAA,CAAA,GAAA,EAAA,CAAA,GAAA,MAAI;AACN,CAAC,EAdW,SAAS,KAAT,SAAS,GAcpB,EAAA,CAAA,CAAA;AA2FD;;AAEG;IACS;AAAZ,CAAA,UAAY,iBAAiB,EAAA;AAC3B,IAAA,iBAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,iBAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,iBAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACf,IAAA,iBAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACnB,CAAC,EALW,iBAAiB,KAAjB,iBAAiB,GAK5B,EAAA,CAAA,CAAA;;AC7JD;;;AAGG;MAMU,eAAe,CAAA;AAC1B;;;;AAIG;AACH,IAAA,kBAAkB,CAAC,GAAW,EAAA;AAC5B,QAAA,IAAI;YACF,MAAM,YAAY,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC;YACnC,MAAM,WAAW,GAAG,YAAY,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC;AACzD,YAAA,MAAM,QAAQ,GAAG,kBAAkB,CAAC,WAAW,CAAC;AAChD,YAAA,OAAO,QAAQ;;QACf,OAAO,KAAK,EAAE;AACd,YAAA,OAAO,CAAC,KAAK,CAAC,sCAAsC,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAC5E,YAAA,OAAO,UAAU;;;AAIrB;;;AAGG;AACH,IAAA,UAAU,CAAC,GAAW,EAAA;QACpB,IAAI,GAAG,EAAE;YACP,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC;YAC7C,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC;AACxC,YAAA,IAAI,CAAC,IAAI,GAAG,GAAG;AACf,YAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ;AACxB,YAAA,IAAI,CAAC,MAAM,GAAG,QAAQ;AACtB,YAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;YAC/B,IAAI,CAAC,KAAK,EAAE;AACZ,YAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;;aAC1B;AACL,YAAA,OAAO,CAAC,KAAK,CAAC,yBAAyB,CAAC;;;AAI5C;;;AAGG;AACH,IAAA,uBAAuB,CAAC,GAAW,EAAA;AACjC,QAAA,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC;QAC/C,IAAI,GAAG,EAAE;YACP,KAAK,CAAC,GAAG;iBACN,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,IAAI,EAAE;iBAChC,IAAI,CAAC,IAAI,IAAG;gBACX,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC;gBAC5C,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC;AACxC,gBAAA,IAAI,CAAC,IAAI,GAAG,GAAG;gBAEf,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC;gBAC7C,IAAI,CAAC,QAAQ,GAAG,CAAG,EAAA,CAAC,IAAI,IAAI,EAAE,CAAA,CAAA,EAAI,QAAQ,CAAA,CAAE;AAC5C,gBAAA,IAAI,CAAC,MAAM,GAAG,OAAO;gBACrB,IAAI,CAAC,KAAK,EAAE;AAEZ,gBAAA,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC;AACjC,aAAC;iBACA,KAAK,CAAC,KAAK,IAAG;AACb,gBAAA,OAAO,CAAC,KAAK,CAAC,gCAAgC,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AACxE,aAAC,CAAC;;aACC;AACL,YAAA,OAAO,CAAC,KAAK,CAAC,yBAAyB,CAAC;;;+GA9DjC,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAf,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,cAFd,MAAM,EAAA,CAAA,CAAA;;4FAEP,eAAe,EAAA,UAAA,EAAA,CAAA;kBAH3B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;ACRD;AAEA;;;AAGG;MAOU,mBAAmB,CAAA;AAQ9B,IAAA,WAAA,GAAA;AAPA;;AAEG;AACH,QAAA,IAAA,CAAA,OAAO,GAAgB;AACrB,YAAA,iBAAiB,EAAE,SAAS;AAC5B,YAAA,GAAG,EAAE,EAAE;SACR;;AAGD;;;AAGG;IACH,MAAM,oBAAoB,CAAC,GAAW,EAAA;AACpC,QAAA,MAAM,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC;;+GAfnC,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,cAFlB,MAAM,EAAA,CAAA,CAAA;;4FAEP,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAH/B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;ACPD;;;AAGG;MAIU,iBAAiB,CAAA;AAQ5B,IAAA,WAAA,GAAA;AAHA,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AACvB,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,mBAAmB,CAAC;;AAI1C;;;AAGG;AACH,IAAA,aAAa,CAAC,GAAW,EAAA;AACvB,QAAA,IAAI,CAAC,YAAY,CAAC,oBAAoB,CAAC,GAAG,CAAC;;AAG7C;;;;AAIG;IACH,gBAAgB,CAAC,KAAa,EAAE,YAAiB,EAAA;AAC/C,QAAA,MAAM,gBAAgB,GAAqB;AACzC,YAAA,KAAK,EAAE;AACL,gBAAA,IAAI,EAAE,YAAY;AACnB,aAAA;SACF;QAED,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,EAAE,gBAAgB,CAAC;;AAGjD;;;AAGG;AACH,IAAA,aAAa,CAAC,GAAW,EAAA;AACvB,QAAA,IAAI,CAAC;aACF,aAAa,CAAC,GAAG;AACjB,aAAA,IAAI,CAAC,QAAQ,IAAG,GAAG;AACnB,aAAA,KAAK,CAAC,KAAK,IAAK,GAAC,CAAC;;AAGvB;;;AAGG;AACH,IAAA,YAAY,CAAC,GAAW,EAAA;QACtB,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,qBAAqB,CAAC;;+GAjDxC,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,cAFhB,MAAM,EAAA,CAAA,CAAA;;4FAEP,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAH7B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;ACuBD;;;;;;;;;;AAUG;MACU,eAAe,CAAA;AAY1B,IAAA,WAAA,CACU,QAAyB,EACjC,IAAiB,EACT,UAA6B,EAAA;QAF7B,IAAQ,CAAA,QAAA,GAAR,QAAQ;QAER,IAAU,CAAA,UAAA,GAAV,UAAU;QAdpB,IAAM,CAAA,MAAA,GAAG,eAAe;AAKxB;;AAEG;AAEH,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,YAAY,EAAU;;AAQpC,IAAA,QAAQ;IAER,YAAY,GAAA;AACV,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;YAC7C;;QAGF,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,KAAK,UAAU,CAAC,cAAc,EAAE;YACvD,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;;AAGhD,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;YACvB,IAAI,CAAC,QAAQ,CAAC,uBAAuB,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;;AAE5D,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;YACtB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;;QAEpC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;;+GAnC1B,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,eAAe,EAhChB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;;;;;;;;;;;;;;GAkBT,EAnBS,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,0hFAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,iOAAE,SAAS,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,OAAO,EAAE,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,KAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,UAAU,yGAAE,OAAO,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAiCpD,eAAe,EAAA,UAAA,EAAA,CAAA;kBApC3B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,EACV,UAAA,EAAA,IAAI,EACP,OAAA,EAAA,CAAC,YAAY,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,CAAC,EACtD,QAAA,EAAA;;;;;;;;;;;;;;;;;;AAkBT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,0hFAAA,CAAA,EAAA;qIAkBD,KAAK,EAAA,CAAA;sBADJ;gBAOD,OAAO,EAAA,CAAA;sBADN;;;MCnDU,IAAI,GAAG,CAAC,IAAY,EAAE,IAAqB,KAAgB;IACtE,OAAO;QACL,IAAI;QACJ,IAAI;KACL;AACH;AAEA;MAEa,WAAW,GAAG,CAAC,IAAY,EAAE,IAAmC,KAAoB;IAC/F,OAAO;AACL,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,KAAK,EAAE,SAAS;QAChB,IAAI;AACJ,QAAA,IAAI,EAAE,SAAS;QACf,IAAI;KACL;AACH;MAEa,YAAY,GAAG,CAAC,IAAY,EAAE,IAAmC,KAAoB;AAChG,IAAA,OAAO,EAAE,GAAG,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE;AACtD;MAEa,iBAAiB,GAAG,CAC/B,IAAY,EACZ,IAAmC,KACjB;AAClB,IAAA,OAAO,EAAE,GAAG,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE;AACxD;MAEa,YAAY,GAAG,CAAC,IAAY,EAAE,IAAmC,KAAoB;AAChG,IAAA,OAAO,EAAE,GAAG,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE;AACtD;MAEa,iBAAiB,GAAG,CAC/B,IAAY,EACZ,IAAmC,KACjB;AAClB,IAAA,OAAO,EAAE,GAAG,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE;AACxD;MAEa,cAAc,GAAG,CAC5B,IAAY,EACZ,IAAmC,KACjB;AAClB,IAAA,OAAO,EAAE,GAAG,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE;AACxD;MAEa,mBAAmB,GAAG,CACjC,IAAY,EACZ,IAAmC,KACjB;AAClB,IAAA,OAAO,EAAE,GAAG,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE;AAC1D;MAEa,gBAAgB,GAAG,CAC9B,IAAY,EACZ,IAAmC,KACjB;AAClB,IAAA,OAAO,EAAE,GAAG,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE;AACxD;MAEa,qBAAqB,GAAG,CACnC,IAAY,EACZ,IAAmC,KACjB;AAClB,IAAA,OAAO,EAAE,GAAG,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE;AAC7D;MAEa,iBAAiB,GAAG,CAC/B,IAAY,EACZ,IAAmC,KACjB;AAClB,IAAA,OAAO,EAAE,GAAG,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE;AACzD;MAEa,sBAAsB,GAAG,CACpC,IAAY,EACZ,IAAmC,KACjB;AAClB,IAAA,OAAO,EAAE,GAAG,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE;AAC9D;MAEa,gBAAgB,GAAG,CAC9B,IAAY,EACZ,IAAmC,KACjB;AAClB,IAAA,OAAO,EAAE,GAAG,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE;AACxD;MAEa,qBAAqB,GAAG,CACnC,IAAY,EACZ,IAAmC,KACjB;AAClB,IAAA,OAAO,EAAE,GAAG,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE;AAC7D;MAEa,iBAAiB,GAAG,CAC/B,IAAY,EACZ,IAAmC,KACjB;AAClB,IAAA,OAAO,EAAE,GAAG,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE;AACzD;MAEa,sBAAsB,GAAG,CACpC,IAAY,EACZ,IAAmC,KACjB;AAClB,IAAA,OAAO,EAAE,GAAG,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE;AAC9D;MAEa,kBAAkB,GAAG,CAChC,IAAY,EACZ,IAAmC,KACjB;AAClB,IAAA,OAAO,EAAE,GAAG,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE;AAC1D;MAEa,uBAAuB,GAAG,CACrC,IAAY,EACZ,IAAmC,KACjB;AAClB,IAAA,OAAO,EAAE,GAAG,mBAAmB,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE;AAC/D;MAEa,mBAAmB,GAAG,CACjC,IAAY,EACZ,IAAmC,KACjB;AAClB,IAAA,OAAO,EAAE,GAAG,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE;AAC3D;MAEa,wBAAwB,GAAG,CACtC,IAAY,EACZ,IAAmC,KACjB;AAClB,IAAA,OAAO,EAAE,GAAG,mBAAmB,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE;AAChE;AAEa,MAAA,kBAAkB,GAAG,CAAC,IAAY,KAAoB;AACjE,IAAA,OAAO,YAAY,CAAC,IAAI,EAAE,QAAQ,CAAC;AACrC;AAEa,MAAA,gBAAgB,GAAG,CAAC,IAAY,KAAoB;AAC/D,IAAA,OAAO,EAAE,GAAG,YAAY,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE;AAC3D;AAEa,MAAA,gBAAgB,GAAG,CAAC,IAAY,KAAoB;AAC/D,IAAA,OAAO,EAAE,GAAG,YAAY,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE;AAC3D;AAEa,MAAA,uBAAuB,GAAG,CAAC,IAAY,KAAoB;AACtE,IAAA,OAAO,iBAAiB,CAAC,IAAI,EAAE,QAAQ,CAAC;AAC1C;AAEa,MAAA,qBAAqB,GAAG,CAAC,IAAY,KAAoB;AACpE,IAAA,OAAO,EAAE,GAAG,iBAAiB,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE;AAChE;AAEa,MAAA,qBAAqB,GAAG,CAAC,IAAY,KAAoB;AACpE,IAAA,OAAO,EAAE,GAAG,iBAAiB,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE;AAChE;AAEa,MAAA,eAAe,GAAG,CAAC,IAAY,KAAoB;AAC9D,IAAA,OAAO,gBAAgB,CAAC,IAAI,EAAE,QAAQ,CAAC;AACzC;AAEa,MAAA,gBAAgB,GAAG,CAAC,IAAY,KAAoB;AAC/D,IAAA,OAAO,iBAAiB,CAAC,IAAI,EAAE,QAAQ,CAAC;AAC1C;AAEA;AAEa,MAAA,8BAA8B,GAAG,CAAC,IAAY,KAAoB;IAC7E,OAAO,EAAE,GAAG,uBAAuB,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE;AAC/D;MAEa,kCAAkC,GAAG,CAChD,IAAY,EACZ,IAAgB,KACE;IAClB,OAAO,EAAE,GAAG,8BAA8B,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE;AAC1D;AAEa,MAAA,kCAAkC,GAAG,CAChD,IAAY,EACZ,IAAY,EACZ,MAA+C,KAC7B;IAClB,OAAO,EAAE,GAAG,8BAA8B,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE;AAClE;AAEO,MAAM,sCAAsC,GAAG,CACpD,IAAY,EACZ,IAAgB,EAChB,IAAY,EACZ,MAA+C,KAC7B;AAClB,IAAA,OAAO,EAAE,GAAG,kCAAkC,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE;AAC5E;AAEa,MAAA,4BAA4B,GAAG,CAAC,IAAY,KAAoB;IAC3E,OAAO,EAAE,GAAG,qBAAqB,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE;AAC7D;MAEa,gCAAgC,GAAG,CAC9C,IAAY,EACZ,IAAgB,KACE;IAClB,OAAO,EAAE,GAAG,4BAA4B,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE;AACxD;AAEa,MAAA,gCAAgC,GAAG,CAC9C,IAAY,EACZ,IAAY,EACZ,MAA+C,KAC7B;IAClB,OAAO,EAAE,GAAG,4BAA4B,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE;AAChE;AAEO,MAAM,oCAAoC,GAAG,CAClD,IAAY,EACZ,IAAgB,EAChB,IAAY,EACZ,MAA+C,KAC7B;AAClB,IAAA,OAAO,EAAE,GAAG,gCAAgC,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE;AAC1E;AAEa,MAAA,4BAA4B,GAAG,CAAC,IAAY,KAAoB;IAC3E,OAAO,EAAE,GAAG,qBAAqB,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE;AAC7D;MAEa,gCAAgC,GAAG,CAC9C,IAAY,EACZ,IAAgB,KACE;IAClB,OAAO,EAAE,GAAG,4BAA4B,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE;AACxD;AAEa,MAAA,gCAAgC,GAAG,CAC9C,IAAY,EACZ,IAAY,EACZ,MAA+C,KAC7B;IAClB,OAAO,EAAE,GAAG,4BAA4B,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE;AAChE;AAEO,MAAM,oCAAoC,GAAG,CAClD,IAAY,EACZ,IAAgB,EAChB,IAAY,EACZ,MAA+C,KAC7B;AAClB,IAAA,OAAO,EAAE,GAAG,gCAAgC,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE;AAC1E;AAEa,MAAA,uBAAuB,GAAG,CAAC,IAAY,KAAoB;IACtE,OAAO,EAAE,GAAG,gBAAgB,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE;AACxD;MAEa,2BAA2B,GAAG,CAAC,IAAY,EAAE,IAAgB,KAAoB;IAC5F,OAAO,EAAE,GAAG,uBAAuB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE;AACnD;AAEa,MAAA,2BAA2B,GAAG,CACzC,IAAY,EACZ,IAAY,EACZ,MAA+C,KAC7B;IAClB,OAAO,EAAE,GAAG,uBAAuB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE;AAC3D;AAEO,MAAM,+BAA+B,GAAG,CAC7C,IAAY,EACZ,IAAgB,EAChB,IAAY,EACZ,MAA+C,KAC7B;AAClB,IAAA,OAAO,EAAE,GAAG,2BAA2B,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE;AACrE;AAEa,MAAA,sBAAsB,GAAG,CAAC,IAAY,KAAoB;IACrE,OAAO,EAAE,GAAG,eAAe,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE;AACvD;MAEa,0BAA0B,GAAG,CAAC,IAAY,EAAE,IAAgB,KAAoB;IAC3F,OAAO,EAAE,GAAG,sBAAsB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE;AAClD;AAEa,MAAA,0BAA0B,GAAG,CACxC,IAAY,EACZ,IAAY,EACZ,MAA+C,KAC7B;IAClB,OAAO,EAAE,GAAG,sBAAsB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE;AAC1D;AAEO,MAAM,8BAA8B,GAAG,CAC5C,IAAY,EACZ,IAAgB,EAChB,IAAY,EACZ,MAA+C,KAC7B;AAClB,IAAA,OAAO,EAAE,GAAG,0BAA0B,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE;AACpE;AAEA;AAEa,MAAA,gCAAgC,GAAG,CAAC,IAAY,KAAoB;IAC/E,OAAO,EAAE,GAAG,uBAAuB,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE;AACjE;MAEa,oCAAoC,GAAG,CAClD,IAAY,EACZ,IAAgB,KACE;IAClB,OAAO,EAAE,GAAG,gCAAgC,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE;AAC5D;AAEa,MAAA,oCAAoC,GAAG,CAClD,IAAY,EACZ,IAAY,EACZ,MAA+C,KAC7B;IAClB,OAAO,EAAE,GAAG,gCAAgC,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE;AACpE;AAEO,MAAM,wCAAwC,GAAG,CACtD,IAAY,EACZ,IAAgB,EAChB,IAAY,EACZ,MAA+C,KAC7B;AAClB,IAAA,OAAO,EAAE,GAAG,oCAAoC,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE;AAC9E;AAEa,MAAA,8BAA8B,GAAG,CAAC,IAAY,KAAoB;IAC7E,OAAO,EAAE,GAAG,qBAAqB,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE;AAC/D;MAEa,kCAAkC,GAAG,CAChD,IAAY,EACZ,IAAgB,KACE;IAClB,OAAO,EAAE,GAAG,8BAA8B,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE;AAC1D;AAEa,MAAA,kCAAkC,GAAG,CAChD,IAAY,EACZ,IAAY,EACZ,MAA+C,KAC7B;IAClB,OAAO,EAAE,GAAG,8BAA8B,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE;AAClE;AAEO,MAAM,sCAAsC,GAAG,CACpD,IAAY,EACZ,IAAgB,EAChB,IAAY,EACZ,MAA+C,KAC7B;AAClB,IAAA,OAAO,EAAE,GAAG,kCAAkC,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE;AAC5E;AAEa,MAAA,8BAA8B,GAAG,CAAC,IAAY,KAAoB;IAC7E,OAAO,EAAE,GAAG,qBAAqB,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE;AAC/D;MAEa,kCAAkC,GAAG,CAChD,IAAY,EACZ,IAAgB,KACE;IAClB,OAAO,EAAE,GAAG,8BAA8B,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE;AAC1D;AAEa,MAAA,kCAAkC,GAAG,CAChD,IAAY,EACZ,IAAY,EACZ,MAA+C,KAC7B;IAClB,OAAO,EAAE,GAAG,8BAA8B,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE;AAClE;AAEO,MAAM,sCAAsC,GAAG,CACpD,IAAY,EACZ,IAAgB,EAChB,IAAY,EACZ,MAA+C,KAC7B;AAClB,IAAA,OAAO,EAAE,GAAG,kCAAkC,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE;AAC5E;AAEa,MAAA,wBAAwB,GAAG,CAAC,IAAY,KAAoB;IACvE,OAAO,EAAE,GAAG,eAAe,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE;AACzD;MAEa,4BAA4B,GAAG,CAAC,IAAY,EAAE,IAAgB,KAAoB;IAC7F,OAAO,EAAE,GAAG,wBAAwB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE;AACpD;AAEa,MAAA,4BAA4B,GAAG,CAC1C,IAAY,EACZ,IAAY,EACZ,MAA+C,KAC7B;IAClB,OAAO,EAAE,GAAG,wBAAwB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE;AAC5D;AAEO,MAAM,gCAAgC,GAAG,CAC9C,IAAY,EACZ,IAAgB,EAChB,IAAY,EACZ,MAA+C,KAC7B;AAClB,IAAA,OAAO,EAAE,GAAG,4BAA4B,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE;AACtE;AAEa,MAAA,yBAAyB,GAAG,CAAC,IAAY,KAAoB;IACxE,OAAO,EAAE,GAAG,gBAAgB,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE;AAC1D;MAEa,6BAA6B,GAAG,CAAC,IAAY,EAAE,IAAgB,KAAoB;IAC9F,OAAO,EAAE,GAAG,yBAAyB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE;AACrD;AAEa,MAAA,6BAA6B,GAAG,CAC3C,IAAY,EACZ,IAAY,EACZ,MAA+C,KAC7B;IAClB,OAAO,EAAE,GAAG,yBAAyB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE;AAC7D;AAEO,MAAM,iCAAiC,GAAG,CAC/C,IAAY,EACZ,IAAgB,EAChB,IAAY,EACZ,MAA+C,KAC7B;AAClB,IAAA,OAAO,EAAE,GAAG,6BAA6B,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE;AACvE;;AC1aA;;;;;;;;;AASG;MACU,gBAAgB,CAAA;AAW3B,IAAA,WAAA,GAAA;AAEA,IAAA,QAAQ;+GAbG,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,gBAAgB,EAnBjB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;;AAMT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,u1FAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAPS,OAAO,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAoBN,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAvB5B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,aAAa,cACX,IAAI,EAAA,OAAA,EACP,CAAC,OAAO,CAAC,EACR,QAAA,EAAA;;;;;;AAMT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,u1FAAA,CAAA,EAAA;wDAsBD,KAAK,EAAA,CAAA;sBADJ;;;AC/BH;;;;;;;;;AASG;MAQU,gBAAgB,CAAA;AAU3B,IAAA,WAAA,GAAA;AAEA,IAAA,QAAQ;+GAZG,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAHjB,CAA4E,0EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,oqGAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAD5E,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAIX,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAP5B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,aAAa,cACX,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,CAAC,YACb,CAA4E,0EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,oqGAAA,CAAA,EAAA;wDAYtF,KAAK,EAAA,CAAA;sBADJ;;;ACRH;;;;;;;;;;AAUG;MACU,aAAa,CAAA;AAgBxB,IAAA,WAAA,CAAoB,eAAgC,EAAA;QAAhC,IAAe,CAAA,eAAA,GAAf,eAAe;AAFnC,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,YAAY,EAAU;;AAIpC,IAAA,QAAQ;IAER,WAAW,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;;AAGhE,IAAA,cAAc,CAAC,KAAiB,EAAA;AAC9B,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE;YACzC,KAAK,CAAC,cAAc,EAAE;YACtB,IAAI,CAAC,eAAe,CAAC,uBAAuB,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;;QAE9D,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;;+GA7B1B,aAAa,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAF,eAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAb,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,aAAa,EAvBd,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;;;;;AAST,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,gkFAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAVS,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAwBX,aAAa,EAAA,UAAA,EAAA,CAAA;kBA3BzB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,UAAU,cACR,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,CAAC,EACb,QAAA,EAAA;;;;;;;;;AAST,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,gkFAAA,CAAA,EAAA;iFAyBQ,KAAK,EAAA,CAAA;sBAAb;gBAGD,OAAO,EAAA,CAAA;sBADN;;;AChCH;;;;;;;;;AASG;MACU,aAAa,CAAA;IAWxB,WAAY,CAAA,OAAoB;AAEhC,IAAA,QAAQ;+GAbG,aAAa,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAD,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAb,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,aAAa,EAbd,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,oGAAA,CAAsG,EADtG,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,gwGAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,6HAAE,OAAO,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,KAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,KAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAcpB,aAAa,EAAA,UAAA,EAAA,CAAA;kBAjBzB,SAAS;+BACE,UAAU,EAAA,UAAA,EACR,IAAI,EACP,OAAA,EAAA,CAAC,YAAY,EAAE,OAAO,CAAC,EAAA,QAAA,EACtB,CAAsG,oGAAA,CAAA,EAAA,MAAA,EAAA,CAAA,gwGAAA,CAAA,EAAA;6EAsBhH,KAAK,EAAA,CAAA;sBADJ;;;ACUH;;;;;;;;;AASG;MACU,cAAc,CAAA;AAMzB,IAAA,WAAA,GAAA;QAFA,IAAS,CAAA,SAAA,GAAY,IAAI;;AAIzB,IAAA,QAAQ;IAER,eAAe,GAAA;QACb,WAAW,CAAC,MAAK;AACf,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI;SACtB,EAAE,GAAG,CAAC;;+GAbE,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAd,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,cAAc,EA3Cf,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8BT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,26FAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EA/BS,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FA4CX,cAAc,EAAA,UAAA,EAAA,CAAA;kBA/C1B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,WAAW,cACT,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,CAAC,EACb,QAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8BT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,26FAAA,CAAA,EAAA;wDAeD,KAAK,EAAA,CAAA;sBADJ;;;AC/BH;;;;;;;;;AASG;MACU,oBAAoB,CAAA;AAc/B,IAAA,WAAA,GAAA;AAEA,IAAA,QAAQ;+GAhBG,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,EAtBrB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;;;;;GAST,EAVS,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,u8EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,6HAAE,cAAc,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,OAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAuB3B,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBA1BhC,SAAS;+BACE,kBAAkB,EAAA,UAAA,EAChB,IAAI,EACP,OAAA,EAAA,CAAC,YAAY,EAAE,cAAc,CAAC,EAC7B,QAAA,EAAA;;;;;;;;;AAST,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,u8EAAA,CAAA,EAAA;wDAyBD,KAAK,EAAA,CAAA;sBADJ;;;AC3BH;;;;;;;;;AASG;MACU,aAAa,CAAA;AAYxB,IAAA,WAAA,GAAA;AAEA,IAAA,QAAQ;+GAdG,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAb,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,aAAa,EAjBd,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;AAIT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,gwGAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EALS,OAAO,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAkBN,aAAa,EAAA,UAAA,EAAA,CAAA;kBArBzB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,UAAU,cACR,IAAI,EAAA,OAAA,EACP,CAAC,OAAO,CAAC,EACR,QAAA,EAAA;;;;AAIT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,gwGAAA,CAAA,EAAA;wDAuBD,KAAK,EAAA,CAAA;sBADJ;;;ACbH;;;;;;;;;AASG;MACU,cAAc,CAAA;AAazB,IAAA,WAAA,GAAA;AAEA,IAAA,QAAQ;+GAfG,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAd,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,cAAc,EAtBf,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;;;;;GAST,EAVS,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,k9FAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,iOAAQ,OAAO,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAuB1B,cAAc,EAAA,UAAA,EAAA,CAAA;kBA1B1B,SAAS;+BACE,WAAW,EAAA,UAAA,EACT,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,IAAI,EAAE,OAAO,CAAC,EAC5B,QAAA,EAAA;;;;;;;;;AAST,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,k9FAAA,CAAA,EAAA;wDAwBD,KAAK,EAAA,CAAA;sBADJ;;;ACrBH;;;;;;;;;AASG;MACU,iBAAiB,CAAA;AAW5B,IAAA,WAAA,GAAA;AAEA,IAAA,QAAQ;+GAbG,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iBAAiB,EApBlB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;;;AAOT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,y6EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EARS,YAAY,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,aAAa,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,aAAa,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAqBzC,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAxB7B,SAAS;+BACE,eAAe,EAAA,UAAA,EACb,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,aAAa,EAAE,aAAa,CAAC,EAC3C,QAAA,EAAA;;;;;;;AAOT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,y6EAAA,CAAA,EAAA;wDAsBD,KAAK,EAAA,CAAA;sBADJ;;;ACjBH;;;;;;;;;;AAUG;MACU,oBAAoB,CAAA;AAiB/B,IAAA,WAAA,GAAA;AANA;;AAEG;AAEH,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,YAAY,EAAU;;AAIpC,IAAA,QAAQ;AAER,IAAA,YAAY,CAAC,KAAc,EAAA;AACzB,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;;AAG1B,IAAA,IAAI,QAAQ,GAAA;AACV,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,KAAK,QAAQ,EAAE;AACvE,YAAA,OAAO,OAAO;;AAGhB,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ;;+GA9BjB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,EAvBrB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;;;;;GAST,EAVS,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,gzFAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,+UAAE,eAAe,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAwB5B,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBA3BhC,SAAS;+BACE,kBAAkB,EAAA,UAAA,EAChB,IAAI,EACP,OAAA,EAAA,CAAC,YAAY,EAAE,eAAe,CAAC,EAC9B,QAAA,EAAA;;;;;;;;;AAST,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,gzFAAA,CAAA,EAAA;wDAuBD,KAAK,EAAA,CAAA;sBADJ;gBAOD,OAAO,EAAA,CAAA;sBADN;;;IC5CS;AAAZ,CAAA,UAAY,QAAQ,EAAA;AAClB,IAAA,QAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,QAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACnB,IAAA,QAAA,CAAA,UAAA,CAAA,GAAA,UAAqB;AACrB,IAAA,QAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACrB,CAAC,EALW,QAAQ,KAAR,QAAQ,GAKnB,EAAA,CAAA,CAAA;IAOW;AAAZ,CAAA,UAAY,WAAW,EAAA;AACrB,IAAA,WAAA,CAAA,WAAA,CAAA,YAAA,CAAA,GAAA,CAAA,CAAA,GAAA,YAAU;AACV,IAAA,WAAA,CAAA,WAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,GAAA,aAAW;AACX,IAAA,WAAA,CAAA,WAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAO;AACP,IAAA,WAAA,CAAA,WAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAM;AACN,IAAA,WAAA,CAAA,WAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,GAAA,aAAW;AACb,CAAC,EANW,WAAW,KAAX,WAAW,GAMtB,EAAA,CAAA,CAAA;;ACoLD;;;;;;;;;;AAUG;MACU,aAAa,CAAA;AAyBxB,IAAA,WAAA,GAAA;AAVA;;AAEG;AAEH,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,YAAY,EAAkB;QAE5C,IAAK,CAAA,KAAA,GAAG,QAAQ;QAChB,IAAW,CAAA,WAAA,GAAG,iBAAiB;QAC/B,IAAQ,CAAA,QAAA,GAAG,WAAW;;AAItB,IAAA,QAAQ;IAER,YAAY,CAAC,OAAoB,EAAE,KAAc,EAAA;QAC/C,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;;+GA9B5B,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAb,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,aAAa,EA5Kd,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8JT,EA7KC,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,+0FAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,EACZ,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,eAAe,EACf,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,eAAe,EACf,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,cAAc,EACd,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,aAAa,EACb,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,OAAO,EACP,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,MAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,cAAc,+EACd,aAAa,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACb,YAAY,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACZ,eAAe,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACf,WAAW,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,EAAA,UAAA,EAAA,eAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACX,UAAU,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACV,SAAS,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACT,OAAO,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,KAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,KAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FA8KE,aAAa,EAAA,UAAA,EAAA,CAAA;kBA/LzB,SAAS;+BACE,UAAU,EAAA,UAAA,EACR,IAAI,EACP,OAAA,EAAA;wBACP,YAAY;wBACZ,eAAe;wBACf,eAAe;wBACf,cAAc;wBACd,aAAa;wBACb,OAAO;wBACP,cAAc;wBACd,aAAa;wBACb,YAAY;wBACZ,eAAe;wBACf,WAAW;wBACX,UAAU;wBACV,SAAS;wBACT,OAAO;qBACR,EACS,QAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8JT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,+0FAAA,CAAA,EAAA;wDA2BD,KAAK,EAAA,CAAA;sBADJ;gBAOD,OAAO,EAAA,CAAA;sBADN;;;AC1NH;;;;;;;AAOG;MACU,mBAAmB,CAAA;AAC9B,IAAA,WAAA,GAAA;AAEA,IAAA,QAAQ;+GAHG,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,EAXpB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,kEAAA,CAAoE,EADpE,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,+BAAE,WAAW,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,EAAA,UAAA,EAAA,eAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAYxB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAf/B,SAAS;+BACE,iBAAiB,EAAA,UAAA,EACf,IAAI,EACP,OAAA,EAAA,CAAC,YAAY,EAAE,WAAW,CAAC,EAAA,QAAA,EAC1B,CAAoE,kEAAA,CAAA,EAAA;;;ACOhF;;;;;;;;;AASG;MACU,qBAAqB,CAAA;AAShC,IAAA,WAAA,GAAA;AAEA,IAAA,QAAQ;+GAXG,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,EAftB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;AAET,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAHS,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,4EAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAe,WAAW,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,aAAA,EAAA,OAAA,EAAA,MAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,EAAA,WAAA,EAAA,MAAA,EAAA,YAAA,EAAA,WAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,WAAA,EAAA,MAAA,EAAA,MAAA,EAAA,aAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,OAAA,EAAA,YAAA,EAAA,OAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAgB1D,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAnBjC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mBAAmB,EACjB,UAAA,EAAA,IAAI,EACP,OAAA,EAAA,CAAC,YAAY,EAAE,mBAAmB,EAAE,WAAW,EAAE,WAAW,CAAC,EAC5D,QAAA,EAAA;;AAET,EAAA,CAAA,EAAA;wDAoBQ,KAAK,EAAA,CAAA;sBAAb;;;ACbH;;;;;;;;;AASG;MACU,sBAAsB,CAAA;AAYjC,IAAA,WAAA,GAAA;AAEA,IAAA,QAAQ;+GAdG,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sBAAsB,EApBvB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;;;AAOT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,m+FAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EARS,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,UAAU,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,OAAO,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAqBhC,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAxBlC,SAAS;+BACE,oBAAoB,EAAA,UAAA,EAClB,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,UAAU,EAAE,OAAO,CAAC,EAClC,QAAA,EAAA;;;;;;;AAOT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,m+FAAA,CAAA,EAAA;wDAuBD,KAAK,EAAA,CAAA;sBADJ;;;ACDH;;;;;;;;;AASG;MACU,kBAAkB,CAAA;AAS7B,IAAA,WAAA,GAAA;AAEA,IAAA,QAAQ;+GAXG,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kBAAkB,EArCnB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBT,EAzBS,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,giFAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,8BAAE,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,WAAW,EAAE,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,WAAA,EAAA,OAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,YAAA,EAAA,eAAA,EAAA,QAAA,EAAA,KAAA,EAAA,KAAA,EAAA,cAAA,EAAA,MAAA,EAAA,aAAA,EAAA,UAAA,EAAA,MAAA,EAAA,aAAA,EAAA,cAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,6BAAA,EAAA,OAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,iBAAiB,mHAAE,QAAQ,EAAA,QAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAsC1E,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAzC9B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,EACd,UAAA,EAAA,IAAI,EACP,OAAA,EAAA,CAAC,YAAY,EAAE,mBAAmB,EAAE,WAAW,EAAE,iBAAiB,EAAE,QAAQ,CAAC,EAC5E,QAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;AAwBT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,giFAAA,CAAA,EAAA;wDAoBQ,KAAK,EAAA,CAAA;sBAAb;;;ACzCH;;;;;;;;;AASG;MACU,mBAAmB,CAAA;AAS9B,IAAA,WAAA,GAAA;AAEA,IAAA,QAAQ;+GAXG,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,uGAbpB,CAAwG,sGAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EADxG,YAAY,EAAE,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,mBAAmB,8TAAE,QAAQ,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,aAAA,EAAA,WAAA,EAAA,YAAA,EAAA,aAAA,EAAA,OAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,EAAA,WAAA,EAAA,MAAA,EAAA,YAAA,EAAA,WAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,WAAA,EAAA,KAAA,EAAA,WAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,SAAA,EAAA,aAAA,EAAA,UAAA,EAAA,UAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAc1C,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAjB/B,SAAS;+BACE,iBAAiB,EAAA,UAAA,EACf,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,mBAAmB,EAAE,QAAQ,CAAC,EAAA,QAAA,EAC5C,CAAwG,sGAAA,CAAA,EAAA;wDAoBzG,KAAK,EAAA,CAAA;sBAAb;;;AC9BH;;;;;;;;;;;AAWG;AACG,SAAU,YAAY,CAAC,KAAa,EAAA;;AAExC,IAAA,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;QAC1B,OAAO,CAAA,IAAA,EAAO,KAAK,CAAA,CAAA,CAAG;;;AAIxB,IAAA,MAAM,WAAW,GAAG;QAClB,SAAS;QACT,WAAW;QACX,UAAU;QACV,SAAS;QACT,SAAS;QACT,QAAQ;QACR,OAAO;QACP,QAAQ;QACR,MAAM;KACP;;AAGD,IAAA,IAAI,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;QAC/B,OAAO,CAAA,gBAAA,EAAmB,KAAK,CAAA,CAAA,CAAG;;;AAIpC,IAAA,OAAO,KAAK;AACd;;AC6BA;;;;;;;;;AASG;MACU,uBAAuB,CAAA;AAxEpC,IAAA,WAAA,GAAA;QAkFE,IAAQ,CAAA,QAAA,GAAG,KAAK;QAChB,IAAY,CAAA,YAAA,GAAG,SAAS;AAkBzB;AAhBC,IAAA,IAAI,aAAa,GAAA;QACf,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,GAAG,CAAC;AAC1C,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO;;AAGrH,IAAA,IAAI,WAAW,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,GAAG,CAAC;;IAG/D,YAAY,GAAA;AACV,QAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,QAAQ;;IAGhC,KAAK,GAAA;AACH,QAAA,OAAO,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,YAAY,CAAC;;+GA3BjD,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,uBAAuB,EApExB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;;;;;;;;;AAaT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,0nBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAdS,OAAO,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAqEN,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAxEnC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,qBAAqB,cACnB,IAAI,EAAA,OAAA,EACP,CAAC,OAAO,CAAC,EACR,QAAA,EAAA;;;;;;;;;;;;;AAaT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,0nBAAA,CAAA,EAAA;8BAgEQ,KAAK,EAAA,CAAA;sBAAb;;;ACvDH;;;;;;;;;AASG;MACU,kBAAkB,CAAA;AAgB7B,IAAA,WAAA,GAAA;AANA,QAAA,IAAA,CAAA,cAAc,GAAmB;YAC/B,GAAG,8BAA8B,CAAC,eAAe,CAAC;AAClD,YAAA,KAAK,EAAE,OAAO;SACf;;AAKD,IAAA,QAAQ;AAER,IAAA,cAAc,CAAC,KAAK,EAAA;QAClB,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACzC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC;;IAGhD,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI;QACxB,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,GAAG,EAAE;;+GA3B9B,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kBAAkB,EA9BnB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,WAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;;;;;;;;;;;;;AAiBT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,+hFAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAlBS,OAAO,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,KAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,aAAa,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,eAAe,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FA+BtC,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAlC9B,SAAS;+BACE,gBAAgB,EAAA,UAAA,EACd,IAAI,EAAA,OAAA,EACP,CAAC,OAAO,EAAE,aAAa,EAAE,eAAe,CAAC,EACxC,QAAA,EAAA;;;;;;;;;;;;;;;;;AAiBT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,+hFAAA,CAAA,EAAA;wDAmBQ,KAAK,EAAA,CAAA;sBAAb;gBAEuB,SAAS,EAAA,CAAA;sBAAhC,SAAS;uBAAC,WAAW;;;ACzBxB;;;;;;;;;AASG;MACU,aAAa,CAAA;AASxB,IAAA,WAAA,GAAA;AAEA,IAAA,QAAQ;AAER,IAAA,IAAI,MAAM,GAAA;AACR,QAAA,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;QAC3C,MAAM,MAAM,GAAG,EAAE;AACjB,QAAA,IAAI,CAAC,GAAG,CAAC,CAAC,CAAS,KAAI;YACrB,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;AAClC,gBAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;;AAErC,SAAC,CAAC;AACF,QAAA,OAAO,MAAM;;+GArBJ,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAb,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,aAAa,EAzBd,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;;;;;;;;GAYT,EAbS,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,49EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,gQAAE,aAAa,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FA0B1B,aAAa,EAAA,UAAA,EAAA,CAAA;kBA7BzB,SAAS;+BACE,UAAU,EAAA,UAAA,EACR,IAAI,EACP,OAAA,EAAA,CAAC,YAAY,EAAE,aAAa,CAAC,EAC5B,QAAA,EAAA;;;;;;;;;;;;AAYT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,49EAAA,CAAA,EAAA;wDAoBQ,KAAK,EAAA,CAAA;sBAAb;;;AC7BH;;;;;;;;;AASG;MACU,kBAAkB,CAAA;AAQ7B,IAAA,WAAA,GAAA;AAEA,IAAA,QAAQ;+GAVG,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kBAAkB,EAbnB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,gFAAA,CAAkF,EADlF,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,mBAAmB,8TAAE,WAAW,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,WAAA,EAAA,OAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,YAAA,EAAA,eAAA,EAAA,QAAA,EAAA,KAAA,EAAA,KAAA,EAAA,cAAA,EAAA,MAAA,EAAA,aAAA,EAAA,UAAA,EAAA,MAAA,EAAA,aAAA,EAAA,cAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,6BAAA,EAAA,OAAA,EAAA,YAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAc/B,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAjB9B,SAAS;+BACE,gBAAgB,EAAA,UAAA,EACd,IAAI,EACP,OAAA,EAAA,CAAC,mBAAmB,EAAE,WAAW,CAAC,EAAA,QAAA,EACjC,CAAkF,gFAAA,CAAA,EAAA;wDAmBnF,KAAK,EAAA,CAAA;sBAAb;;;ACPH;;;;;;;;;;AAUG;MACU,aAAa,CAAA;AAmBxB,IAAA,WAAA,GAAA;AAJA,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,YAAY,EAAU;AAEpC,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAGjC,QAAA,QAAQ,CAAC,EAAE,qBAAqB,EAAE,CAAC;;AAGrC,IAAA,QAAQ;IAER,cAAc,GAAA;QACZ,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;AAEnC,QAAA,QAAQ,IAAI,CAAC,KAAK,CAAC,IAAI;AACrB,YAAA,KAAK,UAAU;gBACb,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;gBAC3C;AACF,YAAA,KAAK,QAAQ;gBACX,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;gBAC3C;AACF,YAAA,KAAK,KAAK;gBACR,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;gBAC1C;;;+GArCK,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAb,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,aAAa,EArBd,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;;;AAOT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,2+EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EARS,SAAS,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,OAAO,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,KAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,OAAO,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAsB1B,aAAa,EAAA,UAAA,EAAA,CAAA;kBAzBzB,SAAS;+BACE,UAAU,EAAA,UAAA,EACR,IAAI,EAAA,OAAA,EACP,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,EAC5B,QAAA,EAAA;;;;;;;AAOT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,2+EAAA,CAAA,EAAA;wDA0BD,KAAK,EAAA,CAAA;sBADJ;gBAID,OAAO,EAAA,CAAA;sBADN;;;ACtBH;;;;;;;;;AASG;MACU,kBAAkB,CAAA;AAW7B,IAAA,WAAA,GAAA;AAEA,IAAA,QAAQ;+GAbG,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kBAAkB,EAxBnB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;;;;;;;AAWT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,w4EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAZS,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,cAAc,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,aAAa,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAyB1C,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBA5B9B,SAAS;+BACE,gBAAgB,EAAA,UAAA,EACd,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,cAAc,EAAE,aAAa,CAAC,EAC5C,QAAA,EAAA;;;;;;;;;;;AAWT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,w4EAAA,CAAA,EAAA;wDAsBD,KAAK,EAAA,CAAA;sBADJ;;;ACTH;;;;;;;;;AASG;MACU,iBAAiB,CAAA;AAe5B,IAAA,WAAA,GAAA;AAEA,IAAA,QAAQ;+GAjBG,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iBAAiB,EAjClB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;;;;;;;;;;;;;;;;AAoBT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,g4EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EArBS,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,YAAY,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,aAAa,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAkCxC,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBArC7B,SAAS;+BACE,eAAe,EAAA,UAAA,EACb,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,YAAY,EAAE,aAAa,CAAC,EAC1C,QAAA,EAAA;;;;;;;;;;;;;;;;;;;;AAoBT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,g4EAAA,CAAA,EAAA;wDA0BD,KAAK,EAAA,CAAA;sBADJ;;;AC3CH;;;;;;;;;AASG;MACU,oBAAoB,CAAA;AAS/B,IAAA,WAAA,GAAA;AAEA,IAAA,QAAQ;+GAXG,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,EAbrB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,uGAAA,CAAyG,EADzG,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,mBAAmB,8TAAE,QAAQ,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,aAAA,EAAA,WAAA,EAAA,YAAA,EAAA,aAAA,EAAA,OAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,EAAA,WAAA,EAAA,MAAA,EAAA,YAAA,EAAA,WAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,WAAA,EAAA,KAAA,EAAA,WAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,SAAA,EAAA,aAAA,EAAA,UAAA,EAAA,UAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAc5B,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAjBhC,SAAS;+BACE,kBAAkB,EAAA,UAAA,EAChB,IAAI,EACP,OAAA,EAAA,CAAC,mBAAmB,EAAE,QAAQ,CAAC,EAAA,QAAA,EAC9B,CAAyG,uGAAA,CAAA,EAAA;wDAoB1G,KAAK,EAAA,CAAA;sBAAb;;;ACJH;;;;;;;;;AASG;MACU,sBAAsB,CAAA;AAWjC,IAAA,WAAA,CAAY,IAAiB,EAAA;QAF7B,IAAY,CAAA,YAAA,GAAG,IAAI;;AAInB,IAAA,QAAQ;+GAbG,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAL,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sBAAsB,EAzBvB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;;;;;;;;AAYT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,8/EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAbS,mBAAmB,EAAE,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAQ,EAAE,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,aAAA,EAAA,WAAA,EAAA,YAAA,EAAA,aAAA,EAAA,OAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,EAAA,WAAA,EAAA,MAAA,EAAA,YAAA,EAAA,WAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,WAAA,EAAA,KAAA,EAAA,WAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,SAAA,EAAA,aAAA,EAAA,UAAA,EAAA,UAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,SAAS,oPAAE,OAAO,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,KAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,KAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FA0BhD,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBA7BlC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oBAAoB,EAClB,UAAA,EAAA,IAAI,EACP,OAAA,EAAA,CAAC,mBAAmB,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,CAAC,EAClD,QAAA,EAAA;;;;;;;;;;;;AAYT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,8/EAAA,CAAA,EAAA;6EAoBQ,KAAK,EAAA,CAAA;sBAAb;;;AC3BH;;;;;;;;;AASG;MACU,iBAAiB,CAAA;AAsB5B,IAAA,WAAA,GAAA;QAZA,IAAU,CAAA,UAAA,GAAG,CAAC;AACd,QAAA,IAAA,CAAA,cAAc,GAAqB;AACjC,YAAA,WAAW,EAAE;AACX,gBAAA,WAAW,EAAE,MAAM;AACnB,gBAAA,KAAK,EAAE,MAAM;AACb,gBAAA,MAAM,EAAE,MAAM;AACf,aAAA;AACD,YAAA,UAAU,EAAE,eAAe;YAC3B,MAAM,EAAE,IAAI,CAAC,UAAU;AACvB,YAAA,gBAAgB,EAAE,IAAI;SACvB;;AAID,IAAA,QAAQ;IAER,KAAK,GAAA;AACH,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,YAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;;;+GA5BlB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EACjB,mBAAmB,EAlBpB,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;AAIT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,+jFAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EALS,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAkBf,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBArB7B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,eAAe,cACb,IAAI,EAAA,OAAA,EACP,CAAC,gBAAgB,CAAC,EACjB,QAAA,EAAA;;;;AAIT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,+jFAAA,CAAA,EAAA;wDAckD,OAAO,EAAA,CAAA;sBAAzD,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,mBAAmB,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;gBAOxC,KAAK,EAAA,CAAA;sBAAb;;;ACWH;;;;;;;;;AASG;MACU,mBAAmB,CAAA;AAI9B,IAAA,WAAA,GAAA;AAEA,IAAA,QAAQ;+GANG,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,EA5CpB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+BT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,65FAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAhCS,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,cAAc,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,gBAAgB,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FA6C7C,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAhD/B,SAAS;+BACE,iBAAiB,EAAA,UAAA,EACf,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,cAAc,EAAE,gBAAgB,CAAC,EAC/C,QAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+BT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,65FAAA,CAAA,EAAA;wDAeD,KAAK,EAAA,CAAA;sBADJ;;;ACjDH;AAsCA;;;;;;;;;AASG;MACU,uBAAuB,CAAA;AAgBlC,IAAA,WAAA,GAAA;QAHA,IAAY,CAAA,YAAA,GAAG,CAAC;QAChB,IAAQ,CAAA,QAAA,GAAG,KAAK;;IAIhB,QAAQ,GAAA;QACN,WAAW,CAAC,MAAK;AACf,YAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,QAAQ;SAC/B,EAAE,IAAI,CAAC;QAER,WAAW,CAAC,MAAK;YACf,IAAI,CAAC,cAAc,EAAE;SACtB,EAAE,IAAI,CAAC;;AAGV,IAAA,IAAI,OAAO,GAAA;QACT,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC;;IAG/C,cAAc,GAAA;AACZ,QAAA,IAAI,CAAC,YAAY,GAAG,CAAC,IAAI,CAAC,YAAY,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM;;+GAjC/D,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,uBAAuB,EA3CxB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8BT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,msFAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EA/BS,mBAAmB,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,oBAAoB,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,aAAa,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FA4CvD,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBA/CnC,SAAS;+BACE,qBAAqB,EAAA,UAAA,EACnB,IAAI,EAAA,OAAA,EACP,CAAC,mBAAmB,EAAE,oBAAoB,EAAE,aAAa,CAAC,EACzD,QAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8BT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,msFAAA,CAAA,EAAA;wDAwBD,KAAK,EAAA,CAAA;sBADJ;;;ACfH;;;;;;;;;;AAUG;MACU,iBAAiB,CAAA;AAmB5B,IAAA,WAAA,GAAA;AAFA,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,YAAY,EAAU;;AAIpC,IAAA,QAAQ;AAER,IAAA,YAAY,CAAC,KAAc,EAAA;AACzB,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;;+GAxBf,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iBAAiB,EAhDlB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCT,EAnCS,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,uzFAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,4JAAE,YAAY,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,oBAAoB,EAAE,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,aAAa,wEAAE,aAAa,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAiD7E,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBApD7B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,cAAc,EACZ,UAAA,EAAA,IAAI,EACP,OAAA,EAAA,CAAC,YAAY,EAAE,YAAY,EAAE,oBAAoB,EAAE,aAAa,EAAE,aAAa,CAAC,EAC/E,QAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkCT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,uzFAAA,CAAA,EAAA;wDA4BD,KAAK,EAAA,CAAA;sBADJ;gBAID,OAAO,EAAA,CAAA;sBADN;;;ACxDH;;;;;;;;;AASG;MACU,mBAAmB,CAAA;AAS9B,IAAA,WAAA,GAAA;AAEA,IAAA,QAAQ;+GAXG,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,EApBpB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;;;AAOT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EARS,KAAK,EAAE,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,mBAAmB,EAAE,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,aAAa,8GAAE,QAAQ,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,OAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAqBlD,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAxB/B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,EACf,UAAA,EAAA,IAAI,EACP,OAAA,EAAA,CAAC,KAAK,EAAE,mBAAmB,EAAE,aAAa,EAAE,QAAQ,CAAC,EACpD,QAAA,EAAA;;;;;;;AAOT,EAAA,CAAA,EAAA;wDAoBQ,KAAK,EAAA,CAAA;sBAAb;;;ACrCH;;;;;;;;;AASG;MACU,mBAAmB,GAAG,CAAC,IAAY,KAC9C,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,kBAAkB,EAAE,EAAE;;ACYtD;;;;;;;;;;;;AAYG;MACU,kBAAkB,CAAA;AAqB7B,IAAA,WAAA,GAAA;AAfA;;AAEG;AACO,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAU;AAElD;;AAEG;AACO,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAAQ;AAE/C;;AAEG;AACO,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,YAAY,EAAQ;;AAI9C,IAAA,QAAQ,CAAC,MAAW,EAAA;AAClB,QAAA,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK;AACtC,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC;;IAGnC,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;;IAGxB,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;;+GAjCZ,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kBAAkB,EA7BnB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,UAAA,EAAA,YAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;;;;;;;;;AAaT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,8+EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAdS,YAAY,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,cAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,EAAA,WAAA,EAAA,MAAA,EAAA,MAAA,EAAA,aAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FA8BX,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAjC9B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,eAAe,cACb,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,CAAC,EACb,QAAA,EAAA;;;;;;;;;;;;;AAaT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,8+EAAA,CAAA,EAAA;wDAoBQ,QAAQ,EAAA,CAAA;sBAAhB;gBAKS,WAAW,EAAA,CAAA;sBAApB;gBAKS,UAAU,EAAA,CAAA;sBAAnB;gBAKS,SAAS,EAAA,CAAA;sBAAlB;;;ACcH;;;;;;;;;AASG;MACU,qBAAqB,CAAA;AA5DlC,IAAA,WAAA,GAAA;QA+DW,IAAK,CAAA,KAAA,GAAW,aAAa;QAC7B,IAAa,CAAA,aAAA,GAAW,MAAM;QAC9B,IAAa,CAAA,aAAA,GAAW,IAAI;QAC5B,IAAQ,CAAA,QAAA,GAAY,KAAK;QACzB,IAAW,CAAA,WAAA,GAAW,uBAAuB;AAWtD,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC;AAClB,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,iBAAiB,CAAC;QAElD,IAAU,CAAA,UAAA,GAAW,EAAE;QACvB,IAAa,CAAA,aAAA,GAAkB,EAAE;QACjC,IAAa,CAAA,aAAA,GAAkB,EAAE;QACjC,IAAY,CAAA,YAAA,GAAW,EAAE;QAEjB,IAAe,CAAA,eAAA,GAAU,EAAE;QAC3B,IAAmB,CAAA,mBAAA,GAAG,KAAK;AAmQpC;IAhQC,QAAQ,GAAA;QACN,IAAI,CAAC,eAAe,EAAE;QACtB,IAAI,CAAC,iCAAiC,EAAE;QACxC,IAAI,CAAC,kBAAkB,EAAE;QACzB,IAAI,CAAC,uBAAuB,EAAE;;IAGhC,WAAW,GAAA;;AAET,QAAA,IAAI,IAAI,CAAC,wBAAwB,EAAE;AACjC,YAAA,IAAI,CAAC,wBAAwB,CAAC,WAAW,EAAE;;;AAI/C,IAAA,WAAW,CAAC,OAAsB,EAAA;;AAEhC,QAAA,IAAI,IAAI,CAAC,mBAAmB,EAAE;YAC5B;;;AAIF,QAAA,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;AACpB,YAAA,IAAI;AACF,gBAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI;;AAG/B,gBAAA,IAAI,IAAI,CAAC,wBAAwB,EAAE;AACjC,oBAAA,IAAI,CAAC,wBAAwB,CAAC,WAAW,EAAE;;AAG7C,gBAAA,IAAI,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE;;AAEvB,oBAAA,MAAM,cAAc,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;oBAEtF,IAAI,cAAc,EAAE;wBAClB,IAAI,CAAC,eAAe,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;wBAC9C,IAAI,CAAC,eAAe,EAAE;;;;gBAK1B,IAAI,CAAC,iCAAiC,EAAE;gBACxC,IAAI,CAAC,kBAAkB,EAAE;;gBAGzB,IAAI,CAAC,uBAAuB,EAAE;;oBACtB;AACR,gBAAA,IAAI,CAAC,mBAAmB,GAAG,KAAK;;;;IAKtC,gBAAgB,GAAA;AACd,QAAA,IAAI,IAAI,CAAC,mBAAmB,EAAE;YAC5B;;AAGF,QAAA,IAAI;AACF,YAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI;YAC/B,IAAI,CAAC,eAAe,EAAE;YACtB,IAAI,CAAC,iCAAiC,EAAE;YACxC,IAAI,CAAC,kBAAkB,EAAE;YACzB,IAAI,CAAC,uBAAuB,EAAE;;gBACtB;AACR,YAAA,IAAI,CAAC,mBAAmB,GAAG,KAAK;;;;IAK5B,uBAAuB,GAAA;AAC7B,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO;YAAE;AAE1B,QAAA,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,KAAK,IAAG;YAChF,IAAI,IAAI,CAAC,mBAAmB;gBAAE;AAE9B,YAAA,IAAI;AACF,gBAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI;gBAC/B,IAAI,CAAC,iCAAiC,EAAE;gBACxC,IAAI,CAAC,kBAAkB,EAAE;;oBACjB;AACR,gBAAA,IAAI,CAAC,mBAAmB,GAAG,KAAK;;AAEpC,SAAC,CAAC;;;IAII,eAAe,CAAC,WAAkB,EAAE,UAAiB,EAAA;;QAE3D,IAAI,WAAW,KAAK,UAAU;AAAE,YAAA,OAAO,IAAI;AAC3C,QAAA,IAAI,CAAC,WAAW,IAAI,CAAC,UAAU;YAAE,OAAO,WAAW,KAAK,UAAU;AAClE,QAAA,IAAI,WAAW,CAAC,MAAM,KAAK,UAAU,CAAC,MAAM;AAAE,YAAA,OAAO,KAAK;;AAE1D,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC3C,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE;AAC5E,gBAAA,OAAO,KAAK;;;AAGhB,QAAA,OAAO,IAAI;;IAGL,eAAe,GAAA;;QAErB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,EAAE,OAAO,IAAI,EAAE;;IAGxC,iCAAiC,GAAA;AACvC,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE;AACxB,YAAA,IAAI,CAAC,aAAa,GAAG,EAAE;YACvB;;QAEF,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK;QAC7C,IAAI,YAAY,KAAK,IAAI,IAAI,YAAY,KAAK,SAAS,EAAE;AACvD,YAAA,IAAI,CAAC,aAAa,GAAG,EAAE;YACvB;;;AAGF,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;AACvD,YAAA,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;YAClF,MAAM,cAAc,GAAG,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC;AAC5C,YAAA,IAAI,CAAC,aAAa,GAAG,cAAc,GAAG,CAAC,cAAc,CAAC,GAAG,EAAE;;aACtD;AACL,YAAA,IAAI,CAAC,aAAa,GAAG,EAAE;;;AAI3B,IAAA,QAAQ,CAAC,KAAK,EAAA;;QAEZ,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;YACjC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,EAAE,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE;AACvE,YAAA,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE;YACnC;;;AAIF,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;AAC3D,YAAA,IAAI,CAAC,aAAa,GAAG,EAAE;AACvB,YAAA,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE;YACnC;;;QAIF,MAAM,MAAM,GAAG,mBAAmB,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;AACvD,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,IAAG;;AAEvD,YAAA,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,aAAa;AACtC,kBAAE,mBAAmB,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,WAAW,EAAE;kBACrE,EAAE;AACN,YAAA,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,aAAa;AACtC,kBAAE,mBAAmB,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,WAAW,EAAE;kBACrE,EAAE;AACN,YAAA,OAAO,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;AACzD,SAAC,CAAC;AACF,QAAA,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE;;IAGrC,OAAO,GAAA;AACL,QAAA,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC;;IAGxB,MAAM,GAAA;AACJ,QAAA,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;;IAGvB,SAAS,GAAA;AACP,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE;AACd,YAAA,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;;;AAIxB,IAAA,sBAAsB,CAAC,KAAiB,EAAA;QACtC,KAAK,CAAC,cAAc,EAAE;QACtB,KAAK,CAAC,eAAe,EAAE;QACvB,IAAI,CAAC,SAAS,EAAE;;IAGlB,WAAW,GAAA;;AAET,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE;QACpB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,EAAE,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE;AACvE,QAAA,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE;AACnC,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE;AACd,YAAA,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;;;AAIxB,IAAA,UAAU,CAAC,IAAS,EAAA;AAClB,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CACxC,YAAY,IAAI,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAC9E;AAED,YAAA,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;AAChB,gBAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;;iBACxB;gBACL,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;;;aAEhC;AACL,YAAA,IAAI,CAAC,aAAa,GAAG,CAAC,IAAI,CAAC;YAC3B,IAAI,CAAC,WAAW,EAAE;;QAGpB,IAAI,CAAC,kBAAkB,EAAE;QACzB,IAAI,CAAC,YAAY,EAAE;;AAGrB,IAAA,cAAc,CAAC,IAAS,EAAA;QACtB,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,IAAI,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;;IAG/G,kBAAkB,GAAA;QAChB,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE;AACnC,YAAA,IAAI,CAAC,YAAY,GAAG,EAAE;YACtB;;AAGF,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE;AACnC,gBAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC;;iBACxD;gBACL,IAAI,CAAC,YAAY,GAAG,CAAG,EAAA,IAAI,CAAC,aAAa,CAAC,MAAM,CAAA,wBAAA,CAA0B;;;aAEvE;AACL,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC;;;IAIjE,YAAY,GAAA;AACV,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE;YACxB;;AAGF,QAAA,IAAI;AACF,YAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI;YAE/B,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;AACjC,gBAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;;iBACjE;gBACL,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;;AAGnC,YAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE;AAChC,YAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,sBAAsB,EAAE;;gBACnC;AACR,YAAA,IAAI,CAAC,mBAAmB,GAAG,KAAK;;;;IAKpC,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,aAAa,GAAG,EAAE;AACvB,QAAA,IAAI,CAAC,YAAY,GAAG,EAAE;AACtB,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE;YACvB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;;AAEnC,QAAA,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE;;+GA5R1B,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,EAxDtB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,aAAA,EAAA,eAAA,EAAA,aAAA,EAAA,eAAA,EAAA,QAAA,EAAA,UAAA,EAAA,WAAA,EAAA,aAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,OAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,OAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCT,EAtCS,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,iCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,+PAAE,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,SAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,MAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,KAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,cAAA,EAAA,aAAA,EAAA,WAAA,EAAA,YAAA,EAAA,aAAA,EAAA,OAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,EAAA,WAAA,EAAA,MAAA,EAAA,YAAA,EAAA,WAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,WAAA,EAAA,KAAA,EAAA,WAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,SAAA,EAAA,aAAA,EAAA,UAAA,EAAA,UAAA,EAAA,OAAA,EAAA,YAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,YAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,OAAA,EAAA,MAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,OAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,yDAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,WAAW,EAAE,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,kBAAkB,oIAAE,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAyD9E,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBA5DjC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mBAAmB,EACjB,UAAA,EAAA,IAAI,EACP,OAAA,EAAA,CAAC,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,kBAAkB,EAAE,mBAAmB,CAAC,EAChF,QAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqCT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,iCAAA,CAAA,EAAA;8BAoBmB,KAAK,EAAA,CAAA;sBAAxB,SAAS;uBAAC,OAAO;gBAET,KAAK,EAAA,CAAA;sBAAb;gBACQ,aAAa,EAAA,CAAA;sBAArB;gBACQ,aAAa,EAAA,CAAA;sBAArB;gBACQ,QAAQ,EAAA,CAAA;sBAAhB;gBACQ,WAAW,EAAA,CAAA;sBAAnB;gBASQ,KAAK,EAAA,CAAA;sBAAb;;;ACrEH;;;;;;;;;AASG;MACU,uBAAuB,CAAA;AAiBlC,IAAA,WAAA,GAAA;AANA,QAAA,IAAA,CAAA,kBAAkB,GAAG;AACnB,YAAA,MAAM,EAAE,YAAY;AACpB,YAAA,WAAW,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC;AACrB,YAAA,iBAAiB,EAAE,GAAG;SACvB;;IAID,QAAQ,GAAA;QACN,IAAI,CAAC,kBAAkB,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK;;+GApBxC,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,uBAAuB,EA3BxB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;;;;;;;;;;AAcT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAfS,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,SAAS,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,OAAA,EAAA,aAAA,EAAA,UAAA,EAAA,cAAA,EAAA,MAAA,EAAA,WAAA,EAAA,kBAAA,EAAA,SAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,aAAA,EAAA,cAAA,EAAA,OAAA,EAAA,YAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,eAAe,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,OAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FA4B9C,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBA/BnC,SAAS;+BACE,kBAAkB,EAAA,UAAA,EAChB,IAAI,EAAA,OAAA,EACP,CAAC,mBAAmB,EAAE,SAAS,EAAE,eAAe,CAAC,EAChD,QAAA,EAAA;;;;;;;;;;;;;;AAcT,EAAA,CAAA,EAAA;wDAsBQ,KAAK,EAAA,CAAA;sBAAb;;;ACjCH;;;;;;;;;AASG;MACU,kBAAkB,CAAA;AAY7B,IAAA,WAAA,GAAA;QAFA,IAAM,CAAA,MAAA,GAAG,eAAe;;AAIxB,IAAA,QAAQ;+GAdG,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kBAAkB,EAbnB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,2FAAA,CAA6F,EAD7F,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,07EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,mBAAmB,8TAAE,QAAQ,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,aAAA,EAAA,WAAA,EAAA,YAAA,EAAA,aAAA,EAAA,OAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,EAAA,WAAA,EAAA,MAAA,EAAA,YAAA,EAAA,WAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,WAAA,EAAA,KAAA,EAAA,WAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,SAAA,EAAA,aAAA,EAAA,UAAA,EAAA,UAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAc5B,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAjB9B,SAAS;+BACE,gBAAgB,EAAA,UAAA,EACd,IAAI,EACP,OAAA,EAAA,CAAC,mBAAmB,EAAE,QAAQ,CAAC,EAAA,QAAA,EAC9B,CAA6F,2FAAA,CAAA,EAAA,MAAA,EAAA,CAAA,07EAAA,CAAA,EAAA;wDAqB9F,KAAK,EAAA,CAAA;sBAAb;;;AC9BI,MAAM,IAAI,GAAG,MAAM;AACnB,MAAM,KAAK,GAAG,OAAO;;ACD5B;;;AAGG;MACU,mBAAmB,CAAA;AAC9B;;;;AAIG;AACH,IAAA,OAAO,GAAG,CAAI,SAAiB,EAAE,KAAQ,EAAA;AACvC,QAAA,YAAY,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;;AAGxD;;;;AAIG;IACH,OAAO,GAAG,CAAI,SAAiB,EAAA;QAC7B,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC;AAC7C,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAM;;AAG/B;;;AAGG;IACH,OAAO,MAAM,CAAC,SAAiB,EAAA;AAC7B,QAAA,YAAY,CAAC,UAAU,CAAC,SAAS,CAAC;;AAGpC;;AAEG;AACH,IAAA,OAAO,KAAK,GAAA;QACV,YAAY,CAAC,KAAK,EAAE;;AAEvB;;ACtCD;;;;AAIG;IAOS;AAAZ,CAAA,UAAY,WAAW,EAAA;AACrB,IAAA,WAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACf,IAAA,WAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,WAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACf,CAAC,EAJW,WAAW,KAAX,WAAW,GAItB,EAAA,CAAA,CAAA;MAKY,YAAY,CAAA;AAkCvB,IAAA,WAAA,GAAA;AAjCA;;AAEG;QACH,IAAW,CAAA,WAAA,GAAG,KAAK;AACnB;;AAEG;QACH,IAAU,CAAA,UAAA,GAAG,KAAK;AAClB;;AAEG;QACH,IAAU,CAAA,UAAA,GAAG,KAAK;AAClB;;AAEG;AACH,QAAA,IAAA,CAAA,aAAa,GAAG,WAAW,CAAC,IAAI;AAChC;;AAEG;QACH,IAAY,CAAA,YAAA,GAAG,WAAW;AAC1B;;AAEG;QACH,IAAW,CAAA,WAAA,GAAG,KAAK;AACnB;;AAEG;AACH,QAAA,IAAA,CAAA,OAAO,GAAG,WAAW,CAAC,IAAI;QAOxB,MAAM,OAAO,GAAG,mBAAmB,CAAC,GAAG,CAAc,KAAK,CAAC;AAC3D,QAAA,OAAO,CAAC,GAAG,CAAC,4BAA4B,EAAE,OAAO,CAAC;AAClD,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,eAAe,CAAc,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC;AACtE,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK;QAC/B,OAAO,CAAC,GAAG,CAAC,uCAAuC,EAAE,IAAI,CAAC,aAAa,CAAC;AACxE,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,aAAa,CAAC;QAE7C,MAAM,gBAAgB,GAAG,MAAM,CAAC,UAAU,CAAC,8BAA8B,CAAC;AAC1E,QAAA,IAAI,CAAC,WAAW,GAAG,gBAAgB,CAAC,OAAO;QAC3C,IAAI,CAAC,uBAAuB,EAAE;AAE9B,QAAA,gBAAgB,CAAC,gBAAgB,CAAC,QAAQ,EAAE,UAAU,IAAG;AACvD,YAAA,OAAO,CAAC,GAAG,CAAC,4CAA4C,EAAE,UAAU,CAAC;AACrE,YAAA,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,OAAO;YACrC,IAAI,CAAC,uBAAuB,EAAE;AAChC,SAAC,CAAC;;IAGI,uBAAuB,GAAA;AAC7B,QAAA,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,aAAa,KAAK,WAAW,CAAC,IAAI,EAAE;YAC/D,OAAO,CAAC,GAAG,CAAC,gCAAgC,EAAE,IAAI,CAAC,WAAW,CAAC;AAC/D,YAAA,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,IAAI,CAAC;;AAE7C,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,aAAa,KAAK,WAAW,CAAC,IAAI,EAAE;YAChE,OAAO,CAAC,GAAG,CAAC,gCAAgC,EAAE,IAAI,CAAC,WAAW,CAAC;AAC/D,YAAA,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,IAAI,CAAC;;;IAIvC,oBAAoB,GAAA;QAC1B,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC;QACxC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC;;IAGpC,qBAAqB,GAAA;QAC3B,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC;QACzC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC;;AAG3C;;AAEG;AACH,IAAA,IAAI,MAAM,GAAA;QACR,OAAO,IAAI,CAAC,WAAW;;AAGzB;;AAEG;AACH,IAAA,IAAI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK;;AAGzB;;AAEG;IACH,IAAI,KAAK,CAAC,KAAkB,EAAA;AAC1B,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;AACtB,QAAA,mBAAmB,CAAC,GAAG,CAAc,KAAK,EAAE,KAAK,CAAC;;AAGpD;;;;AAIG;IACH,WAAW,CAAC,IAAY,EAAE,SAAkB,EAAA;QAC1C,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,IAAI,EAAE,SAAS,CAAC;QAC/C,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC;;AAGjD;;;AAGG;AACH,IAAA,oBAAoB,CAAC,MAAmB,EAAA;AACtC,QAAA,IAAI,CAAC,aAAa,GAAG,MAAM;AAC3B,QAAA,IAAI,CAAC,KAAK,GAAG,MAAM;QACnB,IAAI,CAAC,WAAW,GAAG,MAAM,KAAK,WAAW,CAAC,KAAK;QAC/C,IAAI,CAAC,UAAU,GAAG,MAAM,KAAK,WAAW,CAAC,IAAI;QAC7C,IAAI,CAAC,UAAU,GAAG,MAAM,KAAK,WAAW,CAAC,IAAI;QAE7C,QAAQ,MAAM;YACZ,KAAK,WAAW,CAAC,KAAK;gBACpB,IAAI,CAAC,qBAAqB,EAAE;gBAC5B;YACF,KAAK,WAAW,CAAC,IAAI;gBACnB,IAAI,CAAC,oBAAoB,EAAE;gBAC3B;YACF,KAAK,WAAW,CAAC,IAAI;AACnB,gBAAA,IAAI,IAAI,CAAC,WAAW,EAAE;oBACpB,IAAI,CAAC,oBAAoB,EAAE;;qBACtB;oBACL,IAAI,CAAC,qBAAqB,EAAE;;gBAE9B;;;+GAlIK,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAZ,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,cAFX,MAAM,EAAA,CAAA,CAAA;;4FAEP,YAAY,EAAA,UAAA,EAAA,CAAA;kBAHxB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;MCuBY,oBAAoB,CAAA;AAlCjC,IAAA,WAAA,GAAA;AAmCE,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC;AAW7B;AANC,IAAA,KAAK,CAAC,UAAU,EAAA;QACd,IAAI,CAAC,UAAU,EAAE;AACf,YAAA,OAAO,EAAE;;AAEX,QAAA,OAAO,YAAY,CAAC,UAAU,CAAC;;+GAVtB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,EA9BrB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2BT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,05GAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EA5BS,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,oBAAoB,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,mBAAmB,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FA+BtD,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAlChC,SAAS;+BACE,cAAc,EAAA,UAAA,EACZ,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,oBAAoB,EAAE,mBAAmB,CAAC,EACxD,QAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2BT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,05GAAA,CAAA,EAAA;8BAOD,KAAK,EAAA,CAAA;sBADJ;;;ACHH;;;;;;;;;;;AAWG;MACU,eAAe,CAAA;AAU1B,IAAA,WAAA,GAAA;AALA,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,YAAY,EAAU;AAGpC,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,YAAY,EAAE;;AAI5B,IAAA,QAAQ;AAER,IAAA,YAAY,CAAC,KAAc,EAAA;AACzB,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;;IAG1B,YAAY,GAAA;AACV,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;;+GAnBV,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,eAAe,EA3ChB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,i9FAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EA7BS,YAAY,EAAE,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,YAAY,EAAE,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,mBAAmB,+EAAE,oBAAoB,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FA4CpE,eAAe,EAAA,UAAA,EAAA,CAAA;kBA/C3B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,EACV,UAAA,EAAA,IAAI,EACP,OAAA,EAAA,CAAC,YAAY,EAAE,YAAY,EAAE,mBAAmB,EAAE,oBAAoB,CAAC,EACtE,QAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,i9FAAA,CAAA,EAAA;wDAiBD,KAAK,EAAA,CAAA;sBADJ;gBAID,OAAO,EAAA,CAAA;sBADN;gBAID,OAAO,EAAA,CAAA;sBADN;;;ACzCH;;;;;;;;;;;AAWG;MAiFU,gBAAgB,CAAA;IAe3B,WACU,CAAA,OAAsB,EAC9B,IAAiB,EAAA;QADT,IAAO,CAAA,OAAA,GAAP,OAAO;AATjB;;AAEG;AAEH,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,YAAY,EAAU;QAEpC,IAAW,CAAA,WAAA,GAAG,iBAAiB;AAM7B,QAAA,QAAQ,CAAC,EAAE,kBAAkB,EAAE,CAAC;;AAGlC,IAAA,QAAQ;AAER;;;AAGG;AACH,IAAA,YAAY,CAAC,KAAc,EAAA;AACzB,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;;AAG1B;;AAEG;IACH,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;;AAGrB;;AAEG;IACH,WAAW,GAAA;QACT,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC;;AAG/D;;AAEG;IACH,UAAU,GAAA;QACR,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC;;AAG9D;;AAEG;IACH,YAAY,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC;;AAG/D;;AAEG;IACH,WAAW,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC;;+GAhEnD,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,EAAA,CAAA,aAAA,EAAA,EAAA,EAAA,KAAA,EAAAF,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,gBAAgB,EAjEjB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8DT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,4+EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAzEC,YAAY,EACZ,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,UAAU,mFACV,UAAU,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACV,SAAS,EACT,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,OAAO,EACP,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,KAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,OAAO,gFACP,QAAQ,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACR,eAAe,EACf,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,cAAc,yEACd,aAAa,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,OAAA,EAAA,UAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAmEJ,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAhF5B,SAAS;+BACE,aAAa,EAAA,UAAA,EACX,IAAI,EACP,OAAA,EAAA;wBACP,YAAY;wBACZ,UAAU;wBACV,UAAU;wBACV,SAAS;wBACT,OAAO;wBACP,OAAO;wBACP,QAAQ;wBACR,eAAe;wBACf,cAAc;wBACd,aAAa;qBACd,EACS,QAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8DT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,4+EAAA,CAAA,EAAA;yGAQD,KAAK,EAAA,CAAA;sBADJ;gBAOD,OAAO,EAAA,CAAA;sBADN;;;ACpHH;;;;;;;;;;;;;AAaG;MAqBU,eAAe,CAAA;AAa1B,IAAA,WAAA,GAAA;AANA;;AAEG;AAEH,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,YAAY,EAAU;;AAIpC,IAAA,QAAQ;AAER;;;AAGG;AACH,IAAA,YAAY,CAAC,KAAc,EAAA;AACzB,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;;+GAtBf,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,eAAe,EAhBhB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;;;;;;;;;AAaT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,uDAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAdS,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,SAAS,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,MAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,gBAAgB,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAiBxC,eAAe,EAAA,UAAA,EAAA,CAAA;kBApB3B,SAAS;+BACE,YAAY,EAAA,UAAA,EACV,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,SAAS,EAAE,gBAAgB,CAAC,EAC1C,QAAA,EAAA;;;;;;;;;;;;;AAaT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,uDAAA,CAAA,EAAA;wDAQD,KAAK,EAAA,CAAA;sBADJ;gBAOD,OAAO,EAAA,CAAA;sBADN;;;MChDU,SAAS,GAAG,CACvB,KAAa,EACb,GAAW,KACkC;IAC7C,OAAO;AACL,QAAA,SAAS,EAAE,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC;AACpC,QAAA,KAAK,EAAE,CAAA,SAAA,EAAY,KAAK,CAAA,qBAAA,EAAwB,GAAG,CAAc,YAAA,CAAA;KAClE;AACH;;MCuBa,mBAAmB,CAAA;AAO9B,IAAA,WAAA,GAAA;AAFA,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,YAAY,EAAc;;AAIzC,IAAA,QAAQ;IAER,MAAM,aAAa,CAAC,KAAc,EAAA;AAChC,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC;;AAG9D,IAAA,IAAI,OAAO,GAAA;AACT,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;AACpB,YAAA,OAAO,EAAE;;QAGX,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE;AACzB,YAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,eAAe,CAAC,OAAO;;AAGzD,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,eAAe,CAAC,OAAO,EAAE;AACrD,YAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,eAAe,CAAC,OAAO;;AAGzD,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,eAAe,CAAC,OAAO,EAAE;AACrD,YAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,eAAe,CAAC,OAAO;;AAGzD,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,eAAe,CAAC,QAAQ,EAAE;AACtD,YAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,eAAe,CAAC,QAAQ;;QAG1D,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC;;+GApCvB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,EAvBpB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;;;;;;;;;;;;;;;;GAoBT,EArBS,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,eAAe,gGAAE,oBAAoB,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAwBpC,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBA3B/B,SAAS;+BACE,iBAAiB,EAAA,UAAA,EACf,IAAI,EACP,OAAA,EAAA,CAAC,eAAe,EAAE,oBAAoB,CAAC,EACtC,QAAA,EAAA;;;;;;;;;;;;;;;;;;;;AAoBT,EAAA,CAAA,EAAA;wDAKD,KAAK,EAAA,CAAA;sBADJ;gBAID,QAAQ,EAAA,CAAA;sBADP;;;ACnCH;;;AAGG;AACU,MAAA,OAAO,GAAG,CAAC,EAAU,KAAU;IAC1C,MAAM,OAAO,GAAG,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;IAC3C,IAAI,OAAO,EAAE;QACX,OAAO,CAAC,cAAc,CAAC;AACrB,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,MAAM,EAAE,SAAS;AACjB,YAAA,QAAQ,EAAE,QAAQ;AACnB,SAAA,CAAC;;AAEN;AAEA;;;;;AAKG;AACU,MAAA,OAAO,GAAG,CAAC,UAAsB,KAAa;AACzD,IAAA,MAAM,WAAW,GAAG,UAAU,CAAC,aAAa;AAC5C,IAAA,MAAM,IAAI,GAAG,WAAW,CAAC,qBAAqB,EAAE;AAChD,IAAA,MAAM,YAAY,GAAG,MAAM,CAAC,WAAW;AACvC,IAAA,OAAO,IAAI,CAAC,MAAM,IAAI,YAAY;AACpC;;MC0Fa,aAAa,CAAA;IAiBxB,WACU,CAAA,EAAe,EACf,UAAsB,EAAA;QADtB,IAAE,CAAA,EAAA,GAAF,EAAE;QACF,IAAU,CAAA,UAAA,GAAV,UAAU;AAdpB,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,YAAY,EAAc;AAGzC,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,YAAY,EAAE;AAG9B,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,EAAiC;QAGlE,IAAK,CAAA,KAAA,GAAG,SAAS;QACT,IAAa,CAAA,aAAA,GAAmB,EAAE;;IAO1C,QAAQ,GAAA;QACN,MAAM,YAAY,GAAG,EAAE;QACvB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,IAAG;AACpC,YAAA,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,IAAG;AAC7B,gBAAA,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,UAAU,IAAI,EAAE,CAAC;AAChE,aAAC,CAAC;AACJ,SAAC,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC;QACvC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,IAAG;AACpC,YAAA,OAAO,CAAC;AACL,iBAAA,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,aAAa;iBAC7G,OAAO,CAAC,KAAK,IAAG;AACf,gBAAA,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC;AACrC,aAAC,CAAC;AACN,SAAC,CAAC;;IAGJ,WAAW,GAAA;;AAET,QAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC;;AAGtD,IAAA,kBAAkB,CAAC,SAAiB,EAAA;QAClC,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;QAC1C,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,KAAK,IAAG;AAC1D,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;AACvD,SAAC,CAAC;AACF,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC;;IAGvC,MAAM,aAAa,CAAC,KAAc,EAAA;AAChC,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,CAAC;;AAGhE,IAAA,UAAU,CAAC,KAAa,EAAA;QACtB,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAgB;;AAG5C,IAAA,YAAY,CAAC,KAAoB,EAAA;QAC/B,KAAK,CAAC,KAAK;AACX,QAAA,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE;AAChB,YAAA,KAAK,CAAC,KAAK,GAAG,CAAA,MAAA,EAAS,KAAK,CAAC,IAAI,CAAA,CAAA,EAAI,KAAK,CAAC,IAAI,CAAA,CAAE;;QAEnD,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC;QAC3C,IAAI,KAAK,CAAC,KAAK,KAAK,eAAe,CAAC,QAAQ,EAAE;YAC5C,OAAO,CAAC,OAAO,EAAE;;aACZ;YACL,OAAO,CAAC,MAAM,EAAE;;QAElB,OAAO;AACL,YAAA,GAAG,KAAK;YACR,OAAO;SACR;;AAGH,IAAA,IAAI,aAAa,GAAA;AACf,QAAA,OAAO,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC;;AAGjC,IAAA,IAAI,IAAI,GAAA;QACN,OAAO,IAAI,CAAC,IAAI;;AAGlB,IAAA,IAAI,SAAS,GAAA;QACX,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,KAAK;SACjB;;AAGH,IAAA,IAAI,OAAO,GAAA;AACT,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;AACd,YAAA,OAAO,EAAE;;AAGX,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;YACnB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,GAAG,eAAe,CAAC,OAAO;;QAGpD,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,eAAe,CAAC,OAAO,EAAE;YAChD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,GAAG,eAAe,CAAC,OAAO;;QAGpD,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,eAAe,CAAC,OAAO,EAAE;YAChD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,GAAG,eAAe,CAAC,OAAO;;QAGpD,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,eAAe,CAAC,QAAQ,EAAE;YACjD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,GAAG,eAAe,CAAC,QAAQ;;AAGrD,QAAA,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;;+GAjHlB,aAAa,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAD,IAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAb,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,aAAa,EApEd,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,SAAA,EAAA,WAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiET,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,07EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAtFC,YAAY,EACZ,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,mBAAmB,EACnB,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,gBAAgB,2EAChB,cAAc,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACd,kBAAkB,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAClB,mBAAmB,EACnB,QAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,oBAAoB,sGACpB,gBAAgB,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAChB,aAAa,EACb,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,qBAAqB,EACrB,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,kBAAkB,8EAClB,kBAAkB,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAClB,kBAAkB,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAClB,mBAAmB,EACnB,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,oBAAoB,EACpB,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,mBAAmB,+EACnB,sBAAsB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACtB,iBAAiB,EACjB,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,qBAAqB,uJACrB,uBAAuB,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAsEd,aAAa,EAAA,UAAA,EAAA,CAAA;kBA7FzB,SAAS;+BACE,UAAU,EAAA,UAAA,EACR,IAAI,EACP,OAAA,EAAA;wBACP,YAAY;wBACZ,mBAAmB;wBACnB,gBAAgB;wBAChB,cAAc;wBACd,kBAAkB;wBAClB,mBAAmB;wBACnB,oBAAoB;wBACpB,gBAAgB;wBAChB,aAAa;wBACb,qBAAqB;wBACrB,kBAAkB;wBAClB,kBAAkB;wBAClB,kBAAkB;wBAClB,mBAAmB;wBACnB,oBAAoB;wBACpB,mBAAmB;wBACnB,sBAAsB;wBACtB,iBAAiB;wBACjB,qBAAqB;wBACrB,uBAAuB;qBACxB,EACS,QAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiET,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,07EAAA,CAAA,EAAA;2GAKD,KAAK,EAAA,CAAA;sBADJ;gBAID,QAAQ,EAAA,CAAA;sBADP;gBAID,SAAS,EAAA,CAAA;sBADR;gBAID,cAAc,EAAA,CAAA;sBADb;;;AChHH;;;;;;;;;;;AAWG;MACU,eAAe,CAAA;AAa1B,IAAA,WAAA,GAAA;AANA;;AAEG;AAEH,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,YAAY,EAAU;;AAIpC,IAAA,QAAQ;AAER;;;AAGG;AACH,IAAA,YAAY,CAAC,KAAc,EAAA;AACzB,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;;+GAtBf,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,eAAe,EAnBhB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;GAIT,EALS,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,o3EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,SAAS,oGAAE,gBAAgB,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAoB1B,eAAe,EAAA,UAAA,EAAA,CAAA;kBAvB3B,SAAS;+BACE,YAAY,EAAA,UAAA,EACV,IAAI,EACP,OAAA,EAAA,CAAC,SAAS,EAAE,gBAAgB,CAAC,EAC5B,QAAA,EAAA;;;;AAIT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,o3EAAA,CAAA,EAAA;wDAoBD,KAAK,EAAA,CAAA;sBADJ;gBAOD,OAAO,EAAA,CAAA;sBADN;;;ACyKH;;;;;;;;;;;;AAYG;MACU,iBAAiB,CAAA;AAsB5B,IAAA,WAAA,CAAY,IAAiB,EAAA;QArB7B,IAAM,CAAA,MAAA,GAAG,eAAe;QACxB,IAAY,CAAA,YAAA,GAAG,SAAS;AAQxB;;AAEG;AAEH,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,YAAY,EAAU;AAEpC;;AAEG;AAEH,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,YAAY,EAAU;;AAI1C,IAAA,QAAQ;AAER;;;AAGG;AACH,IAAA,YAAY,CAAC,KAAc,EAAA;AACzB,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;;AAG1B;;;AAGG;AACH,IAAA,oBAAoB,CAAC,KAAc,EAAA;AACjC,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC;;AAGhC;;AAEG;IACH,KAAK,GAAA;AACH,QAAA,OAAO,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,YAAY,CAAC;;+GA9CjD,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAL,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iBAAiB,EAxLlB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwKT,EArLC,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,w7FAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,UAAU,oOAEV,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACP,OAAO,EACP,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,OAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,aAAa,gGACb,QAAQ,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACR,OAAO,EACP,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,OAAO,0NACP,SAAS,EAAA,QAAA,EAAA,YAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACT,OAAO,EACP,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,KAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,SAAS,oPACT,UAAU,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FA0LD,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAzM7B,SAAS;+BACE,eAAe,EAAA,UAAA,EACb,IAAI,EACP,OAAA,EAAA;wBACP,UAAU;wBACV,OAAO;wBACP,OAAO;wBACP,OAAO;wBACP,aAAa;wBACb,QAAQ;wBACR,OAAO;wBACP,OAAO;wBACP,SAAS;wBACT,OAAO;wBACP,SAAS;wBACT,UAAU;qBACX,EACS,QAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwKT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,w7FAAA,CAAA,EAAA;6EAwBD,KAAK,EAAA,CAAA;sBADJ;gBAOD,OAAO,EAAA,CAAA;sBADN;gBAOD,aAAa,EAAA,CAAA;sBADZ;;;ACzNH;;;;;;;;;;;AAWG;MACU,kBAAkB,CAAA;AAa7B,IAAA,WAAA,GAAA;AANA;;AAEG;AAEH,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,YAAY,EAAU;;AAIpC,IAAA,QAAQ;AAER;;;AAGG;AACH,IAAA,cAAc,CAAC,KAAa,EAAA;AAC1B,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;;+GAtBf,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kBAAkB,EAzBnB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;;;;;;GAUT,EAXS,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,g8EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,cAAc,yEAAE,eAAe,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FA0B9B,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBA7B9B,SAAS;+BACE,gBAAgB,EAAA,UAAA,EACd,IAAI,EACP,OAAA,EAAA,CAAC,cAAc,EAAE,eAAe,CAAC,EAChC,QAAA,EAAA;;;;;;;;;;AAUT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,g8EAAA,CAAA,EAAA;wDAoBD,KAAK,EAAA,CAAA;sBADJ;gBAOD,OAAO,EAAA,CAAA;sBADN;;;ACNH;;AAEG;IACS;AAAZ,CAAA,UAAY,MAAM,EAAA;AAChB,IAAA,MAAA,CAAA,MAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAQ;AACR,IAAA,MAAA,CAAA,MAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAO;AACP,IAAA,MAAA,CAAA,MAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAK;AACP,CAAC,EAJW,MAAM,KAAN,MAAM,GAIjB,EAAA,CAAA,CAAA;;MCPY,qBAAqB,CAAA;AAShC,IAAA,WAAA,GAAA;AAJA,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,YAAY,EAAuC;QAEjE,IAAS,CAAA,SAAA,GAAG,gBAAgB;;AAI5B,IAAA,QAAQ;AAER,IAAA,YAAY,CAAC,KAAc,EAAA;QACzB,IAAI,CAAC,KAAK,EAAE;YACV;;AAEF,QAAA,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;AAC3B,YAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC;;AAEhC,QAAA,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AAC1B,YAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC;;;AAInC,IAAA,IAAI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;;AAG7C,IAAA,IAAI,QAAQ,GAAA;AACV,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;AAC1C,YAAA,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM;;AAElE,QAAA,OAAO,CAAC;;AAGV,IAAA,IAAI,OAAO,GAAA;QACT,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,eAAe,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;AACjF,YAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,eAAe,CAAC,QAAQ;;AAG1D,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;YAC/D,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;;AAElC,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO;;AAG7B,IAAA,SAAS,CAAC,MAAc,EAAA;AACtB,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC;;+GAhDjD,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,EA3BtB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;AAwBT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAzBS,eAAe,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,oBAAoB,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,oBAAoB,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FA4B1D,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBA/BjC,SAAS;+BACE,mBAAmB,EAAA,UAAA,EACjB,IAAI,EAAA,OAAA,EACP,CAAC,eAAe,EAAE,oBAAoB,EAAE,oBAAoB,CAAC,EAC5D,QAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;AAwBT,EAAA,CAAA,EAAA;wDAKD,KAAK,EAAA,CAAA;sBADJ;gBAID,OAAO,EAAA,CAAA;sBADN;;;ACLH;;;;;;;;;;;;;AAaG;MACU,eAAe,CAAA;AAe1B,IAAA,WAAA,GAAA;AARA;;AAEG;AAEH,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,YAAY,EAAuC;QAEjE,IAAS,CAAA,SAAA,GAAG,gBAAgB;;AAI5B,IAAA,QAAQ;AAER;;AAEG;IACH,OAAO,GAAA;QACL,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,eAAe,CAAC,OAAO;QAC1C,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAG;AAC3B,YAAA,CAAC,CAAC,KAAK,GAAG,eAAe,CAAC,QAAQ;AACpC,SAAC,CAAC;;AAGJ;;;AAGG;IACH,IAAI,GAAA;QACF,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,eAAe,CAAC,OAAO,EAAE;YAChD;;QAGF,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,eAAe,CAAC,OAAO;QAC1C,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAG;AAC3B,YAAA,CAAC,CAAC,KAAK,GAAG,eAAe,CAAC,OAAO;AACnC,SAAC,CAAC;;AAGJ;;AAEG;AACH,IAAA,IAAI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;;AAG7C;;;AAGG;AACH,IAAA,UAAU,CAAC,OAAe,EAAA;QACxB,IAAI,OAAO,KAAK,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;YAClC;;AAEF,QAAA,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO;AAC5B,QAAA,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC;;AAGzB;;;AAGG;AACH,IAAA,QAAQ,CAAC,KAAa,EAAA;QACpB,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,eAAe,CAAC,KAAK,EAAE;YAC9C;;AAGF,QAAA,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,GAAG,KAAK;QACzE,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,eAAe,CAAC,KAAK;AACxC,QAAA,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC;;AAGzB;;AAEG;IACH,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,GAAG,EAAE;QACtE,IAAI,CAAC,IAAI,EAAE;;AAGb;;;;AAIG;AACH,IAAA,YAAY,CAAC,KAAc,EAAA;QACzB,IAAI,CAAC,KAAK,EAAE;YACV;;AAEF,QAAA,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;YAC3B,IAAI,CAAC,KAAK,EAAE;;QAGd,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;;+GAlG/D,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,eAAe,EAvChB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;AAsBT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,4gFAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAvBS,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,kBAAkB,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,sBAAsB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAwCvD,eAAe,EAAA,UAAA,EAAA,CAAA;kBA3C3B,SAAS;+BACE,YAAY,EAAA,UAAA,EACV,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,kBAAkB,EAAE,sBAAsB,CAAC,EACzD,QAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;AAsBT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,4gFAAA,CAAA,EAAA;wDAsBD,KAAK,EAAA,CAAA;sBADJ;gBAOD,OAAO,EAAA,CAAA;sBADN;;;MChDU,eAAe,CAAA;+GAAf,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,eAAe,EAPhB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;AAIT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,orFAAA,CAAA,EAAA,CAAA,CAAA;;4FAGU,eAAe,EAAA,UAAA,EAAA,CAAA;kBAX3B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,EACV,UAAA,EAAA,IAAI,EACP,OAAA,EAAA,EAAE,EACD,QAAA,EAAA;;;;AAIT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,orFAAA,CAAA,EAAA;;;MC8DU,eAAe,CAAA;AA7D5B,IAAA,WAAA,GAAA;AAkEE,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,YAAY,EAAU;AAGpC,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,YAAY,EAAW;AAE3C,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC;AAS7B;AAPC,IAAA,cAAc,CAAC,KAAc,EAAA;AAC3B,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;;AAG1B,IAAA,eAAe,CAAC,MAAa,EAAA;AAC3B,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;;+GAjBpB,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,eAAe,EA9ChB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuCT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,0CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAlDC,OAAO,EACP,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,SAAS,oGACT,UAAU,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACV,QAAQ,EACR,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,UAAU,EACV,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,SAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,eAAe,gGACf,eAAe,EAAA,QAAA,EAAA,YAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACf,gBAAgB,EAChB,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,aAAa,8FACb,uBAAuB,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAgDd,eAAe,EAAA,UAAA,EAAA,CAAA;kBA7D3B,SAAS;+BACE,YAAY,EAAA,UAAA,EACV,IAAI,EACP,OAAA,EAAA;wBACP,OAAO;wBACP,SAAS;wBACT,UAAU;wBACV,QAAQ;wBACR,UAAU;wBACV,eAAe;wBACf,eAAe;wBACf,gBAAgB;wBAChB,aAAa;wBACb,uBAAuB;qBACxB,EACS,QAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuCT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,0CAAA,CAAA,EAAA;8BASD,KAAK,EAAA,CAAA;sBADJ;gBAID,OAAO,EAAA,CAAA;sBADN;gBAID,aAAa,EAAA,CAAA;sBADZ;;;MCrEU,WAAW,CAAA;AAEtB,IAAA,WAAA,CAAY,IAAsB,EAAA;AAChC,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI;;AAGlB,IAAA,IAAI,OAAO,GAAA;QACT,OAAO,IAAI,CAAC,IAAI;;AAEnB;IAEW;AAAZ,CAAA,UAAY,UAAU,EAAA;AACpB,IAAA,UAAA,CAAA,IAAA,CAAA,GAAA,IAAS;AACT,IAAA,UAAA,CAAA,IAAA,CAAA,GAAA,IAAS;AACX,CAAC,EAHW,UAAU,KAAV,UAAU,GAGrB,EAAA,CAAA,CAAA;;MCjBY,oBAAoB,GAAG,IAAI,cAAc,CAAgB,eAAe;;MCIxE,WAAW,CAAA;AAMtB,IAAA,WAAA,CAA0C,MAAqB,EAAA;AAJ/D,QAAA,IAAA,CAAA,OAAO,GAAG,UAAU,CAAC,EAAE;AAKrB,QAAA,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,MAAM,CAAC;AACxC,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO;AAC7B,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM;QACpB,MAAM,OAAO,GAAG,mBAAmB,CAAC,GAAG,CAAa,IAAI,CAAC;AACzD,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,eAAe,CAAa,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC;;AAG9E,IAAA,IAAI,CAAC,SAAiB,EAAA;AACpB,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;;AAGjE,IAAA,IAAI,IAAI,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK;;IAGhC,IAAI,IAAI,CAAC,IAAgB,EAAA;AACvB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;AAC5B,QAAA,mBAAmB,CAAC,GAAG,CAAa,IAAI,EAAE,IAAI,CAAC;;AAxBtC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAW,kBAMF,oBAAoB,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAN7B,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAW,cAFV,MAAM,EAAA,CAAA,CAAA;;4FAEP,WAAW,EAAA,UAAA,EAAA,CAAA;kBAHvB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;0BAOc,MAAM;2BAAC,oBAAoB;;;ACd1C;;;AAGG;MAIU,YAAY,CAAA;AACvB,IAAA,WAAA,CAAoB,eAAgC,EAAA;QAAhC,IAAe,CAAA,eAAA,GAAf,eAAe;;AAEnC;;;AAGG;IACH,MAAM,YAAY,CAAC,OAAqB,EAAA;QACtC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC;YAC9C,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,KAAK,EAAE,OAAO,CAAC,KAAK;AACrB,SAAA,CAAC;AAEF,QAAA,MAAM,KAAK,CAAC,OAAO,EAAE;;AAGvB;;;AAGG;AACH,IAAA,IAAI,CAAC,OAAqB,EAAA;AACxB,QAAA,IAAI,CAAC,YAAY,CAAC,OAAO;aACtB,IAAI,CAAC,MAAK;AACT,YAAA,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC;AAC/B,SAAC;aACA,KAAK,CAAC,KAAK,IAAG;YACb,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AACtC,SAAC,CAAC;;+GA7BK,YAAY,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAK,EAAA,CAAA,eAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAZ,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,cAFX,MAAM,EAAA,CAAA,CAAA;;4FAEP,YAAY,EAAA,UAAA,EAAA,CAAA;kBAHxB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;ACTD;;AAEG;AAEH;;AAEG;;ACNH;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"valtech-components.mjs","sources":["../../../projects/valtech-components/src/lib/components/atoms/avatar/avatar.component.ts","../../../projects/valtech-components/src/lib/services/icons.service.ts","../../../projects/valtech-components/src/lib/components/atoms/box/box.component.ts","../../../projects/valtech-components/src/lib/components/types.ts","../../../projects/valtech-components/src/lib/services/download.service.ts","../../../projects/valtech-components/src/lib/services/in-app-browser.service.ts","../../../projects/valtech-components/src/lib/services/navigation.service.ts","../../../projects/valtech-components/src/lib/components/atoms/button/button.component.ts","../../../projects/valtech-components/src/lib/components/atoms/button/factory.ts","../../../projects/valtech-components/src/lib/components/atoms/display/display.component.ts","../../../projects/valtech-components/src/lib/components/atoms/divider/divider.component.ts","../../../projects/valtech-components/src/lib/components/atoms/href/href.component.ts","../../../projects/valtech-components/src/lib/components/atoms/icon/icon.component.ts","../../../projects/valtech-components/src/lib/components/atoms/image/image.component.ts","../../../projects/valtech-components/src/lib/components/atoms/progress-bar/progress-bar.component.ts","../../../projects/valtech-components/src/lib/components/atoms/text/text.component.ts","../../../projects/valtech-components/src/lib/components/atoms/title/title.component.ts","../../../projects/valtech-components/src/lib/components/molecules/alert-box/alert-box.component.ts","../../../projects/valtech-components/src/lib/components/molecules/button-group/button-group.component.ts","../../../projects/valtech-components/src/lib/components/molecules/card/types.ts","../../../projects/valtech-components/src/lib/components/molecules/card/card.component.ts","../../../projects/valtech-components/src/lib/components/molecules/check-input/check-input.component.ts","../../../projects/valtech-components/src/lib/components/molecules/comment-input/comment-input.component.ts","../../../projects/valtech-components/src/lib/components/molecules/content-loader/content-loader.component.ts","../../../projects/valtech-components/src/lib/components/molecules/date-input/date-input.component.ts","../../../projects/valtech-components/src/lib/components/molecules/email-input/email-input.component.ts","../../../projects/valtech-components/src/lib/shared/utils/styles.ts","../../../projects/valtech-components/src/lib/components/molecules/expandable-text/expandable-text.component.ts","../../../projects/valtech-components/src/lib/components/molecules/file-input/file-input.component.ts","../../../projects/valtech-components/src/lib/components/molecules/hint/hint.component.ts","../../../projects/valtech-components/src/lib/components/molecules/hour-input/hour-input.component.ts","../../../projects/valtech-components/src/lib/components/molecules/link/link.component.ts","../../../projects/valtech-components/src/lib/components/molecules/links-cake/links-cake.component.ts","../../../projects/valtech-components/src/lib/components/molecules/notes-box/notes-box.component.ts","../../../projects/valtech-components/src/lib/components/molecules/number-input/number-input.component.ts","../../../projects/valtech-components/src/lib/components/molecules/password-input/password-input.component.ts","../../../projects/valtech-components/src/lib/components/molecules/pin-input/pin-input.component.ts","../../../projects/valtech-components/src/lib/components/molecules/title-block/title-block.component.ts","../../../projects/valtech-components/src/lib/components/molecules/progress-status/progress-status.component.ts","../../../projects/valtech-components/src/lib/components/molecules/prompter/prompter.component.ts","../../../projects/valtech-components/src/lib/components/molecules/radio-input/radio-input.component.ts","../../../projects/valtech-components/src/lib/shared/utils/text.ts","../../../projects/valtech-components/src/lib/components/molecules/searchbar/searchbar.component.ts","../../../projects/valtech-components/src/lib/components/molecules/select-search/select-search.component.ts","../../../projects/valtech-components/src/lib/components/molecules/select-input/select-input.component.ts","../../../projects/valtech-components/src/lib/components/molecules/text-input/text-input.component.ts","../../../projects/valtech-components/src/lib/shared/constants/storage.ts","../../../projects/valtech-components/src/lib/services/local-storage.service.ts","../../../projects/valtech-components/src/lib/services/theme.service.ts","../../../projects/valtech-components/src/lib/components/molecules/layered-card/layered-card.component.ts","../../../projects/valtech-components/src/lib/components/organisms/banner/banner.component.ts","../../../projects/valtech-components/src/lib/components/organisms/toolbar/toolbar.component.ts","../../../projects/valtech-components/src/lib/components/organisms/footer/footer.component.ts","../../../projects/valtech-components/src/lib/components/organisms/form/factory.ts","../../../projects/valtech-components/src/lib/components/organisms/form/form-footer/form-footer.component.ts","../../../projects/valtech-components/src/lib/shared/utils/dom.ts","../../../projects/valtech-components/src/lib/components/organisms/form/form.component.ts","../../../projects/valtech-components/src/lib/components/organisms/header/header.component.ts","../../../projects/valtech-components/src/lib/components/organisms/item-list/item-list.component.ts","../../../projects/valtech-components/src/lib/components/organisms/no-content/no-content.component.ts","../../../projects/valtech-components/src/lib/components/organisms/wizard/types.ts","../../../projects/valtech-components/src/lib/components/organisms/wizard/wizard-footer/wizard-footer.component.ts","../../../projects/valtech-components/src/lib/components/organisms/wizard/wizard.component.ts","../../../projects/valtech-components/src/lib/components/templates/layout/layout.component.ts","../../../projects/valtech-components/src/lib/components/templates/simple/simple.component.ts","../../../projects/valtech-components/src/lib/services/lang-provider/types.ts","../../../projects/valtech-components/src/lib/services/types.ts","../../../projects/valtech-components/src/lib/services/lang-provider/lang-provider.service.ts","../../../projects/valtech-components/src/lib/services/toast.service.ts","../../../projects/valtech-components/src/public-api.ts","../../../projects/valtech-components/src/valtech-components.ts"],"sourcesContent":["import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { IonAvatar } from '@ionic/angular/standalone';\nimport { AvatarMetadata } from './types';\n\n@Component({\n selector: 'val-avatar',\n standalone: true,\n imports: [IonAvatar],\n template: `\n <ion-avatar\n aria-hidden=\"true\"\n [class]=\"props.size\"\n [class.box]=\"props.box\"\n [class.grayscale]=\"props.grayscale\"\n (click)=\"onClickHandler()\"\n >\n <img alt=\"profile image\" [src]=\"props.image || props.default\" />\n </ion-avatar>\n `,\n styleUrls: ['./avatar.component.scss'],\n})\n/**\n * val-avatar\n *\n * Displays a user or profile image, optionally with a box style and different sizes.\n *\n * @example\n * <val-avatar [props]=\"{ image: 'url', size: 'medium', box: true }\" (onClick)=\"handler()\"></val-avatar>\n *\n * @input props: AvatarMetadata - Configuration for the avatar (image, size, box, default image)\n * @output onClick - Emits when the avatar is clicked\n */\nexport class AvatarComponent implements OnInit {\n @Input() props: AvatarMetadata;\n\n /**\n * Event emitted when the avatar is clicked.\n */\n @Output()\n onClick = new EventEmitter();\n\n constructor() {}\n\n ngOnInit() {}\n\n onClickHandler() {\n this.onClick.emit();\n }\n}\n","/* eslint-disable no-underscore-dangle */\n\n/**\n * Service for registering and managing custom Ionicons icons in the application.\n * Automatically registers a set of commonly used icons on initialization.\n */\n\nimport { Injectable } from '@angular/core';\nimport { addIcons } from 'ionicons';\nimport {\n addCircleOutline,\n addOutline,\n alertCircleOutline,\n alertOutline,\n arrowBackOutline,\n arrowDownOutline,\n arrowForwardOutline,\n businessOutline,\n calendarOutline,\n chatbubblesOutline,\n checkmarkCircleOutline,\n checkmarkOutline,\n chevronDownOutline,\n chevronForwardOutline,\n clipboardOutline,\n closeOutline,\n copyOutline,\n ellipsisHorizontalOutline,\n eyeOffOutline,\n eyeOutline,\n filterOutline,\n heart,\n heartOutline,\n homeOutline,\n locationOutline,\n logoFacebook,\n logoInstagram,\n logoLinkedin,\n logoTiktok,\n logoTwitter,\n logoYoutube,\n notificationsOutline,\n openOutline,\n scanOutline,\n shareOutline,\n} from 'ionicons/icons';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class IconService {\n /**\n * Registers a set of Ionicons icons for use throughout the app.\n */\n constructor() {\n addIcons({\n addOutline,\n addCircleOutline,\n alertOutline,\n alertCircleOutline,\n arrowBackOutline,\n arrowForwardOutline,\n arrowDownOutline,\n checkmarkCircleOutline,\n ellipsisHorizontalOutline,\n notificationsOutline,\n openOutline,\n closeOutline,\n chatbubblesOutline,\n shareOutline,\n heart,\n heartOutline,\n homeOutline,\n eyeOffOutline,\n eyeOutline,\n scanOutline,\n chevronDownOutline,\n chevronForwardOutline,\n checkmarkOutline,\n clipboardOutline,\n copyOutline,\n filterOutline,\n locationOutline,\n calendarOutline,\n businessOutline,\n logoTwitter,\n logoInstagram,\n logoLinkedin,\n logoYoutube,\n logoTiktok,\n logoFacebook,\n });\n }\n}\n","import { CommonModule, NgStyle } from '@angular/common';\nimport { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { IonCard, IonIcon } from '@ionic/angular/standalone';\nimport { IconService } from '../../../services/icons.service';\nimport { BoxMetadata } from './types';\n\n@Component({\n selector: 'val-box',\n standalone: true,\n imports: [CommonModule, IonCard, IonIcon, NgStyle],\n template: `\n <ion-card\n class=\"box\"\n [color]=\"props.color\"\n [class.rounded]=\"props.rounded\"\n [class.bordered]=\"props.bordered\"\n [class.transparent]=\"!props.color\"\n [class.left-border]=\"props.leftBorder\"\n [ngStyle]=\"{\n padding: props.padding ? props.padding : '0px',\n }\"\n >\n @if (props.icon) {\n <ion-icon class=\"icon\" [name]=\"props.icon\" (click)=\"clickHandler()\"></ion-icon>\n }\n <div\n [ngStyle]=\"{\n 'margin-right': props.icon ? '24px' : '0px',\n }\"\n >\n <ng-content select=\"[body]\"></ng-content>\n </div>\n </ion-card>\n `,\n styleUrls: ['./box.component.scss'],\n})\n/**\n * val-box\n *\n * A stylized card container for grouping content, with optional icon, color, border, and click event.\n *\n * @example\n * <val-box [props]=\"{ color: 'primary', rounded: true, icon: 'star' }\" (onClick)=\"handler()\">\n * <div body>Content here</div>\n * </val-box>\n *\n * @input props: BoxMetadata - Configuration for the box (color, icon, border, etc.)\n * @output onClick - Emits when the box or its icon is clicked\n */\nexport class BoxComponent implements OnInit {\n /**\n * Box configuration object.\n * @type {BoxMetadata}\n * @property color - The color of the box (Ionic color string).\n * @property icon - The name of the icon to display (optional).\n * @property bordered - Whether the box has a border (optional).\n * @property leftBorder - Whether the box has a left border (optional).\n * @property rounded - Whether the box has rounded corners (optional).\n * @property padding - Custom padding for the box (optional).\n */\n @Input()\n props: BoxMetadata;\n\n /**\n * Event emitted when the box or its icon is clicked.\n */\n @Output()\n onClick = new EventEmitter();\n\n constructor(icon: IconService) {}\n\n ngOnInit() {}\n\n clickHandler() {\n this.onClick.emit();\n }\n}\n","import { FormControl, ValidatorFn } from '@angular/forms';\nimport { Color } from '@ionic/core';\nimport { ImageMetadata } from './atoms/image/types';\n\n/**\n * Possible states for an interactive component.\n */\nexport type ComponentState = 'ENABLED' | 'DISABLED' | 'WORKING' | 'ERROR';\nconst ENABLED: ComponentState = 'ENABLED';\nconst DISABLED: ComponentState = 'DISABLED';\nconst WORKING: ComponentState = 'WORKING';\nconst ERROR: ComponentState = 'ERROR';\n\n/**\n * Object containing all possible component states.\n */\nexport const ComponentStates = { ENABLED, DISABLED, WORKING, ERROR };\n\n/**\n * Types of actions that a button or link can perform.\n */\nexport enum ActionType {\n BROWSER_NEW_TAB, // Open in a new browser tab\n BROWSER_DOWNLOAD, // Download via browser\n NATIVE_DOWNLOAD, // Download using native capabilities\n APP_NAVIGATION, // Internal app navigation\n BROWSER_NAVIGATION, // Navigation in the browser\n}\n\n/**\n * Represents an executable action for a button or link.\n */\nexport type Action = {\n /** Action description */\n description: string;\n /** Action type */\n type: ActionType;\n /** Action source or destination */\n source: string;\n};\n\n/**\n * Supported input types for forms.\n */\nexport enum InputType {\n TEXT,\n EMAIL,\n PASSWORD,\n COMMENT,\n NUMBER,\n PIN_CODE,\n DATE,\n HOUR,\n CHECK,\n RADIO,\n SELECT,\n SEARCH_SELECT,\n FILE,\n}\n\n/**\n * Option for select, radio, etc. inputs.\n */\nexport type InputOption = {\n /** Unique option identifier */\n id: string;\n /** Display name */\n name: string;\n /** Whether the option is selected by default */\n selected?: boolean;\n /** Display order */\n order: number;\n};\n\n/**\n * Metadata for a form field.\n */\nexport type InputMetadata = {\n /** Associated form control */\n control: FormControl;\n /** Unique token for the input */\n token: string;\n /** Display label */\n label: string;\n /** Field name */\n name: string;\n /** Help text */\n hint: string;\n /** Input placeholder */\n placeholder: string;\n /** Input type */\n type: InputType;\n /** Display order */\n order: number;\n /** Associated validators */\n validators: ValidatorFn[];\n /** Options (for select, radio, etc.) */\n options?: InputOption[];\n /** Allowed range (for number, date, etc.) */\n range?: {\n min: number;\n max: number;\n };\n /** Custom error messages */\n errors: {\n [key: string]: string;\n };\n /** Current value */\n value?: string;\n /** Field state */\n state: ComponentState;\n};\n\n/**\n * A section in a form, grouping multiple fields.\n */\nexport type FormSection = {\n /** Section name */\n name: string;\n /** Display order */\n order: number;\n /** Fields included in the section */\n fields: InputMetadata[];\n};\n\n/**\n * Data sent when submitting a form.\n */\nexport type FormSubmit = {\n /** List of fields and their values */\n fields: { key: string; value: string }[];\n /** Optional token for the operation */\n token?: string;\n};\n\n/**\n * Metadata for a complete form.\n */\nexport type FormMetadata = {\n /** Form name */\n name: string;\n /** Form sections */\n sections: FormSection[];\n /** Action buttons configuration */\n actions: ButtonMetadata;\n /** Global form state */\n state: ComponentState;\n};\n\n/**\n * Possible action types for a toolbar.\n */\nexport enum ToolbarActionType {\n AVATAR = 'AVATAR',\n ICON = 'ICON',\n IMAGE = 'IMAGE',\n BUTTON = 'BUTTON',\n}\n\n/**\n * Toolbar action definition.\n */\nexport type ToolbarAction = {\n /** Action type */\n type: 'AVATAR' | 'ICON' | 'IMAGE' | 'BUTTON';\n /** Optional token identifier */\n token?: string;\n /** Toolbar position */\n position: 'left' | 'right' | 'center';\n /** Optional description */\n description?: string;\n /** Associated image (if any) */\n image?: ImageMetadata;\n};\n\n/**\n * Metadata for an icon.\n */\nexport interface IconMetada {\n /** Icon name */\n name: string;\n /** Icon slot position */\n slot: 'start' | 'end';\n}\n\n/**\n * Button configuration object.\n * @type {ButtonMetadata}\n * @property text - The button label.\n * @property color - The button color (Ionic color string).\n * @property icon - Icon to display (optional).\n * @property state - Button state (enabled, disabled, working, etc.).\n * @property expand, fill, size, shape, href, target, download, handler, etc. - See ButtonMetadata for all options.\n */\nexport interface ButtonMetadata {\n /** Associated action type */\n actionType?: ActionType;\n /** Button expansion */\n expand?: 'full' | 'block';\n /** Associated link */\n link?: string;\n /** Associated href link */\n href?: string;\n /** Link target */\n target?: '_blank' | '_self' | '_parent' | '_top';\n /** Download file name */\n download?: string;\n /** Button color */\n color: Color;\n /** Button state */\n state: ComponentState;\n /** Display text */\n text: string;\n /** Associated icon */\n icon?: IconMetada;\n /** Button shape */\n shape?: 'round';\n /** Button size */\n size?: 'small' | 'default' | 'large';\n /** Button fill */\n fill?: 'clear' | 'outline' | 'solid' | 'default';\n /** Button type */\n type: 'button' | 'submit' | 'reset';\n /** Optional token identifier */\n token?: string;\n /** Optional reference */\n ref?: any;\n /** Action handler */\n handler?: (value: any) => any | Promise<any>;\n}\n","/**\n * Service for downloading files and opening links in new tabs.\n * Provides utility methods for browser-based file downloads and extracting file names from URLs.\n */\nimport { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class DownloadService {\n /**\n * Extracts the file name from a given URL.\n * @param url The file URL\n * @returns The file name\n */\n getFileNameFromUrl(url: string): string {\n try {\n const pathSegments = url.split('/');\n const lastSegment = pathSegments[pathSegments.length - 1];\n const fileName = decodeURIComponent(lastSegment);\n return fileName;\n } catch (error) {\n console.error('Error al obtener nombre de archivo: ', JSON.stringify(error));\n return 'filename';\n }\n }\n\n /**\n * Opens a given URL in a new browser tab and triggers download if possible.\n * @param url The file URL\n */\n openNewTab(url: string): void {\n if (url) {\n const fileName = this.getFileNameFromUrl(url);\n const link = document.createElement('a');\n link.href = url;\n link.download = fileName;\n link.target = '_blank';\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n } else {\n console.error('La URL no está definida');\n }\n }\n\n /**\n * Downloads a file from the browser using fetch and triggers a download dialog.\n * @param url The file URL\n */\n downloadLinkFromBrowser(url: string): void {\n console.log('trying to download file from url');\n if (url) {\n fetch(url)\n .then(response => response.blob())\n .then(blob => {\n const url = window.URL.createObjectURL(blob);\n const link = document.createElement('a');\n link.href = url;\n\n const fileName = this.getFileNameFromUrl(url);\n link.download = `${+new Date()}-${fileName}`;\n link.target = '_self';\n link.click();\n\n window.URL.revokeObjectURL(url);\n })\n .catch(error => {\n console.error('Error al descargar el archivo:', JSON.stringify(error));\n });\n } else {\n console.error('La URL no está definida');\n }\n }\n}\n","/* eslint-disable no-underscore-dangle */\n\n/**\n * Service for opening URLs using Capacitor's InAppBrowser plugin.\n * Provides a method to open links in a popover-style browser within the app.\n */\nimport { Injectable } from '@angular/core';\nimport { Browser, OpenOptions } from '@capacitor/browser';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class InAppBrowserService {\n /**\n * Default options for the in-app browser.\n */\n options: OpenOptions = {\n presentationStyle: 'popover',\n url: '',\n };\n constructor() {}\n\n /**\n * Opens a URL using Capacitor's InAppBrowser with the configured options.\n * @param url The URL to open\n */\n async openWithInAppBrowser(url: string) {\n await Browser.open({ ...this.options, url });\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { NavigationExtras, Router } from '@angular/router';\nimport { InAppBrowserService } from './in-app-browser.service';\n\n/**\n * Service for navigation and routing within the application.\n * Supports navigation with data transfer, in-app browser, and opening links in new tabs.\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class NavigationService {\n /**\n * Arbitrary data to be transferred during navigation.\n */\n data: any;\n router = inject(Router);\n inAppBrowser = inject(InAppBrowserService);\n\n constructor() {}\n\n /**\n * Opens a URL using the in-app browser service.\n * @param url The URL to open\n */\n navigateInApp(url: string) {\n this.inAppBrowser.openWithInAppBrowser(url);\n }\n\n /**\n * Navigates to a route and transfers data using Angular Router state.\n * @param route The route to navigate to\n * @param dataTransfer The data to transfer\n */\n navigateWithData(route: string, dataTransfer: any) {\n const navigationExtras: NavigationExtras = {\n state: {\n data: dataTransfer,\n },\n };\n\n this.router.navigate([route], navigationExtras);\n }\n\n /**\n * Navigates to a URL using Angular Router.\n * @param url The URL to navigate to\n */\n navigateByUrl(url: string) {\n this.router\n .navigateByUrl(url)\n .then(response => {})\n .catch(error => {});\n }\n\n /**\n * Opens a URL in a new browser tab.\n * @param url The URL to open\n */\n openInNewTab(url: string): void {\n window.open(url, '_blank', 'noopener,noreferrer');\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { IonButton, IonIcon, IonSpinner, IonText } from '@ionic/angular/standalone';\nimport { DownloadService } from '../../../services/download.service';\nimport { IconService } from '../../../services/icons.service';\nimport { NavigationService } from '../../../services/navigation.service';\nimport { ActionType, ButtonMetadata, ComponentStates } from '../../types';\n\n@Component({\n selector: 'val-button',\n standalone: true,\n imports: [CommonModule, IonButton, IonIcon, IonSpinner, IonText],\n template: `\n <ion-button\n [type]=\"props.type\"\n [color]=\"props.color\"\n [expand]=\"props.expand\"\n [fill]=\"props.fill\"\n [size]=\"props.size\"\n [href]=\"props.href\"\n [target]=\"props.target\"\n [shape]=\"props.shape\"\n (click)=\"clickHandler()\"\n [disabled]=\"props.state === states.DISABLED\"\n [ngClass]=\"[props.size]\"\n >\n <ion-icon *ngIf=\"props.icon\" [slot]=\"props.icon.slot\" [name]=\"props.icon.name\"></ion-icon>\n <ion-spinner *ngIf=\"props.state === states.WORKING\" name=\"circular\"></ion-spinner>\n <ion-text *ngIf=\"props.state !== states.WORKING\">{{ props.text }}</ion-text>\n </ion-button>\n `,\n styleUrls: ['./button.component.scss'],\n})\n/**\n * val-button\n *\n * A customizable button supporting icons, loading state, navigation, and custom handlers.\n *\n * @example\n * <val-button [props]=\"{ text: 'Save', color: 'primary', icon: { name: 'save', slot: 'start' } }\" (onClick)=\"handler()\"></val-button>\n *\n * @input props: ButtonMetadata - Configuration for the button (text, color, icon, state, etc.)\n * @output onClick - Emits when the button is clicked\n */\nexport class ButtonComponent {\n states = ComponentStates;\n\n @Input()\n props!: ButtonMetadata;\n\n /**\n * Event emitted when the button is clicked.\n */\n @Output()\n onClick = new EventEmitter<string>();\n\n constructor(\n private download: DownloadService,\n icon: IconService,\n private navigation: NavigationService\n ) {}\n\n ngOnInit() {}\n\n clickHandler() {\n if (this.props.state === this.states.DISABLED) {\n return;\n }\n\n if (this.props.actionType === ActionType.APP_NAVIGATION) {\n this.navigation.navigateByUrl(this.props.link);\n }\n\n if (this.props.download) {\n this.download.downloadLinkFromBrowser(this.props.download);\n }\n if (this.props.handler) {\n this.props.handler(this.props.ref);\n }\n this.onClick.emit(this.props.token);\n }\n}\n","import { ButtonMetadata, IconMetada } from '../../types';\n\nexport const Icon = (name: string, slot: 'start' | 'end'): IconMetada => {\n return {\n name,\n slot,\n };\n};\n\n/* name convention: COLOR FILL SIZE [optionals: SHAPE EXPAND ICON HREF/DOWNLOAD] TYPE */\n\nexport const BaseDefault = (text: string, type: 'button' | 'submit' | 'reset'): ButtonMetadata => {\n return {\n color: 'primary',\n state: 'ENABLED',\n text,\n size: 'default',\n type,\n };\n};\n\nexport const ClearDefault = (text: string, type: 'button' | 'submit' | 'reset'): ButtonMetadata => {\n return { ...BaseDefault(text, type), fill: 'clear' };\n};\n\nexport const ClearDefaultRound = (\n text: string,\n type: 'button' | 'submit' | 'reset'\n): ButtonMetadata => {\n return { ...ClearDefault(text, type), shape: 'round' };\n};\n\nexport const SolidDefault = (text: string, type: 'button' | 'submit' | 'reset'): ButtonMetadata => {\n return { ...BaseDefault(text, type), fill: 'solid' };\n};\n\nexport const SolidDefaultRound = (\n text: string,\n type: 'button' | 'submit' | 'reset'\n): ButtonMetadata => {\n return { ...SolidDefault(text, type), shape: 'round' };\n};\n\nexport const OutlineDefault = (\n text: string,\n type: 'button' | 'submit' | 'reset'\n): ButtonMetadata => {\n return { ...BaseDefault(text, type), fill: 'outline' };\n};\n\nexport const OutlineDefaultRound = (\n text: string,\n type: 'button' | 'submit' | 'reset'\n): ButtonMetadata => {\n return { ...OutlineDefault(text, type), shape: 'round' };\n};\n\nexport const ClearDefaultFull = (\n text: string,\n type: 'button' | 'submit' | 'reset'\n): ButtonMetadata => {\n return { ...ClearDefault(text, type), expand: 'full' };\n};\n\nexport const ClearDefaultRoundFull = (\n text: string,\n type: 'button' | 'submit' | 'reset'\n): ButtonMetadata => {\n return { ...ClearDefaultRound(text, type), expand: 'full' };\n};\n\nexport const ClearDefaultBlock = (\n text: string,\n type: 'button' | 'submit' | 'reset'\n): ButtonMetadata => {\n return { ...ClearDefault(text, type), expand: 'block' };\n};\n\nexport const ClearDefaultRoundBlock = (\n text: string,\n type: 'button' | 'submit' | 'reset'\n): ButtonMetadata => {\n return { ...ClearDefaultRound(text, type), expand: 'block' };\n};\n\nexport const SolidDefaultFull = (\n text: string,\n type: 'button' | 'submit' | 'reset'\n): ButtonMetadata => {\n return { ...SolidDefault(text, type), expand: 'full' };\n};\n\nexport const SolidDefaultRoundFull = (\n text: string,\n type: 'button' | 'submit' | 'reset'\n): ButtonMetadata => {\n return { ...SolidDefaultRound(text, type), expand: 'full' };\n};\n\nexport const SolidDefaultBlock = (\n text: string,\n type: 'button' | 'submit' | 'reset'\n): ButtonMetadata => {\n return { ...SolidDefault(text, type), expand: 'block' };\n};\n\nexport const SolidDefaultRoundBlock = (\n text: string,\n type: 'button' | 'submit' | 'reset'\n): ButtonMetadata => {\n return { ...SolidDefaultRound(text, type), expand: 'block' };\n};\n\nexport const OutlineDefaultFull = (\n text: string,\n type: 'button' | 'submit' | 'reset'\n): ButtonMetadata => {\n return { ...OutlineDefault(text, type), expand: 'full' };\n};\n\nexport const OutlineDefaultRoundFull = (\n text: string,\n type: 'button' | 'submit' | 'reset'\n): ButtonMetadata => {\n return { ...OutlineDefaultRound(text, type), expand: 'full' };\n};\n\nexport const OutlineDefaultBlock = (\n text: string,\n type: 'button' | 'submit' | 'reset'\n): ButtonMetadata => {\n return { ...OutlineDefault(text, type), expand: 'block' };\n};\n\nexport const OutlineDefaultRoundBlock = (\n text: string,\n type: 'button' | 'submit' | 'reset'\n): ButtonMetadata => {\n return { ...OutlineDefaultRound(text, type), expand: 'block' };\n};\n\nexport const SolidDefaultButton = (text: string): ButtonMetadata => {\n return SolidDefault(text, 'button');\n};\n\nexport const SolidSmallButton = (text: string): ButtonMetadata => {\n return { ...SolidDefault(text, 'button'), size: 'small' };\n};\n\nexport const SolidLargeButton = (text: string): ButtonMetadata => {\n return { ...SolidDefault(text, 'button'), size: 'large' };\n};\n\nexport const SolidDefaultRoundButton = (text: string): ButtonMetadata => {\n return SolidDefaultRound(text, 'button');\n};\n\nexport const SolidSmallRoundButton = (text: string): ButtonMetadata => {\n return { ...SolidDefaultRound(text, 'button'), size: 'small' };\n};\n\nexport const SolidLargeRoundButton = (text: string): ButtonMetadata => {\n return { ...SolidDefaultRound(text, 'button'), size: 'large' };\n};\n\nexport const SolidFullButton = (text: string): ButtonMetadata => {\n return SolidDefaultFull(text, 'button');\n};\n\nexport const SolidBlockButton = (text: string): ButtonMetadata => {\n return SolidDefaultBlock(text, 'button');\n};\n\n/** PRIMARY */\n\nexport const PrimarySolidDefaultRoundButton = (text: string): ButtonMetadata => {\n return { ...SolidDefaultRoundButton(text), color: 'primary' };\n};\n\nexport const PrimarySolidDefaultRoundIconButton = (\n text: string,\n icon: IconMetada\n): ButtonMetadata => {\n return { ...PrimarySolidDefaultRoundButton(text), icon };\n};\n\nexport const PrimarySolidDefaultRoundHrefButton = (\n text: string,\n href: string,\n target: '_blank' | '_self' | '_parent' | '_top'\n): ButtonMetadata => {\n return { ...PrimarySolidDefaultRoundButton(text), href, target };\n};\n\nexport const PrimarySolidDefaultRoundIconHrefButton = (\n text: string,\n icon: IconMetada,\n href: string,\n target: '_blank' | '_self' | '_parent' | '_top'\n): ButtonMetadata => {\n return { ...PrimarySolidDefaultRoundIconButton(text, icon), href, target };\n};\n\nexport const PrimarySolidSmallRoundButton = (text: string): ButtonMetadata => {\n return { ...SolidSmallRoundButton(text), color: 'primary' };\n};\n\nexport const PrimarySolidSmallRoundIconButton = (\n text: string,\n icon: IconMetada\n): ButtonMetadata => {\n return { ...PrimarySolidSmallRoundButton(text), icon };\n};\n\nexport const PrimarySolidSmallRoundHrefButton = (\n text: string,\n href: string,\n target: '_blank' | '_self' | '_parent' | '_top'\n): ButtonMetadata => {\n return { ...PrimarySolidSmallRoundButton(text), href, target };\n};\n\nexport const PrimarySolidSmallRoundIconHrefButton = (\n text: string,\n icon: IconMetada,\n href: string,\n target: '_blank' | '_self' | '_parent' | '_top'\n): ButtonMetadata => {\n return { ...PrimarySolidSmallRoundIconButton(text, icon), href, target };\n};\n\nexport const PrimarySolidLargeRoundButton = (text: string): ButtonMetadata => {\n return { ...SolidLargeRoundButton(text), color: 'primary' };\n};\n\nexport const PrimarySolidLargeRoundIconButton = (\n text: string,\n icon: IconMetada\n): ButtonMetadata => {\n return { ...PrimarySolidLargeRoundButton(text), icon };\n};\n\nexport const PrimarySolidLargeRoundHrefButton = (\n text: string,\n href: string,\n target: '_blank' | '_self' | '_parent' | '_top'\n): ButtonMetadata => {\n return { ...PrimarySolidLargeRoundButton(text), href, target };\n};\n\nexport const PrimarySolidLargeRoundIconHrefButton = (\n text: string,\n icon: IconMetada,\n href: string,\n target: '_blank' | '_self' | '_parent' | '_top'\n): ButtonMetadata => {\n return { ...PrimarySolidLargeRoundIconButton(text, icon), href, target };\n};\n\nexport const PrimarySolidBlockButton = (text: string): ButtonMetadata => {\n return { ...SolidBlockButton(text), color: 'primary' };\n};\n\nexport const PrimarySolidBlockIconButton = (text: string, icon: IconMetada): ButtonMetadata => {\n return { ...PrimarySolidBlockButton(text), icon };\n};\n\nexport const PrimarySolidBlockHrefButton = (\n text: string,\n href: string,\n target: '_blank' | '_self' | '_parent' | '_top'\n): ButtonMetadata => {\n return { ...PrimarySolidBlockButton(text), href, target };\n};\n\nexport const PrimarySolidBlockIconHrefButton = (\n text: string,\n icon: IconMetada,\n href: string,\n target: '_blank' | '_self' | '_parent' | '_top'\n): ButtonMetadata => {\n return { ...PrimarySolidBlockIconButton(text, icon), href, target };\n};\n\nexport const PrimarySolidFullButton = (text: string): ButtonMetadata => {\n return { ...SolidFullButton(text), color: 'primary' };\n};\n\nexport const PrimarySolidFullIconButton = (text: string, icon: IconMetada): ButtonMetadata => {\n return { ...PrimarySolidFullButton(text), icon };\n};\n\nexport const PrimarySolidFullHrefButton = (\n text: string,\n href: string,\n target: '_blank' | '_self' | '_parent' | '_top'\n): ButtonMetadata => {\n return { ...PrimarySolidFullButton(text), href, target };\n};\n\nexport const PrimarySolidFullIconHrefButton = (\n text: string,\n icon: IconMetada,\n href: string,\n target: '_blank' | '_self' | '_parent' | '_top'\n): ButtonMetadata => {\n return { ...PrimarySolidFullIconButton(text, icon), href, target };\n};\n\n/** SECONDARY */\n\nexport const SecondarySolidDefaultRoundButton = (text: string): ButtonMetadata => {\n return { ...SolidDefaultRoundButton(text), color: 'secondary' };\n};\n\nexport const SecondarySolidDefaultRoundIconButton = (\n text: string,\n icon: IconMetada\n): ButtonMetadata => {\n return { ...SecondarySolidDefaultRoundButton(text), icon };\n};\n\nexport const SecondarySolidDefaultRoundHrefButton = (\n text: string,\n href: string,\n target: '_blank' | '_self' | '_parent' | '_top'\n): ButtonMetadata => {\n return { ...SecondarySolidDefaultRoundButton(text), href, target };\n};\n\nexport const SecondarySolidDefaultRoundIconHrefButton = (\n text: string,\n icon: IconMetada,\n href: string,\n target: '_blank' | '_self' | '_parent' | '_top'\n): ButtonMetadata => {\n return { ...SecondarySolidDefaultRoundIconButton(text, icon), href, target };\n};\n\nexport const SecondarySolidSmallRoundButton = (text: string): ButtonMetadata => {\n return { ...SolidSmallRoundButton(text), color: 'secondary' };\n};\n\nexport const SecondarySolidSmallRoundIconButton = (\n text: string,\n icon: IconMetada\n): ButtonMetadata => {\n return { ...SecondarySolidSmallRoundButton(text), icon };\n};\n\nexport const SecondarySolidSmallRoundHrefButton = (\n text: string,\n href: string,\n target: '_blank' | '_self' | '_parent' | '_top'\n): ButtonMetadata => {\n return { ...SecondarySolidSmallRoundButton(text), href, target };\n};\n\nexport const SecondarySolidSmallRoundIconHrefButton = (\n text: string,\n icon: IconMetada,\n href: string,\n target: '_blank' | '_self' | '_parent' | '_top'\n): ButtonMetadata => {\n return { ...SecondarySolidSmallRoundIconButton(text, icon), href, target };\n};\n\nexport const SecondarySolidLargeRoundButton = (text: string): ButtonMetadata => {\n return { ...SolidLargeRoundButton(text), color: 'secondary' };\n};\n\nexport const SecondarySolidLargeRoundIconButton = (\n text: string,\n icon: IconMetada\n): ButtonMetadata => {\n return { ...SecondarySolidLargeRoundButton(text), icon };\n};\n\nexport const SecondarySolidLargeRoundHrefButton = (\n text: string,\n href: string,\n target: '_blank' | '_self' | '_parent' | '_top'\n): ButtonMetadata => {\n return { ...SecondarySolidLargeRoundButton(text), href, target };\n};\n\nexport const SecondarySolidLargeRoundIconHrefButton = (\n text: string,\n icon: IconMetada,\n href: string,\n target: '_blank' | '_self' | '_parent' | '_top'\n): ButtonMetadata => {\n return { ...SecondarySolidLargeRoundIconButton(text, icon), href, target };\n};\n\nexport const SecondarySolidFullButton = (text: string): ButtonMetadata => {\n return { ...SolidFullButton(text), color: 'secondary' };\n};\n\nexport const SecondarySolidFullIconButton = (text: string, icon: IconMetada): ButtonMetadata => {\n return { ...SecondarySolidFullButton(text), icon };\n};\n\nexport const SecondarySolidFullHrefButton = (\n text: string,\n href: string,\n target: '_blank' | '_self' | '_parent' | '_top'\n): ButtonMetadata => {\n return { ...SecondarySolidFullButton(text), href, target };\n};\n\nexport const SecondarySolidFullIconHrefButton = (\n text: string,\n icon: IconMetada,\n href: string,\n target: '_blank' | '_self' | '_parent' | '_top'\n): ButtonMetadata => {\n return { ...SecondarySolidFullIconButton(text, icon), href, target };\n};\n\nexport const SecondarySolidBlockButton = (text: string): ButtonMetadata => {\n return { ...SolidBlockButton(text), color: 'secondary' };\n};\n\nexport const SecondarySolidBlockIconButton = (text: string, icon: IconMetada): ButtonMetadata => {\n return { ...SecondarySolidBlockButton(text), icon };\n};\n\nexport const SecondarySolidBlockHrefButton = (\n text: string,\n href: string,\n target: '_blank' | '_self' | '_parent' | '_top'\n): ButtonMetadata => {\n return { ...SecondarySolidBlockButton(text), href, target };\n};\n\nexport const SecondarySolidBlockIconHrefButton = (\n text: string,\n icon: IconMetada,\n href: string,\n target: '_blank' | '_self' | '_parent' | '_top'\n): ButtonMetadata => {\n return { ...SecondarySolidBlockIconButton(text, icon), href, target };\n};\n","import { Component, Input, OnInit } from '@angular/core';\nimport { IonText } from '@ionic/angular/standalone';\nimport { DisplayMetadata } from './types';\n\n@Component({\n selector: 'val-display',\n standalone: true,\n imports: [IonText],\n template: `\n <ion-text [color]=\"props.color\">\n <p [class]=\"props.size\">\n {{ props.content }}\n </p>\n </ion-text>\n `,\n styleUrls: ['./display.component.scss'],\n})\n/**\n * val-display\n *\n * Displays prominent text or titles with custom color and size.\n *\n * @example\n * <val-display [props]=\"{ content: 'Title', color: 'dark', size: 'large' }\"></val-display>\n *\n * @input props: DisplayMetadata - Configuration for the display (content, color, size)\n */\nexport class DisplayComponent implements OnInit {\n /**\n * Display configuration object.\n * @type {DisplayMetadata}\n * @property content - The text to display.\n * @property color - The text color (Ionic color string).\n * @property size - The text size ('small' | 'medium' | 'large' | 'xlarge').\n */\n @Input()\n props: DisplayMetadata;\n\n constructor() {}\n\n ngOnInit() {}\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, Input, OnInit } from '@angular/core';\nimport { DividerMetadata } from './types';\n\n/**\n * val-divider\n *\n * A horizontal divider for separating content sections.\n *\n * @example\n * <val-divider [props]=\"{ size: 'medium', color: 'light', fill: 'solid' }\"></val-divider>\n *\n * @input props: DividerMetadata - Configuration for the divider (size, color, fill)\n */\n@Component({\n selector: 'val-divider',\n standalone: true,\n imports: [CommonModule],\n template: ` <div [ngClass]=\"['divider', props.size, props.color, props.fill]\"></div> `,\n styleUrls: ['./divider.component.scss'],\n})\nexport class DividerComponent implements OnInit {\n /**\n * Divider configuration object.\n * @type {DividerMetadata}\n * @property size - The divider size ('small' | 'medium' | 'large').\n * @property color - The divider color.\n * @property fill - The divider fill style ('solid' | 'gradient').\n */\n @Input()\n props: DividerMetadata;\n constructor() {}\n\n ngOnInit() {}\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { DownloadService } from '../../../services/download.service';\nimport { HrefMetadata } from './types';\n\n@Component({\n selector: 'val-href',\n standalone: true,\n imports: [CommonModule],\n template: `\n <a\n [ngClass]=\"[props.color]\"\n [class.hoverable]=\"props.hoverable\"\n [href]=\"props.url\"\n target=\"_blank\"\n (click)=\"onClickHandler($event)\"\n >{{ props.text }}</a\n >\n `,\n styleUrls: ['./href.component.scss'],\n})\n/**\n * val-href\n *\n * A styled anchor/link element, supporting download and click events.\n *\n * @example\n * <val-href [props]=\"{ url: 'https://...', text: 'Open', color: 'primary', download: true }\" (onClick)=\"handler()\"></val-href>\n *\n * @input props: HrefMetadata - Configuration for the link (url, text, color, download, etc.)\n * @output onClick - Emits when the link is clicked\n */\nexport class HrefComponent implements OnInit {\n /**\n * Link configuration object.\n * @type {HrefMetadata}\n * @property url - The URL to open.\n * @property text - The link text.\n * @property color - The link color (Ionic color string).\n * @property download - Whether to trigger a download (optional).\n * @property hoverable - Whether the link is hoverable (optional).\n * @property token - Optional token for event identification.\n */\n @Input() props: HrefMetadata;\n\n @Output()\n onClick = new EventEmitter<string>();\n\n constructor(private downloadService: DownloadService) {}\n\n ngOnInit() {}\n\n getFileName() {\n return this.downloadService.getFileNameFromUrl(this.props.url);\n }\n\n onClickHandler(event: MouseEvent) {\n if (this.props.download && this.props.url) {\n event.preventDefault();\n this.downloadService.downloadLinkFromBrowser(this.props.url);\n }\n this.onClick.emit(this.props.token);\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, Input, OnInit } from '@angular/core';\nimport { IonIcon } from '@ionic/angular/standalone';\nimport { IconService } from '../../../services/icons.service';\nimport { IconMetadata } from './types';\n\n@Component({\n selector: 'val-icon',\n standalone: true,\n imports: [CommonModule, IonIcon],\n template: ` <ion-icon aria-hidden=\"true\" [ngClass]=\"[props.size]\" [name]=\"props.name\" [color]=\"props.color\" /> `,\n styleUrls: ['./icon.component.scss'],\n})\n/**\n * val-icon\n *\n * Displays an icon from the Ionicons set, with configurable size and color.\n *\n * @example\n * <val-icon [props]=\"{ name: 'star', size: 'large', color: 'warning' }\"></val-icon>\n *\n * @input props: IconMetadata - Configuration for the icon (name, color, size)\n */\nexport class IconComponent implements OnInit {\n /**\n * Icon configuration object.\n * @type {IconMetadata}\n * @property name - The icon name (Ionicons).\n * @property color - The icon color (Ionic color string).\n * @property size - The icon size ('small' | 'medium' | 'large' | 'xlarge').\n */\n @Input()\n props: IconMetadata;\n\n constructor(service: IconService) {}\n\n ngOnInit() {}\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, Input, OnInit } from '@angular/core';\nimport { ImageMetadata } from './types';\n\n@Component({\n selector: 'val-image',\n standalone: true,\n imports: [CommonModule],\n template: `\n @if (props.src.includes('--')) {\n <img\n [ngClass]=\"['image', props.mode, props.size]\"\n [ngStyle]=\"{\n content: 'var(' + props.src + ')',\n }\"\n [class.bordered]=\"props.bordered\"\n [class.shaded]=\"props.shaded\"\n [class.dark]=\"props.dark\"\n [class.limited]=\"props.limited\"\n [alt]=\"props.alt\"\n [style.width.px]=\"props.width\"\n [style.max-width.px]=\"props.width\"\n [style.height.px]=\"props.height\"\n />\n } @else {\n <img\n [ngClass]=\"['image', props.mode, props.size]\"\n [class.bordered]=\"props.bordered\"\n [class.shaded]=\"props.shaded\"\n [class.dark]=\"props.dark\"\n [class.limited]=\"props.limited\"\n [src]=\"props.src\"\n [alt]=\"props.alt\"\n [style.width.rem]=\"props.width\"\n [style.max-width.rem]=\"props.width\"\n [style.height.px]=\"props.height\"\n />\n }\n `,\n styleUrls: ['./image.component.scss'],\n})\n/**\n * val-image\n *\n * Displays an image with various display options (bordered, shaded, dark, etc).\n *\n * @example\n * <val-image [props]=\"{ src: 'url', alt: 'desc', width: 100, height: 100, bordered: true }\"></val-image>\n *\n * @input props: ImageMetadata - Configuration for the image (src, alt, size, mode, etc.)\n */\nexport class ImageComponent implements OnInit {\n @Input()\n props: ImageMetadata;\n\n available: boolean = true;\n\n constructor() {}\n\n ngOnInit() {}\n\n changeToVisible() {\n setInterval(() => {\n this.available = true;\n }, 100);\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, Input, OnInit } from '@angular/core';\nimport { IonProgressBar } from '@ionic/angular/standalone';\nimport { ProgressBarMetadata } from './types';\n\n@Component({\n selector: 'val-progress-bar',\n standalone: true,\n imports: [CommonModule, IonProgressBar],\n template: `\n <ion-progress-bar\n [ngClass]=\"[props.size]\"\n [class.rounded]=\"props.rounded\"\n [value]=\"props.progress\"\n [color]=\"props.color\"\n [buffer]=\"props.buffer\"\n [type]=\"props.type\"\n ></ion-progress-bar>\n `,\n styleUrls: ['./progress-bar.component.scss'],\n})\n/**\n * val-progress-bar\n *\n * A progress bar for indicating completion or loading state.\n *\n * @example\n * <val-progress-bar [props]=\"{ progress: 0.5, color: 'success', size: 'small' }\"></val-progress-bar>\n *\n * @input props: ProgressBarMetadata - Configuration for the progress bar (progress, color, size, etc.)\n */\nexport class ProgressBarComponent implements OnInit {\n /**\n * Progress bar configuration object.\n * @type {ProgressBarMetadata}\n * @property progress - The progress value (0 to 1).\n * @property size - The progress bar size ('small' | 'medium' | 'large' | 'xlarge').\n * @property color - The progress bar color (Ionic color string).\n * @property buffer - The buffer value for the bar.\n * @property type - The type of progress bar ('determinate' | 'indeterminate').\n * @property rounded - Whether the bar has rounded corners.\n */\n @Input()\n props: ProgressBarMetadata;\n\n constructor() {}\n\n ngOnInit() {}\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { IonText } from '@ionic/angular/standalone';\nimport { TextMetadata } from './types';\n\n@Component({\n selector: 'val-text',\n standalone: true,\n imports: [IonText],\n template: `\n <ion-text [color]=\"props.color\">\n <p [class]=\"props.size\" [class.bold]=\"props.bold\">{{ props.content }}</p>\n </ion-text>\n `,\n styleUrls: ['./text.component.scss'],\n})\n/**\n * val-text\n *\n * For displaying styled text with color, size, and bold options.\n *\n * @example\n * <val-text [props]=\"{ content: 'Some text', color: 'medium', size: 'small', bold: true }\"></val-text>\n *\n * @input props: TextMetadata - Configuration for the text (content, color, size, bold)\n */\nexport class TextComponent implements OnInit {\n /**\n * Text configuration object.\n * @type {TextMetadata}\n * @property content - The text to display.\n * @property color - The text color (Ionic color string).\n * @property size - The text size ('small' | 'medium' | 'large' | 'xlarge').\n * @property bold - Whether the text is bold.\n */\n @Input()\n props: TextMetadata;\n\n constructor() {}\n\n ngOnInit() {}\n}\n","import { CommonModule, NgIf } from '@angular/common';\nimport { Component, Input, OnInit } from '@angular/core';\nimport { IonText } from '@ionic/angular/standalone';\nimport { TitleMetadata } from './types';\n\n@Component({\n selector: 'val-title',\n standalone: true,\n imports: [CommonModule, NgIf, IonText],\n template: `\n <ion-text [color]=\"props.color\">\n <p *ngIf=\"!props.bold\" [ngClass]=\"[props.size]\" [class.thin]=\"props.thin\">\n {{ props.content }}\n </p>\n <b *ngIf=\"props.bold\">\n <p [class]=\"props.size\">{{ props.content }}</p>\n </b>\n </ion-text>\n `,\n styleUrls: ['./title.component.scss'],\n})\n/**\n * val-title\n *\n * A styled title or heading, with options for size, color, and boldness.\n *\n * @example\n * <val-title [props]=\"{ content: 'Section', size: 'large', color: 'primary', bold: true }\"></val-title>\n *\n * @input props: TitleMetadata - Configuration for the title (content, color, size, bold, thin)\n */\nexport class TitleComponent implements OnInit {\n /**\n * Title configuration object.\n * @type {TitleMetadata}\n * @property content - The title text to display.\n * @property color - The title color (Ionic color string).\n * @property size - The title size ('small' | 'medium' | 'large' | 'xlarge').\n * @property bold - Whether the title is bold.\n * @property thin - Whether the title is thin (optional).\n */\n @Input()\n props: TitleMetadata;\n\n constructor() {}\n\n ngOnInit() {}\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { BoxComponent } from '../../atoms/box/box.component';\nimport { IconComponent } from '../../atoms/icon/icon.component';\nimport { TextComponent } from '../../atoms/text/text.component';\nimport { AlertBoxMetadata } from './types';\n\n@Component({\n selector: 'val-alert-box',\n standalone: true,\n imports: [BoxComponent, IconComponent, TextComponent],\n template: `\n <val-box [props]=\"props.box\">\n <div class=\"content-container\" body>\n <val-icon [props]=\"props.icon\"></val-icon>\n <val-text class=\"text\" [props]=\"props.text\"></val-text>\n </div>\n </val-box>\n `,\n styleUrls: ['./alert-box.component.scss'],\n})\n/**\n * val-alert-box\n *\n * Displays an alert box with an icon and text, using a styled box container.\n *\n * @example\n * <val-alert-box [props]=\"{ box: {...}, icon: {...}, text: {...} }\"></val-alert-box>\n *\n * @input props: AlertBoxMetadata - Configuration for the alert box (box, icon, text)\n */\nexport class AlertBoxComponent implements OnInit {\n /**\n * Alert box configuration object.\n * @type {AlertBoxMetadata}\n * @property box - Box configuration (see BoxMetadata).\n * @property icon - Icon configuration (see IconMetadata).\n * @property text - Text configuration (see TextMetadata).\n */\n @Input()\n props: AlertBoxMetadata;\n\n constructor() {}\n\n ngOnInit() {}\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { ButtonComponent } from '../../atoms/button/button.component';\nimport { ButtonGroupMetadata } from './types';\n\n@Component({\n selector: 'val-button-group',\n standalone: true,\n imports: [CommonModule, ButtonComponent],\n template: `\n <div [ngClass]=\"['group-container', Position]\" [class.column]=\"props.columned\" style=\"width: 100%;\">\n <val-button\n *ngFor=\"let b of props.buttons\"\n [props]=\"b\"\n (onClick)=\"clickHandler(b?.token)\"\n [ngStyle]=\"{ width: props.buttons.length === 1 ? '100%' : 'auto' }\"\n ></val-button>\n </div>\n `,\n styleUrls: ['./button-group.component.scss'],\n})\n/**\n * val-button-group\n *\n * Displays a group of buttons with configurable layout and position.\n *\n * @example\n * <val-button-group [props]=\"{ buttons: [...], position: 'center', columned: false }\" (onClick)=\"handler($event)\"></val-button-group>\n *\n * @input props: ButtonGroupMetadata - Configuration for the button group (buttons, position, columned)\n * @output onClick - Emits the token of the clicked button\n */\nexport class ButtonGroupComponent implements OnInit {\n /**\n * Button group configuration object.\n * @type {ButtonGroupMetadata}\n * @property buttons - Array of button configurations.\n * @property position - Position of the button group ('center' | 'left' | 'right' | 'spaced').\n * @property columned - Whether the buttons are displayed in a column.\n */\n @Input()\n props: ButtonGroupMetadata;\n\n /**\n * Event emitted with the token of the clicked button.\n */\n @Output()\n onClick = new EventEmitter<string>();\n\n constructor() {}\n\n ngOnInit() {}\n\n clickHandler(token?: string) {\n this.onClick.emit(token);\n }\n\n get Position(): string {\n if (this.props.buttons.length === 1 && this.props.position === 'spaced') {\n return 'right';\n }\n\n return this.props.position;\n }\n}\n","import { ButtonMetadata, ToolbarAction } from '../../types';\n\nexport enum CardType {\n native = 'native',\n checker = 'checker',\n tappable = 'tappable',\n complex = 'complex',\n}\n\nexport interface CardClickEvent {\n section: CardSection;\n token?: string;\n}\n\nexport enum CardSection {\n headerLeft,\n headerRight,\n content,\n footer,\n footerExtra,\n}\n\nexport interface CardMetadata {\n token?: string;\n type: CardType;\n title?: string;\n overtitle?: string;\n content?: string;\n image?: string;\n footerActions: ButtonMetadata[];\n footerComplexActions: ToolbarAction[];\n leftActions: ToolbarAction[];\n rightActions: ToolbarAction[];\n selected: boolean;\n headerText?: string;\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport {\n IonButton,\n IonButtons,\n IonCard,\n IonCardContent,\n IonCardHeader,\n IonCardSubtitle,\n IonCardTitle,\n IonCheckbox,\n IonIcon,\n} from '@ionic/angular/standalone';\nimport { AvatarComponent } from '../../atoms/avatar/avatar.component';\nimport { ButtonComponent } from '../../atoms/button/button.component';\nimport { ImageComponent } from '../../atoms/image/image.component';\nimport { TextComponent } from '../../atoms/text/text.component';\nimport { ToolbarActionType } from '../../types';\nimport { CardClickEvent, CardMetadata, CardSection, CardType } from './types';\n\n@Component({\n selector: 'val-card',\n standalone: true,\n imports: [\n CommonModule,\n ButtonComponent,\n AvatarComponent,\n ImageComponent,\n TextComponent,\n IonCard,\n IonCardContent,\n IonCardHeader,\n IonCardTitle,\n IonCardSubtitle,\n IonCheckbox,\n IonButtons,\n IonButton,\n IonIcon,\n ],\n template: `\n <ion-card *ngIf=\"props.type === types.native\">\n <img alt=\"image\" [src]=\"props.image\" />\n <ion-card-header *ngIf=\"props.title || props.overtitle\">\n <ion-card-title *ngIf=\"props.title\">{{ props.title }}</ion-card-title>\n <ion-card-subtitle *ngIf=\"props.overtitle\">{{ props.overtitle }}</ion-card-subtitle>\n </ion-card-header>\n\n <ion-card-content *ngIf=\"props.content\">{{ props.content }}</ion-card-content>\n\n <val-button\n *ngFor=\"let b of props.footerActions\"\n [props]=\"b\"\n (onClick)=\"clickHandler(sections.footer, b.token)\"\n ></val-button>\n </ion-card>\n\n <ion-card\n *ngIf=\"props.type === types.tappable\"\n (click)=\"clickHandler(sections.content, props.token)\"\n class=\"tapable\"\n >\n <img alt=\"image\" [src]=\"props.image\" />\n <ion-card-header *ngIf=\"props.title || props.overtitle\">\n <ion-card-title *ngIf=\"props.title\">{{ props.title }}</ion-card-title>\n <ion-card-subtitle *ngIf=\"props.overtitle\">{{ props.overtitle }}</ion-card-subtitle>\n </ion-card-header>\n\n <ion-card-content *ngIf=\"props.content\">{{ props.content }}</ion-card-content>\n </ion-card>\n\n <ion-card\n *ngIf=\"props.type === types.checker\"\n (click)=\"clickHandler(sections.content, props.token)\"\n class=\"tapable\"\n >\n <ion-card-header *ngIf=\"props.title || props.overtitle\" class=\"checker\">\n <div>\n <ion-card-subtitle *ngIf=\"props.overtitle\">{{ props.overtitle }}</ion-card-subtitle>\n <ion-card-title *ngIf=\"props.title\">{{ props.title }}</ion-card-title>\n </div>\n <div>\n <ion-checkbox [checked]=\"props.selected\"></ion-checkbox>\n </div>\n </ion-card-header>\n\n <ion-card-content *ngIf=\"props.content\">{{ props.content }}</ion-card-content>\n </ion-card>\n\n <ion-card *ngIf=\"props.type === types.complex\" class=\"complex\">\n <ion-card-header class=\"complex-header\">\n <ion-buttons style=\"display: flex; align-items: center\" *ngIf=\"props.leftActions.length > 0\">\n <ng-container *ngFor=\"let action of props.leftActions\">\n <ion-button\n *ngIf=\"action.type === actionTypes.ICON\"\n (click)=\"clickHandler(sections.headerLeft, action.token)\"\n >\n <ion-icon slot=\"icon-only\" [name]=\"action.description\" color=\"dark\"></ion-icon>\n </ion-button>\n <val-avatar\n style=\"margin-right: 4px; cursor: pointer\"\n *ngIf=\"action.type === actionTypes.AVATAR\"\n [props]=\"{ size: 'small', image: action.description, default: '' }\"\n (onClick)=\"clickHandler(sections.headerLeft, action.token)\"\n ></val-avatar>\n <val-image\n *ngIf=\"action.type === actionTypes.IMAGE\"\n [props]=\"action.image\"\n (click)=\"clickHandler(sections.headerLeft, action.token)\"\n ></val-image>\n <ion-button\n *ngIf=\"action.type === actionTypes.BUTTON\"\n (click)=\"clickHandler(sections.headerLeft, action.token)\"\n >\n {{ action.description }}\n </ion-button>\n <div *ngIf=\"props.headerText\">\n <val-text [props]=\"{ content: props.headerText, color: 'dark', bold: true, size: 'medium' }\" />\n </div>\n </ng-container>\n </ion-buttons>\n <ion-buttons style=\"display: flex; align-items: center\" *ngIf=\"props.rightActions.length > 0\">\n <ng-container *ngFor=\"let action of props.rightActions\">\n <ion-button\n *ngIf=\"action.type === actionTypes.ICON\"\n (click)=\"clickHandler(sections.headerRight, action.token)\"\n >\n <ion-icon slot=\"icon-only\" [name]=\"action.description\" color=\"dark\"></ion-icon>\n </ion-button>\n <val-avatar\n style=\"margin-right: 4px; cursor: pointer\"\n *ngIf=\"action.type === actionTypes.AVATAR\"\n [props]=\"{ size: 'small', image: action.description, default: '' }\"\n (onClick)=\"clickHandler(sections.headerRight, action.token)\"\n ></val-avatar>\n <val-image\n *ngIf=\"action.type === actionTypes.IMAGE\"\n [props]=\"action.image\"\n (click)=\"clickHandler(sections.headerRight, action.token)\"\n ></val-image>\n <ion-button\n *ngIf=\"action.type === actionTypes.BUTTON\"\n (click)=\"clickHandler(sections.headerRight, action.token)\"\n >\n {{ action.description }}\n </ion-button>\n </ng-container>\n </ion-buttons>\n </ion-card-header>\n\n <div class=\"tapable\" (click)=\"clickHandler(sections.content, props.token)\">\n <ion-card-header *ngIf=\"props.title || props.overtitle\" class=\"complex-header\">\n <div>\n <ion-card-subtitle *ngIf=\"props.overtitle\">{{ props.overtitle }}</ion-card-subtitle>\n <ion-card-title *ngIf=\"props.title\">{{ props.title }}</ion-card-title>\n </div>\n </ion-card-header>\n\n <img alt=\"image\" [src]=\"props.image\" />\n <ion-card-content *ngIf=\"props.content\" class=\"complex-content\">{{ props.content }}</ion-card-content>\n </div>\n <val-button\n *ngFor=\"let b of props.footerActions\"\n [props]=\"b\"\n (onClick)=\"clickHandler(sections.footer, b.token)\"\n ></val-button>\n <ion-buttons\n style=\"display: flex; align-items: center; justify-content: flex-end; margin: 8px\"\n *ngIf=\"props.footerComplexActions.length > 0\"\n >\n <ng-container *ngFor=\"let action of props.footerComplexActions\">\n <ion-button\n *ngIf=\"action.type === actionTypes.ICON\"\n (click)=\"clickHandler(sections.footerExtra, action.token)\"\n >\n <ion-icon slot=\"icon-only\" [name]=\"action.description\" color=\"dark\"></ion-icon>\n </ion-button>\n <val-avatar\n style=\"margin-right: 4px; cursor: pointer\"\n *ngIf=\"action.type === actionTypes.AVATAR\"\n [props]=\"{ size: 'small', image: action.description, default: '' }\"\n (onClick)=\"clickHandler(sections.footerExtra, action.token)\"\n ></val-avatar>\n <val-image\n *ngIf=\"action.type === actionTypes.IMAGE\"\n [props]=\"action.image\"\n (click)=\"clickHandler(sections.footerExtra, action.token)\"\n ></val-image>\n <ion-button\n *ngIf=\"action.type === actionTypes.BUTTON\"\n (click)=\"clickHandler(sections.footerExtra, action.token)\"\n color=\"dark\"\n >\n {{ action.description }}\n </ion-button>\n </ng-container>\n </ion-buttons>\n </ion-card>\n `,\n styleUrls: ['./card.component.scss'],\n})\n/**\n * val-card\n *\n * A flexible card component supporting images, titles, content, actions, and custom sections.\n *\n * @example\n * <val-card [props]=\"{ type: 'native', title: 'Card', image: 'url', content: '...', actions: [...] }\" (onClick)=\"handler($event)\"></val-card>\n *\n * @input props: CardMetadata - Configuration for the card (type, title, image, content, actions, etc.)\n * @output onClick - Emits a CardClickEvent when the card or an action is clicked\n */\nexport class CardComponent implements OnInit {\n /**\n * Card configuration object.\n * @type {CardMetadata}\n * @property type - The card type (see CardType).\n * @property title - The card title.\n * @property image - The card image URL.\n * @property content - The card content.\n * @property actions - Array of action buttons (optional).\n * @property sections - Custom card sections (optional).\n * @property overtitle - Subtitle or overtitle (optional).\n */\n @Input()\n props: CardMetadata;\n\n /**\n * Event emitted when the card or an action is clicked.\n */\n @Output()\n onClick = new EventEmitter<CardClickEvent>();\n\n types = CardType;\n actionTypes = ToolbarActionType;\n sections = CardSection;\n\n constructor() {}\n\n ngOnInit() {}\n\n clickHandler(section: CardSection, token?: string) {\n this.onClick.emit({ section, token });\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, OnInit } from '@angular/core';\nimport { IonCheckbox } from '@ionic/angular/standalone';\n\n@Component({\n selector: 'val-check-input',\n standalone: true,\n imports: [CommonModule, IonCheckbox],\n template: ` <ion-checkbox>I agree to the terms and conditions</ion-checkbox> `,\n styleUrls: ['./check-input.component.scss'],\n})\n/**\n * val-check-input\n *\n * A simple checkbox input for boolean values or agreements.\n *\n * @example\n * <val-check-input></val-check-input>\n */\nexport class CheckInputComponent implements OnInit {\n constructor() {}\n\n ngOnInit() {}\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, Input, OnInit } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { IonCheckbox, IonTextarea } from '@ionic/angular/standalone';\nimport { InputMetadata } from '../../types';\n\n@Component({\n selector: 'val-comment-input',\n standalone: true,\n imports: [CommonModule, ReactiveFormsModule, IonCheckbox, IonTextarea],\n template: `\n <ion-textarea [formControl]=\"props.control\" [counter]=\"true\" [maxlength]=\"props.range.max\"></ion-textarea>\n `,\n styleUrls: ['./comment-input.component.scss'],\n})\n/**\n * val-comment-input\n *\n * A textarea input for multi-line comments, integrated with Angular forms.\n *\n * @example\n * <val-comment-input [props]=\"{ control: myControl, range: { max: 200 } }\"></val-comment-input>\n *\n * @input props: InputMetadata - Configuration for the textarea (form control, range, etc.)\n */\nexport class CommentInputComponent implements OnInit {\n /**\n * Input configuration object.\n * @type {InputMetadata}\n * @property control - The Angular FormControl for the textarea.\n * @property range - The range object with max length.\n */\n @Input() props: InputMetadata;\n\n constructor() {}\n\n ngOnInit() {}\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, Input, OnInit } from '@angular/core';\nimport { IonSpinner, IonText } from '@ionic/angular/standalone';\nimport { ContentLoaderMetadata } from './types';\n\n@Component({\n selector: 'val-content-loader',\n standalone: true,\n imports: [CommonModule, IonSpinner, IonText],\n template: `\n <div [ngClass]=\"['spinner-wrapper', props.size]\">\n <ion-spinner [ngClass]=\"[props.size]\" [name]=\"props.name\" [color]=\"props.color\"></ion-spinner>\n <ion-text [color]=\"props.color\">\n <p>{{ props.text }}</p>\n </ion-text>\n </div>\n `,\n styleUrls: ['./content-loader.component.scss'],\n})\n/**\n * val-content-loader\n *\n * A loading spinner with optional text, for indicating loading states.\n *\n * @example\n * <val-content-loader [props]=\"{ size: 'large', color: 'primary', text: 'Loading...' }\"></val-content-loader>\n *\n * @input props: ContentLoaderMetadata - Configuration for the loader (size, color, text, etc.)\n */\nexport class ContentLoaderComponent implements OnInit {\n /**\n * Loader configuration object.\n * @type {ContentLoaderMetadata}\n * @property size - The spinner size.\n * @property color - The spinner color.\n * @property text - The loading text (optional).\n * @property name - The spinner name (optional).\n */\n @Input()\n props: ContentLoaderMetadata;\n\n constructor() {}\n\n ngOnInit() {}\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, Input, OnInit } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { IonDatetime, IonDatetimeButton, IonModal } from '@ionic/angular/standalone';\nimport { InputMetadata } from '../../types';\n\n@Component({\n selector: 'val-date-input',\n standalone: true,\n imports: [CommonModule, ReactiveFormsModule, IonDatetime, IonDatetimeButton, IonModal],\n template: `\n <div class=\"button-container\">\n <ion-datetime-button class=\"action\" [datetime]=\"props.token\"></ion-datetime-button>\n </div>\n <ion-modal [keepContentsMounted]=\"true\">\n <ng-template>\n <ion-datetime\n [formControl]=\"props.control\"\n [id]=\"props.token\"\n presentation=\"date\"\n locale=\"es-ES\"\n [firstDayOfWeek]=\"1\"\n [showDefaultButtons]=\"true\"\n doneText=\"Aceptar\"\n cancelText=\"Cancelar\"\n formatOptions=\"{\n date: { dateStyle: 'medium' },\n time: { timeStyle: 'short' }\n }\"\n >\n <span slot=\"title\">{{ props.hint }}</span>\n </ion-datetime>\n </ng-template>\n </ion-modal>\n `,\n styleUrls: ['./date-input.component.scss'],\n})\n/**\n * val-date-input\n *\n * A date picker input integrated with Angular forms, using Ionic's datetime component.\n *\n * @example\n * <val-date-input [props]=\"{ control: myControl, hint: 'Select a date' }\"></val-date-input>\n *\n * @input props: InputMetadata - Configuration for the date input (form control, hint, etc.)\n */\nexport class DateInputComponent implements OnInit {\n /**\n * Input configuration object.\n * @type {InputMetadata}\n * @property control - The Angular FormControl for the date input.\n * @property hint - The hint text for the input.\n */\n @Input() props: InputMetadata;\n\n constructor() {}\n\n ngOnInit() {}\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, Input, OnInit } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { IonInput } from '@ionic/angular/standalone';\nimport { InputMetadata } from '../../types';\n\n@Component({\n selector: 'val-email-input',\n standalone: true,\n imports: [CommonModule, ReactiveFormsModule, IonInput],\n template: ` <ion-input [formControl]=\"props.control\" type=\"email\" [placeholder]=\"props.placeholder\"></ion-input> `,\n styleUrls: ['./email-input.component.scss'],\n})\n/**\n * val-email-input\n *\n * An email input field integrated with Angular forms.\n *\n * @example\n * <val-email-input [props]=\"{ control: myControl, placeholder: 'Enter your email' }\"></val-email-input>\n *\n * @input props: InputMetadata - Configuration for the input (form control, placeholder, etc.)\n */\nexport class EmailInputComponent implements OnInit {\n /**\n * Input configuration object.\n * @type {InputMetadata}\n * @property control - The Angular FormControl for the input.\n * @property placeholder - The placeholder text.\n */\n @Input() props: InputMetadata;\n\n constructor() {}\n\n ngOnInit() {}\n}\n","/**\n * Resolves a color string to a valid CSS value for use in styles.\n * Supports Ionic color names, CSS variables, and custom colors.\n *\n * @param color The color name, CSS variable, or custom color string\n * @returns A valid CSS color value\n *\n * @example\n * resolveColor('primary'); // returns 'var(--ion-color-primary)'\n * resolveColor('--my-custom-color'); // returns 'var(--my-custom-color)'\n * resolveColor('#ff0000'); // returns '#ff0000'\n */\nexport function resolveColor(color: string): string {\n // Si el color empieza con \"--\", se asume que es una variable CSS válida\n if (color.startsWith('--')) {\n return `var(${color})`;\n }\n\n // Lista de colores predefinidos de Ionic\n const ionicColors = [\n 'primary',\n 'secondary',\n 'tertiary',\n 'success',\n 'warning',\n 'danger',\n 'light',\n 'medium',\n 'dark',\n ];\n\n // Verificar si el color es un color de Ionic\n if (ionicColors.includes(color)) {\n return `var(--ion-color-${color})`;\n }\n\n // Si no es una variable CSS ni un color de Ionic, devolver el color tal cual\n return color;\n}\n","import { Component, Input } from '@angular/core';\nimport { IonText } from '@ionic/angular/standalone';\nimport { resolveColor } from '../../../shared/utils/styles';\nimport { ExpandableTextInput } from './types';\n\n@Component({\n selector: 'val-expandable-text',\n standalone: true,\n imports: [IonText],\n template: `\n <div class=\"description-container\" [class.expanded]=\"expanded\" [class.has-gradient]=\"!expanded && isTruncated\">\n <ion-text>\n <p class=\"description\">\n <span class=\"content\">{{ expanded ? props.content : truncatedText }}</span>\n @if (!expanded && isTruncated) {\n <span class=\"see-more\" [style.color]=\"this.color()\" (click)=\"toggleExpand()\">\n {{ props.expandText || 'ver más' }}\n </span>\n }\n </p>\n </ion-text>\n </div>\n `,\n styles: [\n `\n .description-container {\n position: relative;\n overflow: hidden;\n max-height: 10rem; /* Altura para texto truncado */\n transition: max-height 0.3s ease-in-out;\n }\n\n .description-container.expanded {\n max-height: none; /* Sin límite de altura al expandir */\n }\n\n .description {\n position: relative;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n .description-container:not(.expanded) .description::after {\n content: '';\n position: absolute;\n bottom: 0;\n left: 0;\n right: 0;\n height: 3.5rem; /* Altura del gradiente */\n background: linear-gradient(to top, var(--ion-background-color), rgba(255, 255, 255, 0));\n pointer-events: none; /* Ignorar interacciones en el gradiente */\n }\n\n .description-container:not(.has-gradient) .description::after {\n background: transparent; /* Fondo transparente si no hay gradiente */\n }\n\n .see-more {\n position: relative;\n font-weight: bold;\n cursor: pointer;\n z-index: 1;\n margin-left: 0.3rem;\n }\n `,\n ],\n})\n/**\n * val-expandable-text\n *\n * A text component that can be expanded/collapsed to show more or less content.\n *\n * @example\n * <val-expandable-text [props]=\"{ content: '...', limit: 180, color: 'primary', expandText: 'más' }\"></val-expandable-text>\n *\n * @input props: ExpandableTextInput - Configuration for the expandable text (content, limit, color, expandText)\n */\nexport class ExpandableTextComponent {\n /**\n * Expandable text configuration object.\n * @type {ExpandableTextInput}\n * @property content - The text content to display.\n * @property limit - The character limit before truncation.\n * @property color - The color for the \"see more\" link.\n * @property expandText - The text for the expand link (optional).\n */\n @Input() props: ExpandableTextInput;\n expanded = false;\n defaultColor = 'primary';\n\n get truncatedText(): string {\n const maxLength = this.props.limit || 100; // Longitud por defecto\n return this.props.content?.length > maxLength ? this.props.content.slice(0, maxLength) + '...' : this.props.content;\n }\n\n get isTruncated(): boolean {\n return this.props.content?.length > (this.props.limit || 100);\n }\n\n toggleExpand() {\n this.expanded = !this.expanded;\n }\n\n color() {\n return resolveColor(this.props.color || this.defaultColor);\n }\n}\n","import { Component, Input, OnInit, ViewChild } from '@angular/core';\nimport { IonIcon } from '@ionic/angular/standalone';\nimport { ButtonComponent } from '../../atoms/button/button.component';\nimport { PrimarySolidDefaultRoundButton } from '../../atoms/button/factory';\nimport { TextComponent } from '../../atoms/text/text.component';\nimport { ButtonMetadata, InputMetadata } from '../../types';\n\n@Component({\n selector: 'val-file-input',\n standalone: true,\n imports: [IonIcon, TextComponent, ButtonComponent],\n template: `\n <div class=\"file-container\">\n <input style=\"display: none\" type=\"file\" (change)=\"onFileSelected($event)\" #fileInput />\n <div class=\"name-container\">\n <ion-icon [name]=\"selectedFile ? 'checkmark-circle-outline' : 'alert-circle-outline'\"></ion-icon>\n <val-text\n style=\"margin-left: 4px;\"\n [props]=\"{\n content: selectedFile ? selectedFile.name : 'No has seleccionado archivo',\n color: 'dark',\n bold: false,\n size: 'medium',\n }\"\n ></val-text>\n </div>\n <val-button [props]=\"contrastButton\" (onClick)=\"fileInput.click()\"></val-button>\n </div>\n `,\n styleUrls: ['./file-input.component.scss'],\n})\n/**\n * val-file-input\n *\n * A file input component for uploading files, integrated with Angular forms.\n *\n * @example\n * <val-file-input [props]=\"{ control: myControl }\"></val-file-input>\n *\n * @input props: InputMetadata - Configuration for the file input (form control, etc.)\n */\nexport class FileInputComponent implements OnInit {\n /**\n * Input configuration object.\n * @type {InputMetadata}\n * @property control - The Angular FormControl for the file input.\n */\n @Input() props: InputMetadata;\n\n @ViewChild('fileInput') fileInput;\n\n contrastButton: ButtonMetadata = {\n ...PrimarySolidDefaultRoundButton('Subir archivo'),\n color: 'light',\n };\n selectedFile: File;\n\n constructor() {}\n\n ngOnInit() {}\n\n onFileSelected(event): void {\n this.selectedFile = event.target.files[0];\n this.props.control.setValue(this.selectedFile);\n }\n\n reset(): void {\n this.selectedFile = null;\n this.fileInput.nativeElement.value = '';\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, Input, OnInit } from '@angular/core';\nimport { TextComponent } from '../../atoms/text/text.component';\nimport { InputMetadata } from '../../types';\n\n@Component({\n selector: 'val-hint',\n standalone: true,\n imports: [CommonModule, TextComponent],\n template: `\n <div class=\"hint-container\" *ngIf=\"props.control.invalid && (props.control.touched || props.control.dirty)\">\n <val-text\n *ngFor=\"let e of Errors\"\n [props]=\"{\n content: e,\n color: 'danger',\n bold: false,\n size: 'small',\n }\"\n ></val-text>\n </div>\n `,\n styleUrls: ['./hint.component.scss'],\n})\n/**\n * val-hint\n *\n * Displays validation error messages for a form input, using Angular forms.\n *\n * @example\n * <val-hint [props]=\"{ control: myControl, errors: { required: 'Required field' } }\"></val-hint>\n *\n * @input props: InputMetadata - Configuration for the input (form control, errors, etc.)\n */\nexport class HintComponent implements OnInit {\n /**\n * Input configuration object.\n * @type {InputMetadata}\n * @property control - The Angular FormControl for the input.\n * @property errors - The error messages mapping.\n */\n @Input() props: InputMetadata;\n\n constructor() {}\n\n ngOnInit() {}\n\n get Errors(): string[] {\n const keys = Object.keys(this.props.errors);\n const errors = [];\n keys.map((e: string) => {\n if (this.props.control.hasError(e)) {\n errors.push(this.props.errors[e]);\n }\n });\n return errors;\n }\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { IonDatetime } from '@ionic/angular/standalone';\nimport { InputMetadata } from '../../types';\n\n@Component({\n selector: 'val-hour-input',\n standalone: true,\n imports: [ReactiveFormsModule, IonDatetime],\n template: ` <ion-datetime [formControl]=\"props.control\" presentation=\"time\"></ion-datetime>`,\n styleUrls: ['./hour-input.component.scss'],\n})\n/**\n * val-hour-input\n *\n * A time picker input integrated with Angular forms, using Ionic's datetime component.\n *\n * @example\n * <val-hour-input [props]=\"{ control: myControl }\"></val-hour-input>\n *\n * @input props: InputMetadata - Configuration for the time input (form control, etc.)\n */\nexport class HourInputComponent implements OnInit {\n /**\n * Input configuration object.\n * @type {InputMetadata}\n * @property control - The Angular FormControl for the time input.\n */\n @Input() props: InputMetadata;\n\n constructor() {}\n\n ngOnInit() {}\n}\n","import { Component, EventEmitter, inject, Input, OnInit, Output } from '@angular/core';\nimport { IonButton, IonIcon, IonText } from '@ionic/angular/standalone';\nimport { addIcons } from 'ionicons';\nimport { chevronForwardOutline } from 'ionicons/icons';\nimport { NavigationService } from '../../../services/navigation.service';\nimport { LinkMetadata } from './types';\n\n@Component({\n selector: 'val-link',\n standalone: true,\n imports: [IonButton, IonIcon, IonText],\n template: `\n <div>\n <ion-button type=\"button\" [color]=\"props.color\" fill=\"clear\" [size]=\"props.size\" (click)=\"onClickHandler()\">\n <ion-icon slot=\"end\" name=\"chevron-forward-outline\"></ion-icon>\n <ion-text>{{ props.text }}</ion-text>\n </ion-button>\n </div>\n `,\n styleUrls: ['./link.component.scss'],\n})\n/**\n * val-link\n *\n * A stylized link button with navigation support for internal, in-app, or new tab links.\n *\n * @example\n * <val-link [props]=\"{ text: 'Go', color: 'primary', link: '/home', type: 'internal' }\" (onClick)=\"handler($event)\"></val-link>\n *\n * @input props: LinkMetadata - Configuration for the link (text, color, link, type, etc.)\n * @output onClick - Emits the token of the clicked link\n */\nexport class LinkComponent implements OnInit {\n /**\n * Link configuration object.\n * @type {LinkMetadata}\n * @property text - The link text.\n * @property color - The button color (Ionic color string).\n * @property link - The URL or route to navigate to.\n * @property type - The navigation type ('internal', 'browse', 'tab').\n * @property token - Optional token for event identification.\n * @property size - The button size (optional).\n */\n @Input()\n props: LinkMetadata;\n\n @Output()\n onClick = new EventEmitter<string>();\n\n service = inject(NavigationService);\n\n constructor() {\n addIcons({ chevronForwardOutline });\n }\n\n ngOnInit() {}\n\n onClickHandler() {\n this.onClick.emit(this.props.token);\n\n switch (this.props.type) {\n case 'internal':\n this.service.navigateByUrl(this.props.link);\n break;\n case 'browse':\n this.service.navigateInApp(this.props.link);\n break;\n case 'tab':\n this.service.openInNewTab(this.props.link);\n break;\n }\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, Input, OnInit } from '@angular/core';\nimport { HrefComponent } from '../../atoms/href/href.component';\nimport { TitleComponent } from '../../atoms/title/title.component';\nimport { LinkCakeMetadata } from './types';\n\n@Component({\n selector: 'val-links-cake',\n standalone: true,\n imports: [CommonModule, TitleComponent, HrefComponent],\n template: `\n <div>\n @if (props.title) {\n <div class=\"title\">\n <val-title [props]=\"{ content: props.title, color: 'dark', bold: false, size: props.size }\"></val-title>\n </div>\n }\n <div class=\"link\" *ngFor=\"let l of props.links\">\n <val-href [props]=\"l\"></val-href>\n </div>\n </div>\n `,\n styleUrls: ['./links-cake.component.scss'],\n})\n/**\n * val-links-cake\n *\n * Displays a list of links with an optional title, styled as a \"cake\" of links.\n *\n * @example\n * <val-links-cake [props]=\"{ title: 'Links', links: [...], size: 'medium' }\"></val-links-cake>\n *\n * @input props: LinkCakeMetadata - Configuration for the links cake (title, links, size)\n */\nexport class LinksCakeComponent implements OnInit {\n /**\n * Links cake configuration object.\n * @type {LinkCakeMetadata}\n * @property title - The title for the links section (optional).\n * @property links - Array of link configurations.\n * @property size - The size of the title and links.\n */\n @Input()\n props: LinkCakeMetadata;\n\n constructor() {}\n\n ngOnInit() {}\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, Input, OnInit } from '@angular/core';\nimport { BoxComponent } from '../../atoms/box/box.component';\nimport { TextComponent } from '../../atoms/text/text.component';\nimport { NotesBoxMetadata } from './types';\n\n@Component({\n selector: 'val-notes-box',\n standalone: true,\n imports: [CommonModule, BoxComponent, TextComponent],\n template: `\n <val-box\n [props]=\"{\n icon: '',\n bordered: false,\n color: props.color,\n leftBorder: true,\n rounded: props.rounded,\n padding: props.padding,\n }\"\n >\n <div [ngClass]=\"['content-container', props.size]\" body>\n @if (props.prefix) {\n <val-text\n [props]=\"{ content: props.prefix, color: props.textColor, bold: true, size: props.size }\"\n ></val-text>\n }\n <val-text [props]=\"{ content: props.text, color: props.textColor, bold: false, size: props.size }\"></val-text>\n </div>\n </val-box>\n `,\n styleUrls: ['./notes-box.component.scss'],\n})\n/**\n * val-notes-box\n *\n * Displays a styled notes/info box with optional prefix and configurable color, size, and padding.\n *\n * @example\n * <val-notes-box [props]=\"{ text: 'Note', prefix: 'Info', color: 'primary', textColor: 'dark', size: 'medium', rounded: true, padding: '8px' }\"></val-notes-box>\n *\n * @input props: NotesBoxMetadata - Configuration for the notes box (text, prefix, color, textColor, size, rounded, padding)\n */\nexport class NotesBoxComponent implements OnInit {\n /**\n * Notes box configuration object.\n * @type {NotesBoxMetadata}\n * @property text - The main text content.\n * @property prefix - Optional prefix text (bold).\n * @property color - The background color of the box.\n * @property textColor - The color of the text.\n * @property size - The size of the text and box.\n * @property rounded - Whether the box has rounded corners.\n * @property padding - Custom padding for the box.\n */\n @Input()\n props: NotesBoxMetadata;\n\n constructor() {}\n\n ngOnInit() {}\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { IonInput } from '@ionic/angular/standalone';\nimport { InputMetadata } from '../../types';\n\n@Component({\n selector: 'val-number-input',\n standalone: true,\n imports: [ReactiveFormsModule, IonInput],\n template: ` <ion-input [formControl]=\"props.control\" type=\"number\" [placeholder]=\"props.placeholder\"></ion-input> `,\n styleUrls: ['./number-input.component.scss'],\n})\n/**\n * val-number-input\n *\n * A number input field integrated with Angular forms.\n *\n * @example\n * <val-number-input [props]=\"{ control: myControl, placeholder: 'Enter a number' }\"></val-number-input>\n *\n * @input props: InputMetadata - Configuration for the input (form control, placeholder, etc.)\n */\nexport class NumberInputComponent implements OnInit {\n /**\n * Input configuration object.\n * @type {InputMetadata}\n * @property control - The Angular FormControl for the input.\n * @property placeholder - The placeholder text.\n */\n @Input() props: InputMetadata;\n\n constructor() {}\n\n ngOnInit() {}\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { IonButton, IonIcon, IonInput } from '@ionic/angular/standalone';\nimport { IconService } from '../../../services/icons.service';\nimport { InputMetadata } from '../../types';\n\n@Component({\n selector: 'val-password-input',\n standalone: true,\n imports: [ReactiveFormsModule, IonInput, IonButton, IonIcon],\n template: `\n <div class=\"input-container\">\n <ion-input\n class=\"sign-in__input-password\"\n [formControl]=\"props.control\"\n [type]=\"hidePassword ? 'password' : 'text'\"\n [placeholder]=\"props.placeholder\"\n ></ion-input>\n <ion-button color=\"dark\" fill=\"clear\" (click)=\"hidePassword = !hidePassword\" size=\"small\">\n <ion-icon slot=\"icon-only\" [name]=\"hidePassword ? 'eye-off-outline' : 'eye-outline'\"></ion-icon>\n </ion-button>\n </div>\n `,\n styleUrls: ['./password-input.component.scss'],\n})\n/**\n * val-password-input\n *\n * A password input field with show/hide toggle, integrated with Angular forms.\n *\n * @example\n * <val-password-input [props]=\"{ control: myControl, placeholder: 'Enter password' }\"></val-password-input>\n *\n * @input props: InputMetadata - Configuration for the input (form control, placeholder, etc.)\n */\nexport class PasswordInputComponent implements OnInit {\n /**\n * Input configuration object.\n * @type {InputMetadata}\n * @property control - The Angular FormControl for the input.\n * @property placeholder - The placeholder text.\n */\n @Input() props: InputMetadata;\n\n hidePassword = true;\n\n constructor(icon: IconService) {}\n\n ngOnInit() {}\n}\n","import { Component, Input, OnInit, ViewChild } from '@angular/core';\nimport { NgOtpInputComponent, NgOtpInputConfig, NgOtpInputModule } from 'ng-otp-input';\nimport { InputMetadata } from '../../types';\n\n@Component({\n selector: 'val-pin-input',\n standalone: true,\n imports: [NgOtpInputModule],\n template: `\n <div class=\"otp\">\n <ng-otp-input [formCtrl]=\"props.control\" [config]=\"otpInputConfig\"></ng-otp-input>\n </div>\n `,\n styleUrls: ['./pin-input.component.scss'],\n})\n/**\n * val-pin-input\n *\n * A PIN code input using ng-otp-input, integrated with Angular forms.\n *\n * @example\n * <val-pin-input [props]=\"{ control: myControl }\"></val-pin-input>\n *\n * @input props: InputMetadata - Configuration for the PIN input (form control, etc.)\n */\nexport class PinInputComponent implements OnInit {\n @ViewChild(NgOtpInputComponent, { static: false }) pinCode: NgOtpInputComponent | undefined;\n\n /**\n * Input configuration object.\n * @type {InputMetadata}\n * @property control - The Angular FormControl for the PIN input.\n */\n @Input() props: InputMetadata;\n\n codeLength = 5;\n otpInputConfig: NgOtpInputConfig = {\n inputStyles: {\n 'font-size': '32px',\n width: '58px',\n height: '60px',\n },\n inputClass: 'otp-input-box',\n length: this.codeLength,\n allowNumbersOnly: true,\n };\n\n constructor() {}\n\n ngOnInit() {}\n\n reset() {\n if (this.pinCode) {\n this.pinCode.setValue('');\n }\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, Input, OnInit } from '@angular/core';\nimport { DisplayComponent } from '../../atoms/display/display.component';\nimport { TitleComponent } from '../../atoms/title/title.component';\nimport { TitleBlockMetada } from './types';\n\n@Component({\n selector: 'val-title-block',\n standalone: true,\n imports: [CommonModule, TitleComponent, DisplayComponent],\n template: `\n <div [ngClass]=\"['titles-container', props.position]\">\n <val-title\n *ngIf=\"props.aboveTitle\"\n [props]=\"{\n content: props.aboveTitle.content | uppercase,\n color: props.aboveTitle.color,\n bold: false,\n size: props.aboveTitle.size,\n }\"\n ></val-title>\n <val-display\n *ngIf=\"props.title\"\n [props]=\"{\n content: props.title.content,\n color: props.title.color,\n size: props.title.size,\n }\"\n ></val-display>\n <val-title\n style=\"margin-top: 16px;\"\n *ngIf=\"props.bellowTitle\"\n [props]=\"{\n content: props.bellowTitle.content,\n color: props.bellowTitle.color,\n bold: false,\n size: props.bellowTitle.size,\n thin: props.bellowTitle.thin,\n }\"\n ></val-title>\n </div>\n `,\n styleUrls: ['./title-block.component.scss'],\n})\n/**\n * val-title-block\n *\n * Displays a block of titles (above, main, below) with configurable styles and positions.\n *\n * @example\n * <val-title-block [props]=\"{ title: {...}, aboveTitle: {...}, bellowTitle: {...}, position: 'center' }\"></val-title-block>\n *\n * @input props: TitleBlockMetada - Configuration for the title block (title, aboveTitle, bellowTitle, position)\n */\nexport class TitleBlockComponent implements OnInit {\n @Input()\n props: TitleBlockMetada;\n\n constructor() {}\n\n ngOnInit() {}\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { ProgressBarComponent } from '../../atoms/progress-bar/progress-bar.component';\nimport { TextComponent } from '../../atoms/text/text.component';\nimport { TitleBlockComponent } from '../title-block/title-block.component';\nimport { ProgressStatusMetadata } from './types';\n\n//TODO: support automatic or manual interval for messages. Include the interval number as a parameter.\n@Component({\n selector: 'val-progress-status',\n standalone: true,\n imports: [TitleBlockComponent, ProgressBarComponent, TextComponent],\n template: `\n <div class=\"status-container\">\n <div class=\"title-container\">\n <val-title-block\n [props]=\"{\n position: 'center',\n aboveTitle: props.titles.aboveTitle,\n title: props.titles.title,\n bellowTitle: props.titles.bellowTitle,\n }\"\n ></val-title-block>\n </div>\n <div class=\"progress-bar-container\">\n <val-progress-bar\n [props]=\"{\n progress: props.progress,\n size: 'xlarge',\n color: props.color,\n rounded: true,\n type: 'determinate',\n buffer: 1,\n }\"\n ></val-progress-bar>\n </div>\n <div class=\"subtitle-container\">\n <div class=\"subtitle\" [class.blink]=\"blinking\">\n <val-text [props]=\"{ content: Content, color: 'medium', bold: false, size: props.size }\"></val-text>\n </div>\n </div>\n </div>\n `,\n styleUrls: ['./progress-status.component.scss'],\n})\n/**\n * val-progress-status\n *\n * Displays a progress bar with status messages and titles, useful for multi-step or loading processes.\n *\n * @example\n * <val-progress-status [props]=\"{ progress: 0.5, color: 'primary', size: 'medium', titles: {...}, messages: [...] }\"></val-progress-status>\n *\n * @input props: ProgressStatusMetadata - Configuration for the progress status (progress, color, size, titles, messages)\n */\nexport class ProgressStatusComponent implements OnInit {\n /**\n * Progress status configuration object.\n * @type {ProgressStatusMetadata}\n * @property progress - The progress value (0 to 1).\n * @property color - The color of the progress bar.\n * @property size - The size of the text and bar.\n * @property titles - Title block configuration.\n * @property messages - Array of status messages.\n */\n @Input()\n props: ProgressStatusMetadata;\n\n currentIndex = 0;\n blinking = false;\n\n constructor() {}\n\n ngOnInit() {\n setInterval(() => {\n this.blinking = !this.blinking;\n }, 1000);\n\n setInterval(() => {\n this.getNextMessage();\n }, 9000);\n }\n\n get Content(): string {\n return this.props.messages[this.currentIndex];\n }\n\n getNextMessage(): void {\n this.currentIndex = (this.currentIndex + 1) % this.props.messages.length;\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { BoxComponent } from '../../atoms/box/box.component';\nimport { HrefComponent } from '../../atoms/href/href.component';\nimport { TextComponent } from '../../atoms/text/text.component';\nimport { ButtonGroupComponent } from '../button-group/button-group.component';\nimport { PrompterMetadata } from './types';\n\n@Component({\n selector: 'val-prompter',\n standalone: true,\n imports: [CommonModule, BoxComponent, ButtonGroupComponent, TextComponent, HrefComponent],\n template: `\n <val-box\n class=\"teleprompter-container\"\n [props]=\"{ icon: '', bordered: props.bordered, color: props.color, leftBorder: false, padding: props.padding }\"\n (onClick)=\"clickHandler()\"\n >\n <div class=\"container\" [class.teleprompter-content]=\"props.teleprompter\" body>\n <div>\n <val-text\n [props]=\"{\n content: props.content,\n color: '',\n bold: true,\n size: props.size,\n }\"\n ></val-text>\n </div>\n @if (props.buttons || props.hrefs) {\n <div class=\"actions-container\">\n <val-button-group\n class=\"buttons-container\"\n [props]=\"{ buttons: props.buttons, position: 'right', columned: false }\"\n (onClick)=\"clickHandler($event)\"\n ></val-button-group>\n <val-href\n class=\"link\"\n *ngFor=\"let l of props.hrefs\"\n [props]=\"l\"\n (onClick)=\"clickHandler($event)\"\n ></val-href>\n </div>\n }\n </div>\n </val-box>\n `,\n styleUrls: ['./prompter.component.scss'],\n})\n/**\n * val-prompter\n *\n * Displays a prompt/info box with text, actions (buttons/links), and custom styles.\n *\n * @example\n * <val-prompter [props]=\"{ content: 'Message', buttons: [...], hrefs: [...], color: 'primary', size: 'medium' }\"></val-prompter>\n *\n * @input props: PrompterMetadata - Configuration for the prompter (content, buttons, hrefs, color, size, etc.)\n * @output onClick - Emits when an action is clicked\n */\nexport class PrompterComponent implements OnInit {\n /**\n * Prompter configuration object.\n * @type {PrompterMetadata}\n * @property content - The main text content.\n * @property buttons - Array of button configurations (optional).\n * @property hrefs - Array of link configurations (optional).\n * @property color - The background color of the box.\n * @property size - The size of the text and box.\n * @property bordered - Whether the box has a border.\n * @property padding - Custom padding for the box.\n * @property teleprompter - Whether to use teleprompter style (optional).\n */\n @Input()\n props: PrompterMetadata;\n\n @Output()\n onClick = new EventEmitter<string>();\n\n constructor() {}\n\n ngOnInit() {}\n\n clickHandler(token?: string) {\n this.onClick.emit(token);\n }\n}\n","import { NgFor } from '@angular/common';\nimport { Component, Input, OnInit } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { IonRadio, IonRadioGroup } from '@ionic/angular/standalone';\nimport { InputMetadata } from '../../types';\n\n@Component({\n selector: 'val-radio-input',\n standalone: true,\n imports: [NgFor, ReactiveFormsModule, IonRadioGroup, IonRadio],\n template: `\n <ion-radio-group [allowEmptySelection]=\"true\" [formControl]=\"props.control\">\n <ng-container *ngFor=\"let o of props.options\">\n <ion-radio [value]=\"o.id\">{{ o.name }}</ion-radio>\n <br />\n </ng-container>\n </ion-radio-group>\n `,\n styleUrls: ['./radio-input.component.scss'],\n})\n/**\n * val-radio-input\n *\n * A radio group input for selecting one option, integrated with Angular forms.\n *\n * @example\n * <val-radio-input [props]=\"{ control: myControl, options: [{ id: '1', name: 'Option 1' }] }\"></val-radio-input>\n *\n * @input props: InputMetadata - Configuration for the radio input (form control, options, etc.)\n */\nexport class RadioInputComponent implements OnInit {\n /**\n * Input configuration object.\n * @type {InputMetadata}\n * @property control - The Angular FormControl for the radio input.\n * @property options - The available options for the radio group.\n */\n @Input() props: InputMetadata;\n\n constructor() {}\n\n ngOnInit() {}\n}\n","/**\n * Removes diacritical marks (accents) from a string using Unicode normalization.\n * Useful for text search and comparison.\n *\n * @param text The input string\n * @returns The normalized string without diacritical marks\n *\n * @example\n * replaceSpecialChars('canción') // returns 'cancion'\n */\nexport const replaceSpecialChars = (text: string) =>\n text.normalize('NFD').replace(/[\\u0300-\\u036f]/g, '');\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { IonSearchbar } from '@ionic/angular/standalone';\n\n@Component({\n selector: 'val-searchbar',\n standalone: true,\n imports: [IonSearchbar],\n template: `\n <ion-searchbar\n mode=\"ios\"\n debounce=\"500\"\n placeholder=\"Búsqueda\"\n [disabled]=\"disabled\"\n showCancelButton=\"focus\"\n cancelButtonText=\"Cancelar\"\n (ionInput)=\"onSearch($event)\"\n (ionBlur)=\"onBlur()\"\n (ionFocus)=\"onFocus()\"\n >\n </ion-searchbar>\n `,\n styleUrls: ['./searchbar.component.scss'],\n})\n/**\n * val-searchbar\n *\n * A search bar component with debounce and event emitters for filtering, focus, and blur.\n *\n * @example\n * <val-searchbar (filterEvent)=\"onFilter($event)\" (focusEvent)=\"onFocus()\" (blurEvent)=\"onBlur()\"></val-searchbar>\n *\n * @input disabled - Whether the searchbar is disabled.\n * @output filterEvent - Emits the search term on input.\n * @output focusEvent - Emits when the searchbar gains focus.\n * @output blurEvent - Emits when the searchbar loses focus.\n */\nexport class SearchbarComponent {\n /**\n * Whether the searchbar is disabled.\n */\n @Input() disabled: boolean;\n\n /**\n * Emits the search term on input.\n */\n @Output() filterEvent = new EventEmitter<string>();\n\n /**\n * Emits when the searchbar gains focus.\n */\n @Output() focusEvent = new EventEmitter<void>();\n\n /**\n * Emits when the searchbar loses focus.\n */\n @Output() blurEvent = new EventEmitter<void>();\n\n constructor() {}\n\n onSearch($event: any) {\n const searchTerm = $event.detail.value;\n this.filterEvent.emit(searchTerm);\n }\n\n onFocus() {\n this.focusEvent.emit();\n }\n\n onBlur() {\n this.blurEvent.emit();\n }\n}\n","import { CommonModule } from '@angular/common';\nimport {\n ChangeDetectorRef,\n Component,\n inject,\n Input,\n OnChanges,\n OnDestroy,\n SimpleChanges,\n ViewChild,\n} from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { IonicModule, IonModal } from '@ionic/angular';\nimport { Subscription } from 'rxjs';\nimport { IconService } from '../../../services/icons.service';\nimport { replaceSpecialChars } from '../../../shared/utils/text';\nimport { InputMetadata, InputOption } from '../../types';\nimport { SearchbarComponent } from '../searchbar/searchbar.component';\n\n@Component({\n selector: 'val-select-search',\n standalone: true,\n imports: [CommonModule, IonicModule, FormsModule, SearchbarComponent, ReactiveFormsModule],\n template: `\n <ion-input\n type=\"text\"\n [value]=\"displayValue\"\n [placeholder]=\"props?.placeholder || placeholder\"\n readonly\n (mousedown)=\"preventDefaultBehavior($event)\"\n />\n\n <ion-input style=\"position: absolute;\" [formControl]=\"props.control\" type=\"hidden\"></ion-input>\n\n <ion-modal #modal trigger=\"open-modal\" [initialBreakpoint]=\"0.75\" [breakpoints]=\"[0, 0.5, 0.75, 1]\">\n <ng-template>\n <ion-header>\n <ion-toolbar>\n <ion-title>{{ label }}</ion-title>\n <ion-buttons slot=\"end\">\n <ion-button (click)=\"cancelModal()\">Cerrar</ion-button>\n </ion-buttons>\n </ion-toolbar>\n <ion-toolbar>\n <val-searchbar (filterEvent)=\"onFilter($event)\" (focusEvent)=\"onFocus()\" (blurEvent)=\"onBlur()\" />\n </ion-toolbar>\n </ion-header>\n <ion-content>\n <ion-list>\n <ion-item *ngFor=\"let item of filteredItems\" button (click)=\"selectItem(item)\" detail=\"false\">\n <ion-label>{{ item[labelProperty] }}</ion-label>\n <ion-icon *ngIf=\"isItemSelected(item)\" name=\"checkmark-outline\" slot=\"end\" color=\"primary\"></ion-icon>\n </ion-item>\n <ion-item *ngIf=\"filteredItems.length === 0\" lines=\"none\">\n <ion-label color=\"dark\">No se encontraron resultados</ion-label>\n </ion-item>\n </ion-list>\n </ion-content>\n </ng-template>\n </ion-modal>\n `,\n styles: [\n `\n ion-header {\n padding: 8px 8px 0px 8px;\n }\n `,\n ],\n})\n/**\n * val-select-search\n *\n * A searchable select/dropdown input with modal and filtering, integrated with Angular forms.\n *\n * @example\n * <val-select-search [props]=\"{ control: myControl, label: 'Choose', options: [{ id: '1', name: 'Option 1' }] }\"></val-select-search>\n *\n * @input props: InputMetadata - Configuration for the select input (form control, label, options, etc.)\n */\nexport class SelectSearchComponent implements OnChanges, OnDestroy {\n @ViewChild('modal') modal!: IonModal;\n\n @Input() label: string = 'Seleccionar';\n @Input() labelProperty: string = 'name';\n @Input() valueProperty: string = 'id';\n @Input() multiple: boolean = false;\n @Input() placeholder: string = 'Seleccione una opción';\n /**\n * Input configuration object.\n * @type {InputMetadata}\n * @property control - The Angular FormControl for the select input.\n * @property label - The label for the select.\n * @property options - The available options for the select.\n * @property placeholder - The placeholder text.\n */\n @Input() props: InputMetadata;\n\n icon = inject(IconService);\n private changeDetector = inject(ChangeDetectorRef);\n\n searchTerm: string = '';\n filteredItems: InputOption[] = [];\n selectedItems: InputOption[] = [];\n displayValue: string = '';\n\n private previousOptions: any[] = [];\n private isProcessingChanges = false;\n private valueChangesSubscription?: Subscription;\n\n ngOnInit() {\n this.initializeItems();\n this.syncControlValueWithSelectedItems();\n this.updateDisplayValue();\n this.subscribeToValueChanges();\n }\n\n ngOnDestroy() {\n // Limpiar suscripciones para evitar memory leaks\n if (this.valueChangesSubscription) {\n this.valueChangesSubscription.unsubscribe();\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n // Evitar bucles infinitos\n if (this.isProcessingChanges) {\n return;\n }\n\n // Cuando cambia props o props.options\n if (changes['props']) {\n try {\n this.isProcessingChanges = true;\n\n // Desuscribirse del antiguo control si existe\n if (this.valueChangesSubscription) {\n this.valueChangesSubscription.unsubscribe();\n }\n\n if (this.props?.options) {\n // Verificar si las opciones han cambiado realmente\n const optionsChanged = !this.areOptionsEqual(this.previousOptions, this.props.options);\n\n if (optionsChanged) {\n this.previousOptions = [...this.props.options];\n this.initializeItems();\n }\n }\n\n // Sincronizar con el nuevo control si existe\n this.syncControlValueWithSelectedItems();\n this.updateDisplayValue();\n\n // Suscribirse al nuevo control\n this.subscribeToValueChanges();\n } finally {\n this.isProcessingChanges = false;\n }\n }\n }\n\n ionViewWillEnter(): void {\n if (this.isProcessingChanges) {\n return;\n }\n\n try {\n this.isProcessingChanges = true;\n this.initializeItems();\n this.syncControlValueWithSelectedItems();\n this.updateDisplayValue();\n this.subscribeToValueChanges();\n } finally {\n this.isProcessingChanges = false;\n }\n }\n\n // Suscribirse a cambios en el FormControl\n private subscribeToValueChanges() {\n if (!this.props?.control) return;\n\n this.valueChangesSubscription = this.props.control.valueChanges.subscribe(value => {\n if (this.isProcessingChanges) return;\n\n try {\n this.isProcessingChanges = true;\n this.syncControlValueWithSelectedItems();\n this.updateDisplayValue();\n } finally {\n this.isProcessingChanges = false;\n }\n });\n }\n\n // Compara si dos arrays de opciones son iguales\n private areOptionsEqual(prevOptions: any[], newOptions: any[]): boolean {\n // PERF: Use reference equality first for fast path\n if (prevOptions === newOptions) return true;\n if (!prevOptions || !newOptions) return prevOptions === newOptions;\n if (prevOptions.length !== newOptions.length) return false;\n // Only compare valueProperty for equality\n for (let i = 0; i < prevOptions.length; i++) {\n if (prevOptions[i][this.valueProperty] !== newOptions[i][this.valueProperty]) {\n return false;\n }\n }\n return true;\n }\n\n private initializeItems(): void {\n // PERF: Avoid unnecessary array copies\n this.filteredItems = this.props?.options || [];\n }\n\n private syncControlValueWithSelectedItems(): void {\n if (!this.props?.control) {\n this.selectedItems = [];\n return;\n }\n const controlValue = this.props.control.value;\n if (controlValue === null || controlValue === undefined) {\n this.selectedItems = [];\n return;\n }\n // PERF: Use a Map for faster lookup if options are large\n if (this.props.options && this.props.options.length > 0) {\n const map = new Map(this.props.options.map(opt => [opt[this.valueProperty], opt]));\n const selectedOption = map.get(controlValue);\n this.selectedItems = selectedOption ? [selectedOption] : [];\n } else {\n this.selectedItems = [];\n }\n }\n\n onFilter(event) {\n // If no search term, show all options\n if (!event || event.trim() === '') {\n this.filteredItems = this.props?.options ? [...this.props.options] : [];\n this.changeDetector.detectChanges();\n return;\n }\n\n // If no options, nothing to filter\n if (!this.props?.options || this.props.options.length === 0) {\n this.filteredItems = [];\n this.changeDetector.detectChanges();\n return;\n }\n\n // PERF: Avoid repeated replaceSpecialChars and toLowerCase for each option\n const search = replaceSpecialChars(event.toLowerCase());\n this.filteredItems = this.props.options.filter(element => {\n // Only use labelProperty and valueProperty for filtering (faster)\n const label = element[this.labelProperty]\n ? replaceSpecialChars(String(element[this.labelProperty]).toLowerCase())\n : '';\n const value = element[this.valueProperty]\n ? replaceSpecialChars(String(element[this.valueProperty]).toLowerCase())\n : '';\n return label.includes(search) || value.includes(search);\n });\n this.changeDetector.detectChanges();\n }\n\n onFocus() {\n console.log('onFocus');\n }\n\n onBlur() {\n console.log('onBlur');\n }\n\n openModal() {\n if (this.modal) {\n this.modal.present();\n }\n }\n\n preventDefaultBehavior(event: MouseEvent) {\n event.preventDefault();\n event.stopPropagation();\n this.openModal();\n }\n\n cancelModal() {\n // Reset filter and show all options when closing modal\n this.searchTerm = '';\n this.filteredItems = this.props?.options ? [...this.props.options] : [];\n this.changeDetector.detectChanges();\n if (this.modal) {\n this.modal.dismiss();\n }\n }\n\n selectItem(item: any) {\n if (this.multiple) {\n const index = this.selectedItems.findIndex(\n selectedItem => selectedItem[this.valueProperty] === item[this.valueProperty]\n );\n\n if (index === -1) {\n this.selectedItems.push(item);\n } else {\n this.selectedItems.splice(index, 1);\n }\n } else {\n this.selectedItems = [item];\n this.cancelModal();\n }\n\n this.updateDisplayValue();\n this.applyChanges();\n }\n\n isItemSelected(item: any): boolean {\n return this.selectedItems.some(selectedItem => selectedItem[this.valueProperty] === item[this.valueProperty]);\n }\n\n updateDisplayValue() {\n if (this.selectedItems.length === 0) {\n this.displayValue = '';\n return;\n }\n\n if (this.multiple) {\n if (this.selectedItems.length === 1) {\n this.displayValue = this.selectedItems[0][this.labelProperty];\n } else {\n this.displayValue = `${this.selectedItems.length} elementos seleccionados`;\n }\n } else {\n this.displayValue = this.selectedItems[0][this.labelProperty];\n }\n }\n\n applyChanges() {\n if (!this.props?.control) {\n return;\n }\n\n try {\n this.isProcessingChanges = true;\n\n if (this.selectedItems.length > 0) {\n this.props.control.setValue(this.selectedItems[0][this.valueProperty]);\n } else {\n this.props.control.setValue(null);\n }\n\n this.props.control.markAsDirty();\n this.props.control.updateValueAndValidity();\n } finally {\n this.isProcessingChanges = false;\n }\n }\n\n // Método público para reiniciar el componente\n reset() {\n this.selectedItems = [];\n this.displayValue = '';\n if (this.props?.control) {\n this.props.control.setValue(null);\n }\n this.changeDetector.detectChanges();\n }\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { IonSelect, IonSelectOption } from '@ionic/angular/standalone';\nimport { InputMetadata } from '../../types';\n\n@Component({\n selector: 'val-select-input',\n standalone: true,\n imports: [ReactiveFormsModule, IonSelect, IonSelectOption],\n template: `\n <ion-select\n [formControl]=\"props.control\"\n [label]=\"props.label\"\n [interfaceOptions]=\"customModalOptions\"\n interface=\"modal\"\n [placeholder]=\"[props.placeholder]\"\n cancelText=\"Cancelar\"\n okText=\"Ok\"\n >\n @for (o of props.options; track o.id) {\n <ion-select-option [value]=\"o.id\">{{ o.name }}</ion-select-option>\n }\n </ion-select>\n `,\n styleUrls: ['./select-input.component.scss'],\n})\n/**\n * val-select-input\n *\n * A select/dropdown input integrated with Angular forms, using Ionic's select component.\n *\n * @example\n * <val-select-input [props]=\"{ control: myControl, label: 'Choose', options: [{ id: '1', name: 'Option 1' }] }\"></val-select-input>\n *\n * @input props: InputMetadata - Configuration for the select input (form control, label, options, etc.)\n */\nexport class SearchSelectorComponent implements OnInit {\n /**\n * Input configuration object.\n * @type {InputMetadata}\n * @property control - The Angular FormControl for the select input.\n * @property label - The label for the select.\n * @property options - The available options for the select.\n * @property placeholder - The placeholder text.\n */\n @Input() props: InputMetadata;\n\n customModalOptions = {\n header: 'Seleccione',\n breakpoints: [0, 0.6],\n initialBreakpoint: 0.6,\n };\n\n constructor() {}\n\n ngOnInit() {\n this.customModalOptions.header = this.props.label;\n }\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { IonInput } from '@ionic/angular/standalone';\nimport { ComponentStates, InputMetadata } from '../../types';\n\n@Component({\n selector: 'val-text-input',\n standalone: true,\n imports: [ReactiveFormsModule, IonInput],\n template: ` <ion-input [formControl]=\"props.control\" type=\"text\" [placeholder]=\"props.placeholder\" /> `,\n styleUrls: ['./text-input.component.scss'],\n})\n/**\n * val-text-input\n *\n * A text input field integrated with Angular forms.\n *\n * @example\n * <val-text-input [props]=\"{ control: myControl, placeholder: 'Enter text', ... }\"></val-text-input>\n *\n * @input props: InputMetadata - Configuration for the input (form control, placeholder, label, etc.)\n */\nexport class TextInputComponent implements OnInit {\n /**\n * Input configuration object.\n * @type {InputMetadata}\n * @property control - The Angular FormControl for the input.\n * @property placeholder - The placeholder text.\n * @property label, name, hint, type, validators, etc. - See InputMetadata for all options.\n */\n @Input() props: InputMetadata;\n\n states = ComponentStates;\n\n constructor() {}\n\n ngOnInit() {}\n}\n","export const LANG = 'LANG';\nexport const THEME = 'THEME';\n","/**\n * Utility service for interacting with browser localStorage in a type-safe way.\n * Provides static methods for setting, getting, removing, and clearing items.\n */\nexport class LocalStorageService {\n /**\n * Stores a value in localStorage under the given reference key.\n * @param reference The key to store the value under\n * @param value The value to store\n */\n static set<T>(reference: string, value: T): void {\n localStorage.setItem(reference, JSON.stringify(value));\n }\n\n /**\n * Retrieves a value from localStorage by key.\n * @param reference The key to retrieve\n * @returns The parsed value\n */\n static get<T>(reference: string): T {\n const value = localStorage.getItem(reference);\n return JSON.parse(value) as T;\n }\n\n /**\n * Removes an item from localStorage by key.\n * @param reference The key to remove\n */\n static remove(reference: string): void {\n localStorage.removeItem(reference);\n }\n\n /**\n * Clears all items from localStorage.\n */\n static clear() {\n localStorage.clear();\n }\n}\n","/**\n * Service for managing application themes (light, dark, auto).\n * Handles user preferences, system theme detection, and theme toggling.\n * Uses localStorage to persist the selected theme.\n */\n\nimport { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { THEME } from '../shared/constants/storage';\nimport { LocalStorageService } from './local-storage.service';\n\nexport enum ThemeOption {\n LIGHT = 'light',\n DARK = 'dark',\n AUTO = 'auto',\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ThemeService {\n /**\n * Indicates if the light theme is active.\n */\n lightToggle = false;\n /**\n * Indicates if the dark theme is active.\n */\n darkToggle = false;\n /**\n * Indicates if the auto theme is active.\n */\n autoToggle = false;\n /**\n * The current selected theme option.\n */\n currentOption = ThemeOption.AUTO;\n /**\n * Enum with all available theme options.\n */\n themeOptions = ThemeOption;\n /**\n * Whether the system prefers dark mode.\n */\n prefersDark = false;\n /**\n * The default theme option.\n */\n default = ThemeOption.AUTO;\n /**\n * Observable for the current theme.\n */\n theme: BehaviorSubject<ThemeOption>;\n\n constructor() {\n const current = LocalStorageService.get<ThemeOption>(THEME);\n console.log('💡 ThemeConfig current::: ', current);\n this.theme = new BehaviorSubject<ThemeOption>(current || this.default);\n this.currentOption = this.Theme;\n console.log('💡 ThemeConfig this.currentOption::: ', this.currentOption);\n this.toggleUserPreference(this.currentOption);\n\n const prefersDarkQuery = window.matchMedia('(prefers-color-scheme: dark)');\n this.prefersDark = prefersDarkQuery.matches;\n this.handleAutoConfiguration();\n\n prefersDarkQuery.addEventListener('change', mediaQuery => {\n console.log('💡 ThemeConfig addEventListener change::: ', mediaQuery);\n this.prefersDark = mediaQuery.matches;\n this.handleAutoConfiguration();\n });\n }\n\n private handleAutoConfiguration() {\n if (this.prefersDark && this.currentOption === ThemeOption.AUTO) {\n console.log('💡 ThemeConfig prefersDark::: ', this.prefersDark);\n this.toggleUserPreference(ThemeOption.AUTO);\n }\n if (!this.prefersDark && this.currentOption === ThemeOption.AUTO) {\n console.log('💡 ThemeConfig prefersDark::: ', this.prefersDark);\n this.toggleUserPreference(ThemeOption.AUTO);\n }\n }\n\n private handleDarkPreference() {\n this.toggleTheme(ThemeOption.DARK, true);\n this.toggleTheme(ThemeOption.LIGHT, false);\n }\n\n private handleLightPreference() {\n this.toggleTheme(ThemeOption.LIGHT, true);\n this.toggleTheme(ThemeOption.DARK, false);\n }\n\n /**\n * Returns true if the system prefers dark mode.\n */\n get IsDark(): boolean {\n return this.prefersDark;\n }\n\n /**\n * Gets the current theme option.\n */\n get Theme(): ThemeOption {\n return this.theme.value;\n }\n\n /**\n * Sets the current theme option and persists it.\n */\n set Theme(theme: ThemeOption) {\n this.theme.next(theme);\n LocalStorageService.set<ThemeOption>(THEME, theme);\n }\n\n /**\n * Toggles a theme class on the document body.\n * @param name The theme name\n * @param shouldAdd Whether to add or remove the class\n */\n toggleTheme(name: string, shouldAdd: boolean) {\n console.log('toggleTheme::: ', name, shouldAdd);\n document.body.classList.toggle(name, shouldAdd);\n }\n\n /**\n * Sets the user theme preference and updates toggles and theme classes.\n * @param option The selected theme option\n */\n toggleUserPreference(option: ThemeOption) {\n this.currentOption = option;\n this.Theme = option;\n this.lightToggle = option === ThemeOption.LIGHT;\n this.darkToggle = option === ThemeOption.DARK;\n this.autoToggle = option === ThemeOption.AUTO;\n\n switch (option) {\n case ThemeOption.LIGHT:\n this.handleLightPreference();\n break;\n case ThemeOption.DARK:\n this.handleDarkPreference();\n break;\n case ThemeOption.AUTO:\n if (this.prefersDark) {\n this.handleDarkPreference();\n } else {\n this.handleLightPreference();\n }\n break;\n }\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, inject, Input } from '@angular/core';\nimport { ThemeService } from '../../../services/theme.service';\nimport { resolveColor } from '../../../shared/utils/styles';\nimport { ButtonGroupComponent } from '../button-group/button-group.component';\nimport { TitleBlockComponent } from '../title-block/title-block.component';\nimport { LayeredCardMetadata } from './types';\n\n@Component({\n selector: 'layered-card',\n standalone: true,\n imports: [CommonModule, ButtonGroupComponent, TitleBlockComponent],\n template: `\n <div\n class=\"fun-card\"\n [class.big-space]=\"props.bigSpace\"\n [class.hoverable]=\"props.hoverable\"\n [class.with-opacity]=\"props.withOpacity\"\n [class.layered]=\"props.mode === 'layered'\"\n [class.poster]=\"props.mode === 'poster'\"\n [ngStyle]=\"{\n background: theme.IsDark ? 'var(--ion-background-color)' : color(props.background),\n minHeight: props.withMin ? '340px' : 'auto',\n }\"\n >\n @if (props.mode === 'poster') {\n <img class=\"poster-image\" [class.dark]=\"props.dark\" alt=\"image\" [src]=\"props.image\" />\n }\n @if (props.mode === 'layered') {\n <img class=\"layer-image\" [class.dark]=\"props.dark\" alt=\"image\" [src]=\"props.image\" />\n }\n\n <section>\n <val-title-block [props]=\"props.content\" />\n @if (props.actions) {\n <val-button-group style=\"display:block; margin-top: 16px;\" [props]=\"props.actions\" />\n }\n </section>\n </div>\n `,\n styleUrl: './layered-card.component.scss',\n})\nexport class LayeredCardComponent {\n theme = inject(ThemeService);\n\n @Input()\n props: LayeredCardMetadata;\n\n color(background) {\n if (!background) {\n return '';\n }\n return resolveColor(background);\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { BoxComponent } from '../../atoms/box/box.component';\nimport { ButtonGroupComponent } from '../../molecules/button-group/button-group.component';\nimport { TitleBlockComponent } from '../../molecules/title-block/title-block.component';\nimport { BannerMetadata } from './types';\n\n@Component({\n selector: 'val-banner',\n standalone: true,\n imports: [CommonModule, BoxComponent, TitleBlockComponent, ButtonGroupComponent],\n template: `\n <val-box\n [props]=\"{\n icon: props.closable ? 'close-outline' : '',\n bordered: props.bordered,\n color: '',\n padding: props.padding,\n }\"\n (onClick)=\"closeHandler()\"\n >\n <div [ngClass]=\"['content-container', props.mode, props.alignment]\" body>\n <val-title-block\n [props]=\"{\n position: props.content.position,\n aboveTitle: props.content.aboveTitle,\n title: props.content.title,\n bellowTitle: props.content.bellowTitle,\n }\"\n ></val-title-block>\n @if (props.actions) {\n <val-button-group\n [ngClass]=\"['buttons-container', props.mode, props.alignment]\"\n [props]=\"props.actions\"\n (onClick)=\"clickHandler($event)\"\n ></val-button-group>\n }\n </div>\n </val-box>\n `,\n styleUrls: ['./banner.component.scss'],\n})\n/**\n * val-banner\n *\n * Displays a banner with title block, actions, and optional close button.\n *\n * @example\n * <val-banner [props]=\"{ content: {...}, actions: {...}, closable: true, bordered: true, mode: 'center', alignment: 'center', padding: '8px' }\" (onClick)=\"handler($event)\" (onClose)=\"closeHandler()\"></val-banner>\n *\n * @input props: BannerMetadata - Configuration for the banner (content, actions, closable, bordered, mode, alignment, padding)\n * @output onClick - Emits when an action is clicked\n * @output onClose - Emits when the banner is closed\n */\nexport class BannerComponent implements OnInit {\n @Input()\n props: BannerMetadata;\n\n @Output()\n onClick = new EventEmitter<string>();\n\n @Output()\n onClose = new EventEmitter();\n\n constructor() {}\n\n ngOnInit() {}\n\n clickHandler(token?: string) {\n this.onClick.emit(token);\n }\n\n closeHandler() {\n this.onClose.emit();\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { NavController } from '@ionic/angular';\nimport {\n IonButton,\n IonButtons,\n IonIcon,\n IonMenuButton,\n IonText,\n IonTitle,\n IonToolbar,\n} from '@ionic/angular/standalone';\nimport { addIcons } from 'ionicons';\nimport { chevronBackOutline } from 'ionicons/icons';\nimport { IconService } from '../../../services/icons.service';\nimport { AvatarComponent } from '../../atoms/avatar/avatar.component';\nimport { ImageComponent } from '../../atoms/image/image.component';\nimport { ToolbarAction, ToolbarActionType } from '../../types';\nimport { ToolbarMetadata } from './types';\n\n/**\n * ToolbarComponent\n *\n * Componente de barra de herramientas reutilizable para encabezados y pies de página.\n * Permite acciones, botón de retroceso, menú y personalización de colores y título.\n *\n * @example\n * <val-toolbar [props]=\"{ title: 'Mi App', withBack: true, actions: [...] }\" (onClick)=\"handleToolbarAction($event)\"></val-toolbar>\n *\n * @input props {ToolbarMetadata} - Metadatos de la barra de herramientas.\n * @output onClick - Emite el token de la acción clicada.\n */\n@Component({\n selector: 'val-toolbar',\n standalone: true,\n imports: [\n CommonModule,\n IonToolbar,\n IonButtons,\n IonButton,\n IonIcon,\n IonText,\n IonTitle,\n AvatarComponent,\n ImageComponent,\n IonMenuButton,\n ],\n template: `\n <ion-toolbar [color]=\"props.color\" [class.background]=\"props.color === 'background'\">\n <ng-container *ngIf=\"props.withBack\">\n <ion-buttons class=\"left-buttons\" slot=\"start\" *ngIf=\"props.withBack\">\n <ion-button fill=\"clear\" (click)=\"goBack()\" [color]=\"props.textColor\" style=\"margin-left: 8px;\">\n <ion-icon name=\"chevron-back-outline\" [slot]=\"props.backText ? 'start' : 'icon-only'\"></ion-icon>\n <ion-text *ngIf=\"props.backText\">{{ props.backText }}</ion-text>\n </ion-button>\n </ion-buttons>\n </ng-container>\n <ng-container *ngIf=\"props.withActions\">\n <ion-buttons slot=\"end\" *ngIf=\"someInRight() || props.withMenu\">\n <ng-container *ngFor=\"let action of rightActions()\">\n <ion-button *ngIf=\"action.type === actionTypes.ICON\" (click)=\"clickHandler(action.token)\">\n <ion-icon slot=\"icon-only\" [name]=\"action.description\" [color]=\"props.textColor\"></ion-icon>\n </ion-button>\n <val-avatar\n *ngIf=\"action.type === actionTypes.AVATAR\"\n [props]=\"{ size: 'small', image: action.description, default: '' }\"\n (onClick)=\"clickHandler(action.token)\"\n ></val-avatar>\n <val-image\n *ngIf=\"action.type === actionTypes.IMAGE\"\n [props]=\"action.image\"\n (click)=\"clickHandler(action.token)\"\n ></val-image>\n <ion-button\n [color]=\"props.textColor\"\n *ngIf=\"action.type === actionTypes.BUTTON\"\n (click)=\"clickHandler(action.token)\"\n >{{ action.description }}</ion-button\n >\n </ng-container>\n @if (props.withMenu) {\n <ion-menu-button color=\"dark\"></ion-menu-button>\n }\n </ion-buttons>\n <ion-buttons slot=\"start\" *ngIf=\"someInLeft()\" style=\"padding-left: 4px;\">\n <ng-container *ngFor=\"let action of leftActions()\">\n <ion-button *ngIf=\"action.type === actionTypes.ICON\" (click)=\"clickHandler(action.token)\">\n <ion-icon slot=\"icon-only\" [name]=\"action.description\" [color]=\"props.textColor\"></ion-icon>\n </ion-button>\n <val-avatar\n *ngIf=\"action.type === actionTypes.AVATAR\"\n [props]=\"{ size: 'small', image: action.description, default: '' }\"\n (onClick)=\"clickHandler(action.token)\"\n ></val-avatar>\n <val-image\n *ngIf=\"action.type === actionTypes.IMAGE\"\n [props]=\"action.image\"\n (click)=\"clickHandler(action.token)\"\n ></val-image>\n <ion-button *ngIf=\"action.type === actionTypes.BUTTON\" (click)=\"clickHandler(action.token)\">{{\n action.description\n }}</ion-button>\n </ng-container>\n </ion-buttons>\n </ng-container>\n <ion-title *ngIf=\"props.title\" [color]=\"props.textColor\">{{ props.title }}</ion-title>\n <!-- experimental -->\n <ng-content select=\"[toolbar-bottom]\"></ng-content>\n </ion-toolbar>\n `,\n styleUrls: ['./toolbar.component.scss'],\n})\nexport class ToolbarComponent implements OnInit {\n /**\n * Metadatos de la barra de herramientas.\n */\n @Input()\n props: ToolbarMetadata;\n\n /**\n * Evento emitido al hacer click en una acción o botón de la barra.\n */\n @Output()\n onClick = new EventEmitter<string>();\n\n actionTypes = ToolbarActionType;\n\n constructor(\n private navCtrl: NavController,\n icon: IconService\n ) {\n addIcons({ chevronBackOutline });\n }\n\n ngOnInit() {}\n\n /**\n * Emite el token de la acción clicada.\n * @param token Token de la acción\n */\n clickHandler(token?: string) {\n this.onClick.emit(token);\n }\n\n /**\n * Navega hacia atrás usando NavController.\n */\n goBack() {\n this.navCtrl.back();\n }\n\n /**\n * Determina si hay acciones a la derecha.\n */\n someInRight(): boolean {\n return !!this.props.actions.find(x => x.position === 'right');\n }\n\n /**\n * Determina si hay acciones a la izquierda.\n */\n someInLeft(): boolean {\n return !!this.props.actions.find(x => x.position === 'left');\n }\n\n /**\n * Devuelve las acciones de la derecha.\n */\n rightActions(): ToolbarAction[] {\n return this.props.actions.filter(x => x.position === 'right');\n }\n\n /**\n * Devuelve las acciones de la izquierda.\n */\n leftActions(): ToolbarAction[] {\n return this.props.actions.filter(x => x.position === 'left');\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { IonFooter } from '@ionic/angular/standalone';\nimport { ToolbarComponent } from '../toolbar/toolbar.component';\nimport { FooterMetadata } from './types';\n\n/**\n * FooterComponent\n *\n * Componente de pie de página reutilizable para aplicaciones Ionic/Angular.\n * Permite mostrar una barra de herramientas (toolbar) y contenido adicional.\n *\n * @example\n * <val-footer [props]=\"footerProps\" (onClick)=\"handleFooterAction($event)\">\n * <div extra>Contenido extra</div>\n * </val-footer>\n *\n * @input props {FooterMetadata} - Metadatos del pie de página y su toolbar.\n * @output onClick - Emite el token de la acción clicada en la toolbar.\n */\n@Component({\n selector: 'val-footer',\n standalone: true,\n imports: [CommonModule, IonFooter, ToolbarComponent],\n template: `\n <ion-footer\n [class.ion-no-border]=\"!props.bordered\"\n [translucent]=\"props.translucent\"\n [class.background]=\"props.toolbar.color === 'background'\"\n >\n <val-toolbar\n *ngIf=\"props.toolbar.title || props.toolbar.withActions || props.toolbar.withBack\"\n [props]=\"props.toolbar\"\n (onClick)=\"clickHandler($event)\"\n ></val-toolbar>\n <ng-content select=\"[extra]\"></ng-content>\n </ion-footer>\n `,\n styleUrls: ['./footer.component.scss'],\n})\nexport class FooterComponent implements OnInit {\n /**\n * Metadatos del pie de página y su toolbar.\n */\n @Input()\n props: FooterMetadata;\n\n /**\n * Evento emitido al hacer click en una acción de la toolbar.\n */\n @Output()\n onClick = new EventEmitter<string>();\n\n constructor() {}\n\n ngOnInit() {}\n\n /**\n * Emite el token de la acción clicada en la toolbar.\n * @param token Token de la acción\n */\n clickHandler(token?: string) {\n this.onClick.emit(token);\n }\n}\n","import { ValidatorFn, Validators } from '@angular/forms';\n\nexport const maxLength = (\n field: string,\n max: number\n): { validator: ValidatorFn; error: string } => {\n return {\n validator: Validators.maxLength(max),\n error: `El campo ${field} no debe superar los ${max} caracteres.`,\n };\n};\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { ButtonGroupComponent } from '../../../molecules/button-group/button-group.component';\nimport { ButtonMetadata, ComponentStates, FormMetadata, FormSubmit } from '../../../types';\nimport { FooterComponent } from '../../footer/footer.component';\n\n@Component({\n selector: 'val-form-footer',\n standalone: true,\n imports: [FooterComponent, ButtonGroupComponent],\n template: `\n <val-footer\n [props]=\"{\n bordered: false,\n translucent: false,\n toolbar: {\n title: '',\n actions: [],\n color: 'background',\n withBack: false,\n withActions: false,\n },\n }\"\n >\n <val-button-group\n extra\n [props]=\"{ buttons: actions, position: 'center', columned: false }\"\n (onClick)=\"submitHandler($event)\"\n ></val-button-group>\n </val-footer>\n `,\n styleUrls: ['./form-footer.component.scss'],\n})\nexport class FormFooterComponent implements OnInit {\n @Input()\n props: { form: FormGroup; data: FormMetadata };\n\n @Output()\n onSubmit = new EventEmitter<FormSubmit>();\n\n constructor() {}\n\n ngOnInit() {}\n\n async submitHandler(token?: string) {\n this.onSubmit.emit({ fields: this.props.form.value, token });\n }\n\n get actions(): ButtonMetadata[] {\n if (!this.props.form) {\n return [];\n }\n\n if (this.props.form.valid) {\n this.props.data.actions.state = ComponentStates.ENABLED;\n }\n\n if (this.props.data.state === ComponentStates.WORKING) {\n this.props.data.actions.state = ComponentStates.WORKING;\n }\n\n if (this.props.data.state === ComponentStates.ENABLED) {\n this.props.data.actions.state = ComponentStates.ENABLED;\n }\n\n if (this.props.data.state === ComponentStates.DISABLED) {\n this.props.data.actions.state = ComponentStates.DISABLED;\n }\n\n return [this.props.data.actions];\n }\n}\n","import { ElementRef } from '@angular/core';\n\n/**\n * Scrolls smoothly to the top of the element with the given id.\n * @param id The id of the element to scroll to\n */\nexport const goToTop = (id: string): void => {\n const element = document.getElementById(id);\n if (element) {\n element.scrollIntoView({\n block: 'start',\n inline: 'nearest',\n behavior: 'smooth',\n });\n }\n};\n\n/**\n * Checks if the bottom of the given ElementRef is within the viewport.\n * Useful for determining if a form or element is fully visible.\n * @param elementRef The Angular ElementRef to check\n * @returns True if the element's bottom is at or above the window's bottom\n */\nexport const isAtEnd = (elementRef: ElementRef): boolean => {\n const formElement = elementRef.nativeElement;\n const rect = formElement.getBoundingClientRect();\n const windowHeight = window.innerHeight;\n return rect.bottom <= windowHeight;\n};\n","import { CommonModule } from '@angular/common';\nimport { Component, ElementRef, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { FormBuilder, FormControl, FormGroup, ReactiveFormsModule } from '@angular/forms';\nimport { Subscription } from 'rxjs';\nimport { isAtEnd } from '../../../shared/utils/dom';\nimport { DisplayComponent } from '../../atoms/display/display.component';\nimport { DividerComponent } from '../../atoms/divider/divider.component';\nimport { TitleComponent } from '../../atoms/title/title.component';\nimport { ButtonGroupComponent } from '../../molecules/button-group/button-group.component';\nimport { CheckInputComponent } from '../../molecules/check-input/check-input.component';\nimport { CommentInputComponent } from '../../molecules/comment-input/comment-input.component';\nimport { DateInputComponent } from '../../molecules/date-input/date-input.component';\nimport { EmailInputComponent } from '../../molecules/email-input/email-input.component';\nimport { FileInputComponent } from '../../molecules/file-input/file-input.component';\nimport { HintComponent } from '../../molecules/hint/hint.component';\nimport { HourInputComponent } from '../../molecules/hour-input/hour-input.component';\nimport { NumberInputComponent } from '../../molecules/number-input/number-input.component';\nimport { PasswordInputComponent } from '../../molecules/password-input/password-input.component';\nimport { PinInputComponent } from '../../molecules/pin-input/pin-input.component';\nimport { RadioInputComponent } from '../../molecules/radio-input/radio-input.component';\nimport { SearchSelectorComponent } from '../../molecules/select-input/select-input.component';\nimport { SelectSearchComponent } from '../../molecules/select-search/select-search.component';\nimport { TextInputComponent } from '../../molecules/text-input/text-input.component';\nimport { ButtonMetadata, ComponentStates, FormMetadata, FormSubmit, InputMetadata, InputType } from '../../types';\n\n@Component({\n selector: 'val-form',\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n DisplayComponent,\n TitleComponent,\n TextInputComponent,\n CheckInputComponent,\n ButtonGroupComponent,\n DividerComponent,\n HintComponent,\n CommentInputComponent,\n DateInputComponent,\n FileInputComponent,\n HourInputComponent,\n EmailInputComponent,\n NumberInputComponent,\n RadioInputComponent,\n PasswordInputComponent,\n PinInputComponent,\n SelectSearchComponent,\n SearchSelectorComponent,\n ],\n template: `\n <div class=\"container\">\n <form [formGroup]=\"form\">\n <val-display\n *ngIf=\"props.name\"\n [props]=\"{\n content: props.name,\n color: 'dark',\n size: 'large',\n }\"\n ></val-display>\n <div class=\"section\" *ngFor=\"let s of props.sections\">\n <val-title [props]=\"{ content: s.name, size: 'large', color: '', bold: false }\"></val-title>\n <div class=\"input\" *ngFor=\"let f of s.fields\">\n <val-title [props]=\"{ content: f.label, size: 'small', color: 'dark', bold: false }\"></val-title>\n <ng-container *ngIf=\"f.type === types.TEXT\">\n <val-text-input [props]=\"getFieldProp(f)\"></val-text-input>\n </ng-container>\n <ng-container *ngIf=\"f.type === types.CHECK\">\n <val-check-input></val-check-input>\n </ng-container>\n <ng-container *ngIf=\"f.type === types.COMMENT\">\n <val-comment-input [props]=\"getFieldProp(f)\"></val-comment-input>\n </ng-container>\n <ng-container *ngIf=\"f.type === types.DATE\">\n <val-date-input [props]=\"getFieldProp(f)\"></val-date-input>\n </ng-container>\n <ng-container *ngIf=\"f.type === types.EMAIL\">\n <val-email-input [props]=\"getFieldProp(f)\"></val-email-input>\n </ng-container>\n <ng-container *ngIf=\"f.type === types.FILE\">\n <val-file-input [props]=\"getFieldProp(f)\"></val-file-input>\n </ng-container>\n <ng-container *ngIf=\"f.type === types.HOUR\">\n <val-hour-input [props]=\"getFieldProp(f)\"></val-hour-input>\n </ng-container>\n <ng-container *ngIf=\"f.type === types.NUMBER\">\n <val-number-input [props]=\"getFieldProp(f)\"></val-number-input>\n </ng-container>\n <ng-container *ngIf=\"f.type === types.PASSWORD\">\n <val-password-input [props]=\"getFieldProp(f)\"></val-password-input>\n </ng-container>\n <ng-container *ngIf=\"f.type === types.PIN_CODE\">\n <val-pin-input [props]=\"getFieldProp(f)\"></val-pin-input>\n </ng-container>\n <ng-container *ngIf=\"f.type === types.RADIO\">\n <val-radio-input [props]=\"getFieldProp(f)\"></val-radio-input>\n </ng-container>\n <ng-container *ngIf=\"f.type === types.SELECT\">\n <val-select-input [props]=\"getFieldProp(f)\"></val-select-input>\n </ng-container>\n <ng-container *ngIf=\"f.type === types.SEARCH_SELECT\">\n <val-select-search [props]=\"getFieldProp(f)\"></val-select-search>\n </ng-container>\n <val-hint [props]=\"getFieldProp(f)\"></val-hint>\n </div>\n <val-divider [props]=\"{ fill: 'solid', size: 'medium', color: 'medium' }\"></val-divider>\n <ng-content></ng-content>\n </div>\n <val-button-group\n [props]=\"{ buttons: actions, position: 'center', columned: false }\"\n (onClick)=\"submitHandler($event)\"\n ></val-button-group>\n </form>\n </div>\n `,\n styleUrls: ['./form.component.scss'],\n})\nexport class FormComponent implements OnInit {\n @Input()\n props: FormMetadata;\n\n @Output()\n onSubmit = new EventEmitter<FormSubmit>();\n\n @Output()\n onInvalid = new EventEmitter();\n\n @Output()\n onSelectChange = new EventEmitter<{ field: string; value: any }>();\n\n form: FormGroup;\n types = InputType;\n private subscriptions: Subscription[] = [];\n\n constructor(\n private fb: FormBuilder,\n private elementRef: ElementRef\n ) {}\n\n ngOnInit() {\n const formControls = {};\n this.props.sections.forEach(section => {\n section.fields.forEach(field => {\n formControls[field.name] = [undefined, field.validators || []];\n });\n });\n this.form = this.fb.group(formControls);\n this.props.sections.forEach(section => {\n section.fields\n .filter(x => x.type === this.types.SELECT || x.type === this.types.TEXT || x.type === this.types.SEARCH_SELECT)\n .forEach(field => {\n this.trackSelectChanges(field.name);\n });\n });\n }\n\n ngOnDestroy() {\n // Cleanup subscriptions to avoid memory leaks\n this.subscriptions.forEach(sub => sub.unsubscribe());\n }\n\n trackSelectChanges(fieldName: string) {\n const control = this.getControl(fieldName);\n const subscription = control.valueChanges.subscribe(value => {\n this.onSelectChange.emit({ field: fieldName, value });\n });\n this.subscriptions.push(subscription);\n }\n\n async submitHandler(token?: string) {\n this.onSubmit.emit({ fields: this.form.getRawValue(), token });\n }\n\n getControl(field: string): FormControl {\n return this.Form.get(field) as FormControl;\n }\n\n getFieldProp(field: InputMetadata): InputMetadata {\n field.token;\n if (!field.token) {\n field.token = `input-${field.type}-${field.name}`;\n }\n const control = this.getControl(field.name);\n if (field.state === ComponentStates.DISABLED) {\n control.disable();\n } else {\n control.enable();\n }\n return {\n ...field,\n control,\n };\n }\n\n get isAtEndOfForm(): boolean {\n return isAtEnd(this.elementRef);\n }\n\n get Form(): FormGroup {\n return this.form;\n }\n\n get FormState(): { form: FormGroup; data: FormMetadata } {\n return {\n form: this.Form,\n data: this.props,\n };\n }\n\n get actions(): ButtonMetadata[] {\n if (!this.form) {\n return [];\n }\n\n if (this.form.valid) {\n this.props.actions.state = ComponentStates.ENABLED;\n }\n\n if (this.props.state === ComponentStates.WORKING) {\n this.props.actions.state = ComponentStates.WORKING;\n }\n\n if (this.props.state === ComponentStates.ENABLED) {\n this.props.actions.state = ComponentStates.ENABLED;\n }\n\n if (this.props.state === ComponentStates.DISABLED) {\n this.props.actions.state = ComponentStates.DISABLED;\n }\n\n return [this.props.actions];\n }\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { IonHeader } from '@ionic/angular/standalone';\nimport { ToolbarComponent } from '../toolbar/toolbar.component';\nimport { HeaderMetadata } from './types';\n\n@Component({\n selector: 'val-header',\n standalone: true,\n imports: [IonHeader, ToolbarComponent],\n template: `\n <ion-header [class.ion-no-border]=\"!props.bordered\" [translucent]=\"props.translucent\">\n <val-toolbar [props]=\"props.toolbar\" (onClick)=\"clickHandler($event)\"></val-toolbar>\n </ion-header>\n `,\n styleUrls: ['./header.component.scss'],\n})\n/**\n * HeaderComponent\n *\n * Componente de encabezado reutilizable para aplicaciones Ionic/Angular.\n * Permite mostrar una barra de herramientas (toolbar) configurable.\n *\n * @example\n * <val-header [props]=\"headerProps\" (onClick)=\"handleHeaderAction($event)\"></val-header>\n *\n * @input props {HeaderMetadata} - Metadatos del encabezado y su toolbar.\n * @output onClick - Emite el token de la acción clicada en la toolbar.\n */\nexport class HeaderComponent implements OnInit {\n /**\n * Metadatos del encabezado y su toolbar.\n */\n @Input()\n props: HeaderMetadata;\n\n /**\n * Evento emitido al hacer click en una acción de la toolbar.\n */\n @Output()\n onClick = new EventEmitter<string>();\n\n constructor() {}\n\n ngOnInit() {}\n\n /**\n * Emite el token de la acción clicada en la toolbar.\n * @param token Token de la acción\n */\n clickHandler(token?: string) {\n this.onClick.emit(token);\n }\n}\n","import { NgClass, NgStyle } from '@angular/common';\nimport { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { RouterLink } from '@angular/router';\nimport {\n IonAvatar,\n IonButton,\n IonIcon,\n IonItem,\n IonLabel,\n IonList,\n IonListHeader,\n IonNote,\n IonSpinner,\n} from '@ionic/angular/standalone';\nimport { IconService } from '../../../services/icons.service';\nimport { resolveColor } from '../../../shared/utils/styles';\nimport { ComponentStates } from '../../types';\nimport { ListMetadata } from './types';\n\n@Component({\n selector: 'val-item-list',\n standalone: true,\n imports: [\n RouterLink,\n NgStyle,\n NgClass,\n IonList,\n IonListHeader,\n IonLabel,\n IonNote,\n IonItem,\n IonAvatar,\n IonIcon,\n IonButton,\n IonSpinner,\n ],\n template: `\n <ion-list\n [inset]=\"props.rounded\"\n [class.shadowed]=\"props.shadowed\"\n [class.bordered]=\"props.bordered\"\n [style.borderColor]=\"this.color()\"\n >\n @if (props.title) {\n <ion-list-header>\n <ion-label>{{ props.title }}</ion-label>\n </ion-list-header>\n }\n @for (item of props.items; track item.token) {\n @if (item.mode == 'justext') {\n <ion-item\n [lines]=\"item.lines\"\n [button]=\"item.clickable\"\n [disabled]=\"item.disabled\"\n (click)=\"clickHandler(item.token)\"\n >\n @if (item.unreadIndicator) {\n <div class=\"unread-indicator-wrapper\" slot=\"start\">\n <div class=\"unread-indicator\"></div>\n </div>\n }\n\n <ion-label [ngClass]=\"{ 'ion-text-nowrap': item.ellipsis }\">\n <h2>{{ item.text }}</h2>\n\n @if (item.comments) {\n <ion-note color=\"medium\"> {{ item.comments }} </ion-note>\n }\n\n @if (item.subtitle) {\n <p>{{ item.subtitle }}</p>\n }\n </ion-label>\n\n @if (item.endNote) {\n <ion-note slot=\"end\">{{ item.endNote }}</ion-note>\n }\n </ion-item>\n }\n\n @if (item.mode == 'actionable') {\n <ion-item [lines]=\"item.lines\" [button]=\"item.clickable\" [disabled]=\"item.disabled\">\n @if (item.unreadIndicator) {\n <div class=\"unread-indicator-wrapper\" slot=\"start\">\n <div class=\"unread-indicator\"></div>\n </div>\n }\n\n <ion-label [ngClass]=\"{ 'ion-text-nowrap': item.ellipsis }\">\n <h2>{{ item.text }}</h2>\n\n @if (item.endNote) {\n <h3>{{ item.endNote }}</h3>\n }\n\n @if (item.subtitle) {\n <ion-note color=\"medium\"> {{ item.subtitle }} </ion-note>\n }\n\n @if (item.comments) {\n <ion-note color=\"medium\"> {{ item.comments }} </ion-note>\n }\n </ion-label>\n\n @if (item.actions) {\n @for (action of item.actions; track action.token) {\n <ion-button\n fill=\"outline\"\n color=\"dark\"\n slot=\"end\"\n [disabled]=\"action.state === states.WORKING\"\n (click)=\"onActionClickHandler(action.token)\"\n >\n @if (action.state !== states.WORKING) {\n @if (action.icon) {\n <ion-icon aria-hidden=\"true\" [name]=\"action.icon\" size=\"medium\" slot=\"start\"></ion-icon>\n }\n\n {{ action.description }}\n }\n\n @if (action.state === states.WORKING) {\n <ion-spinner class=\"action-spinner\" name=\"circular\"></ion-spinner>\n }\n </ion-button>\n }\n }\n </ion-item>\n }\n\n @if (item.mode == 'route') {\n <ion-item\n [lines]=\"item.lines\"\n [button]=\"item.clickable\"\n [disabled]=\"item.disabled\"\n (click)=\"clickHandler(item.token)\"\n [routerLink]=\"item.routerLink\"\n >\n @if (item.unreadIndicator) {\n <div class=\"unread-indicator-wrapper\" slot=\"start\">\n <div class=\"unread-indicator\"></div>\n </div>\n }\n @if (item.icon) {\n <ion-icon aria-hidden=\"true\" [name]=\"item.icon\" size=\"medium\" slot=\"start\"></ion-icon>\n }\n\n <ion-label [ngClass]=\"{ 'ion-text-nowrap': item.ellipsis }\">\n <h2>{{ item.text }}</h2>\n\n @if (item.comments) {\n <ion-note color=\"medium\"> {{ item.comments }} </ion-note>\n }\n </ion-label>\n </ion-item>\n }\n\n @if (item.mode == 'subtitule') {\n <ion-item\n [lines]=\"item.lines\"\n [button]=\"item.clickable\"\n [disabled]=\"item.disabled\"\n (click)=\"clickHandler(item.token)\"\n >\n @if (item.unreadIndicator) {\n <div class=\"unread-indicator-wrapper\" slot=\"start\">\n <div class=\"unread-indicator\"></div>\n </div>\n }\n\n <ion-label [ngClass]=\"{ 'ion-text-nowrap': item.ellipsis }\">\n <h1>{{ item.text }}</h1>\n <p>{{ item.subtitle }}</p>\n </ion-label>\n </ion-item>\n }\n\n @if (item.mode == 'avatar') {\n <ion-item\n [lines]=\"item.lines\"\n [button]=\"item.clickable\"\n [disabled]=\"item.disabled\"\n (click)=\"clickHandler(item.token)\"\n >\n <ion-avatar aria-hidden=\"true\" slot=\"start\">\n <img alt=\"\" [src]=\"item.image\" />\n </ion-avatar>\n <ion-label>{{ item.text }}</ion-label>\n </ion-item>\n }\n\n @if (item.mode == 'icon') {\n <ion-item\n [lines]=\"item.lines\"\n [button]=\"item.clickable\"\n [disabled]=\"item.disabled\"\n (click)=\"clickHandler(item.token)\"\n >\n <ion-icon aria-hidden=\"true\" [name]=\"item.icon\" size=\"medium\" slot=\"start\"></ion-icon>\n <ion-label>{{ item.text }}</ion-label>\n </ion-item>\n }\n }\n </ion-list>\n `,\n styleUrls: ['./item-list.component.scss'],\n})\n/**\n * ItemListComponent\n *\n * Componente de lista reutilizable para mostrar una colección de elementos con diferentes modos de visualización (texto, subtítulo, avatar, icono, ruta, acciones).\n * Permite acciones por elemento, indicadores de no leído, y personalización de estilos.\n *\n * @example\n * <val-item-list [props]=\"{ title: 'Usuarios', items: [{ text: 'Juan', mode: 'avatar', image: 'avatar.jpg' }] }\" (onClick)=\"handleClick($event)\"></val-item-list>\n *\n * @input props {ListMetadata} - Metadatos de la lista y sus elementos.\n * @output onClick - Emite el token del elemento clicado.\n * @output onActionClick - Emite el token de la acción clicada en un elemento.\n */\nexport class ItemListComponent implements OnInit {\n states = ComponentStates;\n defaultColor = 'primary';\n\n /**\n * Metadatos de la lista y sus elementos.\n */\n @Input()\n props: ListMetadata;\n\n /**\n * Evento emitido al hacer click en un elemento de la lista.\n */\n @Output()\n onClick = new EventEmitter<string>();\n\n /**\n * Evento emitido al hacer click en una acción de un elemento.\n */\n @Output()\n onActionClick = new EventEmitter<string>();\n\n constructor(icon: IconService) {}\n\n ngOnInit() {}\n\n /**\n * Emite el token del elemento clicado.\n * @param token Token del elemento\n */\n clickHandler(token?: string) {\n this.onClick.emit(token);\n }\n\n /**\n * Emite el token de la acción clicada.\n * @param token Token de la acción\n */\n onActionClickHandler(token?: string) {\n this.onActionClick.emit(token);\n }\n\n /**\n * Devuelve el color de borde de la lista.\n */\n color() {\n return resolveColor(this.props.color || this.defaultColor);\n }\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { ImageComponent } from '../../atoms/image/image.component';\nimport { BannerComponent } from '../banner/banner.component';\nimport { NoContentMetadata } from './types';\n\n@Component({\n selector: 'val-no-content',\n standalone: true,\n imports: [ImageComponent, BannerComponent],\n template: `\n @if (props.topContent) {\n <div>\n <val-banner [props]=\"props.topContent\" (onClick)=\"onClickHandler($event)\"></val-banner>\n </div>\n }\n <val-image class=\"image-container\" [props]=\"props.image\"></val-image>\n <div>\n <val-banner [props]=\"props.bottomContent\" (onClick)=\"onClickHandler($event)\"></val-banner>\n </div>\n `,\n styleUrls: ['./no-content.component.scss'],\n})\n/**\n * NoContentComponent\n *\n * Componente para mostrar una pantalla de \"sin contenido\" con imagen y banners opcionales arriba y abajo.\n * Útil para estados vacíos, errores o mensajes informativos.\n *\n * @example\n * <val-no-content [props]=\"{ image: { src: 'empty.svg' }, bottomContent: { ... } }\"></val-no-content>\n *\n * @input props {NoContentMetadata} - Metadatos de la imagen y banners a mostrar.\n * @output onClick - Emite el token de acción de los banners si corresponde.\n */\nexport class NoContentComponent implements OnInit {\n /**\n * Metadatos de la imagen y banners a mostrar.\n */\n @Input()\n props: NoContentMetadata;\n\n /**\n * Evento emitido al hacer click en un banner.\n */\n @Output()\n onClick = new EventEmitter<string>();\n\n constructor() {}\n\n ngOnInit() {}\n\n /**\n * Emite el token de acción del banner clicado.\n * @param token Token de la acción\n */\n onClickHandler(token: string) {\n this.onClick.emit(token);\n }\n}\n","/**\n * Tipos y metadatos para el componente WizardComponent.\n * Permiten definir los pasos, botones, estado y navegación del wizard.\n */\nimport { ButtonMetadata, ComponentState } from '../../types';\nimport { NoContentMetadata } from '../no-content/types';\n\n/**\n * Metadatos del wizard.\n * @property state Estado global del wizard.\n * @property current Paso actual.\n * @property steps Colección de pasos.\n * @property error Paso de error.\n */\nexport type WizardMetadata = {\n state: ComponentState;\n current: number;\n steps: Steps;\n error: Step;\n};\n\n/**\n * Representa un paso del wizard.\n * @property titles Metadatos de \"no contenido\" para el paso.\n * @property buttons Botones disponibles en el paso.\n */\nexport type Step = {\n titles: NoContentMetadata;\n buttons: ButtonMetadata[];\n};\n\n/**\n * Colección de pasos del wizard, indexados por número de paso.\n */\nexport type Steps = {\n [step: number]: Step;\n};\n\n/**\n * Enumera los posibles movimientos de navegación en el wizard.\n */\nexport enum MOTION {\n BACKWARD,\n FORWARD,\n RETRY,\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { ProgressBarComponent } from '../../../atoms/progress-bar/progress-bar.component';\nimport { ButtonGroupComponent } from '../../../molecules/button-group/button-group.component';\nimport { ButtonMetadata, ComponentStates } from '../../../types';\nimport { FooterComponent } from '../../footer/footer.component';\nimport { MOTION, Step, WizardMetadata } from '../types';\n\n@Component({\n selector: 'val-wizard-footer',\n standalone: true,\n imports: [FooterComponent, ProgressBarComponent, ButtonGroupComponent],\n template: `\n <val-footer\n [props]=\"{\n bordered: false,\n translucent: false,\n toolbar: {\n title: '',\n actions: [],\n color: '',\n withBack: false,\n withActions: false,\n },\n }\"\n >\n <val-progress-bar\n extra\n [props]=\"{ progress: Progress, color: '', type: 'determinate', buffer: 1, size: 'small', rounded: false }\"\n ></val-progress-bar>\n <val-button-group\n extra\n [props]=\"{ buttons: actions, position: 'spaced', columned: false }\"\n (onClick)=\"clickHandler($event)\"\n ></val-button-group>\n </val-footer>\n `,\n styleUrls: ['./wizard-footer.component.scss'],\n})\nexport class WizardFooterComponent implements OnInit {\n @Input()\n props: WizardMetadata;\n\n @Output()\n onClick = new EventEmitter<{ current: number; motion: MOTION }>();\n\n wrapperId = 'wizard-wrapper';\n\n constructor() {}\n\n ngOnInit() {}\n\n clickHandler(token?: string) {\n if (!token) {\n return;\n }\n if (token.includes('right')) {\n this.tryToStep(MOTION.FORWARD);\n }\n if (token.includes('left')) {\n this.tryToStep(MOTION.BACKWARD);\n }\n }\n\n get Current(): Step {\n return this.props.steps[this.props.current];\n }\n\n get Progress(): number {\n if (this.props.steps && this.props.current) {\n return this.props.current / Object.keys(this.props.steps).length;\n }\n return 0;\n }\n\n get actions(): ButtonMetadata[] {\n if (this.props.state === ComponentStates.ERROR && this.Current.buttons.length > 1) {\n this.Current.buttons[1].state = ComponentStates.DISABLED;\n }\n\n if (this.props.current === 1 && this.Current.buttons.length > 1) {\n return [this.Current.buttons[1]];\n }\n return this.Current.buttons;\n }\n\n tryToStep(motion: MOTION): void {\n this.onClick.emit({ current: this.props.current, motion });\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { goToTop } from '../../../shared/utils/dom';\nimport { ContentLoaderComponent } from '../../molecules/content-loader/content-loader.component';\nimport { ComponentStates } from '../../types';\nimport { NoContentComponent } from '../no-content/no-content.component';\nimport { MOTION, Step, WizardMetadata } from './types';\n\n@Component({\n selector: 'val-wizard',\n standalone: true,\n imports: [CommonModule, NoContentComponent, ContentLoaderComponent],\n template: `\n <div [id]=\"wrapperId\" class=\"wrapper\">\n <ng-container *ngIf=\"props.state !== 'ERROR'\">\n <val-no-content [props]=\"Current.titles\"></val-no-content>\n <div class=\"step\">\n <div *ngIf=\"props.state === 'WORKING'\">\n <val-content-loader\n [props]=\"{\n name: 'circular',\n color: 'primary',\n size: 'large',\n text: 'Por favor espere...',\n }\"\n />\n </div>\n <ng-content select=\"[step]\"></ng-content>\n </div>\n </ng-container>\n <ng-container *ngIf=\"props.state === 'ERROR'\">\n <val-no-content [props]=\"props.error.titles\" (onClick)=\"clickHandler($event)\"></val-no-content>\n </ng-container>\n </div>\n `,\n styleUrls: ['./wizard.component.scss'],\n})\n/**\n * WizardComponent\n *\n * Componente para flujos de pasos (wizard) reutilizable, con soporte para estados, errores y navegación entre pasos.\n * Permite mostrar contenido personalizado por paso y manejar acciones de navegación.\n *\n * @example\n * <val-wizard [props]=\"wizardProps\" (onClick)=\"handleWizardNav($event)\">\n * <div step>Contenido del paso</div>\n * </val-wizard>\n *\n * @input props {WizardMetadata} - Metadatos del wizard, pasos y estado.\n * @output onClick - Emite el paso actual y la acción de navegación (MOTION).\n */\nexport class WizardComponent implements OnInit {\n /**\n * Metadatos del wizard, pasos y estado.\n */\n @Input()\n props: WizardMetadata;\n\n /**\n * Evento emitido al hacer click en una acción de navegación.\n */\n @Output()\n onClick = new EventEmitter<{ current: number; motion: MOTION }>();\n\n wrapperId = 'wizard-wrapper';\n\n constructor() {}\n\n ngOnInit() {}\n\n /**\n * Cambia el estado del wizard a 'WORKING' y deshabilita los botones del paso actual.\n */\n working() {\n this.props.state = ComponentStates.WORKING;\n this.Current.buttons.map(x => {\n x.state = ComponentStates.DISABLED;\n });\n }\n\n /**\n * Cambia el estado del wizard a 'ENABLED' y habilita los botones del paso actual.\n * No realiza cambios si ya está en estado 'ENABLED'.\n */\n done() {\n if (this.props.state === ComponentStates.ENABLED) {\n return;\n }\n\n this.props.state = ComponentStates.ENABLED;\n this.Current.buttons.map(x => {\n x.state = ComponentStates.ENABLED;\n });\n }\n\n /**\n * Devuelve el paso actual del wizard.\n */\n get Current(): Step {\n return this.props.steps[this.props.current];\n }\n\n /**\n * Cambia el paso actual del wizard y hace scroll al inicio.\n * @param newStep Nuevo índice de paso\n */\n setCurrent(newStep: number) {\n if (newStep === this.props.current) {\n return;\n }\n this.props.current = newStep;\n goToTop(this.wrapperId);\n }\n\n /**\n * Establece el estado de error y muestra el mensaje de error en el banner inferior.\n * @param error Mensaje de error a mostrar\n */\n setError(error: string) {\n if (this.props.state === ComponentStates.ERROR) {\n return;\n }\n\n this.props.error.titles.bottomContent.content.bellowTitle.content = error;\n this.props.state = ComponentStates.ERROR;\n goToTop(this.wrapperId);\n }\n\n /**\n * Reinicia el estado de error y vuelve a estado 'ENABLED'.\n */\n reset() {\n this.props.error.titles.bottomContent.content.bellowTitle.content = '';\n this.done();\n }\n\n /**\n * Maneja el click en el banner de error y emite el evento de navegación.\n * Si el token contiene 'retry', reinicia el wizard.\n * @param token Token de la acción clicada\n */\n clickHandler(token?: string) {\n if (!token) {\n return;\n }\n if (token.includes('retry')) {\n this.reset();\n }\n\n this.onClick.emit({ current: this.props.current, motion: MOTION.RETRY });\n }\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'val-layout',\n standalone: true,\n imports: [],\n template: `\n <div class=\"layout-container\">\n <ng-content></ng-content>\n </div>\n `,\n styleUrl: './layout.component.scss',\n})\nexport class LayoutComponent {}\n","import { NgStyle } from '@angular/common';\nimport { Component, EventEmitter, inject, Input, Output } from '@angular/core';\nimport { IonContent, IonHeader, IonTitle, IonToolbar } from '@ionic/angular/standalone';\nimport { ThemeService } from '../../../services/theme.service';\nimport { DividerComponent } from '../../atoms/divider/divider.component';\nimport { ExpandableTextComponent } from '../../molecules/expandable-text/expandable-text.component';\nimport { LinkComponent } from '../../molecules/link/link.component';\nimport { HeaderComponent } from '../../organisms/header/header.component';\nimport { LayoutComponent } from '../layout/layout.component';\nimport { SimpleMetadata } from './types';\n\n@Component({\n selector: 'val-simple',\n standalone: true,\n imports: [\n NgStyle,\n IonHeader,\n IonToolbar,\n IonTitle,\n IonContent,\n HeaderComponent,\n LayoutComponent,\n DividerComponent,\n LinkComponent,\n ExpandableTextComponent,\n ],\n template: `\n <val-header [props]=\"props.header\" />\n\n <ion-content\n [fullscreen]=\"true\"\n [ngStyle]=\"{\n '--background': theme.IsDark ? 'var(--ion-background-color)' : props.background,\n }\"\n [scrollEvents]=\"true\"\n (ionScroll)=\"onScrollHandler($event)\"\n >\n <ion-header collapse=\"condense\">\n <ion-toolbar style=\"--background: transparent;\">\n <ion-title style=\"padding: 0;\" size=\"large\">{{ props.pageTitle }}</ion-title>\n </ion-toolbar>\n </ion-header>\n @if (props.pageDescription) {\n <div class=\"description-container\">\n <val-expandable-text\n [props]=\"{\n limit: 180,\n content: props.pageDescription,\n color: 'primary',\n expandText: 'más',\n }\"\n />\n </div>\n }\n @if (props.link) {\n <val-link [props]=\"props.link\" (onClick)=\"onClickHandler($event)\"></val-link>\n }\n @if (props.withDivider) {\n <val-divider [props]=\"{ fill: 'solid', size: 'medium', color: 'dark' }\" />\n }\n <val-layout>\n <ng-content select=\"[inner-container]\"></ng-content>\n </val-layout>\n </ion-content>\n <ng-content select=\"[outter-container]\"></ng-content>\n `,\n styles: `\n .description-container {\n padding: 0px 16px;\n }\n `,\n})\nexport class SimpleComponent {\n @Input()\n props: SimpleMetadata;\n\n @Output()\n onClick = new EventEmitter<string>();\n\n @Output()\n onScrollEvent = new EventEmitter<boolean>();\n\n theme = inject(ThemeService);\n\n onClickHandler(token?: string) {\n this.onClick.emit(token);\n }\n\n onScrollHandler($event: Event) {\n this.onScrollEvent.emit(true);\n }\n}\n","import { Provider } from './content';\n\nexport type LanguageText = {\n [key: string]: string;\n};\n\nexport type LanguagesContent = {\n [key: string]: LanguageText;\n};\n\nexport class TextContent {\n text: LanguagesContent;\n constructor(text: LanguagesContent) {\n this.text = text;\n }\n\n get Content(): LanguagesContent {\n return this.text;\n }\n}\n\nexport enum LangOption {\n ES = 'es',\n EN = 'en',\n}\n","import { InjectionToken } from '@angular/core';\nimport { Provider } from './lang-provider/content';\n\nexport interface ValtechConfig {\n content: Provider;\n}\n\nexport const ValtechConfigService = new InjectionToken<ValtechConfig>('ValtechConfig');\n","import { Inject, Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { Provider } from './content';\nimport { LangOption, LanguageText } from './types';\nimport { LocalStorageService } from '../local-storage.service';\nimport { LANG } from '../../shared/constants/storage';\nimport { ValtechConfig, ValtechConfigService } from '../types';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class LangService {\n content: Provider;\n default = LangOption.ES;\n selectedLang: BehaviorSubject<LangOption>;\n config: ValtechConfig;\n\n constructor(@Inject(ValtechConfigService) config: ValtechConfig) {\n console.log('injected config: ', config);\n this.content = config.content;\n this.config = config;\n const current = LocalStorageService.get<LangOption>(LANG);\n this.selectedLang = new BehaviorSubject<LangOption>(current || this.default);\n }\n\n Text(className: string): LanguageText {\n return this.content[className].Content[this.selectedLang.value];\n }\n\n get Lang(): LangOption {\n return this.selectedLang.value;\n }\n\n set Lang(lang: LangOption) {\n this.selectedLang.next(lang);\n LocalStorageService.set<LangOption>(LANG, lang);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ToastController, ToastOptions } from '@ionic/angular';\n\n/**\n * Service for displaying toast notifications using Ionic's ToastController.\n * Provides methods to show and present toasts with custom options.\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class ToastService {\n constructor(private toastController: ToastController) {}\n\n /**\n * Presents a toast notification with the given options.\n * @param request Toast options (message, duration, position, color, etc.)\n */\n async presentToast(request: ToastOptions) {\n const toast = await this.toastController.create({\n message: request.message,\n duration: request.duration,\n position: request.position,\n color: request.color,\n });\n\n await toast.present();\n }\n\n /**\n * Shows a toast notification and logs the result.\n * @param request Toast options (message, duration, position, color, etc.)\n */\n show(request: ToastOptions) {\n this.presentToast(request)\n .then(() => {\n console.info('Toast created');\n })\n .catch(error => {\n console.error(JSON.stringify(error));\n });\n }\n}\n","/*\n * Public API Surface of valtech-components\n */\n\n/*\n * Public API Surface of valtech-components\n */\n\nexport * from './lib/components/atoms/avatar/avatar.component';\nexport * from './lib/components/atoms/avatar/types';\nexport * from './lib/components/atoms/box/box.component';\nexport * from './lib/components/atoms/box/types';\nexport * from './lib/components/atoms/button/button.component';\nexport * from './lib/components/atoms/button/factory';\nexport * from './lib/components/atoms/display/display.component';\nexport * from './lib/components/atoms/display/types';\nexport * from './lib/components/atoms/divider/divider.component';\nexport * from './lib/components/atoms/divider/types';\nexport * from './lib/components/atoms/href/href.component';\nexport * from './lib/components/atoms/href/types';\nexport * from './lib/components/atoms/icon/icon.component';\nexport * from './lib/components/atoms/icon/types';\nexport * from './lib/components/atoms/image/image.component';\nexport * from './lib/components/atoms/image/types';\nexport * from './lib/components/atoms/progress-bar/progress-bar.component';\nexport * from './lib/components/atoms/progress-bar/types';\nexport * from './lib/components/atoms/text/text.component';\nexport * from './lib/components/atoms/text/types';\nexport * from './lib/components/atoms/title/title.component';\nexport * from './lib/components/atoms/title/types';\n\nexport * from './lib/components/molecules/alert-box/alert-box.component';\nexport * from './lib/components/molecules/alert-box/types';\nexport * from './lib/components/molecules/button-group/button-group.component';\nexport * from './lib/components/molecules/button-group/types';\nexport * from './lib/components/molecules/card/card.component';\nexport * from './lib/components/molecules/card/types';\nexport * from './lib/components/molecules/check-input/check-input.component';\nexport * from './lib/components/molecules/comment-input/comment-input.component';\nexport * from './lib/components/molecules/content-loader/content-loader.component';\nexport * from './lib/components/molecules/content-loader/types';\nexport * from './lib/components/molecules/date-input/date-input.component';\nexport * from './lib/components/molecules/email-input/email-input.component';\nexport * from './lib/components/molecules/expandable-text/expandable-text.component';\nexport * from './lib/components/molecules/expandable-text/types';\nexport * from './lib/components/molecules/file-input/file-input.component';\nexport * from './lib/components/molecules/hint/hint.component';\nexport * from './lib/components/molecules/hour-input/hour-input.component';\nexport * from './lib/components/molecules/link/link.component';\nexport * from './lib/components/molecules/link/types';\nexport * from './lib/components/molecules/links-cake/links-cake.component';\nexport * from './lib/components/molecules/links-cake/types';\nexport * from './lib/components/molecules/notes-box/notes-box.component';\nexport * from './lib/components/molecules/notes-box/types';\nexport * from './lib/components/molecules/number-input/number-input.component';\nexport * from './lib/components/molecules/password-input/password-input.component';\nexport * from './lib/components/molecules/pin-input/pin-input.component';\nexport * from './lib/components/molecules/progress-status/progress-status.component';\nexport * from './lib/components/molecules/progress-status/types';\nexport * from './lib/components/molecules/prompter/prompter.component';\nexport * from './lib/components/molecules/prompter/types';\nexport * from './lib/components/molecules/radio-input/radio-input.component';\nexport * from './lib/components/molecules/select-search/select-search.component';\nexport * from './lib/components/molecules/searchbar/searchbar.component';\nexport * from './lib/components/molecules/select-input/select-input.component';\nexport * from './lib/components/molecules/text-input/text-input.component';\nexport * from './lib/components/molecules/title-block/title-block.component';\nexport * from './lib/components/molecules/title-block/types';\nexport * from './lib/components/molecules/layered-card/layered-card.component';\nexport * from './lib/components/molecules/layered-card/types';\n\nexport * from './lib/components/organisms/banner/banner.component';\nexport * from './lib/components/organisms/banner/types';\nexport * from './lib/components/organisms/footer/footer.component';\nexport * from './lib/components/organisms/form/factory';\nexport * from './lib/components/organisms/form/form-footer/form-footer.component';\nexport * from './lib/components/organisms/form/form.component';\nexport * from './lib/components/organisms/header/header.component';\nexport * from './lib/components/organisms/header/types';\nexport * from './lib/components/organisms/item-list/item-list.component';\nexport * from './lib/components/organisms/item-list/types';\nexport * from './lib/components/organisms/no-content/no-content.component';\nexport * from './lib/components/organisms/no-content/types';\nexport * from './lib/components/organisms/toolbar/toolbar.component';\nexport * from './lib/components/organisms/toolbar/types';\nexport * from './lib/components/organisms/wizard/types';\nexport * from './lib/components/organisms/wizard/wizard-footer/wizard-footer.component';\nexport * from './lib/components/organisms/wizard/wizard.component';\n\nexport * from './lib/components/templates/layout/layout.component';\nexport * from './lib/components/templates/simple/simple.component';\nexport * from './lib/components/templates/simple/types';\n\nexport * from './lib/services/download.service';\nexport * from './lib/services/icons.service';\nexport * from './lib/services/in-app-browser.service';\nexport * from './lib/services/lang-provider/lang-provider.service';\nexport * from './lib/services/lang-provider/types';\nexport * from './lib/services/local-storage.service';\nexport * from './lib/services/navigation.service';\nexport * from './lib/services/theme.service';\nexport * from './lib/services/toast.service';\nexport * from './lib/services/types';\n\nexport * from './lib/components/types';\nexport * from './lib/shared/utils/dom';\nexport * from './lib/shared/utils/text';\nexport * from './lib/shared/utils/styles';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.IconService","i2","i1.DownloadService","i2.IconService","i3.NavigationService","i1","i3"],"mappings":"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"}
|