{"version":3,"file":"gettrx-core-components-angular.mjs","sources":["../../src/lib/core-components.types.ts","../../src/lib/atoms/icon/gtr-icon.component.ts","../../src/lib/atoms/icon/gtr-icon.component.html","../../src/lib/atoms/badge/gtr-badge.component.ts","../../src/lib/atoms/badge/gtr-badge.component.html","../../src/lib/atoms/button-directive/gtr-button.directive.ts","../../src/lib/atoms/button-directive/gtr-button-close.directive.ts","../../src/lib/atoms/button/gtr-button.component.ts","../../src/lib/atoms/button/gtr-button.component.html","../../src/lib/atoms/button-dropdown/gtr-button-dropdown.component.ts","../../src/lib/atoms/button-dropdown/gtr-button-dropdown.component.html","../../src/lib/atoms/switch/gtr-switch.component.ts","../../src/lib/atoms/switch/gtr-switch.component.html","../../src/lib/atoms/tooltip/gtr-tooltip.component.ts","../../src/lib/atoms/tooltip/gtr-tooltip.component.html","../../src/lib/atoms/input/utils/gtr-input-utils.ts","../../src/lib/atoms/skeleton/gtr-skeleton.component.ts","../../src/lib/atoms/skeleton/utils/gtr-skeleton.directive.ts","../../src/lib/atoms/input/gtr-input.component.ts","../../src/lib/atoms/input/gtr-input.component.html","../../src/lib/atoms/textarea/utils/gtr-textarea.types.ts","../../src/lib/atoms/textarea/gtr-textarea.component.ts","../../src/lib/atoms/textarea/gtr-textarea.component.html","../../src/lib/atoms/popover/gtr-popover.component.ts","../../src/lib/atoms/popover/gtr-popover.component.html","../../src/lib/atoms/radio-button/gtr-radio-button.component.ts","../../src/lib/atoms/radio-button/gtr-radio-button.component.html","../../src/lib/atoms/toaster/services/gtr-toaster.service.ts","../../src/lib/atoms/toaster/gtr-toaster.component.ts","../../src/lib/atoms/toaster/gtr-toaster.component.html","../../src/lib/atoms/display-value/gtr-display-value.component.ts","../../src/lib/atoms/display-value/gtr-display-value.component.html","../../src/lib/molecules/accordion/accordion/gtr-accordion.component.ts","../../src/lib/molecules/accordion/accordion/gtr-accordion.component.html","../../src/lib/molecules/accordion/accordion-wrapper/gtr-accordion-wrapper.component.ts","../../src/lib/molecules/accordion/accordion-wrapper/gtr-accordion-wrapper.component.html","../../src/lib/molecules/calendar/gtr-calendar.utils.ts","../../src/lib/molecules/calendar/gtr-calendar.service.ts","../../src/lib/molecules/calendar/calendar-navigation/gtr-calendar-navigation.component.ts","../../src/lib/molecules/calendar/calendar-navigation/gtr-calendar-navigation.component.html","../../src/lib/molecules/calendar/calendar-month/gtr-calendar-weekday.pipe.ts","../../src/lib/molecules/calendar/calendar-month/gtr-calendar-class-year.pipe.ts","../../src/lib/molecules/calendar/calendar-month/gtr-calendar-class-month.pipe.ts","../../src/lib/molecules/calendar/calendar-month/gtr-calendar-day.pipe.ts","../../src/lib/molecules/calendar/calendar-month/gtr-calendar-day.directive.ts","../../src/lib/molecules/calendar/calendar-month/gtr-calendar-day-title.pipe.ts","../../src/lib/molecules/calendar/calendar-month/gtr-calendar-class-day.pipe.ts","../../src/lib/molecules/calendar/calendar-month/gtr-calendar-month-title.pipe.ts","../../src/lib/molecules/calendar/calendar-month/gtr-calendar-month.pipe.ts","../../src/lib/molecules/calendar/calendar-month/gtr-calendar-month.component.ts","../../src/lib/molecules/calendar/calendar-month/gtr-calendar-month.component.html","../../src/lib/molecules/calendar/calendar/gtr-calendar-class-view.pipe.ts","../../src/lib/molecules/calendar/calendar/gtr-calendar.component.ts","../../src/lib/molecules/calendar/calendar/gtr-calendar.component.html","../../src/lib/molecules/checkbox/checkbox/gtr-checkbox.component.ts","../../src/lib/molecules/checkbox/checkbox/gtr-checkbox.component.html","../../src/lib/molecules/modal/gtr-modal.component.ts","../../src/lib/molecules/modal/gtr-modal.component.html","../../src/lib/molecules/shared/gtr-html-attr.directive.ts","../../src/lib/molecules/shared/gtr-template-id.directive.ts","../../src/lib/molecules/dropdown/dropdown-divider/gtr-dropdown-divider.directive.ts","../../src/lib/molecules/dropdown/dropdown-header/gtr-dropdown-header.directive.ts","../../src/lib/molecules/dropdown/gtr-dropdown.service.ts","../../src/lib/molecules/dropdown/dropdown-menu/gtr-dropdown-menu.directive.ts","../../src/lib/molecules/dropdown/dropdown/gtr-dropdown.component.ts","../../src/lib/molecules/dropdown/dropdown-item/gtr-dropdown-item.directive.ts","../../src/lib/molecules/dropdown/dropdown-item/gtr-dropdown-item-plain.directive.ts","../../src/lib/molecules/dropdown/dropdown-close/gtr-dropdown-close.directive.ts","../../src/lib/molecules/form/form/gtr-form.directive.ts","../../src/lib/molecules/form/form-feedback/gtr-form-feedback.component.ts","../../src/lib/molecules/form/input-group/gtr-input-group.component.ts","../../src/lib/molecules/form/form-select/gtr-form-select.directive.ts","../../src/lib/molecules/form/form-label/gtr-form-label.directive.ts","../../src/lib/molecules/form/form-check/gtr-form-check-label.directive.ts","../../src/lib/molecules/form/form-check/gtr-form-check.component.ts","../../src/lib/molecules/form/form-check/gtr-form-check-input.directive.ts","../../src/lib/molecules/form/form-control/gtr-form-control.directive.ts","../../src/lib/molecules/form/form-text/gtr-form-text.directive.ts","../../src/lib/molecules/form/form-floating/gtr-form-floating.directive.ts","../../src/lib/molecules/form/input-group-text/gtr-input-group-text.directive.ts","../../src/lib/molecules/time-picker/gtr-time.utils.ts","../../src/lib/molecules/time-picker/time-picker-roll-col/gtr-time-picker-roll-col.component.ts","../../src/lib/molecules/time-picker/time-picker-roll-col/gtr-time-picker-roll-col.component.html","../../src/lib/molecules/time-picker/time-picker-roll-col/gtr-time-picker-roll-am-pm.component.ts","../../src/lib/molecules/time-picker/time-picker-roll-col/gtr-time-picker-roll-am-pm.component.html","../../src/lib/molecules/time-picker/gtr-time-picker.component.ts","../../src/lib/molecules/time-picker/gtr-time-picker.component.html","../../src/lib/molecules/date-range-picker/date-range-picker/gtr-custom-range-key.pipe.ts","../../src/lib/molecules/date-range-picker/date-range-picker/gtr-date-range-picker.component.ts","../../src/lib/molecules/date-range-picker/date-range-picker/gtr-date-range-picker.component.html","../../src/lib/molecules/date-picker/gtr-date-picker.component.ts","../../src/lib/molecules/file-input/file-input/gtr-file-input.component.ts","../../src/lib/molecules/file-input/file-input/gtr-file-input.component.html","../../src/parameters/variables.parameters.ts","../../src/parameters/colors.parameter.ts","../../src/helpers/color.helper.ts","../../src/lib/molecules/input-color/gtr-input-color.component.ts","../../src/lib/molecules/input-color/gtr-input-color.component.html","../../src/lib/molecules/numeric-counter/numeric-counter/gtr-numeric-counter.const.ts","../../src/lib/molecules/numeric-counter/numeric-counter/gtr-numeric-counter.component.ts","../../src/lib/molecules/numeric-counter/numeric-counter/gtr-numeric-counter.component.html","../../src/lib/molecules/pagination/helpers/models/gtr-pagination.model.ts","../../src/lib/molecules/pagination/helpers/pipes/validate-page/gtr-validate-page.pipe.ts","../../src/lib/molecules/pagination/pagination/gtr-pagination.utils.ts","../../src/lib/molecules/select/helpers/pipes/trim-text/gtr-trim-text.pipe.ts","../../src/lib/molecules/select/helpers/pipes/format-selected-value/gtr-format-selected-value.pipe.ts","../../src/lib/molecules/select/helpers/enums/gtr-select.enums.ts","../../src/lib/molecules/select/select/gtr-select.component.ts","../../src/lib/molecules/select/select/gtr-select.component.html","../../src/lib/molecules/pagination/pagination/gtr-pagination.component.ts","../../src/lib/molecules/pagination/pagination/gtr-pagination.component.html","../../src/lib/molecules/stat-card/gtr-stat-card.component.ts","../../src/lib/molecules/stat-card/gtr-stat-card.component.html","../../src/lib/molecules/table/gtr-fetch-attribute.pipe.ts","../../src/lib/molecules/table/dynamic-component.directive.ts","../../src/lib/molecules/table/dynamic-host.directive.ts","../../src/lib/molecules/table/table-responsive/gtr-table-responsive.component.ts","../../src/lib/molecules/table/table-responsive/gtr-table-responsive.component.html","../../src/lib/molecules/table/table-main/gtr-table-main.component.ts","../../src/lib/molecules/table/table-main/gtr-table-main.component.html","../../src/lib/molecules/table/gtr-table.component.ts","../../src/lib/molecules/table/gtr-table.component.html","../../src/lib/molecules/tabs/tab/gtr-tab.component.ts","../../src/lib/molecules/tabs/tab/gtr-tab.component.html","../../src/lib/molecules/tabs/tabs-wrapper/gtr-tabs-wrapper.component.ts","../../src/lib/molecules/tabs/tabs-wrapper/gtr-tabs-wrapper.component.html","../../src/lib/molecules/tags-input/helpers/functions.ts","../../src/lib/molecules/tags-input/tag-input/gtr-tags-input.component.ts","../../src/lib/molecules/tags-input/tag-input/gtr-tags-input.component.html","../../src/lib/directives/autosize/autosize.directive.ts","../../src/public-api.ts","../../src/gettrx-core-components-angular.ts"],"sourcesContent":["import { IsActiveMatchOptions } from '@angular/router';\n\nexport enum BreakpointInfix {\n  xs = 'xs',\n  sm = 'sm',\n  md = 'md',\n  lg = 'lg',\n  xl = 'xl',\n  xxl = 'xxl',\n}\n\nexport type BreakpointInfixStrings = keyof typeof BreakpointInfix;\n\nexport type Breakpoints = BreakpointInfixStrings | string;\n\nexport type Sizes = 'sm' | 'md' | 'lg' | 'xl' | 'xxl' | string;\n\nexport type Colors =\n  | 'primary'\n  | 'secondary'\n  | 'success'\n  | 'danger'\n  | 'warning'\n  | 'info'\n  | 'dark'\n  | 'light'\n  | string;\n\nexport type ColorsGradient = `${Colors}-gradient`;\n\nexport type BackgroundColors = Colors | 'body' | 'white' | 'transparent';\n\nexport type Directions = 'down' | 'up' | 'start' | 'end' | '';\n\nexport type TextColors =\n  | Colors\n  | 'body'\n  | 'white'\n  | 'muted'\n  | 'black-50'\n  | 'white-50'\n  | 'high-emphasis'\n  | 'medium-emphasis'\n  | 'disabled'\n  | 'high-emphasis-inverse'\n  | 'medium-emphasis-inverse'\n  | 'disabled-inverse';\n\nexport type Alignment = 'baseline' | 'top' | 'middle' | 'bottom' | 'text-top' | 'text-bottom';\n\nexport type BadgePositions =\n  | 'top-start'\n  | 'top-end'\n  | 'bottom-end'\n  | 'bottom-start'\n  | string\n  | undefined;\n\nexport type Placements =\n  | 'auto'\n  | 'auto-start'\n  | 'auto-end'\n  | 'top-end'\n  | 'top'\n  | 'top-start'\n  | 'bottom-end'\n  | 'bottom'\n  | 'bottom-start'\n  | 'right-start'\n  | 'right'\n  | 'right-end'\n  | 'left-start'\n  | 'left'\n  | 'left-end'\n  | undefined;\n\nexport type Shapes =\n  | 'rounded'\n  | 'rounded-top'\n  | 'rounded-end'\n  | 'rounded-bottom'\n  | 'rounded-start'\n  | 'rounded-circle'\n  | 'rounded-pill'\n  | 'rounded-0'\n  | 'rounded-1'\n  | 'rounded-2'\n  | 'rounded-3'\n  | string;\n\nexport type Triggers = 'hover' | 'focus' | 'click';\n\nexport type Positions = 'fixed' | 'sticky';\n\nexport type InputType =\n  | 'button'\n  | 'color'\n  | 'date'\n  | 'datetime'\n  | 'datetime-local'\n  | 'email'\n  | 'file'\n  | 'hidden'\n  | 'image'\n  | 'month'\n  | 'number'\n  | 'password'\n  | 'range'\n  | 'reset'\n  | 'search'\n  | 'submit'\n  | 'tel'\n  | 'text'\n  | 'time'\n  | 'url'\n  | 'week'\n  | 'checkbox'\n  | 'radio';\n\nexport interface INavLinkProps {\n  queryParams?: { [k: string]: any };\n  fragment?: string;\n  queryParamsHandling?: 'merge' | 'preserve' | '' | null;\n  preserveFragment?: boolean;\n  skipLocationChange?: boolean;\n  replaceUrl?: boolean;\n  state?: { [k: string]: any };\n  routerLinkActiveOptions?: { exact: boolean } | IsActiveMatchOptions;\n  routerLinkActive?: string | string[];\n  ariaCurrentWhenActive?: 'page' | 'step' | 'location' | 'date' | 'time' | true | false;\n}\n\nexport interface INavAttributes {\n  [propName: string]: any;\n}\n\nexport type ButtonType = 'button' | 'submit' | 'reset';\n","import { Component, HostBinding, Input, OnDestroy } from '@angular/core';\n\n@Component({\n  standalone: true,\n  selector: 'gtr-icon',\n  templateUrl: './gtr-icon.component.html',\n  styleUrls: ['./gtr-icon.component.scss'],\n})\nexport class GtrIconComponent implements OnDestroy {\n  @Input() dataTransactionName: string = 'no-tagged';\n  /**\n   * The font icon\n   */\n  @Input() name: string = '123';\n  /**\n   * The icon width\n   */\n  @Input() weight: string = 'normal';\n  /**\n   * The icon color\n   */\n  @Input() color: string = 'currentColor';\n  /**\n   * The icon size\n   */\n  @Input() set size(value: number) {\n    this.height = value + 'px';\n  }\n\n  /**\n   * The element id\n   */\n  @Input() iconId = '';\n\n  @HostBinding('style.height')\n  height = this.size + 'px';\n\n  ngOnDestroy(): void {}\n}\n","<i [id]=\"iconId+'-icon'\" [attr.data-testid]=\"iconId+'-icon'\" [class]=\"'gtr-icon gtr-icon-'+name\"\n   [attr.data-transaction-name]=\"dataTransactionName + '-icon-'+ name\"\n  [style.font-size]=\"this.height\" [style.color]=\"this.color\" [style.font-weight]=\"this.weight\"></i>\n","import { booleanAttribute, Component, Input } from '@angular/core';\nimport { GtrIconComponent } from '../icon';\n\ntype BadgeColor =\n  | 'danger'\n  | 'info'\n  | 'brown'\n  | 'pink'\n  | 'purple'\n  | 'blue'\n  | 'warning'\n  | 'success'\n  | 'dark'\n  | 'gray'\n  | 'dark-green'\n  | 'indigo'\n  | 'default';\n\n@Component({\n  selector: 'gtr-badge',\n  templateUrl: './gtr-badge.component.html',\n  styleUrls: ['./gtr-badge.component.scss'],\n  imports: [GtrIconComponent],\n})\nexport class GtrBadgeComponent {\n  /*\n    Option for badges name\n    @default value is 'badge'\n  */\n  @Input() name = 'badge';\n  @Input() dataTransactionName = 'no-tagged';\n\n  /*\n    Option for badges shape\n    @default value is default\n  */\n  @Input() shape: 'default' | 'round' = 'default';\n\n  /*\n    Option for badges type\n    @default value is pill\n  */\n  @Input() type: 'pill' | 'icon' | 'dot' = 'pill';\n\n  /*\n    Option for badges color\n    @default value is default\n  */\n  @Input() color: BadgeColor = 'gray';\n\n  /*\n    Option for add accessibility with aria attributes to set label\n  */\n  @Input('aria-label') ariaLabel: string | undefined;\n\n  /*\n    Option to hide badge default is false\n  */\n  @Input({ transform: booleanAttribute }) hidden: boolean = false;\n\n  /*\n    Option to set badge position overlap or default to specific element\n    @default value is default\n  */\n  @Input() position: 'default' | 'overlap' = 'default';\n\n  /*\n    Option to set badge position overlap or default to specific element\n    @default value is default\n  */\n  @Input() id: string = '';\n  @Input() testid: string = '';\n\n  /*\n    Option to set badge position using attributes\n    (Note: use position property if position value is overlap)\n  */\n  @Input() positionProperty: {\n    top?: string;\n    bottom?: string;\n    left?: string;\n    right?: string;\n    align?: string;\n  } = {};\n\n  /*\n    Option to set badge custom background color\n  */\n  @Input('background-color') backgroundColor?: string;\n\n  @Input('icon-name') iconName?: string;\n\n  constructor() {\n    this.id = this.testid;\n  }\n}\n","@if (!hidden) {\n  <div\n    [id]=\"id\"\n    [attr.data-testid]=\"testid\"\n    [attr.name]=\"name\"\n    [attr.data-transaction-name]=\"dataTransactionName || name + '-badge'\"\n    role=\"status\"\n    [attr.aria-hidden]=\"hidden ? 'true' : 'false'\"\n    [attr.aria-label]=\"ariaLabel || 'gtr-badges'\"\n    [class]=\"'gtr-badge ' + type +' ' + color +' ' + shape +' ' + (hidden ? 'hide' : '') +' ' + position\"\n    tabindex=\"0\"\n    [style]=\"{\n    top: positionProperty.top,\n    left: positionProperty.left,\n    bottom: positionProperty.bottom,\n    right: positionProperty.right,\n  }\"\n  >\n    @if (type === 'icon' && iconName) {\n      <gtr-icon [dataTransactionName]=\"dataTransactionName || name + '-badge-icon'\"\n                [name]=\"iconName\" [size]=\"16\"></gtr-icon>\n    }\n    <ng-content></ng-content>\n  </div>\n}\n","import { booleanAttribute, Directive, HostBinding, Input } from '@angular/core';\n\nimport { ButtonType, Colors, Shapes } from '../../core-components.types';\n\n@Directive({\n  selector: '[gtrButton]',\n  exportAs: 'gtrButton',\n  standalone: true,\n})\nexport class GtrButtonDirective {\n  /**\n   * Toggle the active state for the component. [docs]\n   * @type boolean\n   */\n  @Input({ transform: booleanAttribute }) active: string | boolean = false;\n\n  /**\n   * Sets the color context of the component to one of Gettrx’s themed colors. [docs]\n   * @type Colors\n   */\n  @Input() color?: Colors = 'primary';\n  /**\n   * Toggle the disabled state for the component.\n   * @type boolean\n   */\n  @Input({ transform: booleanAttribute }) disabled: string | boolean = false;\n\n  /**\n   * Select the shape of the component.\n   * @type { 'rounded' | 'rounded-top' | 'rounded-end' | 'rounded-bottom' | 'rounded-start' | 'rounded-circle' | 'rounded-pill' | 'rounded-0' | 'rounded-1' | 'rounded-2' | 'rounded-3' | string }\n   */\n  @Input() shape?: Shapes;\n\n  /**\n   * Size the component small or large.\n   * @type {'sm' | 'lg'}\n   */\n  @Input() size?: 'sm' | 'lg' | '' = '';\n\n  /**\n   * Specifies the type of button. Always specify the type attribute for the `<button>` element.\n   * Different browsers may use different default types for the `<button>` element.\n   */\n  @HostBinding('attr.type')\n  @Input()\n  type: ButtonType = 'button';\n\n  /**\n   * Set the button variant to an outlined button or a ghost button.\n   * @type {'ghost' | 'outline'}\n   */\n  @Input() variant?: 'ghost' | 'outline';\n\n  @HostBinding('class')\n  get hostClasses(): any {\n    return {\n      btn: true,\n      [`btn-${this.color}`]: !!this.color && !this.variant,\n      [`btn-${this.variant}`]: !!this.variant && !this.color,\n      [`btn-${this.variant}-${this.color}`]: !!this.variant && !!this.color,\n      [`btn-${this.size}`]: !!this.size,\n      [`${this.shape}`]: !!this.shape,\n      disabled: this.disabled,\n      active: this.active,\n    };\n  }\n  // btn-primary\n  // btn-outline\n\n  @HostBinding('attr.aria-disabled')\n  get ariaDisabled() {\n    return this.disabled || null;\n  }\n\n  @HostBinding('attr.aria-pressed')\n  get isActive(): boolean | null {\n    return <boolean>this.active || null;\n  }\n\n  @HostBinding('attr.disabled')\n  get attrDisabled() {\n    return this.disabled ? '' : null;\n  }\n\n  @HostBinding('attr.tabindex')\n  get tabIndex(): string | null {\n    return this.disabled ? '-1' : null;\n  }\n}\n","import { booleanAttribute, Directive, HostBinding, Input } from '@angular/core';\nimport { GtrButtonDirective } from './gtr-button.directive';\n\n@Directive({\n  selector: '[gtrButtonClose]',\n  standalone: true,\n})\nexport class GtrButtonCloseDirective extends GtrButtonDirective {\n  /**\n   * Change the default color to white.\n   * @type boolean\n   */\n  @Input({ transform: booleanAttribute }) white: string | boolean = false;\n\n  @HostBinding('class')\n  override get hostClasses(): any {\n    return {\n      btn: true,\n      'btn-close': true,\n      'btn-close-white': this.white,\n      [`btn-${this.size}`]: !!this.size,\n      disabled: this.disabled,\n      active: this.active,\n    };\n  }\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { ButtonColor, ButtonVariant, ButtonType } from './gtr-button.types';\n\n@Component({\n  standalone: true,\n  selector: 'gtr-button',\n  templateUrl: './gtr-button.component.html',\n  styleUrls: ['./gtr-button.component.scss'],\n})\nexport class GtrButtonComponent implements OnInit {\n  public classMap: any;\n\n  /** (optional) Button type */\n  @Input() type?: ButtonType | any = 'button';\n\n  /** (optional) Button type */\n  @Input() btnId = '';\n\n  /** (optional) Button type */\n  @Input() name = 'button';\n  @Input() dataTransactionName = 'no-tagged';\n\n  /**\n   * (optional) color.\n   * @default primary\n   */\n  @Input() color?: ButtonColor | any = 'primary';\n\n  /**\n   * (optional) loading.\n   * @default isLoading\n   */\n  @Input() isLoading?: boolean = false;\n\n  /**\n   * Optional variant. <br />\n   * `raised` :   Rectangular contained button w/ elevation <br />\n   * `flat` :   Rectangular contained button w/ no elevation <br />\n   * `outline` :   Rectangular outlined button w/ no elevation <br />\n   * `link` :   Rectangular text button w/ no elevation <br />\n   * `icon` :   Circular button with a transparent background, meant to contain an icon\n   */\n  @Input() variant?: ButtonVariant | any = 'raised';\n\n  /** (optional) If `true`, the button is disabled */\n  @Input() disabled?: boolean = false;\n\n  public getCssClassMap() {\n    return {\n      [`${this.type}`]: true,\n      [`${this.color}`]: true,\n      [`${this.variant}`]: true,\n      ['button--loading']: this.isLoading,\n      ['disabled']: this.disabled,\n    };\n  }\n\n  ngOnInit(): void {}\n}\n","<button [type]=\"this.type\" [class]=\"getCssClassMap()\" [id]=\"btnId\" [name]=\"name\"\n        [attr.data-transaction-name]=\"dataTransactionName || name + '-button'\" [attr.data-testid]=\"btnId\"\n  [attr.aria-disabled]=\"this.disabled ? 'true' : 'false'\" [disabled]=\"this.disabled\">\n  <ng-content></ng-content>\n</button>\n","import {\n  AfterViewInit,\n  Component,\n  ElementRef,\n  EventEmitter,\n  HostListener,\n  Input,\n  Output,\n  ViewChild,\n} from '@angular/core';\n\n@Component({\n  standalone: true,\n  selector: 'gtr-button-dropdown',\n  templateUrl: './gtr-button-dropdown.component.html',\n  styleUrl: './gtr-button-dropdown.component.scss',\n})\nexport class GtrButtonDropdownComponent implements AfterViewInit {\n  public csvLoader: boolean = false;\n  public isOpened: boolean = true;\n\n  constructor(private elementRef: ElementRef) {}\n\n  isDropdownOpen = false;\n  dropdownPosition = { top: '0px', left: '0px' };\n  @Input() options: any;\n  @Input() color!: string;\n  @Input() backgroundColor!: string;\n\n  /** (optional) Button type */\n  @Input() type?: any = 'button';\n\n  /** (optional) Button type */\n  @Input() btnId = '';\n\n  /** (optional) Button type */\n  @Input() name = 'button-dropdown';\n  @Input() dataTransactionName = 'no-tagged-btn-dropdown';\n\n  @ViewChild('dropdownMenu') dropdownMenu!: ElementRef;\n  @Output() onSelect: EventEmitter<any> = new EventEmitter();\n\n  toggleDropdown(event: Event): void {\n    event.stopPropagation();\n    this.isDropdownOpen = !this.isDropdownOpen;\n\n    if (this.isDropdownOpen) {\n      this.updateDropdownPosition(); // Set initial position\n    }\n  }\n\n  @HostListener('document:click', ['$event'])\n  closeDropdown(event: Event): void {\n    if (!this.elementRef.nativeElement.contains(event.target)) {\n      this.isDropdownOpen = false;\n    }\n  }\n\n  ngAfterViewInit() {\n    window.addEventListener('scroll', this.onScroll, true); // `true` is important to capture events in the capture phase\n  }\n\n  onScroll = (event: Event) => {\n    const target = event.target as HTMLElement;\n    if (target.scrollTop > 0 && this.isDropdownOpen) {\n      this.updateDropdownPosition();\n    }\n  };\n\n  updateDropdownPosition(): void {\n    if (this.isDropdownOpen) {\n      const button = this.elementRef?.nativeElement?.querySelector('.dropbtn');\n      const rect = button?.getBoundingClientRect();\n\n      // Calculate the dropdown position based on the button's position\n      this.dropdownPosition.top = `${rect.bottom + window.scrollY}px`; // Adjust for scroll\n      this.dropdownPosition.left = `${rect.left}px`;\n    }\n  }\n\n  onSelectOption(option: string | number): void {\n    this.onSelect.emit(option);\n  }\n}\n","<div class=\"dropdown\">\n  <button class=\"dropbtn\" [type]=\"type\"  [name]=\"name\" [style.color]=\"color\" [id]=\"btnId\" [style.background-color]=\"backgroundColor\" (click)=\"toggleDropdown($event)\"\n  [attr.data-transaction-name]=\"dataTransactionName || name + '-button-dropdown'\" [attr.data-testid]=\"btnId\">\n    Actions\n    <span class=\"arrow\" [class]=\"{ 'open': isDropdownOpen }\">&#9662;</span>\n  </button>\n  <div class=\"dropdown-content\" [class]=\"{ show: isDropdownOpen }\" #dropdownMenu [style.top]=\"dropdownPosition.top\"\n    [style.left]=\"dropdownPosition.left\" style=\"position: fixed;\">\n    @for (option of options; track $index) {\n    <a (click)=\"onSelectOption(option)\">{{option?.name}}</a>\n    }\n  </div>\n</div>\n","import { Component, EventEmitter, Input, Optional, Output, Self } from '@angular/core';\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\n@Component({\n  standalone: true,\n  selector: 'gtr-switch',\n  templateUrl: './gtr-switch.component.html',\n  styleUrls: ['./gtr-switch.component.scss'],\n})\nexport class GtrSwitchComponent implements ControlValueAccessor {\n  /**\n   * Checked state for gtr switch button\n   * @returns boolean value\n   */\n  @Input() checked: boolean = false;\n\n  /**\n   * Id for debugging the element\n   * @returns boolean value\n   */\n  @Input() switchId = '';\n\n  /**\n   * Disabled state for switch button\n   * accept boolean value\n   */\n  @Input() disabled: boolean = false;\n\n  /**\n   * Readonly state for switch button\n   * accept boolean value\n   */\n  @Input() readonly: boolean = false;\n\n  /**\n   * Readonly state for switch button\n   * accept boolean value\n   */\n  @Input() tabIndex = 0;\n\n  /**\n   * To add label text for switches\n   */\n  @Input() label?: string | number;\n\n  @Input() dataTransactionName: string = 'no-tagged';\n\n  /**\n   * To detect value change events in gtr switch\n   * @returns Custom event for latest checked state\n   */\n  @Output() gtrChange: EventEmitter<boolean> = new EventEmitter();\n\n  constructor(@Optional() @Self() public ngControl: NgControl) {\n    if (this.ngControl != null) {\n      this.ngControl.valueAccessor = this;\n    }\n  }\n\n  onChanged: any = (e: any) => {\n    // console.log(e);\n  };\n\n  onTouched: any = (e: any) => {\n    // console.log(e);\n  };\n  writeValue(value: boolean): void {\n    this.checked = value;\n  }\n  registerOnChange(fn: any): void {\n    this.onChanged = fn;\n  }\n  registerOnTouched(fn: any): void {\n    this.onTouched = fn;\n  }\n  setDisabledState?(isDisabled: boolean): void {\n    this.disabled = isDisabled;\n  }\n\n  /**\n   * Local method to handle keyboard events for switch button\n   */\n  public handleKeyDown(event: KeyboardEvent) {\n    event.preventDefault();\n    if (!this.disabled && !this.readonly) {\n      if (event.key === 'Enter') {\n        this.checked = !this.checked;\n        if (this.ngControl) {\n          this.ngControl.control?.setValue(this.checked);\n        }\n        this.gtrChange.emit(this.checked);\n      }\n    }\n  }\n\n  /**\n   * Local method to handle click events for switch button\n   */\n  public handleClick() {\n    if (!this.disabled && !this.readonly) {\n      this.checked = !this.checked;\n      if (this.ngControl) {\n        this.ngControl.control?.setValue(this.checked);\n      }\n      this.gtrChange.emit(this.checked);\n    }\n  }\n}\n","<label\n  [class]=\"'gtr-switch-wrapper'\"\n  [id]=\"switchId\"\n  [attr.data-testid]=\"switchId\"\n  [attr.data-transaction-name]=\"dataTransactionName + 'switch-wrapper'\"\n  [class.readonly]=\"readonly\"\n  role=\"switch\"\n>\n  <input\n    [class]=\"'gtr-switch-input'\"\n    [id]=\"switchId + '-input'\"\n    [attr.data-testid]=\"switchId + '-input'\"\n    [class.readonly]=\"readonly\"\n    type=\"checkbox\"\n    [checked]=\"this.checked\"\n    data-toggle=\"toggle\"\n    [disabled]=\"this.disabled\"\n    [readonly]=\"this.readonly\"\n    [attr.aria-label]=\"this.label\"\n    [attr.aria-describedBy]=\"this.label\"\n    [attr.aria-readonly]=\"this.readonly\"\n    [attr.aria-disabled]=\"this.disabled\"\n    [attr.data-transaction-name]=\"dataTransactionName + 'switch'\"\n    [tabIndex]=\"this.tabIndex\"\n    (keydown)=\"this.handleKeyDown($event)\"\n    (change)=\"this.handleClick()\"\n  />\n  <span\n    class=\"gtr-switch-button\"\n    [attr.data-transaction-name]=\"dataTransactionName + 'switch-button'\"\n  ></span>\n  @if (label) {\n    <span\n      class=\"gtr-switch-label\"\n      (click)=\"$event.preventDefault(); $event.stopPropagation()\"\n      [id]=\"switchId + '-label'\"\n      [attr.data-testid]=\"switchId + '-label'\"\n      [attr.data-transaction-name]=\"dataTransactionName + 'switch-label'\"\n      >{{ label }}</span\n    >\n  }\n</label>\n","import {\n  AfterViewInit,\n  Component,\n  ElementRef,\n  HostListener,\n  Input,\n  Optional,\n  Self,\n  ViewChild,\n} from '@angular/core';\nimport { positionType } from './utils/utils';\n@Component({\n  standalone: true,\n  selector: 'gtr-tooltip',\n  templateUrl: './gtr-tooltip.component.html',\n  styleUrls: ['./gtr-tooltip.component.scss'],\n})\nexport class GtrTooltipComponent implements AfterViewInit {\n  /**\n   * The tooltip element\n   */\n  @ViewChild('contentEl') contentEl?: ElementRef;\n\n  /**\n   * The resize and scroll listeners for scroll and window resize event is fired to adjust tooltip position\n   */\n  @HostListener('scroll')\n  @HostListener('resize')\n  handleResizeScroll(): void {\n    this.autoAdjustable && this.adjustPosition();\n  }\n\n  constructor(public tooltipElement: ElementRef) {}\n\n  /**\n   * The tooltip content\n   */\n  @Input() tooltipId = 'gtr-tooltip';\n\n  /**\n   * The tooltip content\n   */\n  @Input() content?: string;\n\n  /**\n   * The tooltip position\n   */\n  @Input() position: positionType = 'top';\n\n  /**\n   * The popover auto adjust position\n   */\n  @Input() autoAdjustable: boolean = false;\n\n  @Input() dataTransactionName = 'no-tagged';\n\n  /**\n   * The tooltip adjustable position\n   */\n  public newPosition: string = '';\n\n  // contentEl!: HTMLElement;\n\n  /**\n   * The watch decorator fires event when tooltip position changed\n   */\n  async adjustPosition() {\n    if (!(this.tooltipElement && this.contentEl)) {\n      return;\n    }\n    const triggerRect = await this.tooltipElement.nativeElement.getBoundingClientRect();\n    const tooltipRect = await this.contentEl.nativeElement.getBoundingClientRect();\n    const viewportWidth = window.innerWidth || document.documentElement.clientWidth;\n    const viewportHeight = window.innerHeight || document.documentElement.clientHeight;\n    this.newPosition = this.position;\n    if (triggerRect.right + tooltipRect.width > viewportWidth) {\n      if (triggerRect.left - tooltipRect.width >= 0) {\n        this.newPosition = 'left';\n      } else {\n        this.newPosition = 'right';\n      }\n    }\n    if (viewportWidth < 492) {\n      this.newPosition = 'bottom';\n    }\n    if (triggerRect.left <= (tooltipRect.width / 100) * 10) {\n      this.contentEl.nativeElement.style.left = '125%';\n    }\n    if (triggerRect.right <= (tooltipRect.width / 100) * 10) {\n      this.contentEl.nativeElement.style.right = '125%';\n    }\n    if (triggerRect.bottom + tooltipRect.height > viewportHeight) {\n      if (triggerRect.top - tooltipRect.height >= 0) {\n        this.newPosition = 'top';\n      } else {\n        this.newPosition = 'bottom';\n      }\n    }\n  }\n\n  /**\n   * The click event for hide tooltip visibility\n   */\n  hideTooltip(): void {\n    this.tooltipElement.nativeElement.style.visibility = 'hidden';\n  }\n\n  /**\n   * The componentWillLoad hook\n   */\n  ngAfterViewInit(): void {\n    this.newPosition = this.position;\n    setTimeout(() => {\n      if (!this.autoAdjustable) {\n        this.newPosition = this.position;\n        return;\n      }\n      this.autoAdjustable && this.adjustPosition();\n    }, 100);\n  }\n}\n","<div class=\"gtr-tooltip-wrapper\" [id]=\"tooltipId\" [attr.data-testid]=\"tooltipId\"\n     [attr.data-transaction-name]=\"dataTransactionName + '-tooltip-wrapper'\">\n  <ng-content></ng-content>\n  <div #contentEl [class]=\"'gtr-tooltip-text ' + newPosition\" [id]=\"tooltipId+'-text'\"\n    [attr.data-testid]=\"tooltipId+'-text'\" role=\"tooltip\" tabIndex=\"0\" [attr.aria-describedby]=\"'tooltip-'+tooltipId\"\n       [attr.data-transaction-name]=\"dataTransactionName + '-tooltip'\"\n    [innerHTML]=\"this.content\"></div>\n</div>\n","export const GTR_INPUT_CONSTANTS = {\n  email_regex: /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/,\n  password_regex: /^(?=.*\\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[@$!%*?&])(?=.*[a-zA-Z]).{8,}$/,\n  number_regex: /^[-+]?[0-9]+\\.[0-9]+$/,\n};\n\nexport const GTR_INPUT_ERROR_MESSAGES = {\n  invalid_number: 'Invalid number format',\n  invalid_input_type: 'Invalid input type',\n  invalid_email: 'Invalid email address',\n  empty_field: 'Field cannot be empty',\n  password_pattern:\n    'Password should contain at least one (1) of each: UPPERCASE LETTER, lowercase letter, numbers and special characters.',\n  input_not_allowed: 'Input type not allowed',\n};\n\nexport type input = 'text' | 'number' | 'password' | 'email';\n\nexport enum GtrInputType {\n  TEXT = 'text',\n  NUMBER = 'number',\n  PASSWORD = 'password',\n  EMAIL = 'email',\n}\n\nexport enum GtrInputState {\n  VALID = 'valid',\n  INVALID = 'invalid',\n}\n\nexport interface GtrInputDataResponse {\n  event: Event | KeyboardEvent;\n  value: string | number;\n  inputstate: string;\n  invalid: boolean;\n}\n","import { Component, ElementRef } from '@angular/core';\n\n@Component({\n  standalone: true,\n  selector: 'gtr-skeleton',\n  host: {\n    class: 'pulse',\n  },\n  template: ``,\n  styleUrls: ['./gtr-skeleton.component.scss'],\n})\nexport class GtrSkeletonComponent {\n  width!: string;\n  height!: string;\n  className!: string;\n\n  constructor(private host: ElementRef<HTMLElement>) {}\n\n  ngOnInit() {\n    const host = this.host.nativeElement;\n\n    if (this.className) {\n      host.classList.add(this.className);\n    }\n\n    host.style.setProperty('--skeleton-rect-width', this.width ?? '100%');\n    host.style.setProperty('--skeleton-rect-height', this.height ?? '20px');\n  }\n}\n","import { Directive, Input, SimpleChanges, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { GtrSkeletonComponent } from '../gtr-skeleton.component';\n\n@Directive({\n  selector: '[skeleton]',\n  standalone: true,\n})\nexport class GtrSkeletonDirective {\n  @Input('skeleton') isLoading = false;\n  @Input('skeletonRepeat') size = 1;\n  @Input('skeletonWidth')\n  width!: string;\n  @Input('skeletonHeight')\n  height!: string;\n  @Input('skeletonClassName')\n  className!: string;\n\n  constructor(\n    private tpl: TemplateRef<any>,\n    private vcr: ViewContainerRef,\n  ) {}\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (changes['isLoading']) {\n      this.vcr.clear();\n\n      if (changes['isLoading'].currentValue) {\n        Array.from({ length: this.size }).forEach(() => {\n          const ref = this.vcr.createComponent(GtrSkeletonComponent);\n\n          Object.assign(ref.instance, {\n            width: this.width === 'rand' ? `${Math.random}%` : this.width,\n            height: this.height,\n            className: this.className,\n          });\n        });\n      } else {\n        this.vcr.createEmbeddedView(this.tpl);\n      }\n    }\n  }\n}\n","import {\n  AfterViewInit,\n  Component,\n  EventEmitter,\n  Input,\n  Optional,\n  Output,\n  Renderer2,\n  Self,\n} from '@angular/core';\nimport {\n  GTR_INPUT_CONSTANTS,\n  GTR_INPUT_ERROR_MESSAGES,\n  GtrInputDataResponse,\n  GtrInputState,\n  GtrInputType,\n} from './utils/gtr-input-utils';\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\nimport { GtrSkeletonDirective } from '../skeleton';\nimport { GtrIconComponent } from '../icon';\n@Component({\n  selector: 'gtr-input',\n  templateUrl: './gtr-input.component.html',\n  styleUrls: ['./gtr-input.component.scss'],\n  imports: [GtrSkeletonDirective, GtrIconComponent],\n})\nexport class GtrInputComponent implements ControlValueAccessor, AfterViewInit {\n  constructor(\n    @Optional() @Self() public ngControl: NgControl,\n    private renderer: Renderer2,\n  ) {\n    if (this.ngControl != null) {\n      this.ngControl.valueAccessor = this;\n    }\n  }\n\n  onChanged: any = (e: any) => {\n    // console.log(e);\n  };\n\n  onTouched: any = (e: any) => {\n    // console.log(e);\n  };\n\n  registerOnChange(fn: (value: any) => void): void {\n    this.onChanged = fn;\n  }\n\n  writeValue(obj: any): void {\n    if (obj !== this.value) {\n      this.value = obj;\n    }\n  }\n\n  registerOnTouched(fn: () => void) {\n    this.onTouched = fn;\n  }\n\n  setDisabledState(isDisabled: boolean): void {\n    this.disabled = isDisabled;\n  }\n\n  ngAfterViewInit(): void {\n    if (this.setFocus && this.inputId) {\n      const element = this.renderer.selectRootElement(`#${this.inputId}`);\n      setTimeout(() => element.focus(), 0);\n    }\n  }\n\n  /**\n   * The Skeleton loading\n   */\n\n  @Input() inputWrapperId = '';\n\n  /**\n   * The Skeleton loading\n   */\n\n  @Input() loading: boolean = false;\n\n  inputType: string = '';\n  /**\n   * The input type\n   */\n  @Input() set type(value: string) {\n    this.inputType = value;\n    if (this.isDesiredInput()) {\n      if (this.isOnlyView) {\n        // this.readonly = true;\n        this.defaultValidation = false;\n        // this.isValid = true;\n      } else {\n        this.hasErrorValidate();\n      }\n      this.inputId = `grt-radio-${Math.random().toString(36).substring(2, 10)}`;\n      return;\n    }\n    this.handleError.emit(new Error(GTR_INPUT_ERROR_MESSAGES.input_not_allowed));\n  }\n\n  @Input() name = 'input';\n  @Input() dataTransactionName = 'no-tagged';\n\n  /**\n   * The input value\n   */\n  @Input() value: string | number = '';\n\n  /**\n   * The input pleaceholder\n   */\n  @Input() placeholder: string = '';\n\n  /**\n   * The input icon\n   */\n  @Input() inputIcon: string = '';\n\n  /**\n   * The input icon size\n   */\n  @Input() iconSize: number = 20;\n\n  /**\n   * The input icon color\n   */\n  @Input() iconColor: string = 'var(--gtr-color-base-black-40)';\n\n  /**\n   * The required\n   */\n  @Input() iconPosition: 'start' | 'end' = 'start';\n\n  /**\n   * The input icon font weight\n   */\n  @Input() iconFontWeight: string = 'normal';\n\n  /**\n   * The input label\n   */\n  @Input() inputLabel: string = '';\n\n  /**\n   * The disabled input\n   */\n  @Input() disabled: boolean = false;\n\n  /**\n   * The check label\n   */\n  @Input() validateLabel: boolean = false;\n\n  /**\n   * The disabled input\n   */\n  @Input() isNumber: boolean = false;\n\n  /**\n   * The readonly input\n   */\n  @Input() readonly: boolean = false;\n\n  /**\n   * The readonly input\n   */\n  @Input() isOnlyView: boolean = false;\n\n  /**\n   * The default validation\n   */\n  @Input() defaultValidation: boolean = false;\n\n  /**\n   * The required\n   */\n  @Input() required: boolean = false;\n\n  /**\n   * The input valid boolean\n   */\n  @Input() isValid: boolean = true;\n\n  /**\n   * The input valid boolean\n   */\n  @Input() crop: boolean = false;\n\n  /**\n   * The error state\n   */\n  hasError: boolean = false;\n\n  /**\n   * The icon input field\n   */\n  isIcon: boolean = false;\n\n  /**\n   * The\n   */\n  isTouched: boolean = false;\n\n  /**\n   * The error message to be shown\n   */\n  errorMsg: string = '';\n\n  /**\n   * The input change eventemitter\n   */\n  @Output()\n  inputChanged: EventEmitter<GtrInputDataResponse> = new EventEmitter();\n\n  /**\n   * The error eventemitter\n   */\n  @Output() handleError: EventEmitter<Error> = new EventEmitter();\n\n  /**\n   * The input type validator\n   */\n  private inputFields: string[] = [\n    GtrInputType.TEXT,\n    GtrInputType.NUMBER,\n    GtrInputType.PASSWORD,\n    GtrInputType.EMAIL,\n  ];\n\n  /**\n   * The input data to be send when input value changes\n   */\n  private data: GtrInputDataResponse = {} as GtrInputDataResponse;\n\n  /**\n   * The input unique id\n   */\n  @Input() inputId?: string;\n\n  /**\n   * The input unique id\n   */\n  @Input()\n  setFocus: boolean =\n    /**\n     * The component function to handle input focus\n     */\n    false;\n\n  /**\n   * The component function to handle input change\n   */\n  handledKeyPressed(event: Event) {\n    this.data.event = event;\n    this.inputChanged.emit(this.data);\n  }\n  /**\n   * The component function to handle input change\n   */\n  handleInput(event: Event): void {\n    const inputElement = event.target as HTMLInputElement;\n    const inputValue = inputElement.value;\n    this.value = inputValue;\n    if (this.ngControl) {\n      this.ngControl.control?.setValue(this.value);\n    }\n    this.errorMsg = this.validateInput() as string;\n    this.hasError = !!this.errorMsg;\n    this.data.inputstate = GtrInputState.VALID;\n    this.data.invalid = false;\n    this.data.value = inputValue;\n    if (this.defaultValidation) {\n      if (this.hasError) {\n        this.data.inputstate = GtrInputState.INVALID;\n        this.data.invalid = true;\n      }\n    }\n    this.data.event = event;\n    this.inputChanged.emit(this.data);\n  }\n\n  /**\n   * The component function to handle input on focus event\n   */\n  handleOnfocus(): void {\n    if (!this.hasError && !this.value) {\n      this.hasError = false;\n    }\n    if (this.ngControl) {\n      this.ngControl.control?.markAsTouched();\n      this.ngControl.control?.markAsDirty();\n    }\n    this.isTouched = true;\n  }\n\n  /**\n   * The component function to handle input on blur event\n   */\n  handleOnBlur(): void {\n    if (!this.hasError && !this.value) {\n      this.hasError = false;\n    }\n    this.hasErrorValidate();\n  }\n\n  /**\n   * The component function to verify error input messages\n   */\n  hasErrorValidate = (): void => {\n    this.errorMsg = this.validateInput() as string;\n    this.hasError = !!this.errorMsg;\n  };\n\n  /**\n   * The component function to verify input type\n   */\n  public isDesiredInput(): boolean {\n    return !!this.inputType && this.inputFields.includes(this.inputType);\n  }\n\n  /**\n   * The decorator used to detect every change accurred for input and call function on change\n   */\n  validateInput(): string | null {\n    if (!this.defaultValidation) {\n      this.hasError = false;\n      this.isTouched = false;\n      return null;\n    }\n    if (this.isTouched || this.value) {\n      switch (this.inputType) {\n        case GtrInputType.TEXT: {\n          if (this.value === '') {\n            return GTR_INPUT_ERROR_MESSAGES.empty_field;\n          }\n          break;\n        }\n        case GtrInputType.PASSWORD: {\n          const passwordRegex = GTR_INPUT_CONSTANTS.password_regex as RegExp;\n          if (this.value === '') {\n            return GTR_INPUT_ERROR_MESSAGES.empty_field;\n          }\n          if (!passwordRegex.test(this.value.toString())) {\n            return GTR_INPUT_ERROR_MESSAGES.password_pattern;\n          }\n          break;\n        }\n        case GtrInputType.EMAIL: {\n          const emailRegex = GTR_INPUT_CONSTANTS.email_regex as RegExp;\n          if (this.value === '') {\n            return GTR_INPUT_ERROR_MESSAGES.empty_field;\n          }\n          if (!emailRegex.test(this.value.toString())) {\n            return GTR_INPUT_ERROR_MESSAGES.invalid_email;\n          }\n          break;\n        }\n        case GtrInputType.NUMBER: {\n          if (\n            this.value === null ||\n            this.value === undefined ||\n            this.value === '' ||\n            isNaN(Number(this.value))\n          ) {\n            return GTR_INPUT_ERROR_MESSAGES.invalid_number;\n          }\n          break;\n        }\n        default: {\n          return GTR_INPUT_ERROR_MESSAGES.invalid_input_type;\n        }\n      }\n      if (this.isNumber) {\n        if (this.value === null || this.value === undefined || this.value === '') {\n          return GTR_INPUT_ERROR_MESSAGES.invalid_number;\n        }\n      }\n    }\n\n    return null;\n  }\n\n  get isShowCustomError(): boolean {\n    return !(\n      this.isValid ||\n      this.defaultValidation ||\n      this.isOnlyView ||\n      this.readonly ||\n      this.disabled\n    )\n      ? !!(!(this.hasError && this.errorMsg) && (this.inputLabel || this.validateLabel))\n      : false;\n  }\n\n  get isShowDefaultError(): boolean {\n    return !(this.isOnlyView || this.readonly || this.disabled)\n      ? !!(this.hasError && this.errorMsg && (this.inputLabel || this.validateLabel))\n      : false;\n  }\n\n  get isInputInvalid(): boolean {\n    return !(this.isOnlyView || this.readonly || this.disabled)\n      ? this.hasError || (!this.defaultValidation ? !this.isValid : false)\n      : false;\n  }\n}\n","@if (this.isDesiredInput()) {\n  <div class=\"gtr-form-element-wrapper gtr-have-icon gtr-relative-element gtr-have-error\"\n       [id]=\"inputWrapperId+'-wrapper'\"\n       [attr.data-transaction-name]=\"(dataTransactionName || name) + '-input-wrapper'\"\n       [attr.data-testid]=\"inputWrapperId+'-wrapper'\">\n    @if (inputLabel) {\n      <label for={{this.inputId}} class=\"gtr-form-element-label\" [id]=\"inputWrapperId+'-label'\"\n             [attr.data-transaction-name]=\"(dataTransactionName || name) + '-input-label'\"\n             [attr.data-testid]=\"inputWrapperId+'-label'\" [class.isonlyview]=\"isOnlyView\">\n        {{ inputLabel }}\n      </label>\n    }\n    <ng-container *skeleton=\"loading; repeat: 1; className:'skeleton-margin-bottom'; height: '16px'; width: '150px';\">\n      @if (!isOnlyView) {\n        <input [id]=\"this.inputId\" [class]=\"'gtr-form-element-input ' + iconPosition\"\n               [class.gtr-input-width-icon]=\"inputIcon\" [class.gtr-invalid]=\"isInputInvalid\"\n               [type]=\"this.isDesiredInput() ? this.inputType : ''\" [value]=\"this.value\"\n               [placeholder]=\"this.placeholder\"\n               [disabled]=\"this.disabled\" [readOnly]=\"this.readonly\" [required]=\"this.required\"\n               [tabIndex]=\"this.disabled || this.readonly ? -1 : 0\" (focus)=\"this.handleOnfocus()\"\n               (blur)=\"this.handleOnBlur()\"\n               (input)=\"this.handleInput($event)\" (keypress)=\"this.handledKeyPressed($event)\"\n               [name]=\"name + '-input'\" [attr.data-transaction-name]=\"(dataTransactionName || name) + '-input'\"\n               [style.padding-left]=\"this.isOnlyView && this.inputIcon && this.iconPosition === 'start' ? (this.iconSize + 'px') : ''\"/>\n      }\n      <div class=\"input-icon\">\n        @if (inputIcon && iconPosition == 'start') {\n\n          <span [class]=\"'gtr-input-icon ' + iconPosition\" [id]=\"inputWrapperId+'-icon'\"\n                [attr.data-testid]=\"inputWrapperId+'-icon'\" [class.isOnlyView]=\"isOnlyView\">\n            <gtr-icon [name]=\"this.inputIcon\" [size]=\"this.iconSize\" [color]=\"this.iconColor\"\n                      [weight]=\"this.iconFontWeight\"></gtr-icon>\n          </span>\n        }\n        @if (isOnlyView) {\n          <span [class]=\"'gtr-form-element-input ' + (inputIcon && iconPosition) + (crop ? ' crop':'')\"\n                [id]=\"inputWrapperId+'-readonly'\"\n                [attr.data-testid]=\"inputWrapperId+'-readonly'\" [class.isonlyview]=\"isOnlyView\"\n                [title]=\"(crop ? value:'')\">\n            {{ value ? value : placeholder }}\n          </span>\n        }\n\n        @if (inputIcon && iconPosition == 'end') {\n          <span [class]=\"'gtr-input-icon ' + iconPosition\" [id]=\"inputWrapperId+'-icon'\"\n                [attr.data-testid]=\"inputWrapperId+'-icon'\" [class.isOnlyView]=\"isOnlyView\">\n            <gtr-icon [name]=\"this.inputIcon\" [size]=\"this.iconSize\" [color]=\"this.iconColor\"\n                      [weight]=\"this.iconFontWeight\"></gtr-icon>\n          </span>\n        }\n      </div>\n      @if (isShowDefaultError) {\n        <div class=\"gtr-error-wrap\">\n          <gtr-icon name=\"info-circle-filled\" [size]=\"12\"></gtr-icon>\n          {{ this.errorMsg }}\n        </div>\n      }\n      @if (isShowCustomError) {\n        <div class=\"gtr-error-wrap\">\n          <ng-content select=\"[slot='custom-error']\"></ng-content>\n        </div>\n      }\n    </ng-container>\n  </div>\n}\n","export const GTR_TEXTTAREA_ERROR_MESSAGES = {\n  empty_field: 'Field cannot be empty.',\n};\n\nexport enum GtrTextareaState {\n  VALID = 'valid',\n  INVALID = 'invalid',\n}\n\nexport interface GtrTextareaDataResponse {\n  value: string | number;\n  textareastate: string;\n  invalid: boolean;\n}\n","import { Component, EventEmitter, Input, Optional, Output, Self } from '@angular/core';\nimport {\n  GTR_TEXTTAREA_ERROR_MESSAGES,\n  GtrTextareaDataResponse,\n  GtrTextareaState,\n} from './utils/gtr-textarea.types';\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\nimport { GtrSkeletonDirective } from '../skeleton';\nimport { GtrIconComponent } from '../icon';\n\n@Component({\n  selector: 'gtr-textarea',\n  templateUrl: './gtr-textarea.component.html',\n  styleUrls: ['./gtr-textarea.component.scss'],\n  imports: [GtrSkeletonDirective, GtrIconComponent],\n})\nexport class GtrTextareaComponent implements ControlValueAccessor {\n  constructor(\n    @Optional()\n    @Self()\n    public ngControl: NgControl,\n  ) {\n    if (this.ngControl != null) {\n      this.ngControl.valueAccessor = this;\n    }\n  }\n\n  onChanged: any = (e: any) => {\n    // console.log(e);\n  };\n\n  onTouched: any = (e: any) => {\n    // console.log(e);\n  };\n\n  writeValue(obj: any): void {\n    // console.log(obj);\n    if (obj !== this.value) {\n      this.value = obj;\n    }\n  }\n\n  registerOnChange(fn: any): void {\n    this.onChanged = fn;\n  }\n\n  registerOnTouched(fn: any): void {\n    this.onTouched = fn;\n  }\n\n  setDisabledState?(isDisabled: boolean): void {\n    // throw new Error('Method not implemented.');\n  }\n\n  @Input() name = 'textarea';\n  @Input() dataTransactionName = 'no-tagged';\n\n  /**\n   * The textarea value\n   */\n  @Input()\n  value: string = '';\n\n  /**\n   * The textarea pleaceholder\n   */\n  @Input()\n  placeholder: string = '';\n\n  /**\n   * The textarea loading state\n   */\n  @Input()\n  loading: boolean = false;\n\n  /**\n   * The textarea label\n   */\n  @Input()\n  textareaLabel: string = '';\n\n  /**\n   * The disabled textarea\n   */\n  @Input()\n  disabled: boolean = false;\n\n  /**\n   * The wrapper id textarea\n   */\n  @Input()\n  textAreaWrapperId = '';\n\n  /**\n   * The readonly textarea\n   */\n  @Input()\n  readonly: boolean = false;\n\n  /**\n   * The textarea valid boolean\n   */\n  @Input() isValid: boolean = true;\n\n  /**\n   * The readonly textarea\n   */\n  @Input()\n  isOnlyView: boolean = false;\n\n  /**\n   * The default validation\n   */\n  @Input()\n  defaultValidation?: boolean;\n\n  /**\n   * The error state\n   */\n  hasError?: boolean;\n\n  /**\n   * The is touched\n   */\n  isTouched: boolean = false;\n\n  /**\n   * The error message to be shown\n   */\n  errorMsg: string = '';\n\n  /**\n   * The textarea change eventemitter\n   */\n  @Output()\n  textareaChanged: EventEmitter<GtrTextareaDataResponse> = new EventEmitter();\n\n  /**\n   * The error eventemitter\n   */\n  @Output() handleError: EventEmitter<any> = new EventEmitter();\n\n  /**\n   * The textarea data to be send when textarea value changes\n   */\n  private data: GtrTextareaDataResponse = {} as GtrTextareaDataResponse;\n\n  /**\n   * The textarea unique id\n   */\n  textareaId!: string;\n  /**\n   * The component function to handle textarea change\n   */\n  handleTextarea(event: Event): void {\n    const textareaElement = event.target as HTMLTextAreaElement;\n    const textareaValue = textareaElement.value;\n    this.value = textareaValue;\n    if (this.ngControl) {\n      this.ngControl.control?.setValue(this.value);\n    }\n    this.errorMsg = this.validatetextarea() as string;\n    this.hasError = !!this.errorMsg;\n    this.data.textareastate = GtrTextareaState.VALID;\n    this.data.invalid = false;\n    this.data.value = textareaValue;\n    if (this.defaultValidation) {\n      if (this.hasError) {\n        this.data.textareastate = GtrTextareaState.INVALID;\n        this.data.invalid = true;\n      }\n    }\n    this.textareaChanged.emit(this.data);\n  }\n\n  /**\n   * The component function to handle textarea on focus event\n   */\n  handleOnfocus(): void {\n    if (!this.hasError && !this.value) {\n      this.hasError = false;\n    }\n    if (this.ngControl) {\n      this.ngControl.control?.markAsTouched();\n      this.ngControl.control?.markAsDirty();\n    }\n    this.isTouched = true;\n  }\n\n  /**\n   * The component function to handle textarea on blur event\n   */\n  handleOnBlur(): void {\n    if (!this.hasError && !this.value) {\n      this.hasError = false;\n    }\n    this.hasErrorValidate();\n  }\n\n  /**\n   * The component function to verify error textarea messages\n   */\n  hasErrorValidate = (): void => {\n    this.errorMsg = this.validatetextarea() as string;\n    this.hasError = !!this.errorMsg;\n  };\n\n  /**\n   * The componentWillLoad hook\n   */\n  componentWillLoad(): void {\n    if (this.isOnlyView) {\n      // this.readonly = true;\n      this.defaultValidation = false;\n    } else {\n      this.hasErrorValidate();\n    }\n    this.textareaId = `grt-textarea-${Math.random().toString(36).substr(2, 10)}`;\n    return;\n  }\n\n  /**\n   * The decorator used to detect every change accurred for textarea and call function on change\n   */\n  validatetextarea(): string | null {\n    if (!this.defaultValidation) {\n      this.hasError = false;\n      this.isTouched = false;\n      return null;\n    }\n    if (this.isTouched || this.value) {\n      if (this.value.trim() === '') {\n        return GTR_TEXTTAREA_ERROR_MESSAGES.empty_field;\n      }\n    }\n    return null;\n  }\n\n  get isShowCustomError(): boolean {\n    return !(\n      this.isValid ||\n      this.defaultValidation ||\n      this.isOnlyView ||\n      this.readonly ||\n      this.disabled\n    )\n      ? !!(!(this.hasError && this.errorMsg) && this.textareaLabel)\n      : false;\n  }\n\n  get isShowDefaultError(): boolean {\n    return !(this.isOnlyView || this.readonly || this.disabled)\n      ? !!(this.hasError && this.errorMsg && this.textareaLabel)\n      : false;\n  }\n\n  get isInputInvalid(): boolean {\n    return !(this.isOnlyView || this.readonly || this.disabled)\n      ? this.hasError || (!this.defaultValidation ? !this.isValid : false)\n      : false;\n  }\n}\n","<div class=\"gtr-form-element-wrapper gtr-have-icon gtr-relative-element gtr-have-error\"\n     [attr.data-transaction-name]=\"dataTransactionName || name + '-textarea-wrapper'\"\n     [id]=\"textAreaWrapperId+'-wrapper'\" [attr.data-testid]=\"textAreaWrapperId+'-wrapper'\">\n  <label for={{this.textareaId}} [class]=\"'gtr-form-element-label'\" [id]=\"textAreaWrapperId+'-label'\"\n         [attr.data-transaction-name]=\"dataTransactionName || name + '-textarea-label'\"\n         [attr.data-testid]=\"textAreaWrapperId+'-label'\"\n         [class.isonlyview]=\"isOnlyView\">{{ this.textareaLabel }}</label>\n  <ng-container *skeleton=\"loading; repeat: 1; className:'skeleton-margin-bottom'; height: '16px'; width: '150px';\">\n    @if (!isOnlyView) {\n      <textarea [id]=\"this.textareaId\" [attr.data-testid]=\"this.textareaId\"\n                class=\"gtr-form-element-textarea\" [class.gtr-invalid]=\"isInputInvalid\" [class.isonlyview]=\"isOnlyView\"\n                [value]=\"this.value\" [placeholder]=\"this.placeholder\" [disabled]=\"this.disabled\"\n                [readOnly]=\"this.readonly\"\n                [attr.name]=\"name\" [attr.data-transaction-name]=\"dataTransactionName || name + '-textarea'\"\n                [tabIndex]=\"this.disabled || this.readonly ? -1 : 0\" (focus)=\"this.handleOnfocus()\"\n                (blur)=\"this.handleOnBlur()\"\n                (input)=\"this.handleTextarea($event)\"></textarea>\n    }\n\n    @if (isOnlyView) {\n      <span [class]=\"'gtr-form-element-textarea'\" [id]=\"textAreaWrapperId+'-readonly'\"\n            [attr.data-transaction-name]=\"dataTransactionName || name + '-textarea-readonly'\"\n            [attr.data-testid]=\"textAreaWrapperId+'-readonly'\" [class.isonlyview]=\"isOnlyView\">\n      {{ value }}\n      </span>\n    }\n\n    @if (isShowDefaultError) {\n      <div class=\"gtr-error-wrap\">\n        <gtr-icon name=\"info-circle-filled\" [size]=\"12\"></gtr-icon>\n        {{ this.errorMsg }}\n      </div>\n    }\n    @if (isShowCustomError) {\n      <div class=\"gtr-error-wrap\">\n        <ng-content select=\"[slot='custom-error']\"></ng-content>\n      </div>\n    }\n  </ng-container>\n</div>\n","import {\n  booleanAttribute,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  HostListener,\n  Input,\n  OnInit,\n  Output,\n  ViewChild,\n} from '@angular/core';\nimport { NgStyle } from '@angular/common';\n\n@Component({\n  selector: 'gtr-popover',\n  templateUrl: './gtr-popover.component.html',\n  styleUrls: ['./gtr-popover.component.scss'],\n  imports: [NgStyle],\n})\nexport class GtrPopoverComponent implements OnInit {\n  @Input() position: 'top' | 'bottom' | 'left' | 'right' = 'top';\n  @Input({ transform: booleanAttribute }) isOpened: boolean = false;\n  @Input({ transform: booleanAttribute }) showPositionIndicator: boolean = true;\n  @Input() moveX?: number | null = null;\n  @Input() moveY?: number | null = null;\n  @Input() padding?: number | null = null;\n  @Input() marginTop?: number | null = null;\n  @Input() marginBottom?: number | null = null;\n  @Input() marginLeft?: number | null = null;\n  @Input() marginRight?: number | null = null;\n  @Input({ transform: booleanAttribute }) closeOnClickOutside: boolean = true;\n  @Input() dataTransactionName = 'no-tagged';\n\n  @Input()\n  id: string = '';\n  @Input()\n  testId: string = '';\n\n  @Output() stateChanged: EventEmitter<any> = new EventEmitter();\n\n  @ViewChild('popoverEl') popoverEl: ElementRef | undefined;\n  @ViewChild('contentEl') contentEl: ElementRef | undefined;\n\n  isVisible: boolean = false;\n  adjustedPosition: string = '';\n  positionMargin: string = '100px';\n\n  @HostListener('window:resize', ['$event'])\n  onResize(event: Event): void {\n    this.adjustPopoverPosition();\n  }\n\n  constructor(private cdr: ChangeDetectorRef) {}\n\n  ngOnInit(): void {\n    this.adjustedPosition = this.position;\n    document.addEventListener('click', this.handleClickOutside.bind(this));\n    document.addEventListener('keyup', this.handleKeyUp.bind(this));\n  }\n\n  ngAfterViewInit() {\n    if (this.isOpened) this.isVisible = true;\n  }\n\n  togglePopover(): void {\n    this.isVisible = !this.isVisible;\n    if (this.isVisible) {\n      this.cdr.detectChanges(); // Trigger change detection\n      this.adjustPopoverPosition();\n    }\n    this.stateChanged.emit({ isOpened: this.isVisible });\n  }\n\n  handleClickOutside(event: Event): void {\n    if (!this.closeOnClickOutside) return;\n    const clickedOutsidePopover = !this.popoverEl?.nativeElement.contains(event.target as Node);\n    if (this.isVisible && clickedOutsidePopover) {\n      this.isVisible = false;\n      this.stateChanged.emit({ isOpened: this.isVisible });\n    }\n  }\n\n  handleKeyUp(event: KeyboardEvent): void {\n    if (event.key === 'Escape') {\n      this.isVisible = false;\n      this.stateChanged.emit({ isOpened: this.isVisible });\n    }\n  }\n\n  popoverContentClicked(event: Event): void {\n    event.stopPropagation();\n    event.preventDefault();\n  }\n\n  adjustPopoverPosition(): void {\n    if (this.popoverEl && this.contentEl) {\n      const triggerRect = this.popoverEl.nativeElement.getBoundingClientRect();\n      const popoverRect = this.contentEl.nativeElement.getBoundingClientRect();\n      const viewportWidth = window.innerWidth || document.documentElement.clientWidth;\n      const viewportHeight = window.innerHeight || document.documentElement.clientHeight;\n\n      this.adjustedPosition = this.position;\n\n      if (!popoverRect) {\n        return;\n      }\n\n      /**\n       * commented for future use\n       */\n      // Get the computed margin values\n      // const triggerButtonStyle = window.getComputedStyle(\n      //   this.popoverEl.nativeElement\n      // );\n      // const marginTop = parseFloat(triggerButtonStyle.marginTop) || 0;\n      // const marginBottom = parseFloat(triggerButtonStyle.marginBottom) || 0;\n      // const marginLeft = parseFloat(triggerButtonStyle.marginLeft) || 0;\n      // const marginRight = parseFloat(triggerButtonStyle.marginRight) || 0;\n\n      // Adjust position if there is not enough space\n      if (this.position === 'top' && triggerRect.top - popoverRect.height < 0) {\n        this.adjustedPosition = 'bottom';\n      } else if (\n        (this.position === 'right' || this.position === 'top' || this.position === 'bottom') &&\n        triggerRect.right + popoverRect.width > viewportWidth\n      ) {\n        this.adjustedPosition = 'left';\n      } else if (\n        this.position === 'bottom' &&\n        triggerRect.bottom + popoverRect.height > viewportHeight\n      ) {\n        this.adjustedPosition = 'top';\n      } else if (\n        (this.position === 'left' || this.position === 'top' || this.position === 'bottom') &&\n        triggerRect.left - popoverRect.width < 0\n      ) {\n        this.adjustedPosition = 'right';\n      }\n    }\n  }\n}\n","<div\n  [id]=\"id\"\n  [attr.data-test-id]=\"testId\"\n  [attr.data-transaction-name]=\"dataTransactionName + '-popover-wrapper'\"\n  #popoverEl\n  class=\"gtr-popover\"\n  (click)=\"togglePopover()\"\n  role=\"popover\"\n  [attr.aria-describedby]=\"'gtr-popover'\"\n  [ngStyle]=\"{\n    'margin-top.px': marginTop,\n    'margin-bottom.px': marginBottom,\n    'margin-left.px': marginLeft,\n    'margin-right.px': marginRight,\n  }\"\n>\n  <ng-content select=\"[slot='gtr-popover-trigger']\"></ng-content>\n  <div\n    #contentEl\n    [hidden]=\"!isVisible\"\n    [class.gtr-content-visible]=\"isVisible\"\n    [class]=\"\n      'gtr-content' +\n      ' ' +\n      adjustedPosition +\n      ' ' +\n      ' ' +\n      (showPositionIndicator ? 'gtr-indicator' : '')\n    \"\n    [tabIndex]=\"0\"\n    (click)=\"popoverContentClicked($event)\"\n    [style.padding.px]=\"padding\"\n    [ngStyle]=\"{ transform: 'translate(' + moveX + '%, ' + moveY + '%)' }\"\n    [attr.data-transaction-name]=\"dataTransactionName + '-popover'\"\n  >\n    <ng-container>\n      <ng-content select=\"[slot='gtr-popover-content']\"></ng-content>\n    </ng-container>\n  </div>\n</div>\n","import {\n  AfterViewInit,\n  booleanAttribute,\n  Component,\n  ElementRef,\n  EventEmitter,\n  HostListener,\n  Input,\n  OnInit,\n  Optional,\n  Output,\n  Self,\n} from '@angular/core';\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\n\n@Component({\n  standalone: true,\n  selector: 'gtr-radio-button',\n  templateUrl: './gtr-radio-button.component.html',\n  styleUrls: ['./gtr-radio-button.component.scss'],\n})\nexport class GtrRadioButtonComponent implements OnInit, AfterViewInit, ControlValueAccessor {\n  constructor(\n    @Optional() @Self() public ngControl: NgControl,\n    public radioEl: ElementRef,\n  ) {\n    if (this.ngControl != null) {\n      this.ngControl.valueAccessor = this;\n    }\n  }\n\n  onChanged: any = (e: any) => {\n    // console.log(e);\n  };\n\n  onTouched: any = (e: any) => {\n    // console.log(e);\n  };\n\n  registerOnChange(fn: (value: any) => void): void {\n    this.onChanged = fn;\n  }\n\n  writeValue(obj: any): void {\n    if (obj !== this.value) {\n      // this.value = obj;\n    }\n  }\n\n  registerOnTouched(fn: () => void) {\n    this.onTouched = fn;\n  }\n\n  /**\n   * The radio input name\n   */\n  @Input() name = 'radio-button';\n  @Input() dataTransactionName = 'no-tagged';\n\n  /**\n   * The radio input value\n   */\n  @Input() value: string = '';\n\n  /**\n   * The radio input disabled state\n   */\n  @Input({ transform: booleanAttribute }) disabled?: boolean;\n\n  /**\n   * The radio input checked state\n   */\n  @Input({ transform: booleanAttribute }) checked: boolean = false;\n\n  /**\n   * The radio input label\n   */\n  @Input() label?: string;\n\n  /**\n   * The radio input tabindex\n   */\n  @Input() tabIndexNav?: number;\n\n  /**\n   * The radio input value changed eventemitter\n   */\n  @Output() valueChanged: EventEmitter<any> = new EventEmitter();\n\n  /**\n   * The radio input id\n   */\n  @Input() radioId: string = '';\n\n  /**\n   * The radio input id\n   */\n  @Input() groupName: string = 'gtr-radio-name';\n\n  /**\n   * The componentDidLoad hook\n   */\n  ngAfterViewInit(): void {\n    // this.radioId = `grt-radio-${Math.random().toString(36).substr(2, 10)}`;\n  }\n\n  /**\n   * The decorator is used to select value via keyboard\n   */\n  @HostListener('document:keyup', ['$event']) handleKeyDown(event: KeyboardEvent) {\n    if (this.radioEl.nativeElement.contains(event.target)) {\n      if (event.key === 'Enter' || event.keyCode === 32) {\n        event.preventDefault();\n        this.handleChange();\n      } else if (event.key === 'ArrowUp' || event.key === 'ArrowLeft') {\n        event.preventDefault();\n        this.selectPreviousOption();\n      } else if (event.key === 'ArrowDown' || event.key === 'ArrowRight') {\n        event.preventDefault();\n        this.selectNextOption();\n      }\n    }\n  }\n\n  /**\n   * The component function for toggle radio checked state\n   */\n  handleClick(): void {\n    if (!this.disabled && !this.checked) {\n      this.toggleCheckedState();\n    }\n  }\n\n  /**\n   * The component function for toggle radio checked state\n   */\n  toggleCheckedState(): void {\n    this.checked = !this.checked;\n  }\n\n  /**\n   * The component function for selecting previous radio element\n   */\n  selectPreviousOption(): void {\n    const radioButtons: HTMLElement[] = Array.from(\n      this.radioEl.nativeElement.parentElement.querySelectorAll(`.gtr-form-element-radio`),\n    );\n    const currentIndex = radioButtons.findIndex((radioButton: any) =>\n      this.isElementFocused(radioButton),\n    );\n    const previousIndex = currentIndex === 0 ? radioButtons.length - 1 : currentIndex - 1;\n    radioButtons[previousIndex]?.focus();\n  }\n\n  /**\n   * The component function for check the active element\n   */\n  isElementFocused = (element: any): boolean => {\n    return element === document.activeElement;\n  };\n\n  /**\n   * The component function for selecting next radio element\n   */\n  selectNextOption(): void {\n    const radioButtons: HTMLElement[] = Array.from(\n      this.radioEl.nativeElement.parentElement.querySelectorAll(`.gtr-form-element-radio`),\n    );\n    const currentIndex = radioButtons.findIndex((radioButton: any) =>\n      this.isElementFocused(radioButton),\n    );\n    const nextIndex = currentIndex === radioButtons.length - 1 ? 0 : currentIndex + 1;\n    radioButtons[nextIndex]?.focus();\n  }\n\n  /**\n   * The component function for deselect unchecked values\n   */\n  deselectOtherOptions(): void {\n    if (this.disabled) return;\n    const radioButtons = Array.from(\n      this.radioEl.nativeElement.parentElement.querySelectorAll(`.gtr-form-element-radio`),\n    );\n    radioButtons.forEach((radioButton: any) => {\n      if (this.isElementFocused(radioButton)) {\n        radioButton.checked = true;\n      } else {\n        radioButton.checked = false;\n      }\n    });\n  }\n\n  /**\n   * The component function for set changed value and send selected value via eventemitter\n   */\n  handleChange(event?: any): void {\n    if (!this.disabled) {\n      this.checked = event ? event.target.checked : true;\n      if (this.ngControl) {\n        this.ngControl.control?.setValue(this.value);\n      }\n      this.deselectOtherOptions();\n      this.valueChanged.emit(this.value);\n    }\n  }\n\n  detectEnter(e: any) {\n    if (e.key == 'Enter' || e.key === ' ') {\n      this.handleChange();\n      e.preventDefault();\n    }\n  }\n\n  /*\n    render function to show tsx template\n  */\n  ngOnInit() {\n    const checkedLimit =\n      Array.from(\n        this.radioEl.nativeElement.parentElement.querySelectorAll(`gtr-radio-button`),\n      )?.filter((radio: any) => radio.checked).length > 1;\n    if (checkedLimit) {\n      throw new Error('[gtr-radio-button] should contain only one checked value.');\n    }\n  }\n}\n","<div class=\"gtr-form-element-wrapper\"\n     [id]=\"radioId+'-wrapper'\"\n     [attr.data-testid]=\"radioId+'-wrapper'\"\n     [tabIndex]=\"this.disabled ? -1 : this.tabIndexNav || 0\"\n     [attr.data-transaction-name]=\"dataTransactionName || name + '-radio-button-wrapper'\">\n  <div class=\"gtr-form-element-radio-wrapper gtr-relative-element\">\n    <input type=\"radio\"\n           [name]=\"groupName\"\n           class=\"gtr-form-element-radio\"\n           role=\"radio\"\n           [id]=\"this.radioId\"\n           [attr.data-testid]=\"this.radioId\"\n           [tabIndex]=\"this.disabled ? -1 : this.tabIndexNav || 0\"\n           value=\"{{value}}\"\n           [checked]=\"this.checked\"\n           [disabled]=\"this.disabled\"\n           (change)=\"this.handleChange($event)\"\n           (keydown)=\"detectEnter($event)\"\n           [attr.name]=\"name\"\n           [attr.data-transaction-name]=\"dataTransactionName || name + '-radio-button'\"\n           [attr.aria-checked]=\"this.checked ? 'true' : 'false'\"\n           [attr.aria-disabled]=\"this.disabled ? 'true' : 'false'\"/>\n    <span class=\"gtr-radio-stats\"> </span>\n    <label [id]=\"this.radioId+'-label'\"\n           [attr.data-testid]=\"this.radioId+'-label'\"\n           [class]=\"'gtr-radio-label' + (this.disabled ? ' disabled' : '')\"\n           [for]=\"this.radioId\"\n           [attr.data-transaction-name]=\"dataTransactionName || name + '-radio-button-label'\"\n           (click)=\"this.handleClick()\"\n           role=\"radio\"\n           [attr.aria-checked]=\"this.checked ? 'true' : 'false'\">{{ this.label }}</label>\n  </div>\n  <ng-content select=\"[slot='grt-info']\"></ng-content>\n</div>\n","// toaster-v2.service.ts\n\nimport { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { GtrToasterEvent } from '../util/gtr-toaster.util';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class GtrToasterService {\n  private toastSubject = new Subject<any>();\n\n  showToast(config?: GtrToasterEvent, duration?: number, data?: any): void {\n    this.toastSubject.next({ config, duration, data });\n  }\n\n  showError(message?: string, duration?: number): void {\n    const config: GtrToasterEvent = {\n      heading: '',\n      message: message,\n      type: 'error',\n    };\n    this.toastSubject.next({ config, duration });\n  }\n\n  showSuccess(message?: string, duration?: number): void {\n    const config: GtrToasterEvent = {\n      heading: '',\n      message: message,\n      type: 'success',\n    };\n    this.toastSubject.next({ config, duration });\n  }\n\n  showWarning(message?: string, duration?: number): void {\n    const config: GtrToasterEvent = {\n      heading: '',\n      message: message,\n      type: 'warning',\n    };\n    this.toastSubject.next({ config, duration });\n  }\n\n  showInfo(message?: string, duration?: number): void {\n    const config: GtrToasterEvent = {\n      heading: '',\n      message: message,\n      type: 'info',\n    };\n    this.toastSubject.next({ config, duration });\n  }\n\n  getToastSubject(): Subject<any> {\n    return this.toastSubject;\n  }\n}\n","import { Component, ElementRef, Input, ViewChild } from '@angular/core';\nimport { GtrToasterEvent } from './util/gtr-toaster.util';\nimport { Subscription } from 'rxjs';\nimport { GtrToasterService } from './services/gtr-toaster.service';\nimport { NgClass, NgStyle, TitleCasePipe } from '@angular/common';\nimport { GtrIconComponent } from '../icon';\nimport { GtrBadgeComponent } from '../badge';\n\n@Component({\n  selector: 'gtr-toaster',\n  templateUrl: './gtr-toaster.component.html',\n  styleUrls: ['./gtr-toaster.component.scss'],\n  imports: [NgClass, GtrIconComponent, NgStyle, GtrBadgeComponent, TitleCasePipe],\n})\nexport class GtrToasterComponent {\n  @Input()\n  id: string = '';\n  @Input()\n  testId: string = '';\n  @Input() dataTransactionName = 'no-tagged';\n\n  @ViewChild('toasterElement', { static: true })\n  toasterElement?: ElementRef<HTMLDivElement>;\n\n  duration: number;\n  toasterData: GtrToasterEvent = {\n    heading: 'Sample',\n    type: 'success',\n    message: 'sample toast message',\n    position: 'top-right',\n  };\n\n  open: boolean = false;\n\n  timeout: any;\n  resolvePromise: (data?: any) => void;\n  toastSubscription: Subscription = new Subscription();\n\n  constructor(private toasterV2Service: GtrToasterService) {}\n\n  ngOnInit() {\n    this.toasterElement?.nativeElement.focus();\n    this.subscribeToToasts();\n  }\n\n  ngOnDestroy() {\n    clearTimeout(this.timeout);\n    this.toastSubscription.unsubscribe();\n  }\n\n  showToast(config: any, duration: number, data?: any): Promise<any> {\n    this.open = true;\n    this.toasterData = config;\n    this.duration = duration;\n    this.scheduleHideToast(this.duration || 2000);\n\n    return new Promise<any>((resolve) => {\n      this.resolvePromise = resolve;\n    }).then(() => {\n      this.open = false;\n      return data;\n    });\n  }\n\n  scheduleHideToast(duration: number) {\n    clearTimeout(this.timeout);\n    this.timeout = setTimeout(() => {\n      this.open = false;\n      if (this.resolvePromise) {\n        this.resolvePromise();\n      }\n    }, duration);\n  }\n\n  hideToast() {\n    this.open = false;\n    if (this.resolvePromise) {\n      this.resolvePromise();\n    }\n  }\n\n  handleKeyDown(event: KeyboardEvent) {\n    if (event.key === 'Escape') {\n      this.hideToast();\n    }\n  }\n\n  public subscribeToToasts() {\n    const toastObserver = this.toasterV2Service.getToastSubject();\n    if (toastObserver) {\n      this.toastSubscription = this.toasterV2Service.getToastSubject().subscribe((toastConfig) => {\n        const toast = toastConfig || this.toasterData;\n        this.showToast(toast.config, toast.duration, toast.data);\n      });\n    }\n  }\n}\n","<!-- gtr-toaster.component.html -->\n\n<div\n  tabindex=\"0\"\n  #toasterElement\n  class=\"gtr-toaster-wrapper\"\n  [ngClass]=\"{\n    'show': open,\n    'hide': !open,\n    'top-right': toasterData && toasterData.position ? toasterData.position : 'top-right'\n  }\"\n  (keydown)=\"handleKeyDown($event)\"\n  [id]=\"id\" [attr.data-test-id]=\"testId\"\n  [attr.data-transaction-name]=\"dataTransactionName + '-toaster-wrapper'\"\n>\n  @if (open) {\n    <div\n      role=\"alert\"\n      aria-live=\"assertive\"\n      aria-atomic=\"true\"\n      class=\"gtr-toaster-content-wrapper\"\n      [ngStyle]=\"{ 'background-color': toasterData.backgroundColor }\"\n      [attr.data-transaction-name]=\"dataTransactionName + '-toaster'\"\n    >\n      <div class=\"gtr-toaster-icon\">\n        <gtr-badge\n          [shape]=\"'default'\"\n          [type]=\"'icon'\"\n          [color]=\"\n          toasterData.type === 'success'\n            ? 'success'\n            : toasterData.type === 'error'\n            ? 'danger'\n            : toasterData.type === 'info'\n            ? 'info'\n            : toasterData.type === 'warning'\n            ? 'warning'\n            : 'default'\n        \"\n          [dataTransactionName]=\"dataTransactionName + '-toaster-badge'\"\n        >\n          <gtr-icon\n            [name]=\"\n            toasterData.type === 'success'\n              ? 'check'\n              : toasterData.type === 'error'\n              ? 'x'\n              : toasterData.type === 'info'\n              ? 'info-circle'\n              : toasterData.type === 'warning'\n              ? 'alert-triangle'\n              : 'message'\n          \"\n            [size]=\"18\"\n          ></gtr-icon>\n        </gtr-badge>\n      </div>\n      <div class=\"gtr-toaster-content\">\n        <h5 [style.color]=\"toasterData.color\"><b>{{ (toasterData.heading || toasterData.type) | titlecase }}</b></h5>\n        @if (toasterData.message) {\n          <p [style.color]=\"toasterData.messageColor\">{{ toasterData.message }}</p>\n        }\n      </div>\n      <div class=\"close\" (click)=\"hideToast()\" [attr.data-transaction-name]=\"dataTransactionName + '-toaster-hide'\">\n        <gtr-icon name=\"x\" [size]=\"20\" [dataTransactionName]=\"dataTransactionName + '-toaster-hide'\"></gtr-icon>\n      </div>\n    </div>\n  }\n</div>\n","import { Component, Input } from '@angular/core';\nimport { GtrSkeletonDirective } from '../skeleton';\n\n@Component({\n  selector: 'gtr-display-value',\n  templateUrl: './gtr-display-value.component.html',\n  styleUrls: ['./gtr-display-value.component.scss'],\n  imports: [GtrSkeletonDirective],\n})\nexport class GtrDisplayValueComponent {\n  /** To manage skeleton loading state of component */\n  @Input() public loading!: boolean;\n\n  /** Label value of component */\n  @Input() public label!: string;\n\n  /** Value of component */\n  @Input() public value!: any;\n\n  /**\n   * 'html' Content type is used to show value as an html/text\n   * 'projected' Content type is used to show content in ng-content with the help of slot='custom-content' passed as an attribute to its parent container\n   */\n  @Input() public contentType!: 'html' | 'projected';\n\n  /** id attribute of component */\n  @Input() public id!: string;\n\n  /** dataTestId attribute of component */\n  @Input() public dataTestId!: string;\n\n  /** Skeleton configurations */\n  @Input() public skeletonConfigs!: {\n    repeat: number;\n    className: string;\n    height: string;\n    width: string;\n  };\n\n  @Input() dataTransactionName = 'no-tagged';\n}\n","<div class=\"gtr-display-value-wrapper\" [attr.id]=\"id\" [attr.data-testid]=\"dataTestId\"\n     [attr.data-transaction-name]=\"dataTransactionName + '-display-value-wrapper'\">\n  @if (label) {\n    <div class=\"gtr-display-value-label\"\n         [attr.data-transaction-name]=\"dataTransactionName + '-display-value-label'\">{{ label }}\n    </div>\n  }\n  <ng-container\n    *skeleton=\"\n      loading;\n      repeat: skeletonConfigs?.repeat ?? 1;\n      className: skeletonConfigs?.className ?? 'skeleton-margin-bottom';\n      height: skeletonConfigs?.height ?? '16px';\n      width: skeletonConfigs?.width ?? '150px'\n    \"\n  >\n    @if (contentType !== 'projected') {\n      <span class=\"gtr-display-value-content\"\n            [attr.data-transaction-name]=\"dataTransactionName + '-display-value-innerHTML'\"\n            [innerHTML]=\"value\"></span>\n    } @else {\n      <span class=\"gtr-display-value-content\"\n            [attr.data-transaction-name]=\"dataTransactionName + '-display-value-content'\">\n        <ng-content select=\"[slot='custom-content']\"></ng-content>\n      </span>\n    }\n  </ng-container>\n</div>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { GtrIconComponent } from '../../../atoms/icon';\nimport { GtrBadgeComponent } from '../../../atoms/badge';\n\n@Component({\n  selector: 'gtr-accordion',\n  templateUrl: './gtr-accordion.component.html',\n  styleUrls: ['./gtr-accordion.component.scss'],\n  imports: [GtrIconComponent, GtrBadgeComponent],\n})\nexport class GtrAccordionComponent {\n  /**\n   * The accordion title\n   */\n  @Input()\n  header: string = '';\n\n  /**\n   * The accordion status\n   */\n  @Input()\n  status: any = {\n    text: '',\n    color: 'gray',\n    size: '',\n  };\n\n  @Input()\n  id: string = '';\n\n  @Input()\n  testId: string = '';\n\n  /**\n   * The accordion content container class\n   */\n  @Input()\n  justifyContent: string = 'justify-content-space-between';\n\n  /**\n   * The icon prefix url\n   */\n  @Input()\n  prefixIcon: string = '';\n\n  /**\n   * The accordion open state\n   */\n  @Input()\n  opened: boolean = false;\n\n  /**\n   * The accordion icon size\n   */\n  @Input()\n  iconSize: number = 16;\n\n  /**\n   * The accordion icon color\n   */\n  @Input()\n  iconColor: string = '';\n\n  /**\n   * The accordion icon font-weight\n   */\n  @Input()\n  iconWeight: string = 'normal';\n\n  /**\n   * The accordion state for allow multiple active accordion sessions\n   */\n  @Input() allowMultiple: boolean = false;\n\n  /**\n   * The accordion state for expand all accordion sessions\n   */\n  @Input() expandAll: boolean = false;\n\n  /**\n   * The accordion arrow icon boolean\n   */\n  @Input() showArrowIcon: boolean = true;\n\n  @Input() dataTransactionName: string = 'no-tagged';\n\n  /**\n   * The accordion data eventemitter\n   */\n  @Output()\n  accordionState: EventEmitter<any> = new EventEmitter();\n\n  constructor() {}\n\n  toggleSection() {\n    this.opened = !this.opened;\n    this.accordionState.emit();\n  }\n\n  onKeyDown(event: KeyboardEvent) {\n    if (event.key == 'Enter' || event.key == ' ') {\n      this.toggleSection();\n      event.preventDefault();\n    }\n  }\n}\n","<div #accordionRef [id]=\"id\" [attr.data-test-id]=\"testId\"\n     [attr.data-transaction-name]=\"dataTransactionName + '-accordion'\">\n  <div class=\"d-flex gtr-accordion-container\">\n    <div class=\"gtr-accordion-wrapper\" [class.gtr-accordion-show]=\"opened\">\n      <div class=\"gtr-accordion-header\" (keydown)=\"onKeyDown($event)\"\n           [attr.data-transaction-name]=\"dataTransactionName + '-accordion-header'\"\n           (click)=\"toggleSection()\" tabindex=\"0\">\n        <div [class]=\"justifyContent + ' gtr-row'\">\n          <span class=\"gtr-ww\">\n            @if (prefixIcon) {\n              <gtr-icon [name]=\"prefixIcon\" [size]=\"iconSize\" [color]=\"iconColor\" [weight]=\"iconWeight\"\n                        [dataTransactionName]=\"dataTransactionName + '-accordion-icon'\"\n                        class=\"gtr-accordion-icon\"></gtr-icon>\n            }\n            {{ header }}\n          </span>\n\n          @if (status?.icon) {\n            <gtr-icon type=\"pill\" [name]=\"status?.name\">\n            </gtr-icon>\n          }\n\n          @if (status?.text) {\n            <gtr-badge type=\"pill\" [color]=\"status?.color\">\n              {{ status?.text }}\n            </gtr-badge>\n          }\n\n        </div>\n        @if (showArrowIcon) {\n          <gtr-icon [name]=\"'chevron-right'\" [size]=\"24\" color=\"var(--gtr-color-base-black-60)\"\n                    [dataTransactionName]=\"dataTransactionName + '-accordion-icon'\"\n                    class=\"gtr-accordion-arrow-icon\" [class.rotate-icon]=\"opened\"></gtr-icon>\n        }\n      </div>\n\n      @if (opened) {\n        <div class=\"gtr-accordion-content\" [attr.data-transaction-name]=\"dataTransactionName + '-accordion-content'\">\n          <ng-content></ng-content>\n        </div>\n      }\n    </div>\n  </div>\n</div>\n","import { Component, ContentChildren, EventEmitter, Input, Output, QueryList } from '@angular/core';\nimport { GtrAccordionComponent } from '../accordion/gtr-accordion.component';\n\n@Component({\n  standalone: true,\n  selector: 'gtr-accordion-wrapper',\n  templateUrl: './gtr-accordion-wrapper.component.html',\n  styleUrls: ['./gtr-accordion-wrapper.component.scss'],\n})\nexport class GtrAccordionWrapperComponent {\n  /**\n   * The accordion wrapper data eventemitter\n   */\n  @Output()\n  accordionStateChanged: EventEmitter<any> = new EventEmitter();\n\n  /**\n   * The accordion wrapper multiple active screens boolean\n   */\n  @Input()\n  allowMultiple: boolean = false;\n\n  /**\n   * The accordion wrapper identifier\n   */\n  @Input()\n  id: string = '';\n\n  /**\n   * The accordion wrapper testing identifier\n   */\n  @Input()\n  testId: string = '';\n\n  @Input() dataTransactionName: string = 'no-tagged';\n\n  /**\n   * The accordion wrapper expand boolean\n   */\n  @Input()\n  expandAll: boolean = false;\n\n  /**\n   * The accordion wrapper for show arrow icons at end\n   */\n  @Input()\n  showArrowIcon: boolean = true;\n\n  /**\n   * The accordion list from child component\n   */\n  @ContentChildren(GtrAccordionComponent)\n  accordions!: QueryList<GtrAccordionComponent>;\n\n  ngAfterViewInit() {\n    // Initialize the accordion accordions\n    this.mapAccordion();\n  }\n\n  ngAfterContentInit() {\n    this.accordions.changes.subscribe(() => {\n      this.mapAccordion();\n    });\n  }\n\n  mapAccordion() {\n    if (this.accordions.toArray().length <= 0) {\n      console.log('It seems you forgot to add accordion item inside wrapper.');\n      return;\n    }\n    this.accordions.toArray().forEach((accordion) => {\n      accordion.allowMultiple = this.allowMultiple;\n      accordion.expandAll = this.expandAll;\n      accordion.showArrowIcon = this.showArrowIcon;\n      accordion.accordionState.subscribe(() => {\n        this.toggleAccordion(accordion);\n      });\n\n      if (this.expandAll) {\n        accordion.opened = this.expandAll;\n      }\n    });\n    const openedAccordions = this.accordions.filter(\n      (accordion: GtrAccordionComponent) => accordion.opened,\n    );\n    this.accordionStateChanged.emit({ activeSections: openedAccordions });\n  }\n\n  toggleAccordion(selectedAccordion: GtrAccordionComponent) {\n    if (this.accordions) {\n      if (this.allowMultiple) {\n        // Allow multiple Accordions to be expanded\n        const openedAccordions = this.accordions?.filter(\n          (accordion: GtrAccordionComponent) => accordion.opened,\n        );\n        this.accordionStateChanged.emit({ activeSections: openedAccordions });\n        return;\n      } else {\n        this.accordions?.toArray().forEach((accordion) => {\n          if (accordion !== selectedAccordion) {\n            accordion.opened = false;\n          }\n        });\n\n        const openedAccordions = this.accordions?.filter(\n          (accordion: GtrAccordionComponent) => accordion.opened,\n        );\n\n        this.accordionStateChanged.emit({ activeSections: openedAccordions });\n      }\n    }\n  }\n}\n","<div [id]=\"id\" [attr.data-test-id]=\"testId\" [attr.data-transaction-name]=\"dataTransactionName + '-accordion-wrapper'\">\n  <ng-content></ng-content>\n</div>\n","import { FormatWidth, getLocaleDateFormat } from '@angular/common';\n\nexport const convertToLocalDate = (d: Date, locale: string, options = {}) =>\n  d.toLocaleDateString(locale, options);\n\nexport const convertToLocalTime = (d: Date, locale: string, options = {}) =>\n  d.toLocaleTimeString(locale, options);\n\nexport const createGroupsInArray = (arr: any[], numberOfGroups: number) => {\n  const perGroup = Math.ceil(arr.length / numberOfGroups);\n  return new Array(numberOfGroups)\n    .fill('')\n    .map((_, i) => arr.slice(i * perGroup, (i + 1) * perGroup));\n};\n\nexport const getCurrentYear = () => new Date().getFullYear();\n\nexport const getCurrentMonth = () => new Date().getMonth();\n\nexport const getLocalDateFromString = (string: string, locale: string, time?: boolean) => {\n  const date = new Date(2013, 11, 31, 17, 19, 22);\n  let regex = time ? date.toLocaleString(locale) : date.toLocaleDateString(locale);\n  regex = regex\n    .replace('2013', '(?<year>[0-9]{2,4})')\n    .replace('12', '(?<month>[0-9]{1,2})')\n    .replace('31', '(?<day>[0-9]{1,2})');\n\n  if (time) {\n    regex = regex\n      .replace('5', '(?<hour>[0-9]{1,2})')\n      .replace('17', '(?<hour>[0-9]{1,2})')\n      .replace('19', '(?<minute>[0-9]{1,2})')\n      .replace('22', '(?<second>[0-9]{1,2})')\n      .replace('PM', '(?<ampm>[A-Z]{2})');\n  }\n\n  const rgx = RegExp(`${regex}`);\n  const partials = string.match(rgx);\n\n  if (partials === null) {\n    return;\n  }\n\n  const newDate =\n    partials.groups &&\n    (time\n      ? new Date(\n          Number(partials.groups['year']),\n          Number(partials.groups['month']) - 1,\n          Number(partials.groups['day']),\n          partials.groups['ampm']\n            ? partials.groups['ampm'] === 'PM'\n              ? Number(partials.groups['hour']) + 12\n              : Number(partials.groups['hour'])\n            : Number(partials.groups['hour']),\n          Number(partials.groups['minute']),\n          Number(partials.groups['second']),\n        )\n      : new Date(\n          Number(partials.groups['year']),\n          Number(partials.groups['month']) - 1,\n          Number(partials.groups['day']),\n        ));\n\n  return newDate;\n};\n\nexport const getMonthName = (month: number, locale: string) => {\n  const d = new Date();\n  d.setDate(1);\n  d.setMonth(month);\n  return d.toLocaleString(locale, { month: 'long' });\n};\n\nexport const getMonthsNames = (locale: string) => {\n  const months: any[] = [];\n  const d = new Date();\n  d.setDate(1);\n\n  for (let i = 0; i < 12; i++) {\n    d.setMonth(i);\n    months.push(d.toLocaleDateString(locale, { month: 'short' }));\n  }\n\n  return months;\n};\n\nexport const getYears = (year: number, variation: number = 6) => {\n  const years: any[] = [];\n  for (let _year = year - variation; _year < year + (12 - variation); _year++) {\n    years.push(_year);\n  }\n\n  return years;\n};\n\nconst getLeadingDays = (year: number, month: number, firstDayOfWeek: number) => {\n  // 0: sunday\n  // 1: monday\n  const dates: any[] = [];\n  const d = new Date(year, month);\n  const y = d.getFullYear();\n  const m = d.getMonth();\n  const firstWeekday = new Date(y, m, 1).getDay();\n  let leadingDays = 6 - (6 - firstWeekday) - firstDayOfWeek;\n\n  if (firstDayOfWeek) {\n    leadingDays = leadingDays < 0 ? 7 + leadingDays : leadingDays;\n  }\n\n  for (let i = leadingDays * -1; i < 0; i++) {\n    dates.push({\n      date: new Date(y, m, i + 1),\n      month: 'previous',\n    });\n  }\n\n  return dates;\n};\n\nconst getMonthDays = (year: number, month: number) => {\n  const dates: any[] = [];\n  const lastDay = new Date(year, month + 1, 0).getDate();\n  for (let i = 1; i <= lastDay; i++) {\n    dates.push({\n      date: new Date(year, month, i),\n      month: 'current',\n    });\n  }\n  return dates;\n};\n\nconst getTrailingDays = (\n  year: number,\n  month: number,\n  leadingDays: { date: Date; month: string }[],\n  monthDays: { date: Date; month: string }[],\n) => {\n  const dates: any[] = [];\n  const days = 42 - (leadingDays.length + monthDays.length);\n  for (let i = 1; i <= days; i++) {\n    dates.push({\n      date: new Date(year, month + 1, i),\n      month: 'next',\n    });\n  }\n  return dates;\n};\n\nexport const getMonthDetails = (year: number, month: number, firstDayOfWeek: number) => {\n  const daysPrevMonth = getLeadingDays(year, month, firstDayOfWeek);\n  const daysThisMonth = getMonthDays(year, month);\n  const daysNextMonth = getTrailingDays(year, month, daysPrevMonth, daysThisMonth);\n  const days = [...daysPrevMonth, ...daysThisMonth, ...daysNextMonth];\n\n  const weeks: { date: Date; month: string }[][] = [];\n\n  days.forEach((day, index) => {\n    if (index % 7 === 0 || weeks.length === 0) {\n      weeks.push([]);\n    }\n    weeks[weeks.length - 1].push(day);\n  });\n\n  return weeks;\n};\n\nexport const isDateDisabled = (\n  date: Date | null,\n  min?: Date | null,\n  max?: Date | null,\n  dates?: (Date | Date[])[],\n) => {\n  if (!date) {\n    return false;\n  }\n  if (!min && !max && (!dates || !dates.length)) {\n    return false;\n  }\n  let disabled;\n  if (dates) {\n    dates.forEach((_date: Date | Date[]) => {\n      if (Array.isArray(_date)) {\n        if (isDateInRange(date, _date[0], _date[1])) {\n          disabled = true;\n        }\n      }\n      if (_date instanceof Date) {\n        if (isSameDateAs(date, _date)) {\n          disabled = true;\n        }\n      }\n    });\n  }\n  if (min && date < min) {\n    disabled = true;\n  }\n\n  if (max && date > max) {\n    disabled = true;\n  }\n  return disabled;\n};\n\nexport const isDateInRange = (date: Date | null, start: Date | null, end: Date | null) => {\n  return date && start && end && start <= date && date <= end;\n};\n\nexport const isDateSelected = (date: Date | null, start: Date | null, end: Date | null) => {\n  return date && ((start && isSameDateAs(start, date)) || (end && isSameDateAs(end, date)));\n};\n\nexport const isEndDate = (date: Date | null, start: Date | null, end: Date | null) => {\n  return date && start && end && isSameDateAs(end, date) && start < end;\n};\n\nexport const isLastDayOfMonth = (date: Date) => {\n  const test = new Date(date.getTime());\n  const month = test.getMonth();\n\n  test.setDate(test.getDate() + 1);\n  return test.getMonth() !== month;\n};\n\nexport const isSameDateAs = (date: Date, date2: Date) => {\n  return (\n    date.getDate() == date2.getDate() &&\n    date.getMonth() == date2.getMonth() &&\n    date.getFullYear() == date2.getFullYear()\n  );\n};\n\nexport const isStartDate = (date: Date | null, start: Date | null, end: Date | null) => {\n  return date && start && end && isSameDateAs(start, date) && start < end;\n};\n\nexport const isToday = (date: Date) => {\n  const today = new Date();\n  return (\n    date.getDate() == today.getDate() &&\n    date.getMonth() == today.getMonth() &&\n    date.getFullYear() == today.getFullYear()\n  );\n};\n\nexport const isThisMonth = (date: Date, index: number) => {\n  const today = new Date();\n  return index == today.getMonth() && date.getFullYear() == today.getFullYear();\n};\n\nexport const isThisYear = (year: number) => {\n  const today = new Date();\n  return year == today.getFullYear();\n};\n\nexport const isValidDate = (date: number | string | Date): boolean => {\n  if (date instanceof Date || typeof date === 'number' || typeof date === 'string') {\n    // Try to create a Date object from Date or timestamp or string\n    const dateObj = new Date(date);\n    return !isNaN(dateObj.getTime());\n  }\n\n  // If none of the above conditions are met, it's not a valid date\n  return false;\n};\n\nexport const tryDate = (value: string | number | Date, propName: string = 'date') => {\n  let _value;\n  try {\n    if (!isValidDate(value)) {\n      throw value;\n    }\n    _value = new Date(value);\n  } catch (err) {\n    console.warn(`Invalid ${propName}`, err);\n    _value = new Date();\n    _value.setHours(0, 0, 0, 0);\n  }\n  return _value;\n};\n\nexport const isDateInRangeDisabled = (\n  startDate?: Date | null,\n  endDate?: Date | null,\n  dates?: (Date | Date[])[],\n) => {\n  if (!dates || !dates.length) {\n    return false;\n  }\n  if (startDate && endDate) {\n    const date = new Date(startDate);\n    let disabled = false;\n\n    while (date < endDate) {\n      date.setDate(date.getDate() + 1);\n      if (isDateDisabled(date, null, null, dates)) {\n        disabled = true;\n        break;\n      }\n    }\n    return disabled;\n  }\n  return false;\n};\n\nexport const getDateFormatString = (locale = 'default') => {\n  const localeFormat = getLocaleDateFormat(locale, FormatWidth.Short);\n  const clearFormat = localeFormat\n    .toLowerCase()\n    .split('')\n    .filter(function (item, index, array) {\n      return index === 0 || item !== array[index - 1];\n    });\n\n  let format = clearFormat.join('').replace('d', 'dd').replace('m', 'mm').replace('y', 'yyyy');\n  return format.toUpperCase();\n};\n\nexport const validFormat = (value: string, locale: string) => {\n  const validPattern =\n    /^((((0[13578])|([13578])|(1[02]))[\\/](([1-9])|([0-2][0-9])|(3[01])))|(((0[469])|([469])|(11))[\\/](([1-9])|([0-2][0-9])|(30)))|((2|02)[\\/](([1-9])|([0-2][0-9]))))[\\/]\\d{4}$|^\\d{4}$/;\n  return validPattern.test(value);\n};\n\n// export const stringToDateConvert = (date: string, locales: string) => {\n//   const formatter = new Intl.DateTimeFormat('fr-FR');\n//   const parts = formatter.formatToParts();\n//   console.log(date, parts, formatter.format(), formatter.resolvedOptions(), formatter.format());\n// };\n\n// declare namespace Intl {\n//   type DateTimeFormatPartTypes = \\\"day\\\" | \\\"dayPeriod\\\" | \\\"era\\\" | \\\"fractionalSecond\\\" | \\\"hour\\\" | \\\"literal\\\" | \\\"minute\\\" | \\\"month\\\" | \\\"second\\\" | \\\"timeZoneName\\\" | \\\"weekday\\\" | \\\"year\\\";\n//\n//   interface DateTimeFormatPart {\n//     type: DateTimeFormatPartTypes;\n//     value: string;\n//   }\n//\n//   interface DateTimeFormat {\n//     formatToParts(date?: Date | number): DateTimeFormatPart[];\n//   }\n// }\n\ntype DateTimeFormatPartTypes =\n  | 'day'\n  | 'dayPeriod'\n  | 'era'\n  | 'fractionalSecond'\n  | 'hour'\n  | 'literal'\n  | 'minute'\n  | 'month'\n  | 'second'\n  | 'timeZoneName'\n  | 'weekday'\n  | 'year';\ntype DateFormatPartTypes = 'day' | 'month' | 'year' | 'literal';\n\n// type DateParts = {\n//   [key in DateTimeFormatPartTypes]?: string;\n// };\n\n// type DateParts = {\n//   year: number, month: number, day: number, literal: string\n// };\n//\n// export const cvtDate = (dateAsString: string, locale = 'pl-PL') => {\n//   const dateString = dateAsString ?? new Date().toLocaleDateString(locale);\n//   const dateSplit = dateString.split(/[.\\\\-\\\\/\\\\s\\\\D]/gi).filter(item => !!item.length);\n//   const formatter = new Intl.DateTimeFormat(locale);\n//   const parts = formatter.formatToParts().filter(part => ['year', 'month', 'day'].includes(part.type));\n//   const dateShim = {\n//     day: undefined, month: undefined, year: undefined\n//   };\n//   parts.forEach((part, index) => {\n//     const { type, value } = { ...part };\n//     // @ts-ignore\n//     dateShim[type] = dateSplit[index];\n//   });\n//\n//   return dateShim;\n//\n//   // const dateParts: DateParts = {\n//   //   year: 0,\n//   //   month: 0,\n//   //   day: 0,\n//   //   literal: '/'\n//   // };\n//   //\n//   // const literal = parts.find(part => part.type === 'literal')?.value ?? '/';\n//   // // const year = parseInt(parts.find(part => part.type === 'year')?.value ?? '0');\n//   // // const month = parseInt(parts.find(part => part.type === 'year')?.value ?? '0');\n//   // // const day = parseInt(parts.find(part => part.type === 'year')?.value ?? '0');\n//   //\n//   // const dateArray = dateString.split(literal);\n//   //\n//   // parts.forEach(part => {\n//   //   const {type, value} = {...part};\n//   //   if (type === 'day') {\n//   //\n//   //   }\n//   // })\n//   //\n//   // parts.filter(part => part.type in dateParts).map(part => {\n//   //   const {type, value} = {...part};\n//   //   // @ts-ignore\n//   //   dateParts[type] = parseInt(part.value);\n//   //   //\n//   //   // switch (type) {\n//   //   //   case 'day':\n//   //   //     day = parseInt(value);\n//   //   //     break;\n//   //   //   case 'month':\n//   //   //     month = parseInt(value);\n//   //   //     break;\n//   //   //   case 'year':\n//   //   //     year = parseInt(value);\n//   //   //     break;\n//   //   // }\n//   // })\n//   // // const { year, month, day } = {...dateParts}\n//   // return new Date(year, month - 1, day);\n// };\n//\n// // function getDateX(dateAsString) {\n// //   const [day, month, year] = dateAsString.split('/');\n// //   return new Date(year, month - 1, day);\n// // }\n//\n// // getDate('12/07/1997');\n","import { Injectable, KeyValueDiffer, KeyValueDiffers } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { isValidDate } from './gtr-calendar.utils';\n\nexport type DateFilterType = (date: Date) => boolean;\nexport type DayFormatType = 'numeric' | '2-digit' | ((date: Date) => string | number);\nexport type WeekdayFormatType =\n  | number\n  | 'long'\n  | 'narrow'\n  | 'short'\n  | ((date: Date) => string | number);\n\nexport interface ICalendarState {\n  [key: string]: any;\n\n  calendarDate?: Date | null;\n  hoverDate?: Date | null;\n  startDate?: Date | null;\n  endDate?: Date | null;\n  maxDate?: Date | null;\n  minDate?: Date | null;\n  disabledDates?: (Date | Date[])[];\n  range?: boolean;\n  view?: string;\n  type?: string;\n  locale?: string;\n  dateFilter?: DateFilterType;\n  dayFormat?: DayFormatType;\n  weekdayFormat?: WeekdayFormatType;\n  navYearFirst?: boolean;\n  showAdjacentDays?: boolean;\n  selectAdjacentDays?: boolean;\n}\n\n@Injectable()\nexport class GtrCalendarService {\n  constructor(private keyValueDiffers: KeyValueDiffers) {\n    this.differ = this.keyValueDiffers.find(this.calendarStateObject).create();\n  }\n\n  private readonly differ!: KeyValueDiffer<any, any>;\n\n  public calendarStateObject: ICalendarState = {\n    calendarDate: new Date(),\n    hoverDate: null,\n    startDate: null,\n    endDate: null,\n    maxDate: null,\n    minDate: null,\n    disabledDates: [],\n    range: false,\n    view: 'days',\n    type: 'days',\n    locale: 'default',\n    dateFilter: undefined,\n    weekdayFormat: 'short',\n    dayFormat: 'numeric',\n    navYearFirst: false,\n    showAdjacentDays: true,\n    selectAdjacentDays: false,\n  };\n\n  private calendarState = new BehaviorSubject<ICalendarState>(this.calendarStateObject);\n  calendarState$ = this.calendarState.asObservable();\n\n  update(state: ICalendarState): void {\n    const keys = Object.keys(state);\n    for (const key of keys) {\n      const entry = this.calendarStateObject[key];\n      if (entry === state[key]) {\n        continue;\n      }\n      if (isValidDate(state[key]) && entry ? entry.getTime() === state[key]?.getTime() : false) {\n        continue;\n      }\n      this.calendarStateObject[key] = state[key];\n    }\n\n    if (this.differ) {\n      const changes = this.differ.diff(this.calendarStateObject);\n      if (changes) {\n        const newState: ICalendarState = { ...this.calendarStateObject };\n        changes.forEachChangedItem((item) => {\n          newState[item.key] = item.currentValue;\n        });\n        this.calendarState.next(newState);\n      }\n    }\n  }\n}\n","import { Component, EventEmitter, HostBinding, Input, OnDestroy, Output } from '@angular/core';\nimport { NgStyle } from '@angular/common';\nimport { Subscription } from 'rxjs';\n\nimport { GtrCalendarService } from '../gtr-calendar.service';\nimport { GtrIconComponent } from '../../../atoms/icon';\nimport { GtrButtonDirective } from '../../../atoms/button-directive';\n\ninterface INavigationClick {\n  direction: 'prev' | 'next';\n  years: boolean;\n}\n\n@Component({\n  selector: 'gtr-calendar-navigation',\n  templateUrl: './gtr-calendar-navigation.component.html',\n  styleUrls: ['./gtr-calendar-navigation.component.scss'],\n  imports: [GtrButtonDirective, NgStyle, GtrIconComponent],\n})\nexport class GtrCalendarNavigationComponent implements OnDestroy {\n  constructor(private calendarService: GtrCalendarService) {\n    this.calendarStateSubscribe();\n  }\n\n  @Input() dataTransactionName: string = 'no-tagged';\n\n  @Input() addMonths: number = 0;\n\n  @Input()\n  set calendarDate(value: Date) {\n    this._calendarDate = value;\n  }\n\n  get calendarDate() {\n    return this._calendarDate;\n  }\n\n  private _calendarDate = new Date();\n\n  @Input() navigation: boolean = true;\n  @Input() navYearFirst: boolean = false;\n\n  locale: string = 'default';\n  view: 'days' | 'months' | 'years' = 'days';\n  type: 'days' | 'months' | 'years' = 'days';\n\n  @Output() navigationClick: EventEmitter<INavigationClick> = new EventEmitter<INavigationClick>();\n  private calendarStateSubscription!: Subscription;\n\n  get date() {\n    const addYears = this.view === 'months' ? this.addMonths : 0;\n    const addMonths = this.view === 'days' ? this.addMonths : 0;\n    return new Date(\n      this.calendarDate.getFullYear() + addYears,\n      this.calendarDate.getMonth() + addMonths,\n    );\n  }\n\n  @HostBinding('class')\n  get hostClasses(): any {\n    return {\n      'calendar-nav': true,\n    };\n  }\n\n  ngOnDestroy(): void {\n    this.calendarStateSubscribe(false);\n  }\n\n  calendarStateSubscribe(subscribe: boolean = true): void {\n    if (subscribe) {\n      this.calendarStateSubscription = this.calendarService.calendarState$.subscribe((state) => {\n        const keys = Object.keys(state);\n        for (const key of keys) {\n          if (key in this) {\n            // @ts-ignore\n            this[key] = state[key];\n          }\n        }\n      });\n      return;\n    }\n    this.calendarStateSubscription?.unsubscribe();\n  }\n\n  setView(view: 'days' | 'months' | 'years') {\n    this.view = view;\n    this.calendarService.update({ view: view });\n  }\n\n  handleNavigationClick(direction: 'prev' | 'next', years = false) {\n    this.navigationClick.emit({ direction, years: years });\n  }\n}\n","@if (navigation) {\n  <div class=\"calendar-nav-prev\"\n       [attr.data-transaction-name]=\"dataTransactionName + '-navigation-previous-wrapper'\">\n\n    @if (view !== 'days') {\n      <button\n        (click)=\"handleNavigationClick('prev', true)\"\n        [attr.data-transaction-name]=\"dataTransactionName + '-navigation-previous-first'\"\n        gtrButton\n        color=\"transparent\"\n        size=\"sm\"\n        tabindex=\"0\"\n        class=\"calendar-nav-icon-button\"\n      >\n        <gtr-icon name=\"chevrons-left\"\n                  [dataTransactionName]=\"dataTransactionName + '-navigation-previous-first'\"\n                  [size]=\"20\"></gtr-icon>\n      </button>\n    }\n    @if (view === 'days') {\n      <button\n        (click)=\"handleNavigationClick('prev')\"\n        gtrButton\n        color=\"transparent\"\n        size=\"sm\"\n        tabindex=\"0\"\n        class=\"calendar-nav-icon-button\"\n        [attr.data-transaction-name]=\"dataTransactionName + '-navigation-previous'\"\n      >\n        <gtr-icon name=\"chevron-left\"\n                  [dataTransactionName]=\"dataTransactionName + '-navigation-previous'\"\n                  [size]=\"20\"></gtr-icon>\n      </button>\n    }\n  </div>\n}\n<div class=\"calendar-nav-date\" [ngStyle]=\"navYearFirst ? { display: 'flex', justifyContent: 'center' } : {}\"\n     [attr.data-transaction-name]=\"dataTransactionName + '-navigation-date-wrapper'\">\n\n  @if (view === 'days') {\n    <button\n      (click)=\"setView('months')\"\n      gtrButton\n      color=\"transparent\"\n      size=\"sm\"\n      tabindex=\"0\"\n      class=\"calendar-nav-date-button\"\n      [attr.data-transaction-name]=\"dataTransactionName + '-navigation-date-month'\"\n    >\n      {{ date.toLocaleDateString(locale, {month: 'long'}) }}\n    </button>\n  }\n  @if (view !== 'years') {\n    <button\n      (click)=\"setView('years')\"\n      gtrButton\n      color=\"transparent\"\n      size=\"sm\"\n      class=\"calendar-nav-date-button\"\n      tabindex=\"0\"\n      [ngStyle]=\"navYearFirst ? { order: '-1' } : {}\"\n      [attr.data-transaction-name]=\"dataTransactionName + '-navigation-date-year'\">\n      {{ date.toLocaleDateString(locale, {year: 'numeric'}) }}\n    </button>\n  }\n  @if (view === 'years') {\n    <button\n      gtrButton\n      color=\"transparent\"\n      size=\"sm\"\n      class=\"calendar-nav-date-button\"\n      tabindex=\"0\">\n      Year\n    </button>\n  }\n</div>\n\n@if (navigation) {\n  <div class=\"calendar-nav-next\"\n       [attr.data-transaction-name]=\"dataTransactionName + '-navigation-next-wrapper'\">\n    @if (view === 'days') {\n      <button\n        (click)=\"handleNavigationClick('next')\"\n        gtrButton\n        color=\"transparent\"\n        size=\"sm\"\n        tabindex=\"0\"\n        class=\"calendar-nav-icon-button\"\n        [attr.data-transaction-name]=\"dataTransactionName + '-navigation-next'\"\n      >\n        <gtr-icon name=\"chevron-right\"\n                  [dataTransactionName]=\"dataTransactionName + '-navigation-next'\"\n                  [size]=\"20\"></gtr-icon>\n      </button>\n    }\n    @if (view !== 'days') {\n      <button\n        (click)=\"handleNavigationClick('next', true)\"\n        gtrButton\n        color=\"transparent\"\n        size=\"sm\"\n        tabindex=\"0\"\n        class=\"calendar-nav-icon-button\"\n        [attr.data-transaction-name]=\"dataTransactionName + '-navigation-next-last'\"\n      >\n        <gtr-icon name=\"chevrons-right\"\n                  [dataTransactionName]=\"dataTransactionName + '-navigation-next-last'\"\n                  [size]=\"20\"></gtr-icon>\n      </button>\n    }\n  </div>\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { WeekdayFormatType } from '../gtr-calendar.service';\n\n@Pipe({\n  name: 'gtrCalendarWeekday',\n  standalone: true,\n})\nexport class GtrCalendarWeekdayPipe implements PipeTransform {\n  transform(\n    date: Date,\n    weekdayFormat: WeekdayFormatType = 'short',\n    locale: string = 'default',\n  ): string | number {\n    return typeof weekdayFormat === 'function'\n      ? weekdayFormat(date)\n      : typeof weekdayFormat === 'string'\n      ? date.toLocaleDateString(locale, { weekday: weekdayFormat })\n      : date.toLocaleDateString(locale, { weekday: 'long' }).slice(0, weekdayFormat);\n  }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { isThisYear } from '../gtr-calendar.utils';\n\n@Pipe({\n  name: 'gtrCalendarClassYear',\n  standalone: true,\n})\nexport class GtrCalendarClassYearPipe implements PipeTransform {\n  transform(year: number, args?: any): any {\n    return {\n      'calendar-cell': true,\n      year: true,\n      today: isThisYear(year),\n    };\n  }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { isThisMonth } from '../gtr-calendar.utils';\n\n@Pipe({\n  name: 'gtrCalendarClassMonth',\n  standalone: true,\n})\nexport class GtrCalendarClassMonthPipe implements PipeTransform {\n  transform(calendarDate: string | number | Date, monthIndex: number): any {\n    const date = new Date(calendarDate);\n\n    return {\n      'calendar-cell': true,\n      month: true,\n      today: isThisMonth(date, monthIndex),\n    };\n  }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { DayFormatType } from '../gtr-calendar.service';\n\n@Pipe({\n  name: 'gtrCalendarDay',\n  standalone: true,\n})\nexport class GtrCalendarDayPipe implements PipeTransform {\n  transform(\n    date: Date,\n    dayFormat: DayFormatType = 'numeric',\n    locale: string = 'default',\n  ): string | number {\n    return typeof dayFormat === 'function'\n      ? dayFormat(date)\n      : date.toLocaleDateString(locale, { day: dayFormat });\n  }\n}\n","import { Directive, HostBinding, Input, OnDestroy } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport {\n  isDateDisabled,\n  isDateInRange,\n  isDateInRangeDisabled,\n  isDateSelected,\n  isEndDate,\n  isStartDate,\n} from '../gtr-calendar.utils';\nimport { GtrCalendarService, DateFilterType } from '../gtr-calendar.service';\n\n@Directive({\n  selector: '[gtrCalendarDay]',\n  standalone: true,\n})\nexport class GtrCalendarDayDirective implements OnDestroy {\n  constructor(private calendarService: GtrCalendarService) {\n    this.calendarStateSubscribe();\n  }\n\n  private date: Date | null = null;\n  private month?: string;\n  private startDate: Date | null = null;\n  private endDate: Date | null = null;\n  private hoverDate: Date | null = null;\n  private maxDate: Date | null = null;\n  private minDate: Date | null = null;\n  private range: boolean = false;\n  private disabledDates!: (Date | Date[])[];\n  private calendarStateSubscription!: Subscription;\n  private dateFilter!: DateFilterType;\n  private selectAdjacentDays!: boolean;\n  private type: 'days' | 'months' | 'years' | string | undefined;\n\n  private _dateObj?: { date: Date; month: string };\n\n  @Input('gtrCalendarDay')\n  set dateObj(value: { date: Date; month: string } | string) {\n    if (typeof value !== 'string') {\n      this._dateObj = value;\n      this.date = value.date;\n      this.month = value.month;\n    }\n  }\n\n  @Input('gtrCalendarMonth')\n  set dateMonth(date: Date) {\n    this.date = date;\n  }\n\n  @Input('gtrCalendarYear')\n  set dateYear(year: number) {\n    this.date = new Date(year, 1, 1, 0, 0, 0, 0);\n  }\n\n  get selectEndDate(): boolean {\n    return this.range && !!this.startDate && !this.endDate;\n  }\n\n  @HostBinding('class')\n  get hostClasses(): any {\n    if (!this.date) {\n      return;\n    }\n\n    const byType = this.type === 'days' ? this.month === 'current' : true;\n    const startDateByType =\n      this.type === 'days'\n        ? this.startDate\n        : !!this.startDate &&\n          ((this.type === 'months' &&\n            this.startDate.getMonth() === this.date.getMonth() &&\n            this.startDate.getFullYear() === this.date.getFullYear()) ||\n            (this.type === 'years' && this.startDate.getFullYear() === this.date.getFullYear()))\n        ? this.date\n        : this.startDate;\n\n    const endDateByType =\n      this.type === 'days'\n        ? this.endDate\n        : !!this.endDate &&\n          ((this.type === 'months' &&\n            this.endDate.getMonth() === this.date.getMonth() &&\n            this.endDate.getFullYear() === this.date.getFullYear()) ||\n            (this.type === 'years' && this.endDate.getFullYear() === this.date.getFullYear()))\n        ? this.date\n        : this.endDate;\n\n    const rangeHover =\n      byType && this.selectEndDate && isDateInRange(this.date, startDateByType, this.hoverDate);\n    const start = isStartDate(this.date, startDateByType, endDateByType);\n    const end = isEndDate(this.date, startDateByType, endDateByType);\n    const inRange =\n      byType && (isDateInRange(this.date, startDateByType, endDateByType) || !!start || !!end);\n    const selected = isDateSelected(this.date, startDateByType, endDateByType);\n    const disabledRange = isDateInRangeDisabled(startDateByType, this.date, this.disabledDates);\n    const disabledDate = isDateDisabled(this.date, this.minDate, this.maxDate, this.disabledDates);\n    const disabledByFilter = this.dateFilter ? !this.dateFilter(this.date) : false;\n    const clickable = !byType && this.selectAdjacentDays;\n\n    return {\n      'range-hover': rangeHover && (!disabledRange || !disabledByFilter),\n      selected: !!selected,\n      range: inRange,\n      start: !!start,\n      end: !!end,\n      disabled: disabledDate || disabledByFilter,\n      clickable: clickable,\n    };\n  }\n\n  ngOnDestroy(): void {\n    this.calendarStateSubscribe(false);\n  }\n\n  calendarStateSubscribe(subscribe: boolean = true): void {\n    if (subscribe) {\n      this.calendarStateSubscription = this.calendarService.calendarState$.subscribe((state) => {\n        const {\n          startDate = this.startDate,\n          endDate = this.endDate,\n          hoverDate = this.hoverDate,\n          range = this.range,\n          maxDate = this.maxDate,\n          minDate = this.minDate,\n          type = this.type,\n          disabledDates = this.disabledDates,\n          dateFilter = this.dateFilter,\n          selectAdjacentDays = this.selectAdjacentDays,\n        } = { ...state };\n        this.startDate = startDate;\n        this.endDate = endDate;\n        this.range = range;\n        this.hoverDate = hoverDate;\n        this.maxDate = maxDate;\n        this.minDate = minDate;\n        this.type = type;\n        this.disabledDates = disabledDates;\n        this.dateFilter = dateFilter;\n        this.selectAdjacentDays = selectAdjacentDays;\n      });\n      return;\n    }\n    this.calendarStateSubscription?.unsubscribe();\n  }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n  name: 'gtrCalendarDayTitle',\n  standalone: true,\n})\nexport class GtrCalendarDayTitlePipe implements PipeTransform {\n  transform(date: Date, locale: string = 'default'): string {\n    return date.toLocaleDateString(locale);\n  }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { isDateDisabled, isLastDayOfMonth, isToday } from '../gtr-calendar.utils';\n\n@Pipe({\n  name: 'gtrCalendarClassDay',\n  standalone: true,\n})\nexport class GtrCalendarClassDayPipe implements PipeTransform {\n  transform(\n    dateObj: { date: Date; month: string },\n    datesConfig?: {\n      minDate: any;\n      maxDate: any;\n      disabledDates: any;\n      dateFilter: any;\n    },\n  ): any {\n    const { date, month } = { ...dateObj };\n    const { minDate, maxDate, disabledDates, dateFilter } = { ...datesConfig };\n    // @ts-ignore\n    const disabled =\n      isDateDisabled(date, minDate, maxDate, disabledDates) ||\n      (dateFilter ? !dateFilter(date) : false);\n\n    return {\n      'calendar-cell': true,\n      today: isToday(date),\n      disabled: disabled,\n      next: month === 'next',\n      previous: month === 'previous',\n      last: isLastDayOfMonth(date),\n    };\n  }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n  name: 'gtrCalendarMonthTitle',\n  standalone: true,\n})\nexport class GtrCalendarMonthTitlePipe implements PipeTransform {\n  transform(date: Date, monthIndex: number, locale: string = 'default'): string {\n    return new Date(date.getFullYear(), monthIndex).toLocaleString(locale, {\n      month: 'long',\n      year: 'numeric',\n    });\n  }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n  name: 'gtrCalendarMonth',\n  standalone: true,\n})\nexport class GtrCalendarMonthPipe implements PipeTransform {\n  transform(date: Date, monthIndex: number): Date {\n    return new Date(date.getFullYear(), monthIndex);\n  }\n}\n","import { Component, Input, OnDestroy, OnInit } from '@angular/core';\nimport { NgClass } from '@angular/common';\nimport { coerceBooleanProperty, coerceNumberProperty } from '@angular/cdk/coercion';\nimport { Subscription } from 'rxjs';\n\nimport {\n  createGroupsInArray,\n  getMonthDetails,\n  getMonthsNames,\n  getYears,\n  isDateDisabled,\n  isDateInRangeDisabled,\n  tryDate,\n} from '../gtr-calendar.utils';\n\nimport {\n  GtrCalendarService,\n  DateFilterType,\n  DayFormatType,\n  WeekdayFormatType,\n} from '../gtr-calendar.service';\nimport { GtrCalendarWeekdayPipe } from './gtr-calendar-weekday.pipe';\nimport { GtrCalendarClassYearPipe } from './gtr-calendar-class-year.pipe';\nimport { GtrCalendarClassMonthPipe } from './gtr-calendar-class-month.pipe';\nimport { GtrCalendarDayPipe } from './gtr-calendar-day.pipe';\nimport { GtrCalendarDayDirective } from './gtr-calendar-day.directive';\nimport { GtrCalendarDayTitlePipe } from './gtr-calendar-day-title.pipe';\nimport { GtrCalendarClassDayPipe } from './gtr-calendar-class-day.pipe';\nimport { GtrCalendarMonthTitlePipe } from './gtr-calendar-month-title.pipe';\nimport { GtrCalendarMonthPipe } from './gtr-calendar-month.pipe';\n\n@Component({\n  selector: 'gtr-calendar-month',\n  templateUrl: './gtr-calendar-month.component.html',\n  styleUrls: ['./gtr-calendar-month.component.scss'],\n  exportAs: 'gtrCalendarMonth',\n  imports: [\n    GtrCalendarDayDirective,\n    GtrCalendarDayPipe,\n    GtrCalendarDayTitlePipe,\n    GtrCalendarMonthTitlePipe,\n    GtrCalendarMonthPipe,\n    GtrCalendarClassDayPipe,\n    GtrCalendarClassMonthPipe,\n    GtrCalendarClassYearPipe,\n    GtrCalendarWeekdayPipe,\n    NgClass,\n  ],\n})\nexport class GtrCalendarMonthComponent implements OnInit, OnDestroy {\n  constructor(private calendarService: GtrCalendarService) {\n    this.calendarStateSubscribe();\n  }\n\n  @Input() dataTransactionName: string = 'no-tagged';\n\n  @Input() addMonths: number = 0;\n\n  /**\n   * Initial selected date.\n   * @type  (Date | null)\n   */\n  @Input()\n  set startDate(value: Date | number | string | null | undefined) {\n    const date = !!value ? tryDate(value, 'startDate') : null;\n    if (this._startDate?.getTime() !== date?.getTime()) {\n      this._startDate = date;\n      if (this.type === 'years' && date) this._startDate = new Date(date.getFullYear(), 0, 1);\n      this.calendarService.update({ startDate: this._startDate });\n    }\n  }\n\n  get startDate() {\n    return this._startDate;\n  }\n\n  _startDate: Date | null = null;\n\n  /**\n   * Initial selected to date (range).\n   * @type  (Date | null)\n   */\n  @Input()\n  set endDate(value: Date | number | string | null | undefined) {\n    const date = !!value ? tryDate(value, 'endDate') : null;\n    if (this._endDate?.getTime() !== date?.getTime()) {\n      this._endDate = date;\n      if (this.type === 'months' && date)\n        this._endDate = new Date(date.getFullYear(), date.getMonth() + 1, 0);\n      if (this.type === 'years' && date) this._endDate = new Date(date.getFullYear(), 12, 0);\n      this.calendarService.update({ endDate: this._endDate });\n    }\n  }\n\n  get endDate() {\n    return this._endDate;\n  }\n\n  _endDate: Date | null = null;\n\n  /**\n   * Specify the list of dates that cannot be selected.\n   * @type  (Date[] | Date[][])\n   */\n  @Input()\n  set disabledDates(value: Date[] | Date[][]) {\n    this._disabledDates = value;\n  }\n\n  get disabledDates(): Date[] | Date[][] {\n    return this._disabledDates;\n  }\n\n  private _disabledDates: Date[] | Date[][] = [];\n\n  /**\n   * Sets the day of start week.\n   * - 0 - Sunday,\n   * - 1 - Monday,\n   * - 2 - Tuesday,\n   * - 3 - Wednesday,\n   * - 4 - Thursday,\n   * - 5 - Friday,\n   * - 6 - Saturday,\n   */\n  @Input()\n  set firstDayOfWeek(value: number) {\n    this._firstDayOfWeek = coerceNumberProperty(value);\n  }\n\n  get firstDayOfWeek(): number {\n    return this._firstDayOfWeek;\n  }\n\n  private _firstDayOfWeek: number = 1;\n\n  /**\n   * Sets the default locale for components. If not set, it is inherited from the browser.\n   * @default 'default'\n   */\n  @Input()\n  set locale(value) {\n    this._locale = value;\n    this.listOfMonths = createGroupsInArray(getMonthsNames(value), 4);\n  }\n\n  get locale() {\n    return this._locale;\n  }\n\n  private _locale: string = 'default';\n\n  /**\n   * Allow range selection.\n   */\n  @Input()\n  set range(value: boolean) {\n    this._range = coerceBooleanProperty(value);\n  }\n\n  get range(): boolean {\n    return this._range;\n  }\n\n  private _range: boolean = false;\n\n  /**\n   * Set length or format of day name.\n   * @type number | 'long' | 'narrow' | 'short'\n   * @default 'short'\n   */\n  @Input() weekdayFormat: WeekdayFormatType = 'short';\n\n  /**\n   * Set calendar view.\n   * @type 'days' | 'months' | 'years'\n   * @default 'days'\n   */\n  @Input()\n  set view(value) {\n    this._view = value;\n    this.setListOfYears(this.date);\n  }\n\n  get view() {\n    return this._view;\n  }\n\n  private _view: 'days' | 'months' | 'years' = 'days';\n\n  /**\n   * Set calendar type.\n   * @type 'days' | 'months' | 'years'\n   * @default 'days'\n   */\n  @Input()\n  set type(value) {\n    this._type = value;\n  }\n\n  get type() {\n    return this._type;\n  }\n\n  private _type: 'days' | 'months' | 'years' = 'days';\n\n  /**\n   * Max selectable date.\n   */\n  @Input()\n  set maxDate(value: Date | null) {\n    this._maxDate = value ? tryDate(value, 'maxDate') : null;\n  }\n\n  get maxDate() {\n    return this._maxDate;\n  }\n\n  private _maxDate: Date | null = null;\n\n  /**\n   * Min selectable date.\n   */\n  @Input()\n  set minDate(value: Date | null) {\n    this._minDate = value ? tryDate(value, 'minDate') : null;\n  }\n\n  get minDate() {\n    return this._minDate;\n  }\n\n  private _minDate: Date | null = null;\n\n  listOfMonths = createGroupsInArray(getMonthsNames(this.locale), 4);\n  listOfYears = createGroupsInArray(getYears(this.date.getFullYear()), 4);\n  private calendarStateSubscription!: Subscription;\n\n  /**\n   * Default date of the component\n   * @type Date\n   */\n  @Input()\n  set calendarDate(value: Date | string | number) {\n    const _value = new Date(tryDate(value ?? this.startDate, 'calendarDate'));\n    if (!!_value && this._calendarDate.getTime() !== _value.getTime()) {\n      this.setListOfYears(_value);\n      this._calendarDate = new Date(new Date(_value.setDate(1)).setHours(0, 0, 0, 0));\n      this.setMonthDetails(this.date);\n      this.calendarService.update({ calendarDate: this._calendarDate });\n    }\n  }\n\n  get calendarDate(): Date {\n    return this._calendarDate;\n  }\n\n  private _calendarDate: Date = new Date();\n\n  dateFilter!: DateFilterType;\n\n  get date() {\n    const addYears = this.view === 'months' ? this.addMonths : 0;\n    const addMonths = this.view === 'days' ? this.addMonths : 0;\n    return new Date(\n      this.calendarDate?.getFullYear() + addYears,\n      this.calendarDate?.getMonth() + addMonths,\n    );\n  }\n\n  dayFormat!: DayFormatType;\n  selectAdjacentDays!: boolean;\n  showAdjacentDays!: boolean;\n  touchDevice!: boolean;\n\n  private _monthDetails!: { date: Date; month: string }[][];\n\n  get monthDetails(): { date: Date; month: string }[][] {\n    return this._monthDetails;\n  }\n\n  get weekDays() {\n    return this.monthDetails[0];\n  }\n\n  ngOnInit(): void {\n    this.setListOfYears(this.date);\n    this.listOfMonths = createGroupsInArray(getMonthsNames(this.locale), 4);\n    this.setMonthDetails(this.date);\n    this.touchDevice =\n      /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini|Mobile|mobile|CriOS/i.test(\n        navigator?.userAgent,\n      );\n  }\n\n  setListOfYears(date: Date) {\n    const addYears = this.view === 'years' ? this.addMonths * 12 : 0;\n    const years = getYears(date.getFullYear() + addYears);\n\n    let yearIsInView = true;\n    if (this.type === 'years') {\n      const prevYears = Array.prototype.concat(...this.listOfYears);\n      const rightYears = !!this.addMonths ? getYears(prevYears[0], 12) : prevYears;\n      yearIsInView = !rightYears.find((year) => year === date.getFullYear());\n    }\n\n    if (yearIsInView) this.listOfYears = createGroupsInArray(years, 4);\n  }\n\n  setMonthDetails(date: Date = this.date) {\n    this._monthDetails = getMonthDetails(date.getFullYear(), date.getMonth(), this.firstDayOfWeek);\n  }\n\n  yearNumber(year: any) {\n    return new Date(year, 0).toLocaleDateString(this.locale, { year: 'numeric' });\n  }\n\n  isDateDisabled(date: Date) {\n    // @ts-ignore\n    return (\n      isDateDisabled(date, this.minDate, this.maxDate, this.disabledDates) ||\n      (this.dateFilter ? !this.dateFilter(date) : false)\n    );\n  }\n\n  calendarCellTitle(date: Date) {\n    return date.toLocaleDateString(this.locale);\n  }\n\n  handleYearCellMouseEnter(year: number) {\n    if (this.type === 'years') {\n      const hoverDate = new Date(year, this.calendarDate.getMonth(), 1, 0, 0, 0, 0);\n      this.handleCellMouseEnter(hoverDate);\n    }\n  }\n\n  handleMonthCellMouseEnter(date: Date, i: number, idx: number) {\n    if (this.type === 'months') {\n      const hoverDate = new Date(date.getFullYear(), i * 3 + idx);\n      this.handleCellMouseEnter(hoverDate);\n    }\n  }\n\n  handleCellMouseEnter(hoverDate: Date) {\n    const hoverValue = this.isDateDisabled(hoverDate) ? null : hoverDate;\n    this.calendarService.update({ hoverDate: hoverValue });\n  }\n\n  handleYearCellClick(year: any) {\n    const calendarDate = new Date(year, this.calendarDate.getMonth(), 1, 0, 0, 0, 0);\n    if (this.type !== 'years') {\n      this.view = 'months';\n      this.calendarService.update({\n        view: this.view,\n        calendarDate: calendarDate,\n      });\n    } else {\n      this.handleDayCellClick(calendarDate);\n    }\n  }\n\n  handleYearCellKeyUp($event: KeyboardEvent, year: any) {\n    if ($event.key === 'Enter') {\n      this.handleYearCellClick(year);\n      return;\n    }\n  }\n\n  handleMonthCellKeyUp($event: KeyboardEvent, i: number, idx: number) {\n    if ($event.key === 'Enter') {\n      this.handleMonthCellClick(i, idx);\n      return;\n    }\n  }\n\n  handleMonthCellClick(i: number, idx: number) {\n    const setMonths = this.type === 'days' ? this.addMonths : 0;\n    this.setCalendarPage(0, 0, i * 3 + idx - setMonths);\n    if (this.type === 'days') {\n      this.view = 'days';\n      this.calendarService.update({ view: this.view });\n    }\n  }\n\n  setCalendarPage(years: number, months = 0, setMonth?: number) {\n    const year = this.date.getFullYear();\n    const month = this.date.getMonth();\n    const d = new Date(year, month, 1, 0, 0, 0, 0);\n\n    years && d.setFullYear(d.getFullYear() + years);\n    months && d.setMonth(d.getMonth() + months);\n    typeof setMonth === 'number' && d.setMonth(setMonth);\n\n    if (this.type === 'days') {\n      this.calendarService.update({ calendarDate: d });\n    } else {\n      this.handleDayCellClick(d);\n    }\n  }\n\n  handleCellMouseLeave() {\n    this.calendarService.update({ hoverDate: null });\n  }\n\n  handleDayCellKeyUp($event: KeyboardEvent, date: Date) {\n    if ($event.key === 'Enter') {\n      this.handleDayCellClick(date);\n      return;\n    }\n    if ($event.key === 'Tab') {\n      this.handleCellMouseEnter(date);\n      return;\n    }\n  }\n\n  handleDayCellClick(date: Date) {\n    if (this.isDateDisabled(date)) {\n      return;\n    }\n\n    if (!this.range) {\n      this.endDate = null;\n      this.startDate = date;\n      return;\n    }\n\n    if (this.startDate && this.endDate) {\n      this.calendarDate = new Date(date.getFullYear(), date.getMonth(), 1, 0, 0, 0, 0);\n      this.endDate = null;\n      this.startDate = null;\n      return;\n    }\n\n    if (!!this.startDate && !this.endDate) {\n      if (this.startDate && date < this.startDate) {\n        this.endDate = null;\n        this.startDate = date;\n      } else {\n        this.endDate = date;\n      }\n    } else {\n      this.endDate = null;\n      this.startDate = date;\n    }\n\n    if (this.startDate && this.endDate) {\n      // @ts-ignore\n      if (isDateInRangeDisabled(this.startDate, this.endDate, this.disabledDates)) {\n        this.startDate = null;\n        this.endDate = null;\n        return;\n      }\n\n      // let date = new Date(this.startDate);\n      // while (date < this.endDate) {\n      //   date.setDate(date.getDate() + 1);\n      //   if (this.isDateDisabled(date)) {\n      //     this.startDate = null;\n      //     this.endDate = null;\n      //     break;\n      //   }\n      // }\n    }\n  }\n\n  calendarStateSubscribe(subscribe: boolean = true): void {\n    if (subscribe) {\n      this.calendarStateSubscription = this.calendarService.calendarState$.subscribe((state) => {\n        const keys = Object.keys(state);\n        for (const key of keys) {\n          // if (key in this) {\n          // @ts-ignore\n          this[key] = state[key];\n          // }\n        }\n      });\n      return;\n    }\n    this.calendarStateSubscription?.unsubscribe();\n  }\n\n  ngOnDestroy(): void {\n    this.calendarStateSubscribe(false);\n  }\n}\n","<table [attr.data-transaction-name]=\"dataTransactionName + '-content'\">\n  @if (view === 'days') {\n    <thead [attr.data-transaction-name]=\"dataTransactionName + '-content-weekdays'\">\n    <tr [attr.data-transaction-name]=\"dataTransactionName + '-content-weekdays'\">\n      @for (weekDay of weekDays; track i; let i = $index; let cnt = $count) {\n        <th class=\"calendar-cell\"\n            [attr.data-transaction-name]=\"dataTransactionName + '-content-weekdays'\">\n          <div class=\"calendar-header-cell-inner\"\n               [attr.data-transaction-name]=\"dataTransactionName + '-content-weekdays'\">\n            {{ weekDay.date | gtrCalendarWeekday:weekdayFormat:locale }}\n          </div>\n        </th>\n      }\n    </tr>\n    </thead>\n  }\n  <tbody (mouseleave)=\"handleCellMouseLeave()\"\n         [attr.data-transaction-name]=\"dataTransactionName + '-content-body'\">\n    @switch (view) {\n      @case ('years') {\n        @for (yearsRow of listOfYears; track rowIdx; let rowIdx = $index) {\n          <tr [attr.data-transaction-name]=\"dataTransactionName + '-content-year'\">\n            @for (year of yearsRow; track idx; let idx = $index) {\n              <td\n                (click)=\"handleYearCellClick(year)\"\n                (keyup)=\"handleYearCellKeyUp($event, year)\"\n                (mouseenter)=\"!touchDevice && handleYearCellMouseEnter(year)\"\n                gtrCalendarDay\n                [gtrCalendarYear]=\"year\"\n                [ngClass]=\"year | gtrCalendarClassYear\"\n                [tabindex]=\"0\"\n                [attr.data-transaction-name]=\"dataTransactionName + '-content-year'\"\n              >\n                <div class=\"calendar-cell-inner\"\n                     [attr.data-transaction-name]=\"dataTransactionName + '-content-year'\">\n                  {{ yearNumber(year) }}\n                </div>\n              </td>\n            }\n          </tr>\n        }\n      }\n      @case ('months') {\n        @for (monthsRow of listOfMonths; track rowIdx; let rowIdx = $index) {\n          <tr [attr.data-transaction-name]=\"dataTransactionName + '-content-month'\">\n            @for (month of monthsRow; track idx; let idx = $index) {\n              <td\n                (click)=\"handleMonthCellClick(rowIdx, idx)\"\n                (keyup)=\"handleMonthCellKeyUp($event, rowIdx, idx)\"\n                (mouseenter)=\"!touchDevice && handleMonthCellMouseEnter(date, rowIdx, idx)\"\n                gtrCalendarDay\n                [gtrCalendarMonth]=\"date| gtrCalendarMonth:(rowIdx*3+idx)\"\n                [ngClass]=\"date | gtrCalendarClassMonth:(rowIdx*3+idx)\"\n                [title]=\"date | gtrCalendarMonthTitle:(rowIdx*3+idx):locale\"\n                [tabindex]=\"0\"\n                [attr.data-transaction-name]=\"dataTransactionName + '-content-month'\"\n              >\n                <div class=\"calendar-cell-inner\"\n                     [attr.data-transaction-name]=\"dataTransactionName + '-content-month'\">\n                  {{ month }}\n                </div>\n              </td>\n            }\n          </tr>\n        }\n      }\n      @default {\n        @for (week of monthDetails; track i; let i = $index) {\n          <tr [attr.data-transaction-name]=\"dataTransactionName + '-content-day'\">\n            @for (dateObj of week; track idx; let idx = $index) {\n              @if ((dateObj.month === 'current' || showAdjacentDays)) {\n                <td (click)=\"(dateObj.month === 'current' || selectAdjacentDays) && handleDayCellClick(dateObj.date)\"\n                    (keyup)=\"(dateObj.month === 'current' || selectAdjacentDays) && handleDayCellKeyUp($event, dateObj.date)\"\n                    (mouseenter)=\"!touchDevice && (dateObj.month === 'current' || selectAdjacentDays) && handleCellMouseEnter(dateObj.date)\"\n                    [gtrCalendarDay]=\"dateObj\"\n                    [ngClass]=\"dateObj | gtrCalendarClassDay:{minDate, maxDate, disabledDates, dateFilter}\"\n                    [tabindex]=\"(dateObj.month === 'current' || selectAdjacentDays) && !isDateDisabled(dateObj.date) ? 0 : -1\"\n                    [title]=\"dateObj.date | gtrCalendarDayTitle:locale\"\n                    [attr.data-transaction-name]=\"dataTransactionName + '-content-day'\"\n                >\n                  <div class=\"calendar-cell-inner\"\n                       [attr.data-transaction-name]=\"dataTransactionName + '-content-day'\">\n                    {{ dateObj.date | gtrCalendarDay:dayFormat:locale }}\n                  </div>\n                </td>\n              } @else {\n                <td class=\"calendar-cell\"\n                    [attr.data-transaction-name]=\"dataTransactionName + '-content-day-empty'\"></td>\n              }\n            }\n          </tr>\n        }\n      }\n    }\n  </tbody>\n</table>\n\n\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n  name: 'gtrCalendarClassView',\n  standalone: true,\n})\nexport class GtrCalendarClassViewPipe implements PipeTransform {\n  transform(view: string): any {\n    return {\n      calendar: true,\n      [`${view}`]: !!view,\n    };\n  }\n}\n","import {\n  Component,\n  EventEmitter,\n  HostBinding,\n  Input,\n  OnDestroy,\n  OnInit,\n  Output,\n  QueryList,\n  ViewChildren,\n} from '@angular/core';\nimport { NgClass } from '@angular/common';\nimport { BooleanInput, coerceBooleanProperty, coerceNumberProperty } from '@angular/cdk/coercion';\nimport { Subscription } from 'rxjs';\n\nimport {\n  GtrCalendarService,\n  DateFilterType,\n  DayFormatType,\n  WeekdayFormatType,\n} from '../gtr-calendar.service';\nimport { tryDate } from '../gtr-calendar.utils';\nimport { GtrCalendarMonthComponent } from '../calendar-month/gtr-calendar-month.component';\nimport { GtrCalendarNavigationComponent } from '../calendar-navigation/gtr-calendar-navigation.component';\nimport { GtrCalendarClassViewPipe } from './gtr-calendar-class-view.pipe';\n\n@Component({\n  selector: 'gtr-calendar',\n  templateUrl: './gtr-calendar.component.html',\n  // styleUrls: ['./gtr-calendar.component.scss'],\n  exportAs: 'gtrCalendar',\n  providers: [GtrCalendarService],\n  imports: [\n    GtrCalendarNavigationComponent,\n    GtrCalendarClassViewPipe,\n    GtrCalendarMonthComponent,\n    NgClass,\n  ],\n})\nexport class GtrCalendarComponent implements OnInit, OnDestroy {\n  static ngAcceptInputType_navigation: BooleanInput;\n  static ngAcceptInputType_navYearFirst: BooleanInput;\n  static ngAcceptInputType_range: BooleanInput;\n  static ngAcceptInputType_selectAdjacentDays: BooleanInput;\n\n  constructor(private calendarService: GtrCalendarService) {\n    this.calendarStateSubscribe();\n  }\n\n  /**\n   * Default date of the component\n   * @type  (Date | string)\n   */\n  @Input()\n  set calendarDate(value: Date | string | number) {\n    // const _value = new Date(tryDate((value ?? this.startDate ?? new Date()), 'calendarDate'));\n    const _value = new Date(tryDate(value ?? this.startDate, 'calendarDate'));\n    if (!!_value && this._calendarDate.getTime() !== _value.getTime()) {\n      const _calendarDate = new Date(new Date(_value.setDate(1)).setHours(0, 0, 0, 0));\n      this._calendarDate = _calendarDate;\n      this.calendarDateChange.emit(_calendarDate);\n      this.calendarService.update({ calendarDate: _calendarDate });\n    }\n  }\n\n  get calendarDate(): Date {\n    return this._calendarDate;\n  }\n\n  private _calendarDate: Date = tryDate(new Date());\n\n  /**\n   * The number of calendars that render on desktop devices.\n   * @type number\n   * default 1\n   */\n  @Input()\n  set calendars(value: number) {\n    this._calendars = coerceNumberProperty(value);\n  }\n\n  get calendars(): number {\n    return this._calendars;\n  }\n\n  private _calendars: number = 1;\n\n  get calendarsArray() {\n    return Array.from({ length: this.calendars });\n  }\n\n  /**\n   * Set the format of day name.\n   * @default 'numeric'\n   * @type DayFormatType\n   */\n  @Input()\n  set dayFormat(value: DayFormatType) {\n    this._dayFormat = value;\n    this.calendarService.update({ dayFormat: this._dayFormat });\n  }\n\n  get dayFormat() {\n    return this._dayFormat;\n  }\n\n  private _dayFormat: DayFormatType = 'numeric';\n\n  /**\n   * Specify the list of dates that cannot be selected.\n   * @type  (Date[] | Date[][])\n   */\n  @Input()\n  set disabledDates(value: Date[] | Date[][]) {\n    this._disabledDates = value;\n    this.calendarService.update({ disabledDates: this._disabledDates });\n  }\n\n  get disabledDates(): Date[] | Date[][] {\n    return this._disabledDates;\n  }\n\n  private _disabledDates: Date[] | Date[][] = [];\n\n  /**\n   * Initial selected date.\n   * @type  (Date | null)\n   */\n  @Input()\n  set startDate(value: Date | number | string | null | undefined) {\n    const date = !!value ? tryDate(value, 'startDate') : null;\n    if (this._startDate?.getTime() !== date?.getTime()) {\n      this._startDate = date;\n      this.calendarService.update({ startDate: this._startDate });\n      if (!this.range || !this._startDate || (this.endDate && this._startDate > this.endDate)) {\n        this.endDate = null;\n      }\n    }\n  }\n\n  get startDate() {\n    return this._startDate;\n  }\n\n  _startDate: Date | null = null;\n\n  /**\n   * Initial selected to date (range).\n   * @type  (Date | null)\n   */\n  @Input()\n  set endDate(value: Date | number | string | null | undefined) {\n    const date = !!value ? tryDate(value, 'endDate') : null;\n    if (this._endDate?.getTime() !== date?.getTime()) {\n      this._endDate = date;\n      // this._endDate = this.range ? this._endDate : null;\n      this.calendarService.update({ endDate: this._endDate });\n    }\n  }\n\n  get endDate() {\n    return this.range ? this._endDate : null;\n  }\n\n  _endDate: Date | null = null;\n\n  /**\n   * Sets the day of start week.\n   * - 0 - Sunday,\n   * - 1 - Monday,\n   * - 2 - Tuesday,\n   * - 3 - Wednesday,\n   * - 4 - Thursday,\n   * - 5 - Friday,\n   * - 6 - Saturday,\n   *\n   * @type number\n   * @default 1\n   */\n  @Input()\n  set firstDayOfWeek(value: number) {\n    this._firstDayOfWeek = coerceNumberProperty(value);\n  }\n\n  get firstDayOfWeek(): number {\n    return this._firstDayOfWeek;\n  }\n\n  private _firstDayOfWeek: number = 1;\n\n  /**\n   * Sets the default locale for components. If not set, it is inherited from the browser.\n   * @default 'default'\n   */\n  @Input()\n  set locale(value: string) {\n    this._locale = value;\n    this.calendarService.update({ locale: value });\n  }\n\n  get locale() {\n    return this._locale;\n  }\n\n  private _locale: string = 'default';\n\n  /**\n   * Max selectable date.\n   */\n  @Input()\n  set maxDate(value: Date | string | null | undefined) {\n    this._maxDate = !!value ? tryDate(value, 'maxDate') : null;\n    this.calendarService.update({ maxDate: this._maxDate });\n  }\n\n  get maxDate() {\n    return this._maxDate;\n  }\n\n  private _maxDate: Date | null = null;\n\n  /**\n   * Min selectable date.\n   */\n  @Input()\n  set minDate(value: Date | string | null | undefined) {\n    this._minDate = value ? tryDate(value, 'minDate') : null;\n    this.calendarService.update({ minDate: this._minDate });\n  }\n\n  get minDate() {\n    return this._minDate;\n  }\n\n  private _minDate: Date | null = null;\n\n  /**\n   * Show navigation.\n   * @type boolean\n   */\n  @Input()\n  set navigation(value: boolean) {\n    this._navigation = coerceBooleanProperty(value);\n  }\n\n  get navigation(): boolean {\n    return this._navigation;\n  }\n\n  private _navigation: boolean = true;\n\n  /**\n   * Reorder year-month navigation, and render year first.\n   * @type boolean\n   * @default false\n   */\n  @Input()\n  set navYearFirst(value: boolean) {\n    this._navYearFirst = coerceBooleanProperty(value);\n    this.calendarService.update({ navYearFirst: this._navYearFirst });\n  }\n\n  get navYearFirst() {\n    return this._navYearFirst;\n  }\n\n  private _navYearFirst: boolean = false;\n\n  /**\n   * Allow range selection.\n   * @type boolean\n   * @default false\n   */\n  @Input()\n  set range(value: boolean) {\n    this._range = coerceBooleanProperty(value);\n    this.calendarService.update({ range: this._range });\n  }\n\n  get range(): boolean {\n    return this._range;\n  }\n\n  private _range: boolean = false;\n\n  /**\n   * Set calendar view.\n   * @type 'days' | 'months' | 'years'\n   * @default 'days'\n   */\n  @Input()\n  set view(value) {\n    this._view = value;\n    this.calendarService.update({ view: value });\n  }\n\n  get view() {\n    return this._view;\n  }\n\n  private _view: 'days' | 'months' | 'years' = 'days';\n\n  /**\n   * Set calendar type.\n   * @type 'days' | 'months' | 'years'\n   * @default 'days'\n   */\n  @Input()\n  set type(value: 'days' | 'months' | 'years') {\n    this._type = value;\n    if (value === 'months' && this.view === 'days') this.view = 'months';\n    if (value === 'years') this.view = 'years';\n    this.calendarService.update({ type: value });\n  }\n\n  get type() {\n    return this._type;\n  }\n\n  private _type: 'days' | 'months' | 'years' = 'days';\n\n  /**\n   * Set length or format of day name.\n   * @type number | 'long' | 'narrow' | 'short'\n   * @default 'short'\n   */\n  @Input()\n  set weekdayFormat(value: WeekdayFormatType) {\n    this._weekdayFormat = value;\n    this.calendarService.update({ weekdayFormat: this._weekdayFormat });\n  }\n\n  get weekdayFormat() {\n    return this._weekdayFormat;\n  }\n\n  private _weekdayFormat: WeekdayFormatType = 'short';\n\n  @Input()\n  set dateFilter(value: DateFilterType | undefined) {\n    this.calendarService.update({ dateFilter: value });\n  }\n\n  /**\n   * Set whether days in adjacent months shown before or after the current month are selectable. This only applies if the `showAdjacentDays` option is set to true.\n   * @type boolean\n   * @default false\n   * @since 4.4.10\n   */\n  @Input() selectAdjacentDays: boolean = false;\n\n  /**\n   * Set whether to display dates in adjacent months (non-selectable) at the start and end of the current month.\n   * @type boolean\n   * @default true\n   */\n  @Input() showAdjacentDays: boolean = true;\n\n  @Input() dataTransactionName: string = 'no-tagged';\n\n  @Output() calendarCellHover: EventEmitter<Date | null> = new EventEmitter<Date | null>();\n  @Output() calendarDateChange: EventEmitter<Date> = new EventEmitter<Date>();\n  @Output() endDateChange: EventEmitter<Date | null> = new EventEmitter<Date | null>();\n  @Output() startDateChange: EventEmitter<Date | null> = new EventEmitter<Date | null>();\n  @Output() viewChange: EventEmitter<string> = new EventEmitter<string>();\n\n  // used with calendarService\n  set hoverDate(value: Date | null) {\n    this._hoverDate = value;\n    this.calendarCellHover.emit(value);\n  }\n\n  get hoverDate(): Date | null {\n    return this._hoverDate;\n  }\n\n  private _hoverDate: Date | null = null;\n\n  private calendarStateSubscription!: Subscription;\n\n  @HostBinding('class')\n  get hostClasses(): any {\n    return {\n      calendars: true,\n    };\n  }\n\n  @ViewChildren(GtrCalendarMonthComponent)\n  calendarMonths!: QueryList<GtrCalendarMonthComponent>;\n\n  ngOnDestroy(): void {\n    this.calendarStateSubscribe(false);\n  }\n\n  ngOnInit(): void {\n    this.calendarService.update({\n      locale: this.locale,\n      view: this.view,\n      range: this.range,\n      showAdjacentDays: this.showAdjacentDays,\n      selectAdjacentDays: this.selectAdjacentDays,\n    });\n  }\n\n  calendarStateSubscribe(subscribe: boolean = true): void {\n    if (subscribe) {\n      this.calendarStateSubscription = this.calendarService.calendarState$.subscribe((state) => {\n        const keys = Object.keys(state);\n        for (const key of keys) {\n          if (key in this) {\n            // @ts-ignore\n            if (this[key] !== state[key]) {\n              // @ts-ignore\n              this[key] = state[key];\n              if (key === 'startDate') {\n                setTimeout(() => {\n                  this.startDateChange.emit(this._startDate);\n                });\n                continue;\n              }\n              if (key === 'endDate') {\n                setTimeout(() => {\n                  this.endDateChange.emit(this._endDate);\n                });\n              }\n            }\n          }\n        }\n      });\n      return;\n    }\n    this.calendarStateSubscription?.unsubscribe();\n  }\n\n  setCalendarPage(years: number, months = 0, setMonth?: number) {\n    const year = this.calendarDate.getFullYear();\n    const month = this.calendarDate.getMonth();\n    const d = new Date(year, month, 1);\n\n    years && d.setFullYear(d.getFullYear() + years);\n    months && d.setMonth(d.getMonth() + months);\n    typeof setMonth === 'number' && d.setMonth(setMonth);\n\n    this.calendarDate = d;\n  }\n\n  handleNavigationClick(direction: 'prev' | 'next', years = false) {\n    if (direction === 'prev') {\n      if (years) {\n        this.setCalendarPage(this.view === 'years' ? -10 : -1);\n        return;\n      }\n\n      if (this.view !== 'days') {\n        this.setCalendarPage(-1);\n        return;\n      }\n\n      this.setCalendarPage(0, -1);\n      return;\n    }\n    if (direction === 'next') {\n      if (years) {\n        this.setCalendarPage(this.view === 'years' ? 10 : 1);\n        return;\n      }\n\n      if (this.view !== 'days') {\n        this.setCalendarPage(1);\n        return;\n      }\n\n      this.setCalendarPage(0, 1);\n      return;\n    }\n  }\n\n  /**\n   * Clear startDate and endDate\n   * @type void\n   */\n  public clearDates() {\n    this.calendarService.update({ endDate: null });\n    this.calendarService.update({ startDate: null });\n  }\n}\n","@for (calendar of calendarsArray; track i; let i = $index) {\n  <div [ngClass]=\"view | gtrCalendarClassView\">\n    <gtr-calendar-navigation\n      [addMonths]=\"i\"\n      [navigation]=\"navigation\"\n      (navigationClick)=\"handleNavigationClick($event.direction, $event.years)\"\n      [dataTransactionName]=\"dataTransactionName + '-calendar'\"\n    ></gtr-calendar-navigation>\n\n    <gtr-calendar-month\n      [addMonths]=\"i\"\n      [firstDayOfWeek]=\"firstDayOfWeek\"\n      [weekdayFormat]=\"weekdayFormat\"\n      [dataTransactionName]=\"dataTransactionName + '-calendar'\"\n    ></gtr-calendar-month>\n  </div>\n}\n\n","import { Component, EventEmitter, Input, Output, forwardRef } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { GtrCheckboxValueChanged } from './gtr-checkbox.utils';\nimport { GtrIconComponent } from '../../../atoms/icon';\n\n@Component({\n  selector: 'gtr-checkbox',\n  templateUrl: './gtr-checkbox.component.html',\n  styleUrls: ['./gtr-checkbox.component.scss'],\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => GtrCheckboxComponent),\n      multi: true,\n    },\n  ],\n  imports: [GtrIconComponent],\n})\nexport class GtrCheckboxComponent implements ControlValueAccessor {\n  @Input() name = 'checkbox';\n  @Input() dataTransactionName = 'no-tagged';\n\n  /**\n   * To pass identifier to checkbox\n   */\n  @Input() public identifier!: string;\n\n  /**\n   * To pass additional value to checkbox\n   */\n  @Input() public value!: any;\n\n  /**\n   * Option to add checkbox label\n   * */\n  @Input() public label!: string;\n\n  /**\n   * Option to mark checkbox checked\n   * @default false\n   */\n  @Input() public checked: boolean = false;\n\n  /**\n   * Option to mark checkbox disabled\n   *  @default false\n   */\n  @Input() public disabled: boolean = false;\n\n  /**\n   * Option to mark checkbox readonly\n   * @default false\n   */\n  @Input() public readonly: boolean = false;\n\n  /**\n   * Option to send event when checkbox value changed\n   */\n  @Output()\n  public readonly selectionChanged: EventEmitter<GtrCheckboxValueChanged> = new EventEmitter();\n\n  private onChange: any = () => {};\n  private onTouch: any = () => {};\n\n  public writeValue(value: any): void {\n    this.checked = !!value;\n  }\n\n  public registerOnChange(fn: any): void {\n    this.onChange = fn;\n  }\n\n  public registerOnTouched(fn: any): void {\n    this.onTouch = fn;\n  }\n\n  public setDisabledState(isDisabled: boolean): void {\n    this.disabled = isDisabled;\n  }\n\n  /**\n   * Method to handle click on checkbox input\n   */\n  public handleClick() {\n    if (!this.disabled && !this.readonly) {\n      this.checked = !this.checked;\n      this.onChange(this.checked);\n      this.onTouch();\n      this.selectionChanged.emit({ value: this.value, checked: this.checked });\n    }\n  }\n\n  /**\n   * Method to handle keydown events for checkbox input\n   * @param event\n   */\n  public handleKeydown(event: KeyboardEvent) {\n    if (event.key == 'Enter' || event.key === ' ') {\n      this.handleClick();\n      event.preventDefault();\n    }\n  }\n}\n","<label\n  class=\"gtr-checkbox-wrapper\"\n  [attr.id]=\"identifier || 'gtr-checkbox'\"\n  [attr.data-testid]=\"identifier || 'gtr-checkbox'\"\n  [attr.data-transaction-name]=\"dataTransactionName + '-checkbox-wrapper'\"\n>\n  <input\n    type=\"checkbox\"\n    name=\"gtr-checkbox-input\"\n    [value]=\"value\"\n    [checked]=\"checked\"\n    [disabled]=\"disabled\"\n    [readonly]=\"readonly\"\n    (change)=\"handleClick()\"\n    (keydown)=\"handleKeydown($event)\"\n    [attr.aria-checked]=\"checked ? 'true' : 'false'\"\n    [attr.aria-disabled]=\"disabled ? 'true' : 'false'\"\n    [attr.role]=\"readonly ? 'switch' : 'checkbox'\"\n    [name]=\"name\"\n    [attr.data-transaction-name]=\"dataTransactionName + '-checkbox'\"\n    tabindex=\"0\"\n  />\n  <span class=\"gtr-checkmark\"\n        [attr.data-transaction-name]=\"dataTransactionName + '-checkbox-checkmark'\">\n    @if (!disabled || (checked && disabled)) {\n      <gtr-icon\n        name=\"check\"\n        [size]=\"14\"\n        weight=\"bold\"\n        [dataTransactionName]=\"dataTransactionName + '-checkbox-checkbox'\"\n      ></gtr-icon>\n    }\n  </span>\n  @if (label) {\n    <span class=\"gtr-checkbox-label\"\n          [attr.data-transaction-name]=\"dataTransactionName + '-checkbox-label'\">{{ label }}</span>\n  }\n</label>\n","import {\n  AfterViewInit,\n  booleanAttribute,\n  Component,\n  ElementRef,\n  EventEmitter,\n  HostListener,\n  Input,\n  Optional,\n  Output,\n  Self,\n  ViewChild,\n} from '@angular/core';\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\n@Component({\n  standalone: true,\n  selector: 'gtr-modal',\n  templateUrl: './gtr-modal.component.html',\n  styleUrls: ['./gtr-modal.component.scss'],\n})\nexport class GtrModalComponent implements AfterViewInit, ControlValueAccessor {\n  /**\n   * The modal element\n   */\n  @ViewChild('modalElement') modalElement?: ElementRef;\n  /**\n   * The listen decorator used to close modal via keyboard\n   */\n  @HostListener('keydown', ['$event'])\n  handleKeyDown(event: KeyboardEvent): void {\n    if (event.key === 'Escape' && this.isOpen) {\n      this.handleCloseModal();\n    }\n  }\n\n  constructor(@Optional() @Self() public ngControl: NgControl) {\n    if (this.ngControl != null) {\n      this.ngControl.valueAccessor = this;\n    }\n  }\n\n  ngAfterViewInit(): void {\n    // throw new Error('Method not implemented.');\n    if (this.isOpen) {\n      this.setFocusToModal();\n    }\n  }\n  writeValue(obj: any): void {\n    // throw new Error('Method not implemented.');\n  }\n  registerOnChange(fn: any): void {\n    // throw new Error('Method not implemented.');\n  }\n  registerOnTouched(fn: any): void {\n    // throw new Error('Method not implemented.');\n  }\n  setDisabledState?(isDisabled: boolean): void {\n    // throw new Error('Method not implemented.');\n  }\n\n  /**\n   * The modal open state\n   */\n  @Input({ transform: booleanAttribute }) isOpen: boolean = false;\n\n  /**\n   * The modal position\n   */\n  @Input() modalPosition: 'top' | 'bottom' | 'center' = 'center';\n\n  /**\n   * The modal position\n   */\n  @Input() modalId = '';\n\n  /**\n   * The modal size\n   */\n  @Input() modalSize: 'small' | 'medium' | 'large' = 'small';\n\n  /**\n   * The modal scroll\n   */\n  @Input() scrollType: 'scroll-body' | 'scroll-content' = 'scroll-content';\n\n  /**\n   * The modal header\n   */\n  @Input() header: string = '';\n\n  /**\n   * The modal header\n   */\n  @Input({ transform: booleanAttribute }) hasHeading: boolean = true;\n\n  @Input() dataTransactionName: string = 'no-tagged';\n\n  /**\n   * The modal action eventemitter\n   */\n  @Output()\n  closeModal: EventEmitter<void> = new EventEmitter();\n\n  /**\n   * The connectedCallback hook\n   */\n  // connectedCallback(): void {\n  //   document.addEventListener(\"keydown\", this.handleKeyDown);\n  // }\n\n  /**\n   * The disconnectedCallback hook\n   */\n  // disconnectedCallback(): void {\n  //   document.removeEventListener(\"keydown\", this.handleKeyDown);\n  // }\n\n  /**\n   * The component funtion used to handle click on modal overlay\n   */\n  handleOverlayClick(event: MouseEvent) {\n    event.stopPropagation();\n    event.preventDefault();\n  }\n\n  /**\n   * The componentDidUpdate hook\n   */\n  // componentDidUpdate(): void {\n  //   if (this.isOpen) {\n  //     this.setFocusToModal();\n  //   }\n  // }\n\n  /**\n   * The component funtion used to set focus on modal\n   */\n  setFocusToModal(): void {\n    if (this.modalElement) {\n      this.modalElement.nativeElement.focus();\n    }\n  }\n\n  /**\n   * The component funtion used to set close modal\n   */\n  handleCloseModal(): void {\n    this.isOpen = false;\n    const bodyElement = document.querySelector('body');\n    if (bodyElement) bodyElement.style.overflow = 'auto';\n    this.closeModal.emit();\n  }\n}\n","<div [class]=\"'gtr-modal '+ modalPosition + ' ' + modalSize\"\n     [attr.data-transaction-name]=\"dataTransactionName + '-modal'\"\n     [class.open]=\"isOpen\" #modalElement tabIndex=\"-1\"\n     [id]=\"modalId\" [attr.data-testid]=\"modalId\" role=\"dialog\" aria-modal=\"true\" aria-labelledby=\"modal-title\"\n     aria-describedby=\"modal-content\">\n  <div class=\"gtr-modal-content\">\n    @if (hasHeading) {\n      <div class=\"gtr-modal-header\">\n      <span [id]=\"modalId+'-modal-title'\" [attr.data-testid]=\"modalId+'-modal-title'\" class=\"gtr-modal-title\">\n        {{ this.header }}\n      </span>\n        <button class=\"gtr-modal-close\" [id]=\"modalId+'-modal-cross-button'\"\n                [attr.data-testid]=\"modalId+'-modal-cross-button'\"\n                [attr.data-transaction-name]=\"dataTransactionName + '-modal-close'\"\n                (click)=\"this.handleCloseModal()\">\n          <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n            <path d=\"M15 5L5 15\" stroke=\"#4B465C\" stroke-width=\"1.75\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n            <path d=\"M15 5L5 15\" stroke=\"white\" stroke-opacity=\"0.5\" stroke-width=\"1.75\" stroke-linecap=\"round\"\n                  stroke-linejoin=\"round\"/>\n            <path d=\"M5 5L15 15\" stroke=\"#4B465C\" stroke-width=\"1.75\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n            <path d=\"M5 5L15 15\" stroke=\"white\" stroke-opacity=\"0.5\" stroke-width=\"1.75\" stroke-linecap=\"round\"\n                  stroke-linejoin=\"round\"/>\n          </svg>\n        </button>\n      </div>\n    }\n    <div id=\"modal-content\" [class]=\"'gtr-modal-body ' + this.scrollType\">\n      <ng-content select=\"[slot='modal-body']\">\n      </ng-content>\n      <div class=\"gtr-modal-actions\">\n        <ng-content select=\"[slot='modal-actions']\"></ng-content>\n      </div>\n    </div>\n  </div>\n</div>\n","import { Directive, ElementRef, Input, OnInit, Renderer2 } from '@angular/core';\n\n@Directive({\n  selector: '[gtrHtmlAttr]',\n  exportAs: 'gtrHtmlAttr',\n  standalone: true,\n})\nexport class GtrHtmlAttributesDirective implements OnInit {\n  @Input() gtrHtmlAttr?: { [key: string]: any };\n\n  constructor(private renderer: Renderer2, private el: ElementRef) {}\n\n  ngOnInit(): void {\n    const attribs = this.gtrHtmlAttr;\n    for (const attr in attribs) {\n      if (attr === 'style' && typeof attribs[attr] === 'object') {\n        this.setStyle(attribs[attr]);\n      } else if (attr === 'class') {\n        this.addClass(attribs[attr]);\n      } else {\n        this.setAttrib(attr, attribs[attr]);\n      }\n    }\n  }\n\n  private setStyle(styles: { [x: string]: any }): void {\n    for (const style in styles) {\n      if (style) {\n        this.renderer.setStyle(this.el.nativeElement, style, styles[style]);\n      }\n    }\n  }\n\n  private addClass(classes: string | string[]): void {\n    const classArray = Array.isArray(classes) ? classes : classes.split(' ');\n    classArray\n      .filter((element) => element.length > 0)\n      .forEach((element) => {\n        this.renderer.addClass(this.el.nativeElement, element);\n      });\n  }\n\n  private setAttrib(key: string, value: string | null): void {\n    value !== null\n      ? this.renderer.setAttribute(this.el.nativeElement, key, value)\n      : this.renderer.removeAttribute(this.el.nativeElement, key);\n  }\n}\n","import { Directive, Input, TemplateRef } from '@angular/core';\n\n@Directive({\n  selector: '[gtrTemplateId]',\n  standalone: true,\n})\nexport class GtrTemplateIdDirective {\n  @Input('gtrTemplateId') id!: string;\n\n  constructor(public templateRef: TemplateRef<any>) {}\n}\n","import { Directive, HostBinding } from '@angular/core';\n\n@Directive({\n  selector: '[gtrDropdownDivider]',\n  standalone: true,\n})\nexport class GtrDropdownDividerDirective {\n  @HostBinding('class')\n  get hostClasses(): any {\n    return {\n      'dropdown-divider': true,\n    };\n  }\n}\n","import { Directive, HostBinding } from '@angular/core';\n\n@Directive({\n  selector: '[gtrDropdownHeader]',\n  standalone: true,\n})\nexport class GtrDropdownHeaderDirective {\n  @HostBinding('class')\n  get hostClasses(): any {\n    return {\n      'dropdown-header': true,\n    };\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\nexport interface IGtrDropdownState {\n  visible?: boolean | 'toggle';\n  dropdown?: any;\n}\n\n@Injectable()\nexport class GtrDropdownService {\n  private dropdownState = new BehaviorSubject<any>({});\n  dropdownState$ = this.dropdownState.asObservable();\n\n  constructor() {}\n\n  toggle(state: IGtrDropdownState): void {\n    this.dropdownState.next(state);\n  }\n}\n","import {\n  booleanAttribute,\n  Directive,\n  ElementRef,\n  HostBinding,\n  Input,\n  OnDestroy,\n  OnInit,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { GtrDropdownService } from '../gtr-dropdown.service';\n\n@Directive({\n  selector: '[gtrDropdownMenu]',\n  exportAs: 'gtrDropdownMenu',\n  standalone: true,\n})\nexport class GtrDropdownMenuDirective implements OnInit, OnDestroy {\n  constructor(public elementRef: ElementRef, private dropdownService: GtrDropdownService) {}\n\n  /**\n   * Set alignment of dropdown menu.\n   * @type {'start' | 'end' }\n   */\n  @Input() alignment?: 'start' | 'end' | string;\n\n  /**\n   * Toggle the visibility of dropdown menu component.\n   */\n  @Input() visible = false;\n\n  /**\n   * Sets a darker color scheme to match a dark navbar.\n   * @type boolean\n   */\n  @Input({ transform: booleanAttribute }) dark: string | boolean = false;\n\n  private dropdownStateSubscription!: Subscription;\n\n  @HostBinding('class')\n  get hostClasses(): any {\n    return {\n      'dropdown-menu': true,\n      'dropdown-menu-dark': this.dark,\n      [`dropdown-menu-${this.alignment}`]: !!this.alignment,\n      show: this.visible,\n    };\n  }\n\n  @HostBinding('style')\n  get hostStyles() {\n    // workaround for popper position calculate (see also: dropdown.component)\n    return {\n      visibility: this.visible ? null : '',\n      display: this.visible ? null : '',\n    };\n  }\n\n  ngOnInit(): void {\n    this.dropdownStateSubscribe();\n  }\n\n  ngOnDestroy(): void {\n    this.dropdownStateSubscribe(false);\n  }\n\n  private dropdownStateSubscribe(subscribe: boolean = true): void {\n    if (subscribe) {\n      this.dropdownStateSubscription = this.dropdownService.dropdownState$.subscribe((state) => {\n        if ('visible' in state) {\n          this.visible = state.visible === 'toggle' ? !this.visible : state.visible;\n        }\n      });\n    } else {\n      this.dropdownStateSubscription?.unsubscribe();\n    }\n  }\n}\n","import {\n  AfterContentInit,\n  AfterViewInit,\n  ChangeDetectorRef,\n  Component,\n  ContentChild,\n  Directive,\n  ElementRef,\n  EventEmitter,\n  forwardRef,\n  HostBinding,\n  HostListener,\n  Inject,\n  Input,\n  NgZone,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Optional,\n  Output,\n  Renderer2,\n  SimpleChanges,\n} from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { Subscription } from 'rxjs';\nimport { filter } from 'rxjs/operators';\n\nimport { createPopper, Instance, Options, Placement } from '@popperjs/core';\n\nimport { GtrDropdownMenuDirective } from '../dropdown-menu/gtr-dropdown-menu.directive';\nimport { GtrDropdownService } from '../gtr-dropdown.service';\n\n// lightweight injection token\nexport abstract class GtrDropdownToken {}\n\n@Directive({\n  selector: '[gtrDropdownToggle]',\n  providers: [\n    {\n      provide: GtrDropdownToken,\n      useExisting: forwardRef(() => GtrDropdownComponent),\n    },\n  ],\n  exportAs: 'gtrDropdownToggle',\n  standalone: true,\n})\nexport class GtrDropdownToggleDirective implements AfterViewInit {\n  static ngAcceptInputType_split: BooleanInput;\n  static ngAcceptInputType_popper: BooleanInput;\n\n  constructor(\n    public elementRef: ElementRef,\n    private dropdownService: GtrDropdownService,\n    @Optional() public dropdown?: GtrDropdownToken,\n  ) {}\n\n  /**\n   * Toggle the disabled state for the toggler.\n   * @type GtrDropdownComponent | undefined\n   * @default undefined\n   */\n  @Input() dropdownComponent?: GtrDropdownComponent;\n\n  /**\n   * Disables the toggler.\n   * @type boolean\n   * @default false\n   */\n  @Input() disabled?: boolean = false;\n\n  /**\n   * Enables pseudo element caret on toggler.\n   * @type boolean\n   */\n  @Input() caret = true;\n\n  /**\n   * Create split button dropdowns with virtually the same markup as single button dropdowns, but with the addition of `.dropdown-toggle-split` class for proper spacing around the dropdown caret.\n   * @type boolean\n   */\n  @Input()\n  set split(value: boolean) {\n    this._split = coerceBooleanProperty(value);\n  }\n\n  get split(): boolean {\n    return this._split;\n  }\n\n  private _split = false;\n\n  @HostBinding('class')\n  get hostClasses(): any {\n    return {\n      'dropdown-toggle': this.caret,\n      'dropdown-toggle-split': this.split,\n      disabled: this.disabled,\n    };\n  }\n\n  @HostListener('click', ['$event'])\n  public onClick($event: MouseEvent): void {\n    $event.preventDefault();\n    !this.disabled &&\n      this.dropdownService.toggle({\n        visible: 'toggle',\n        dropdown: this.dropdown,\n      });\n  }\n\n  ngAfterViewInit(): void {\n    if (this.dropdownComponent) {\n      this.dropdown = this.dropdownComponent;\n      this.dropdownService = this.dropdownComponent?.dropdownService;\n    }\n  }\n}\n\n@Component({\n  selector: 'gtr-dropdown',\n  template: '<ng-content></ng-content>',\n  styleUrls: ['./gtr-dropdown.component.scss'],\n  exportAs: 'gtrDropdown',\n  providers: [GtrDropdownService],\n  standalone: true,\n})\nexport class GtrDropdownComponent implements AfterContentInit, OnChanges, OnDestroy, OnInit {\n  static ngAcceptInputType_dark: BooleanInput;\n  static ngAcceptInputType_visible: BooleanInput;\n\n  constructor(\n    @Inject(DOCUMENT) private document: Document,\n    private elementRef: ElementRef,\n    private renderer: Renderer2,\n    private ngZone: NgZone,\n    private changeDetectorRef: ChangeDetectorRef,\n    public dropdownService: GtrDropdownService,\n  ) {\n    this.dropdownStateSubscribe();\n  }\n\n  /**\n   * Set alignment of dropdown menu.\n   * @type {'start' | 'end' | { xs: 'start' | 'end' } | { sm: 'start' | 'end' } | { md: 'start' | 'end' } | { lg: 'start' | 'end' } | { xl: 'start' | 'end'} | { xxl: 'start' | 'end'}}\n   */\n  @Input() alignment?: string;\n\n  @Input() autoClose: boolean | 'inside' | 'outside' = true;\n\n  /**\n   * Sets a darker color scheme to match a dark navbar.\n   * @type boolean\n   * @default false\n   */\n  @Input()\n  set dark(value: boolean) {\n    this._dark = coerceBooleanProperty(value);\n  }\n\n  get dark() {\n    return this._dark;\n  }\n\n  private _dark = false;\n\n  /**\n   * Sets a specified  direction and location of the dropdown menu.\n   * @type 'dropup' | 'dropend' | 'dropstart'\n   */\n  @Input() direction?: 'center' | 'dropup' | 'dropup-center' | 'dropend' | 'dropstart';\n\n  /**\n   * Describes the placement of your component after Popper.js has applied all the modifiers that may have flipped or altered the originally provided placement property.\n   * @type Placement\n   */\n  @Input() placement: Placement = 'bottom-start';\n\n  /**\n   * If you want to disable dynamic positioning set this property to `false`.\n   * @type boolean\n   * @default true\n   */\n  @Input()\n  set popper(value: boolean) {\n    this._popper = coerceBooleanProperty(value);\n  }\n\n  get popper(): boolean {\n    return this._popper;\n  }\n\n  private _popper = true;\n\n  /**\n   * Optional popper Options object, placement prop takes precedence over\n   * @type Partial<Options>\n   */\n  @Input()\n  set popperOptions(value: Partial<Options>) {\n    this._popperOptions = { ...this._popperOptions, ...value };\n  }\n\n  get popperOptions(): Partial<Options> {\n    let placement = this.placement;\n    switch (this.direction) {\n      case 'dropup': {\n        placement = 'top-start';\n        break;\n      }\n      case 'dropend': {\n        placement = 'right-start';\n        break;\n      }\n      case 'dropstart': {\n        placement = 'left-start';\n        break;\n      }\n      case 'center': {\n        placement = 'bottom';\n        break;\n      }\n      case 'dropup-center': {\n        placement = 'top';\n        break;\n      }\n    }\n    if (this.alignment === 'end') {\n      placement = 'bottom-end';\n    }\n    this._popperOptions = { ...this._popperOptions, placement: placement };\n    return this._popperOptions;\n  }\n\n  private _popperOptions: Partial<Options> = {\n    placement: this.placement,\n    modifiers: [],\n    strategy: 'absolute',\n  };\n\n  /**\n   * Set the dropdown variant to a btn-group, dropdown, input-group, and nav-item.\n   */\n  @Input() variant?: 'btn-group' | 'dropdown' | 'input-group' | 'nav-item' = 'dropdown';\n\n  /**\n   * Toggle the visibility of dropdown menu component.\n   * @type boolean\n   * @default false\n   */\n  @Input()\n  set visible(value: boolean) {\n    const _value = coerceBooleanProperty(value);\n    if (_value !== this._visible) {\n      this.activeTrap = _value;\n      this._visible = _value;\n      _value ? this.createPopperInstance() : this.destroyPopperInstance();\n      this.visibleChange.emit(_value);\n    }\n  }\n\n  get visible(): boolean {\n    return this._visible;\n  }\n\n  private _visible = false;\n\n  @Output() visibleChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n  dropdownContext = { $implicit: this.visible };\n  @ContentChild(GtrDropdownToggleDirective) _toggler!: GtrDropdownToggleDirective;\n  @ContentChild(GtrDropdownMenuDirective) _menu!: GtrDropdownMenuDirective;\n  @ContentChild(GtrDropdownMenuDirective, { read: ElementRef })\n  _menuElementRef!: ElementRef;\n\n  public activeTrap = false;\n\n  private dropdownStateSubscription!: Subscription;\n  private popperInstance!: Instance | undefined;\n  private listeners: (() => void)[] = [];\n\n  @HostBinding('class')\n  get hostClasses(): any {\n    return {\n      dropdown: (this.variant === 'dropdown' || this.variant === 'nav-item') && !this.direction,\n      [`${this.direction}`]: !!this.direction,\n      [`${this.variant}`]: !!this.variant,\n      dropup: this.direction === 'dropup' || this.direction === 'dropup-center',\n      show: this.visible,\n    };\n  }\n\n  // todo: find better solution\n  @HostBinding('style')\n  get hostStyle(): any {\n    return this.variant === 'input-group' ? { display: 'contents' } : {};\n  }\n\n  private clickedTarget!: HTMLElement;\n\n  @HostListener('click', ['$event'])\n  private onHostClick($event: MouseEvent): void {\n    this.clickedTarget = $event.target as HTMLElement;\n  }\n\n  dropdownStateSubscribe(subscribe: boolean = true): void {\n    if (subscribe) {\n      this.dropdownStateSubscription = this.dropdownService.dropdownState$\n        .pipe(\n          filter((state) => {\n            return this === state.dropdown;\n          }),\n        )\n        .subscribe((state) => {\n          if ('visible' in state) {\n            state?.visible === 'toggle' ? this.toggleDropdown() : (this.visible = state.visible);\n          }\n        });\n    } else {\n      this.dropdownStateSubscription?.unsubscribe();\n    }\n  }\n\n  toggleDropdown(): void {\n    this.visible = !this.visible;\n  }\n\n  onClick(event: any): void {\n    if (\n      !this._toggler?.elementRef.nativeElement.contains(\n        event.target?.closest('[gtrDropdownToggle]'),\n      )\n    ) {\n      this.toggleDropdown();\n    }\n  }\n\n  ngAfterContentInit(): void {\n    if (this.variant === 'nav-item') {\n      this.renderer.addClass(this._toggler.elementRef.nativeElement, 'nav-link');\n    }\n  }\n\n  ngOnInit(): void {\n    this.setVisibleState(this.visible);\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes['visible'] && !changes['visible'].firstChange) {\n      this.setVisibleState(changes['visible'].currentValue);\n    }\n  }\n\n  ngOnDestroy(): void {\n    this.clearListeners();\n    this.dropdownStateSubscribe(false);\n    this.destroyPopperInstance();\n  }\n\n  setVisibleState(value: boolean): void {\n    this.dropdownService.toggle({ visible: value, dropdown: this });\n  }\n\n  // todo: turn off popper in navbar-nav\n  createPopperInstance(): void {\n    if (this._toggler && this._menu) {\n      this.ngZone.runOutsideAngular(() => {\n        // workaround for popper position calculate (see also: dropdown-menu.component)\n        this._menu.elementRef.nativeElement.style.visibility = 'hidden';\n        this._menu.elementRef.nativeElement.style.display = 'block';\n        if (this.popper) {\n          this.popperInstance = createPopper(\n            this._toggler.elementRef.nativeElement,\n            this._menu.elementRef.nativeElement,\n            { ...this.popperOptions },\n          );\n        }\n        this.ngZone.run(() => {\n          this.setListeners();\n          this.changeDetectorRef.markForCheck();\n          this.changeDetectorRef.detectChanges();\n        });\n      });\n    }\n  }\n\n  destroyPopperInstance(): void {\n    this.clearListeners();\n    this.popperInstance?.destroy();\n    this.popperInstance = undefined;\n    this.changeDetectorRef.markForCheck();\n  }\n\n  private setListeners(): void {\n    this.listeners.push(\n      this.renderer.listen(this.document, 'click', (event) => {\n        const target = event.target as HTMLElement;\n        if (this._menuElementRef?.nativeElement.contains(event.target)) {\n          this.clickedTarget = target;\n        }\n        if (this._toggler?.elementRef.nativeElement.contains(event.target)) {\n          return;\n        }\n        if (this.autoClose === true) {\n          this.setVisibleState(false);\n          return;\n        }\n        if (this.clickedTarget === target && this.autoClose === 'inside') {\n          this.setVisibleState(false);\n          return;\n        }\n        if (this.clickedTarget !== target && this.autoClose === 'outside') {\n          this.setVisibleState(false);\n          return;\n        }\n      }),\n    );\n    this.listeners.push(\n      this.renderer.listen(this.elementRef.nativeElement, 'keyup', (event) => {\n        if (event.key === 'Escape' && this.autoClose !== false) {\n          event.stopPropagation();\n          this.setVisibleState(false);\n          return;\n        }\n      }),\n    );\n    this.listeners.push(\n      this.renderer.listen(this.document, 'keyup', (event) => {\n        if (\n          event.key === 'Tab' &&\n          this.autoClose !== false &&\n          !this.elementRef.nativeElement.contains(event.target)\n        ) {\n          this.setVisibleState(false);\n          return;\n        }\n      }),\n    );\n  }\n\n  private clearListeners(): void {\n    this.listeners.forEach((unListen) => {\n      unListen();\n    });\n    // @ts-ignore\n    this.listeners.fill(undefined);\n    this.listeners = [];\n  }\n}\n","import { Directive, HostBinding, HostListener, Input, Optional } from '@angular/core';\nimport { GtrDropdownService } from '../gtr-dropdown.service';\nimport { GtrDropdownComponent } from '../dropdown/gtr-dropdown.component';\n\n@Directive({\n  selector: '[gtrDropdownItem]',\n  exportAs: 'gtrDropdownItem',\n  standalone: true,\n})\nexport class GtrDropdownItemDirective {\n  /**\n   * Set active state to a dropdown-item.\n   * @type boolean\n   * @default undefined\n   */\n  @Input() active?: boolean;\n  /**\n   * Configure dropdown-item close dropdown behavior.\n   * @type boolean\n   * @default true\n   */\n  @Input() autoClose: boolean = true;\n  /**\n   * Disables a dropdown-item.\n   * @type boolean\n   * @default undefined\n   */\n  @Input() disabled?: boolean;\n\n  constructor(\n    private dropdownService: GtrDropdownService,\n    @Optional() public dropdown?: GtrDropdownComponent,\n  ) {}\n\n  @HostBinding('attr.aria-current')\n  get ariaCurrent(): string | null {\n    return this.active ? 'true' : null;\n  }\n\n  @HostBinding('class')\n  get hostClasses(): any {\n    return {\n      'dropdown-item': true,\n      active: this.active,\n      disabled: this.disabled,\n    };\n  }\n\n  @HostBinding('attr.tabindex')\n  @Input()\n  set tabIndex(value: string | number | null) {\n    this._tabIndex = value;\n  }\n  get tabIndex() {\n    return this.disabled ? '-1' : this._tabIndex;\n  }\n  private _tabIndex: string | number | null = null;\n\n  @HostBinding('attr.aria-disabled')\n  get isDisabled(): boolean | null {\n    return this.disabled || null;\n  }\n\n  @HostListener('click', ['$event'])\n  private onClick($event: MouseEvent): void {\n    if (this.autoClose) {\n      this.dropdownService.toggle({\n        visible: 'toggle',\n        dropdown: this.dropdown,\n      });\n    }\n  }\n\n  @HostListener('keyup', ['$event'])\n  private onKeyUp($event: KeyboardEvent): void {\n    if ($event.key === 'Enter') {\n      if (this.autoClose) {\n        this.dropdownService.toggle({\n          visible: false,\n          dropdown: this.dropdown,\n        });\n      }\n    }\n  }\n}\n","import { Directive, HostBinding } from '@angular/core';\n\n@Directive({\n  selector: '[gtrDropdownItemPlain]',\n  standalone: true,\n})\nexport class GtrDropdownItemPlainDirective {\n  @HostBinding('class')\n  get hostClasses(): any {\n    return {\n      'dropdown-item-text': true,\n    };\n  }\n}\n","import {\n  AfterViewInit,\n  Directive,\n  HostBinding,\n  HostListener,\n  Input,\n  Optional,\n} from '@angular/core';\nimport { GtrDropdownService } from '../gtr-dropdown.service';\nimport { GtrDropdownComponent } from '../dropdown/gtr-dropdown.component';\n\n@Directive({\n  selector: '[gtrDropdownClose]',\n  exportAs: 'gtrDropdownClose',\n  standalone: true,\n  providers: [GtrDropdownService],\n})\nexport class GtrDropdownCloseDirective implements AfterViewInit {\n  constructor(\n    private dropdownService: GtrDropdownService,\n    @Optional() public dropdown?: GtrDropdownComponent,\n  ) {}\n\n  /**\n   * Disables a dropdown-close directive.\n   * @type boolean\n   * @default undefined\n   */\n  @Input() disabled?: boolean;\n\n  @Input() dropdownComponent?: GtrDropdownComponent;\n\n  ngAfterViewInit(): void {\n    if (this.dropdownComponent) {\n      this.dropdown = this.dropdownComponent;\n      this.dropdownService = this.dropdownComponent?.dropdownService;\n    }\n  }\n\n  @HostBinding('class')\n  get hostClasses(): any {\n    return {\n      disabled: this.disabled,\n    };\n  }\n\n  @HostBinding('attr.tabindex')\n  @Input()\n  set tabIndex(value: string | number | null) {\n    this._tabIndex = value;\n  }\n  get tabIndex() {\n    return this.disabled ? '-1' : this._tabIndex;\n  }\n  private _tabIndex: string | number | null = null;\n\n  @HostBinding('attr.aria-disabled')\n  get isDisabled(): boolean | null {\n    return this.disabled || null;\n  }\n\n  @HostListener('click', ['$event'])\n  private onClick($event: MouseEvent): void {\n    !this.disabled && this.dropdownService.toggle({ visible: false, dropdown: this.dropdown });\n  }\n\n  @HostListener('keyup', ['$event'])\n  private onKeyUp($event: KeyboardEvent): void {\n    if ($event.key === 'Enter') {\n      !this.disabled &&\n        this.dropdownService.toggle({\n          visible: false,\n          dropdown: this.dropdown,\n        });\n    }\n  }\n}\n","import { booleanAttribute, Directive, HostBinding, Input } from '@angular/core';\n\n@Directive({\n  selector: 'form[gtrForm]',\n  standalone: true,\n})\nexport class GtrFormDirective {\n  /**\n   * Mark a form as validated. If you set it `true`, all validation styles will be applied to the form. [docs]\n   * @type boolean\n   * @default false\n   */\n  @Input({ transform: booleanAttribute }) validated: string | boolean = false;\n\n  @HostBinding('class')\n  get hostClasses(): any {\n    return {\n      'was-validated': this.validated,\n    };\n  }\n}\n","import { booleanAttribute, Component, HostBinding, Input } from '@angular/core';\n\n@Component({\n  selector: 'gtr-form-feedback',\n  template: '<ng-content></ng-content>',\n  standalone: true,\n})\nexport class GtrFormFeedbackComponent {\n  /**\n   * If your form layout allows it, you can display validation feedback in a styled tooltip.\n   * @type boolean\n   */\n  @Input({ transform: booleanAttribute }) tooltip: string | boolean = false;\n\n  /**\n   * Set component validation state to valid.\n   * @type boolean\n   */\n  @Input() valid?: boolean;\n\n  @HostBinding('class')\n  get hostClasses(): any {\n    return {\n      'valid-feedback': this.valid === true && !this.tooltip,\n      'valid-tooltip': this.valid === true && this.tooltip,\n      'invalid-feedback': this.valid !== true && !this.tooltip,\n      'invalid-tooltip': this.valid !== true && this.tooltip,\n    };\n  }\n}\n","import { Component, HostBinding, Input } from '@angular/core';\n\n@Component({\n  selector: 'gtr-input-group',\n  template: `<ng-content></ng-content>`,\n  standalone: true,\n})\nexport class GtrInputGroupComponent {\n  /**\n   * Size the component small or large.\n   */\n  @Input() sizing: string | 'sm' | 'lg' | '' = '';\n  @Input() invalid: boolean | undefined = false;\n\n  @HostBinding('class')\n  get hostClasses(): any {\n    return {\n      'input-group': true,\n      [`input-group-${this.sizing}`]: !!this.sizing,\n      [`input-group-invalid`]: this.invalid,\n    };\n  }\n\n  constructor() {}\n}\n","import { Directive, HostBinding, Input, OnChanges } from '@angular/core';\n\n@Directive({\n  selector: 'select[gtrSelect]',\n  standalone: true,\n})\nexport class GtrFormSelectDirective {\n  /**\n   * Size the component small or large.\n   */\n  @Input() sizing?: '' | 'sm' | 'lg' | string = '';\n\n  /**\n   * Set component validation state to valid.\n   * @type {boolean | undefined}\n   */\n  @Input() valid?: boolean;\n\n  @HostBinding('class')\n  get hostClasses(): any {\n    return {\n      'form-select': true,\n      [`form-select-${this.sizing}`]: !!this.sizing,\n      'is-valid': this.valid === true,\n      'is-invalid': this.valid === false,\n    };\n  }\n\n  constructor() {}\n}\n","import { Directive, HostBinding, Input } from '@angular/core';\n\n@Directive({\n  selector: '[gtrLabel]',\n  standalone: true,\n})\nexport class GtrFormLabelDirective {\n  /**\n   * For horizontal forms set labels to 'col' and make them vertically centered with their associated form controls.\n   * @type 'col'\n   */\n  @Input('gtrLabel') col: 'col' | '' = '';\n  /**\n   * Size the label small or large.\n   */\n  @Input() sizing: '' | 'sm' | 'lg' | string = '';\n\n  @HostBinding('class')\n  get hostClasses(): any {\n    return {\n      'form-label': true,\n      'col-form-label': this.col === 'col',\n      [`col-form-label-${this.sizing}`]: !!this.sizing && this.col === 'col',\n    };\n  }\n\n  constructor() {}\n}\n","import { Directive, HostBinding } from '@angular/core';\n\n@Directive({\n  selector: 'label[gtrFormCheckLabel]',\n  standalone: true,\n})\nexport class GtrFormCheckLabelDirective {\n  @HostBinding('class')\n  get hostClasses(): any {\n    return {\n      'form-check-label': true,\n    };\n  }\n}\n","import {\n  AfterContentInit,\n  booleanAttribute,\n  Component,\n  ContentChild,\n  HostBinding,\n  Input,\n} from '@angular/core';\n\nimport { GtrFormCheckLabelDirective } from './gtr-form-check-label.directive';\n\n@Component({\n  selector: 'gtr-form-check',\n  template: '<ng-content></ng-content>',\n  exportAs: 'gtrFormCheck',\n  standalone: true,\n})\nexport class GtrFormCheckComponent implements AfterContentInit {\n  /**\n   * Group checkboxes or radios on the same horizontal row.\n   * @type boolean\n   * @default false\n   */\n  @Input({ transform: booleanAttribute }) inline: string | boolean = false;\n\n  /**\n   * Put checkboxes or radios on the opposite side.\n   * @type boolean\n   * @default false\n   * @since 4.4.7\n   */\n  @Input({ transform: booleanAttribute }) reverse: string | boolean = false;\n\n  /**\n   * Size the component large or extra large. Works only with `[switch]=\"true\"` [docs]\n   * @type {'lg' | 'xl' | ''}\n   */\n  @Input() sizing?: 'lg' | 'xl' | '' = '';\n\n  /**\n   * Render a toggle switch on for checkbox.\n   * @type boolean\n   * @default false\n   */\n  @Input({ transform: booleanAttribute }) switch: string | boolean = false;\n\n  @HostBinding('class')\n  get hostClasses(): any {\n    return {\n      'form-check': this.formCheckClass,\n      'form-switch': this.switch,\n      [`form-switch-${this.sizing}`]: this.switch && !!this.sizing,\n      'form-check-inline': this.inline,\n      'form-check-reverse': this.reverse,\n    };\n  }\n\n  @ContentChild(GtrFormCheckLabelDirective)\n  formCheckLabel!: GtrFormCheckLabelDirective;\n\n  #formCheckClass = true;\n  get formCheckClass() {\n    return this.#formCheckClass;\n  }\n\n  ngAfterContentInit(): void {\n    this.#formCheckClass = !!this.formCheckLabel;\n  }\n}\n","import { Directive, ElementRef, HostBinding, Input, Renderer2 } from '@angular/core';\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\n\n@Directive({\n  selector: 'input[gtrFormCheckInput]',\n  standalone: true,\n})\nexport class GtrFormCheckInputDirective {\n  static ngAcceptInputType_indeterminate: BooleanInput;\n\n  /**\n   * Specifies the type of component.\n   * @type {'checkbox' | 'radio'}\n   * @default 'checkbox'\n   */\n  @HostBinding('attr.type')\n  @Input()\n  type: 'checkbox' | 'radio' = 'checkbox';\n\n  /**\n   * Set component indeterminate state.\n   * @type boolean\n   */\n  @Input()\n  set indeterminate(value: boolean) {\n    const newValue = coerceBooleanProperty(value);\n    if (this._indeterminate !== newValue) {\n      this._indeterminate = newValue;\n      this.renderer.setProperty(this.hostElement.nativeElement, 'indeterminate', newValue);\n    }\n  }\n  get indeterminate() {\n    return this._indeterminate;\n  }\n  private _indeterminate = false;\n\n  /**\n   * Set component validation state to valid.\n   * @type boolean\n   */\n  @Input() valid?: boolean;\n\n  @HostBinding('class')\n  get hostClasses(): any {\n    return {\n      'form-check-input': true,\n      'is-valid': this.valid === true,\n      'is-invalid': this.valid === false,\n    };\n  }\n\n  get checked(): boolean {\n    return this.hostElement?.nativeElement?.checked;\n  }\n\n  constructor(private renderer: Renderer2, private hostElement: ElementRef) {}\n}\n","import { booleanAttribute, Directive, ElementRef, HostBinding, Input, OnInit } from '@angular/core';\n\nimport { InputType } from '../../../core-components.types';\n\n@Directive({\n  selector: 'input[gtrFormControl], textarea[gtrFormControl]',\n  standalone: true,\n})\nexport class GtrFormControlDirective implements OnInit {\n  constructor(private hostElement: ElementRef) {}\n\n  /**\n   * Size the component small or large.\n   * @type {'sm' | 'lg'}\n   */\n  @Input() sizing?: '' | 'sm' | 'lg' | string = '';\n  /**\n   * Set component validation state to valid.\n   * @type boolean\n   */\n  @Input() valid?: boolean;\n\n  /**\n   * Specifies the type of input element.\n   */\n  @HostBinding('attr.type')\n  @Input()\n  type: Omit<InputType, 'checkbox' | 'radio'> = 'text';\n\n  /**\n   * Render the component styled as plain text. Removes the default form field styling and preserve the correct margin and padding. Recommend to use alongside `readonly` [docs]\n   */\n  @Input({ transform: booleanAttribute }) plaintext: string | boolean = false;\n\n  @HostBinding('class')\n  get hostClasses(): any {\n    const isRangeType = this.type === 'range';\n\n    return {\n      'form-control': !isRangeType && !this.plaintext,\n      'form-control-plaintext': !isRangeType && this.plaintext,\n      'form-control-color': this.type === 'color',\n      'form-range': isRangeType,\n      [`form-control-${this.sizing}`]: !!this.sizing && !isRangeType,\n      'is-valid': this.valid === true,\n      'is-invalid': this.valid === false,\n    };\n  }\n\n  get hostTag(): string {\n    return this.hostElement.nativeElement.tagName;\n  }\n\n  ngOnInit(): void {\n    const hostTag = this.hostTag.toLowerCase();\n    if (hostTag !== 'input' && hostTag !== 'textarea') {\n      console.warn(\n        `Gettrx [gtrFormControl] works with '<input>' and '<texarea>' - not with '<${hostTag}>'`,\n      );\n    }\n  }\n}\n","import { Directive, HostBinding } from '@angular/core';\n\n@Directive({\n  selector: '[gtrFormText]',\n  standalone: true,\n})\nexport class GtrFormTextDirective {\n  @HostBinding('class')\n  get hostClasses(): any {\n    return {\n      'form-text': true,\n    };\n  }\n}\n","import { booleanAttribute, Directive, HostBinding, Input } from '@angular/core';\n\n@Directive({\n  selector: '[gtrFormFloating]',\n  standalone: true,\n})\nexport class GtrFormFloatingDirective {\n  /**\n   * Enable floating labels\n   * @type boolean\n   */\n  @Input({ alias: 'gtrFormFloating', transform: booleanAttribute }) floating: string | boolean =\n    true;\n\n  @HostBinding('class')\n  get hostClasses(): any {\n    return {\n      'form-floating': this.floating,\n    };\n  }\n}\n","import { Directive, HostBinding } from '@angular/core';\n\n@Directive({\n  selector: '[gtrInputGroupText]',\n  standalone: true,\n})\nexport class GtrInputGroupTextDirective {\n  @HostBinding('class')\n  get hostClasses(): any {\n    return {\n      'input-group-text': true,\n    };\n  }\n\n  constructor() {}\n}\n","import { isValid } from 'date-fns';\n\nexport interface DateTimeFormatOptions {\n  localeMatcher?: 'best fit' | 'lookup' | undefined;\n  weekday?: 'long' | 'short' | 'narrow' | undefined;\n  era?: 'long' | 'short' | 'narrow' | undefined;\n  year?: 'numeric' | '2-digit' | undefined;\n  month?: 'numeric' | '2-digit' | 'long' | 'short' | 'narrow' | undefined;\n  day?: 'numeric' | '2-digit' | undefined;\n  hour?: 'numeric' | '2-digit' | undefined;\n  minute?: 'numeric' | '2-digit' | undefined;\n  second?: 'numeric' | '2-digit' | undefined;\n  timeZoneName?: 'long' | 'short' | undefined;\n  formatMatcher?: 'best fit' | 'basic' | undefined;\n  hour12?: boolean | undefined;\n  timeZone?: string | undefined;\n}\n\nexport type DayPeriod = 'am' | 'pm';\n\nexport interface ITimeValue {\n  value: number;\n  label: string;\n  dayPeriod?: DayPeriod;\n  disabled?: boolean;\n}\n\nexport interface IDayPeriods {\n  am: string;\n  pm: string;\n}\n\nexport const getSupportedLocale = (locale: string = 'default') => {\n  let supportedLocale: string;\n  try {\n    supportedLocale = Intl.DateTimeFormat.supportedLocalesOf(locale).length ? locale : 'default';\n  } catch (e) {\n    supportedLocale = 'default';\n  }\n  return supportedLocale;\n};\n\nexport const isHour12 = (locale: string = 'default'): boolean => {\n  const supportedLocale = getSupportedLocale(locale);\n  const hour12 = Intl.DateTimeFormat(supportedLocale, {\n    timeStyle: 'short',\n  }).resolvedOptions().hour12;\n  return hour12 ?? false;\n};\n\nexport const convert12hTo24h = (abbr: 'am' | 'pm', hour: number) => {\n  if (abbr === 'am' && hour === 12) {\n    return 0;\n  }\n  if (abbr === 'am') {\n    return hour;\n  }\n  if (abbr === 'pm' && hour === 12) {\n    return 12;\n  }\n  return hour + 12;\n};\n\nexport const convert24hTo12h = (hour: number) => hour % 12 || 12;\n\nexport const convertTimeToDate = (time: Date | string | null | undefined) =>\n  time ? (time instanceof Date ? new Date(time) : new Date(`1970-01-01 ${time}`)) : null;\n\n// export const getAmPm = (date: Date, locale: string) => {\n//   if (date.toLocaleTimeString(locale).includes('AM')) {\n//     return 'am'\n//   }\n//   if (date.toLocaleTimeString(locale).includes('PM')) {\n//     return 'pm'\n//   }\n//   return date.getHours() >= 12 ? 'pm' : 'am'\n// }\n//\nexport const getAmPm = (\n  date: Date,\n  locale: string,\n  options: DateTimeFormatOptions = {},\n): DayPeriod => {\n  const dayPeriods = getDayPeriods('en-US', options);\n  const time = new Intl.DateTimeFormat('en-US', {\n    timeStyle: 'short',\n    hour12: true,\n  }).format(date);\n\n  const dayPeriod = dayPeriods.find((element) => time.includes(element.label));\n\n  return <DayPeriod>(dayPeriod?.value ?? (date.getHours() >= 12 ? 'pm' : 'am'));\n};\n\nexport const isAm = (date: Date) => {\n  return date.getHours() < 12;\n};\nexport const isPm = (date: Date) => {\n  return date.getHours() > 11;\n};\n\nexport const isValidTimeZone = (timeZone: unknown): boolean => {\n  try {\n    if (timeZone === undefined) {\n      return false;\n    }\n\n    if (!Intl || !Intl.DateTimeFormat().resolvedOptions().timeZone) {\n      throw new Error('Time zones not supported.');\n    }\n\n    if (typeof timeZone !== 'string') {\n      throw new Error(`Invalid timeZone type specified: ${timeZone}`);\n    }\n\n    try {\n      //throws an error if timezone is not valid\n      Intl.DateTimeFormat(undefined, { timeZone: timeZone });\n    } catch (error) {\n      throw new Error(`Invalid timeZone string specified: ${timeZone}`);\n    }\n\n    return true;\n  } catch (error) {\n    console.warn(error);\n    return false;\n  }\n};\n\nexport const getListOfHours = (locale: string, options: DateTimeFormatOptions = {}) => {\n  const hour12 = isHour12(locale);\n  const time = new Date(0);\n  return Array.from({ length: 24 }, (_, i) => {\n    time.setHours(i);\n    const dayPeriod = getAmPm(time, locale);\n    return {\n      value: i,\n      dayPeriod: <DayPeriod>dayPeriod,\n      label: time\n        .toLocaleTimeString(locale, {\n          hour: '2-digit',\n          hour12: hour12,\n          minute: '2-digit',\n          second: '2-digit',\n        })\n        .split(':')[0],\n    };\n  });\n};\n\nexport const getListOfMinutes = (\n  locale: string,\n  options: DateTimeFormatOptions = {},\n  valueAsString = false,\n) => {\n  const d = new Date(0);\n  return Array.from({ length: 60 }, (_, i) => {\n    d.setMinutes(i);\n    return {\n      value: i,\n      // value: valueAsString ? i.toString() : i,\n      label: d\n        .toLocaleTimeString(locale, {\n          // ...options,\n          hour: '2-digit',\n          hour12: false,\n          minute: '2-digit',\n          second: '2-digit',\n        })\n        .split(':')[1],\n    };\n  });\n};\n\nexport const getListOfSeconds = (\n  locale: string,\n  options: DateTimeFormatOptions = {},\n  valueAsString = false,\n) =>\n  Array.from({ length: 60 }, (_, i) => {\n    const d = new Date(0);\n    d.setSeconds(i);\n    return {\n      value: i,\n      // value: valueAsString ? i.toString() : i,\n      label: d\n        .toLocaleTimeString(locale, {\n          // ...options,\n          hour: '2-digit',\n          hour12: false,\n          minute: '2-digit',\n          second: '2-digit',\n        })\n        .split(':')[2],\n    };\n  });\n\nexport const getSelectedHour = (date: Date | null, locale: string) =>\n  date instanceof Date\n    ? isHour12(locale)\n      ? convert24hTo12h(date.getHours())\n      : date.getHours()\n    : '';\n\nexport const getSelectedMinutes = (date: Date | null) => (date ? date.getMinutes() : '');\n\nexport const getSelectedSeconds = (date: Date | null) => (date ? date.getSeconds() : '');\n\n// export const isAmPm = (locale: string) =>\n//  ['am', 'AM', 'pm', 'PM'].some((el) => new Date().toLocaleString(locale).includes(el))\n\nexport const isAmPm = (locale: string = 'default') => {\n  const supportedLocale = getSupportedLocale(locale);\n  const date = new Date();\n  const time = new Intl.DateTimeFormat(supportedLocale, {\n    timeStyle: 'short',\n  }).format(date);\n  const isAmPm = time.match(/(?:\\p{L}\\p{M}\\p{P}*)+|(?:\\p{L}\\p{P}*)+/gu) ?? [];\n  return isAmPm.length > 0;\n};\n\nexport const isValidTime = (time: string | Date | number | any) => {\n  if (typeof time === 'string') {\n    return isValid(time) || isValid(new Date(`1970-01-01 ${time}`));\n  }\n  return isValid(time);\n  // const d = new Date(`1970-01-01 ${time}`)\n  // return d instanceof Date && d.getTime()\n};\n//\n// export const _getDayPeriods = (locale: string = 'default', options: DateTimeFormatOptions = {}) => {\n//   const supportedLocale = getSupportedLocale(locale);\n//\n//   const dayPeriods = { am: 'am', pm: 'pm' };\n//\n//   const hour12 = isHour12(supportedLocale);\n//   if (!hour12) {\n//     return dayPeriods;\n//   }\n//\n//   const am = new Date(Date.UTC(1970, 0, 1, 0, 0, 0));\n//   const pm = new Date(Date.UTC(1970, 0, 1, 13, 0, 0));\n//\n//   const formatter = new Intl.DateTimeFormat(supportedLocale, { hour12: hour12, hour: 'numeric', timeZone: 'UTC' });\n//   dayPeriods.am = formatter.formatToParts(am).find(part => part.type === 'dayPeriod')?.value ?? 'am';\n//   dayPeriods.pm = formatter.formatToParts(pm).find(part => part.type === 'dayPeriod')?.value ?? 'pm'\n//   return dayPeriods;\n// };\n\nexport const getDayPeriods = (locale: string = 'default', options: DateTimeFormatOptions = {}) => {\n  const supportedLocale = getSupportedLocale(locale);\n\n  const dayPeriods = [\n    { value: 'am', label: 'am' },\n    { value: 'pm', label: 'pm' },\n  ];\n\n  const hour12 = isHour12(supportedLocale);\n  if (!hour12) {\n    return dayPeriods;\n  }\n\n  const am = new Date(Date.UTC(1970, 0, 1, 0, 0, 0));\n  const pm = new Date(Date.UTC(1970, 0, 1, 13, 0, 0));\n  const formatter = new Intl.DateTimeFormat(supportedLocale, {\n    hour12: hour12,\n    hour: 'numeric',\n    timeZone: 'UTC',\n  });\n  const formattedAm =\n    formatter.formatToParts(am).find((part) => part.type === 'dayPeriod')?.value ?? 'am';\n  const formattedPm =\n    formatter.formatToParts(pm).find((part) => part.type === 'dayPeriod')?.value ?? 'pm';\n\n  dayPeriods.forEach((element, index, dayPeriods) => {\n    dayPeriods[index].label = element.value === 'am' ? formattedAm ?? 'am' : formattedPm ?? 'pm';\n  });\n\n  return dayPeriods;\n};\n\n// testing\n// const langs = [\n//   ['Abkhazian', 'ab'],\n//   ['Afar', 'aa'],\n//   ['Afrikaans', 'af'],\n//   ['Akan', 'ak'],\n//   ['Albanian', 'sq'],\n//   ['Amharic', 'am'],\n//   ['Arabic', 'ar'],\n//   ['Aragonese', 'an'],\n//   ['Argentina', 'es-ar'],\n//   ['Armenian', 'hy'],\n//   ['Assamese', 'as'],\n//   ['Avaric', 'av'],\n//   ['Avestan', 'ae'],\n//   ['Aymara', 'ay'],\n//   ['Azerbaijani', 'az'],\n//   ['Bambara', 'bm'],\n//   ['Bashkir', 'ba'],\n//   ['Basque', 'eu'],\n//   ['Belarusian', 'be'],\n//   ['Bengali (Bangla)', 'bn'],\n//   ['Bihari', 'bh'],\n//   ['Bislama', 'bi'],\n//   ['Bosnian', 'bs'],\n//   ['Breton', 'br'],\n//   ['Bulgarian', 'bg'],\n//   ['Burmese', 'my'],\n//   ['Catalan', 'ca'],\n//   ['Chamorro', 'ch'],\n//   ['Chechen', 'ce'],\n//   ['Chichewa, Chewa, Nyanja', 'ny'],\n//   ['Chinese', 'zh'],\n//   ['Chinese (Simplified)', 'zh-Hans'],\n//   ['Chinese (Traditional)', 'zh-Hant'],\n//   ['Chuvash', 'cv'],\n//   ['Cornish', 'kw'],\n//   ['Corsican', 'co'],\n//   ['Cree', 'cr'],\n//   ['Croatian', 'hr'],\n//   ['Czech', 'cs'],\n//   ['Danish', 'da'],\n//   ['Divehi, Dhivehi, Maldivian', 'dv'],\n//   ['Dutch', 'nl'],\n//   ['Dzongkha', 'dz'],\n//   ['English', 'en'],\n//   ['Esperanto', 'eo'],\n//   ['Estonian', 'et'],\n//   ['Ewe', 'ee'],\n//   ['Faroese', 'fo'],\n//   ['Fijian', 'fj'],\n//   ['Finnish', 'fi'],\n//   ['French', 'fr'],\n//   ['Fula, Fulah, Pulaar, Pular', 'ff'],\n//   ['Galician', 'gl'],\n//   ['Gaelic (Scottish)', 'gd'],\n//   ['Gaelic (Manx)', 'gv'],\n//   ['Georgian', 'ka'],\n//   ['German', 'de'],\n//   ['Greek', 'el'],\n//   ['Greenlandic', 'kl'],\n//   ['Guarani', 'gn'],\n//   ['Gujarati', 'gu'],\n//   ['Haitian Creole', 'ht'],\n//   ['Hausa', 'ha'],\n//   ['Hebrew', 'he'],\n//   ['Herero', 'hz'],\n//   ['Hindi', 'hi'],\n//   ['Hiri Motu', 'ho'],\n//   ['Hungarian', 'hu'],\n//   ['Icelandic', 'is'],\n//   ['Ido', 'io'],\n//   ['Igbo', 'ig'],\n//   ['Indonesian', 'id', 'in'],\n//   ['Interlingua', 'ia'],\n//   ['Interlingue', 'ie'],\n//   ['Inuktitut', 'iu'],\n//   ['Inupiak', 'ik'],\n//   ['Irish', 'ga'],\n//   ['Italian', 'it'],\n//   ['Japanese', 'ja'],\n//   ['Javanese', 'jv'],\n//   ['Kalaallisut, Greenlandic', 'kl'],\n//   ['Kannada', 'kn'],\n//   ['Kanuri', 'kr'],\n//   ['Kashmiri', 'ks'],\n//   ['Kazakh', 'kk'],\n//   ['Khmer', 'km'],\n//   ['Kikuyu', 'ki'],\n//   ['Kinyarwanda (Rwanda)', 'rw'],\n//   ['Kirundi', 'rn'],\n//   ['Kyrgyz', 'ky'],\n//   ['Komi', 'kv'],\n//   ['Kongo', 'kg'],\n//   ['Korean', 'ko'],\n//   ['Kurdish', 'ku'],\n//   ['Kwanyama', 'kj'],\n//   ['Lao', 'lo'],\n//   ['Latin', 'la'],\n//   ['Latvian (Lettish)', 'lv'],\n//   ['Limburgish (Limburger)', 'li'],\n//   ['Lingala', 'ln'],\n//   ['Lithuanian', 'lt'],\n//   ['Luga-Katanga', 'lu'],\n//   ['Luganda, Ganda', 'lg'],\n//   ['Luxembourgish', 'lb'],\n//   ['Manx', 'gv'],\n//   ['Macedonian', 'mk'],\n//   ['Malagasy', 'mg'],\n//   ['Malay', 'ms'],\n//   ['Malayalam', 'ml'],\n//   ['Maltese', 'mt'],\n//   ['Maori', 'mi'],\n//   ['Marathi', 'mr'],\n//   ['Marshallese', 'mh'],\n//   ['Moldavian', 'mo'],\n//   ['Mongolian', 'mn'],\n//   ['Nauru', 'na'],\n//   ['Navajo', 'nv'],\n//   ['Ndonga', 'ng'],\n//   ['Northern Ndebele', 'nd'],\n//   ['Nepali', 'ne'],\n//   ['Norwegian', 'no'],\n//   ['Norwegian bokmål', 'nb'],\n//   ['Norwegian nynorsk', 'nn'],\n//   ['Nuosu', 'ii'],\n//   ['Occitan', 'oc'],\n//   ['Ojibwe', 'oj'],\n//   ['Old Church Slavonic, Old Bulgarian', 'cu'],\n//   ['Oriya', 'or'],\n//   ['Oromo (Afaan Oromo)', 'om'],\n//   ['Ossetian', 'os'],\n//   ['Pāli', 'pi'],\n//   ['Pashto, Pushto', 'ps'],\n//   ['Persian (Farsi)', 'fa'],\n//   ['Polish', 'pl'],\n//   ['Portuguese', 'pt'],\n//   ['Punjabi (Eastern)', 'pa'],\n//   ['Quechua', 'qu'],\n//   ['Romansh', 'rm'],\n//   ['Romanian', 'ro'],\n//   ['Russian', 'ru'],\n//   ['Sami', 'se'],\n//   ['Samoan', 'sm'],\n//   ['Sango', 'sg'],\n//   ['Sanskrit', 'sa'],\n//   ['Serbian', 'sr'],\n//   ['Serbo-Croatian', 'sh'],\n//   ['Sesotho', 'st'],\n//   ['Setswana', 'tn'],\n//   ['Shona', 'sn'],\n//   ['Sichuan Yi', 'ii'],\n//   ['Sindhi', 'sd'],\n//   ['Sinhalese', 'si'],\n//   ['Siswati', 'ss'],\n//   ['Slovak', 'sk'],\n//   ['Slovenian', 'sl'],\n//   ['Somali', 'so'],\n//   ['Southern Ndebele', 'nr'],\n//   ['Spanish', 'es'],\n//   ['Sundanese', 'su'],\n//   ['Swahili (Kiswahili)', 'sw'],\n//   ['Swati', 'ss'],\n//   ['Swedish', 'sv'],\n//   ['Tagalog', 'tl'],\n//   ['Tahitian', 'ty'],\n//   ['Tajik', 'tg'],\n//   ['Tamil', 'ta'],\n//   ['Tatar', 'tt'],\n//   ['Telugu', 'te'],\n//   ['Thai', 'th'],\n//   ['Tibetan', 'bo'],\n//   ['Tigrinya', 'ti'],\n//   ['Tonga', 'to'],\n//   ['Tsonga', 'ts'],\n//   ['Turkish', 'tr'],\n//   ['Turkmen', 'tk'],\n//   ['Twi', 'tw'],\n//   ['Uyghur', 'ug'],\n//   ['Ukrainian', 'uk'],\n//   ['Urdu', 'ur'],\n//   ['Uzbek', 'uz'],\n//   ['Venda', 've'],\n//   ['Vietnamese', 'vi'],\n//   ['Volapük', 'vo'],\n//   ['Wallon', 'wa'],\n//   ['Welsh', 'cy'],\n//   ['Wolof', 'wo'],\n//   ['Western Frisian', 'fy'],\n//   ['Xhosa', 'xh'],\n//   ['Yiddish', 'yi', 'ji'],\n//   ['Yoruba', 'yo'],\n//   ['Zhuang, Chuang', 'za'],\n//   ['Zulu', 'zu'],\n// ]\n//\n// langs.forEach(lang => {const period = getDayPeriods(lang[1]); if (period.am === 'AM') return; console.log(lang[1], period )})\n//\n//\n// Chrome / Opera\n// Amharic am {am: 'ጥዋት', pm: 'ከሰዓት'}\n// Arabic ar {am: 'ص', pm: 'م'}\n// Bulgarian bg {am: 'пр.об.', pm: 'сл.об.'}\n// Chinese (Traditional) zh-Hant {am: '上午', pm: '下午'}\n// Greek el {am: 'π.μ.', pm: 'μ.μ.'}\n// Hindi hi {am: 'am', pm: 'pm'}\n// Kannada kn {am: 'ಪೂರ್ವಾಹ್ನ', pm: 'ಅಪರಾಹ್ನ'}\n// Korean ko {am: '오전', pm: '오후'}\n// Malay ms {am: 'PG', pm: 'PTG'}\n// Tamil ta {am: 'முற்பகல்', pm: 'பிற்பகல்'}\n//\n// Edge Chromium\n// Albanian sq {am: 'e paradites', pm: 'e pasdites'}\n// Amharic am {am: 'ጥዋት', pm: 'ከሰዓት'}\n// Arabic ar {am: 'ص', pm: 'م'}\n// Bulgarian bg {am: 'пр.об.', pm: 'сл.об.'}\n// Chinese (Traditional) zh-Hant {am: '上午', pm: '下午'}\n// Greek el {am: 'π.μ.', pm: 'μ.μ.'}\n// Hindi hi {am: 'am', pm: 'pm'}\n// Kannada kn {am: 'ಪೂರ್ವಾಹ್ನ', pm: 'ಅಪರಾಹ್ನ'}\n// Korean ko {am: '오전', pm: '오후'}\n// Malay ms {am: 'PG', pm: 'PTG'}\n// Punjabi (Eastern) pa {am: 'ਪੂ.ਦੁ.', pm: 'ਬਾ.ਦੁ.'}\n// Sindhi sd {am: 'صبح، منجهند', pm: 'منجهند، شام'}\n// Tamil ta {am: 'முற்பகல்', pm: 'பிற்பகல்'}\n//\n//\n// Firefox\n// Akan ak { am: \"AN\", pm: \"EW\" }\n// Albanian sq { am: \"e paradites\", pm: \"e pasdites\" }\n// Amharic am { am: \"ጥዋት\", pm: \"ከሰዓት\" }\n// Arabic ar { am: \"ص\", pm: \"م\" }\n// Assamese as { am: \"পূৰ্বাহ্ন\", pm: \"অপৰাহ্ন\" }\n// Bulgarian bg { am: \"пр.об.\", pm: \"сл.об.\" }\n// Chinese (Traditional) zh-Hant { am: \"上午\", pm: \"下午\" }\n// Dzongkha dz { am: \"སྔ་ཆ་\", pm: \"ཕྱི་ཆ་\" }\n// Ewe ee { am: \"ŋdi\", pm: \"ɣetrɔ\" }\n// Greek el { am: \"π.μ.\", pm: \"μ.μ.\" }\n// Hindi hi { am: \"am\", pm: \"pm\" }\n// Kannada kn { am: \"ಪೂರ್ವಾಹ್ನ\", pm: \"ಅಪರಾಹ್ನ\" }\n// Korean ko { am: \"오전\", pm: \"오후\" }\n// Malay ms { am: \"PG\", pm: \"PTG\" }\n// Oromo (Afaan Oromo) om { am: \"WD\", pm: \"WB\" }\n// Punjabi (Eastern) pa { am: \"ਪੂ.ਦੁ.\", pm: \"ਬਾ.ਦੁ.\" }\n// Sanskrit sa { am: \"पूर्वाह्न\", pm: \"अपराह्न\" }\n// Sindhi sd { am: \"صبح، منجهند\", pm: \"منجهند، شام\" }\n// Somali so { am: \"GH\", pm: \"GD\" }\n// Tamil ta { am: \"முற்பகல்\", pm: \"பிற்பகல்\" }\n// Tigrinya ti { am: \"ቅ.ቀ.\", pm: \"ድ.ቀ.\" }\n// Tonga to { am: \"hengihengi\", pm: \"efiafi\" }\n// Twi tw { am: \"AN\", pm: \"EW\" }\n//\n//\n//\n// const formats = {\n//   \"ar-SA\" : \"dd/MM/yy\",\n//   \"bg-BG\" : \"dd.M.yyyy\",\n//   \"ca-ES\" : \"dd/MM/yyyy\",\n//   \"zh-TW\" : \"yyyy/M/d\",\n//   \"cs-CZ\" : \"d.M.yyyy\",\n//   \"da-DK\" : \"dd-MM-yyyy\",\n//   \"de-DE\" : \"dd.MM.yyyy\",\n//   \"el-GR\" : \"d/M/yyyy\",\n//   \"en-US\" : \"M/d/yyyy\",\n//   \"fi-FI\" : \"d.M.yyyy\",\n//   \"fr-FR\" : \"dd/MM/yyyy\",\n//   \"he-IL\" : \"dd/MM/yyyy\",\n//   \"hu-HU\" : \"yyyy. MM. dd.\",\n//   \"is-IS\" : \"d.M.yyyy\",\n//   \"it-IT\" : \"dd/MM/yyyy\",\n//   \"ja-JP\" : \"yyyy/MM/dd\",\n//   \"ko-KR\" : \"yyyy-MM-dd\",\n//   \"nl-NL\" : \"d-M-yyyy\",\n//   \"nb-NO\" : \"dd.MM.yyyy\",\n//   \"pl-PL\" : \"yyyy-MM-dd\",\n//   \"pt-BR\" : \"d/M/yyyy\",\n//   \"ro-RO\" : \"dd.MM.yyyy\",\n//   \"ru-RU\" : \"dd.MM.yyyy\",\n//   \"hr-HR\" : \"d.M.yyyy\",\n//   \"sk-SK\" : \"d. M. yyyy\",\n//   \"sq-AL\" : \"yyyy-MM-dd\",\n//   \"sv-SE\" : \"yyyy-MM-dd\",\n//   \"th-TH\" : \"d/M/yyyy\",\n//   \"tr-TR\" : \"dd.MM.yyyy\",\n//   \"ur-PK\" : \"dd/MM/yyyy\",\n//   \"id-ID\" : \"dd/MM/yyyy\",\n//   \"uk-UA\" : \"dd.MM.yyyy\",\n//   \"be-BY\" : \"dd.MM.yyyy\",\n//   \"sl-SI\" : \"d.M.yyyy\",\n//   \"et-EE\" : \"d.MM.yyyy\",\n//   \"lv-LV\" : \"yyyy.MM.dd.\",\n//   \"lt-LT\" : \"yyyy.MM.dd\",\n//   \"fa-IR\" : \"MM/dd/yyyy\",\n//   \"vi-VN\" : \"dd/MM/yyyy\",\n//   \"hy-AM\" : \"dd.MM.yyyy\",\n//   \"az-Latn-AZ\" : \"dd.MM.yyyy\",\n//   \"eu-ES\" : \"yyyy/MM/dd\",\n//   \"mk-MK\" : \"dd.MM.yyyy\",\n//   \"af-ZA\" : \"yyyy/MM/dd\",\n//   \"ka-GE\" : \"dd.MM.yyyy\",\n//   \"fo-FO\" : \"dd-MM-yyyy\",\n//   \"hi-IN\" : \"dd-MM-yyyy\",\n//   \"ms-MY\" : \"dd/MM/yyyy\",\n//   \"kk-KZ\" : \"dd.MM.yyyy\",\n//   \"ky-KG\" : \"dd.MM.yy\",\n//   \"sw-KE\" : \"M/d/yyyy\",\n//   \"uz-Latn-UZ\" : \"dd/MM yyyy\",\n//   \"tt-RU\" : \"dd.MM.yyyy\",\n//   \"pa-IN\" : \"dd-MM-yy\",\n//   \"gu-IN\" : \"dd-MM-yy\",\n//   \"ta-IN\" : \"dd-MM-yyyy\",\n//   \"te-IN\" : \"dd-MM-yy\",\n//   \"kn-IN\" : \"dd-MM-yy\",\n//   \"mr-IN\" : \"dd-MM-yyyy\",\n//   \"sa-IN\" : \"dd-MM-yyyy\",\n//   \"mn-MN\" : \"yy.MM.dd\",\n//   \"gl-ES\" : \"dd/MM/yy\",\n//   \"kok-IN\" : \"dd-MM-yyyy\",\n//   \"syr-SY\" : \"dd/MM/yyyy\",\n//   \"dv-MV\" : \"dd/MM/yy\",\n//   \"ar-IQ\" : \"dd/MM/yyyy\",\n//   \"zh-CN\" : \"yyyy/M/d\",\n//   \"de-CH\" : \"dd.MM.yyyy\",\n//   \"en-GB\" : \"dd/MM/yyyy\",\n//   \"es-MX\" : \"dd/MM/yyyy\",\n//   \"fr-BE\" : \"d/MM/yyyy\",\n//   \"it-CH\" : \"dd.MM.yyyy\",\n//   \"nl-BE\" : \"d/MM/yyyy\",\n//   \"nn-NO\" : \"dd.MM.yyyy\",\n//   \"pt-PT\" : \"dd-MM-yyyy\",\n//   \"sr-Latn-CS\" : \"d.M.yyyy\",\n//   \"sv-FI\" : \"d.M.yyyy\",\n//   \"az-Cyrl-AZ\" : \"dd.MM.yyyy\",\n//   \"ms-BN\" : \"dd/MM/yyyy\",\n//   \"uz-Cyrl-UZ\" : \"dd.MM.yyyy\",\n//   \"ar-EG\" : \"dd/MM/yyyy\",\n//   \"zh-HK\" : \"d/M/yyyy\",\n//   \"de-AT\" : \"dd.MM.yyyy\",\n//   \"en-AU\" : \"d/MM/yyyy\",\n//   \"es-ES\" : \"dd/MM/yyyy\",\n//   \"fr-CA\" : \"yyyy-MM-dd\",\n//   \"sr-Cyrl-CS\" : \"d.M.yyyy\",\n//   \"ar-LY\" : \"dd/MM/yyyy\",\n//   \"zh-SG\" : \"d/M/yyyy\",\n//   \"de-LU\" : \"dd.MM.yyyy\",\n//   \"en-CA\" : \"dd/MM/yyyy\",\n//   \"es-GT\" : \"dd/MM/yyyy\",\n//   \"fr-CH\" : \"dd.MM.yyyy\",\n//   \"ar-DZ\" : \"dd-MM-yyyy\",\n//   \"zh-MO\" : \"d/M/yyyy\",\n//   \"de-LI\" : \"dd.MM.yyyy\",\n//   \"en-NZ\" : \"d/MM/yyyy\",\n//   \"es-CR\" : \"dd/MM/yyyy\",\n//   \"fr-LU\" : \"dd/MM/yyyy\",\n//   \"ar-MA\" : \"dd-MM-yyyy\",\n//   \"en-IE\" : \"dd/MM/yyyy\",\n//   \"es-PA\" : \"MM/dd/yyyy\",\n//   \"fr-MC\" : \"dd/MM/yyyy\",\n//   \"ar-TN\" : \"dd-MM-yyyy\",\n//   \"en-ZA\" : \"yyyy/MM/dd\",\n//   \"es-DO\" : \"dd/MM/yyyy\",\n//   \"ar-OM\" : \"dd/MM/yyyy\",\n//   \"en-JM\" : \"dd/MM/yyyy\",\n//   \"es-VE\" : \"dd/MM/yyyy\",\n//   \"ar-YE\" : \"dd/MM/yyyy\",\n//   \"en-029\" : \"MM/dd/yyyy\",\n//   \"es-CO\" : \"dd/MM/yyyy\",\n//   \"ar-SY\" : \"dd/MM/yyyy\",\n//   \"en-BZ\" : \"dd/MM/yyyy\",\n//   \"es-PE\" : \"dd/MM/yyyy\",\n//   \"ar-JO\" : \"dd/MM/yyyy\",\n//   \"en-TT\" : \"dd/MM/yyyy\",\n//   \"es-AR\" : \"dd/MM/yyyy\",\n//   \"ar-LB\" : \"dd/MM/yyyy\",\n//   \"en-ZW\" : \"M/d/yyyy\",\n//   \"es-EC\" : \"dd/MM/yyyy\",\n//   \"ar-KW\" : \"dd/MM/yyyy\",\n//   \"en-PH\" : \"M/d/yyyy\",\n//   \"es-CL\" : \"dd-MM-yyyy\",\n//   \"ar-AE\" : \"dd/MM/yyyy\",\n//   \"es-UY\" : \"dd/MM/yyyy\",\n//   \"ar-BH\" : \"dd/MM/yyyy\",\n//   \"es-PY\" : \"dd/MM/yyyy\",\n//   \"ar-QA\" : \"dd/MM/yyyy\",\n//   \"es-BO\" : \"dd/MM/yyyy\",\n//   \"es-SV\" : \"dd/MM/yyyy\",\n//   \"es-HN\" : \"dd/MM/yyyy\",\n//   \"es-NI\" : \"dd/MM/yyyy\",\n//   \"es-PR\" : \"dd/MM/yyyy\",\n//   \"am-ET\" : \"d/M/yyyy\",\n//   \"tzm-Latn-DZ\" : \"dd-MM-yyyy\",\n//   \"iu-Latn-CA\" : \"d/MM/yyyy\",\n//   \"sma-NO\" : \"dd.MM.yyyy\",\n//   \"mn-Mong-CN\" : \"yyyy/M/d\",\n//   \"gd-GB\" : \"dd/MM/yyyy\",\n//   \"en-MY\" : \"d/M/yyyy\",\n//   \"prs-AF\" : \"dd/MM/yy\",\n//   \"bn-BD\" : \"dd-MM-yy\",\n//   \"wo-SN\" : \"dd/MM/yyyy\",\n//   \"rw-RW\" : \"M/d/yyyy\",\n//   \"qut-GT\" : \"dd/MM/yyyy\",\n//   \"sah-RU\" : \"MM.dd.yyyy\",\n//   \"gsw-FR\" : \"dd/MM/yyyy\",\n//   \"co-FR\" : \"dd/MM/yyyy\",\n//   \"oc-FR\" : \"dd/MM/yyyy\",\n//   \"mi-NZ\" : \"dd/MM/yyyy\",\n//   \"ga-IE\" : \"dd/MM/yyyy\",\n//   \"se-SE\" : \"yyyy-MM-dd\",\n//   \"br-FR\" : \"dd/MM/yyyy\",\n//   \"smn-FI\" : \"d.M.yyyy\",\n//   \"moh-CA\" : \"M/d/yyyy\",\n//   \"arn-CL\" : \"dd-MM-yyyy\",\n//   \"ii-CN\" : \"yyyy/M/d\",\n//   \"dsb-DE\" : \"d. M. yyyy\",\n//   \"ig-NG\" : \"d/M/yyyy\",\n//   \"kl-GL\" : \"dd-MM-yyyy\",\n//   \"lb-LU\" : \"dd/MM/yyyy\",\n//   \"ba-RU\" : \"dd.MM.yy\",\n//   \"nso-ZA\" : \"yyyy/MM/dd\",\n//   \"quz-BO\" : \"dd/MM/yyyy\",\n//   \"yo-NG\" : \"d/M/yyyy\",\n//   \"ha-Latn-NG\" : \"d/M/yyyy\",\n//   \"fil-PH\" : \"M/d/yyyy\",\n//   \"ps-AF\" : \"dd/MM/yy\",\n//   \"fy-NL\" : \"d-M-yyyy\",\n//   \"ne-NP\" : \"M/d/yyyy\",\n//   \"se-NO\" : \"dd.MM.yyyy\",\n//   \"iu-Cans-CA\" : \"d/M/yyyy\",\n//   \"sr-Latn-RS\" : \"d.M.yyyy\",\n//   \"si-LK\" : \"yyyy-MM-dd\",\n//   \"sr-Cyrl-RS\" : \"d.M.yyyy\",\n//   \"lo-LA\" : \"dd/MM/yyyy\",\n//   \"km-KH\" : \"yyyy-MM-dd\",\n//   \"cy-GB\" : \"dd/MM/yyyy\",\n//   \"bo-CN\" : \"yyyy/M/d\",\n//   \"sms-FI\" : \"d.M.yyyy\",\n//   \"as-IN\" : \"dd-MM-yyyy\",\n//   \"ml-IN\" : \"dd-MM-yy\",\n//   \"en-IN\" : \"dd-MM-yyyy\",\n//   \"or-IN\" : \"dd-MM-yy\",\n//   \"bn-IN\" : \"dd-MM-yy\",\n//   \"tk-TM\" : \"dd.MM.yy\",\n//   \"bs-Latn-BA\" : \"d.M.yyyy\",\n//   \"mt-MT\" : \"dd/MM/yyyy\",\n//   \"sr-Cyrl-ME\" : \"d.M.yyyy\",\n//   \"se-FI\" : \"d.M.yyyy\",\n//   \"zu-ZA\" : \"yyyy/MM/dd\",\n//   \"xh-ZA\" : \"yyyy/MM/dd\",\n//   \"tn-ZA\" : \"yyyy/MM/dd\",\n//   \"hsb-DE\" : \"d. M. yyyy\",\n//   \"bs-Cyrl-BA\" : \"d.M.yyyy\",\n//   \"tg-Cyrl-TJ\" : \"dd.MM.yy\",\n//   \"sr-Latn-BA\" : \"d.M.yyyy\",\n//   \"smj-NO\" : \"dd.MM.yyyy\",\n//   \"rm-CH\" : \"dd/MM/yyyy\",\n//   \"smj-SE\" : \"yyyy-MM-dd\",\n//   \"quz-EC\" : \"dd/MM/yyyy\",\n//   \"quz-PE\" : \"dd/MM/yyyy\",\n//   \"hr-BA\" : \"d.M.yyyy.\",\n//   \"sr-Latn-ME\" : \"d.M.yyyy\",\n//   \"sma-SE\" : \"yyyy-MM-dd\",\n//   \"en-SG\" : \"d/M/yyyy\",\n//   \"ug-CN\" : \"yyyy-M-d\",\n//   \"sr-Cyrl-BA\" : \"d.M.yyyy\",\n//   \"es-US\" : \"M/d/yyyy\"\n// };\n//\n// Object.keys(formats).forEach(lang => {const period = getDayPeriods(lang); if (period.am === 'AM') return; console.log(lang, period )})\n","import {\n  AfterViewInit,\n  Component,\n  Directive,\n  ElementRef,\n  EventEmitter,\n  HostBinding,\n  Input,\n  OnChanges,\n  Output,\n  QueryList,\n  SimpleChanges,\n  ViewChildren,\n} from '@angular/core';\nimport { NgClass, NgStyle } from '@angular/common';\n\nimport { ITimeValue } from '../gtr-time.utils';\n\nexport interface ITimePickerRollCol {\n  elements: ITimeValue[];\n  onClick?: (value: number | string) => void;\n  selected?: number | string | null;\n}\n\n@Directive({\n  selector: '[gtrTimeElement]',\n  exportAs: 'gtrTimeElement',\n  standalone: true,\n})\nexport class GtrTimeElementDirective {\n  constructor(public elementRef: ElementRef) {}\n\n  @Input() gtrTimeElement!: ITimeValue;\n}\n\n@Component({\n  selector: 'gtr-time-picker-roll-col',\n  templateUrl: './gtr-time-picker-roll-col.component.html',\n  //styleUrls: ['./time-picker-roll-col.component.scss'],\n  exportAs: 'gtrTimePickerRollCol',\n  imports: [GtrTimeElementDirective, NgClass, NgStyle],\n})\nexport class GtrTimePickerRollColComponent implements ITimePickerRollCol, OnChanges, AfterViewInit {\n  constructor(public elementRef: ElementRef) {}\n\n  private init = true;\n\n  @Input() disabled = false;\n  @Input() elements: ITimeValue[] = [];\n  @Input() onClick?: (value: number | string) => void;\n  @Input() selected?: number | string | null;\n  @Input() refresh?: boolean;\n\n  @Output() selectedChange: EventEmitter<any> = new EventEmitter<any>();\n\n  @HostBinding('class')\n  get hostClasses() {\n    return {\n      'time-picker-roll-col': true,\n      disabled: this.disabled,\n    };\n  }\n\n  @ViewChildren(GtrTimeElementDirective)\n  timeElements!: QueryList<GtrTimeElementDirective>;\n\n  ngAfterViewInit(): void {\n    this.timeElements?.changes.subscribe((state) => {\n      const selectedElement = this.timeElements?.find((element) => {\n        return element.gtrTimeElement?.value === <number>this.selected;\n      });\n      this.scrollToElement(selectedElement?.elementRef.nativeElement);\n    });\n    setTimeout(() => {\n      const selectedElement = this.elementRef.nativeElement.querySelector('.selected');\n      this.scrollToElement(selectedElement);\n    }, 1000);\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (\n      (changes['refresh'] && changes['refresh'].currentValue) ||\n      (changes['selected'] && !changes['selected'].firstChange)\n    ) {\n      const selectedElement = this.timeElements?.find((element) => {\n        return element.gtrTimeElement?.value === <number>this.selected;\n      });\n      this.init = !selectedElement;\n      this.scrollToElement(selectedElement?.elementRef.nativeElement);\n    }\n  }\n\n  scrollToElement(element: any) {\n    setTimeout(() => {\n      const elementSelected = element || this.elementRef.nativeElement.querySelector('.selected');\n      if (elementSelected) {\n        this.elementRef.nativeElement.scrollTo({\n          top: elementSelected?.offsetTop,\n          behavior: this.init ? 'auto' : 'smooth',\n        });\n        this.init = false;\n      }\n    });\n  }\n\n  handleElementClick($event: MouseEvent, element: any) {\n    if (element.disabled) {\n      return;\n    }\n    this.selected = element.value;\n    this.scrollToElement($event.target);\n    this.onClick && this.onClick(element.value);\n    this.selectedChange.emit(element.value);\n  }\n\n  trackByElement(index: number, element: ITimeValue) {\n    return element.value;\n  }\n}\n","@for (element of elements; track i; let i = $index) {\n  <div (click)=\"handleElementClick($event, element)\"\n     [attr.disabled]=\"element.disabled || null\"\n     [gtrTimeElement]=\"element\"\n     [ngClass]=\"{'time-picker-roll-cell': true, selected: element.value === selected, disabled: element.disabled}\"\n     [ngStyle]=\"{'width': 'fit-content'}\"\n     role=\"button\"\n>\n  {{element.label}}\n</div>\n}\n","import {\n  AfterViewInit,\n  Component,\n  Directive,\n  ElementRef,\n  EventEmitter,\n  HostBinding,\n  Input,\n  OnChanges,\n  Output,\n  QueryList,\n  SimpleChanges,\n  ViewChildren,\n} from '@angular/core';\nimport { NgClass, NgStyle } from '@angular/common';\n\nimport { DayPeriod } from '../gtr-time.utils';\n\nexport interface IDayPeriod {\n  value: string;\n  label: string;\n  dayPeriod?: DayPeriod;\n  disabled?: boolean;\n}\n\n@Directive({\n  selector: '[gtrDayPeriodElement]',\n  exportAs: 'gtrDayPeriodElement',\n  standalone: true,\n})\nexport class GtrDayPeriodElementDirective {\n  constructor(public elementRef: ElementRef) {}\n\n  @Input() gtrDayPeriodElement!: IDayPeriod;\n}\n\n@Component({\n  selector: 'gtr-time-picker-roll-am-pm',\n  templateUrl: './gtr-time-picker-roll-am-pm.component.html',\n  imports: [GtrDayPeriodElementDirective, NgClass, NgStyle],\n})\nexport class GtrTimePickerRollAmPmComponent implements OnChanges, AfterViewInit {\n  constructor(public elementRef: ElementRef) {}\n\n  private init = true;\n\n  @Input() disabled = false;\n  @Input() elements: IDayPeriod[] = [];\n  @Input() onClick?: (value: number | string) => void;\n  @Input() selected?: number | string | null;\n  @Input() refresh?: boolean;\n\n  @Output() selectedChange: EventEmitter<any> = new EventEmitter<any>();\n\n  @HostBinding('class')\n  get hostClasses() {\n    return {\n      'time-picker-roll-col': true,\n      disabled: this.disabled,\n    };\n  }\n\n  @ViewChildren(GtrDayPeriodElementDirective)\n  dayPeriodElements!: QueryList<GtrDayPeriodElementDirective>;\n\n  ngAfterViewInit(): void {\n    this.dayPeriodElements?.changes.subscribe((state) => {\n      const selectedElement = this.dayPeriodElements?.find((element) => {\n        return element.gtrDayPeriodElement?.value === <string>this.selected;\n      });\n      this.scrollToElement(selectedElement?.elementRef.nativeElement);\n    });\n    const selectedElement = this.elementRef.nativeElement.querySelector('.selected');\n    this.scrollToElement(selectedElement);\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (\n      (changes['refresh'] && changes['refresh'].currentValue) ||\n      (changes['selected'] && !changes['selected'].firstChange)\n    ) {\n      // @ts-ignore\n      const selectedElement = this.dayPeriodElements?.find((element) => {\n        return element.gtrDayPeriodElement?.value === <string>this.selected;\n      });\n      this.init = !selectedElement;\n      this.scrollToElement(selectedElement?.elementRef.nativeElement);\n    }\n  }\n\n  scrollToElement(element: any) {\n    setTimeout(() => {\n      const elementSelected = element || this.elementRef.nativeElement.querySelector('.selected');\n      if (elementSelected) {\n        this.elementRef.nativeElement.scrollTo({\n          top: elementSelected?.offsetTop,\n          behavior: this.init ? 'auto' : 'smooth',\n        });\n        this.init = false;\n      }\n    });\n  }\n\n  handleElementClick($event: MouseEvent, element: any) {\n    if (element.disabled) {\n      return;\n    }\n    this.selected = element.value;\n    this.scrollToElement($event.target);\n    this.onClick && this.onClick(element.value);\n    this.selectedChange.emit(element.value);\n  }\n}\n","@for (element of elements; track i; let i = $index) {\n  <div (click)=\"handleElementClick($event, element)\"\n       [attr.disabled]=\"element.disabled || null\"\n       [gtrDayPeriodElement]=\"element\"\n       [ngClass]=\"{'time-picker-roll-cell': true, selected: element.value === selected, disabled: element.disabled}\"\n       [ngStyle]=\"{'width': 'fit-content'}\"\n       role=\"button\">\n    {{ element.label }}\n  </div>\n}\n\n","import {\n  AfterViewInit,\n  Component,\n  ContentChildren,\n  ElementRef,\n  EventEmitter,\n  forwardRef,\n  HostListener,\n  Input,\n  OnChanges,\n  OnInit,\n  Output,\n  QueryList,\n  SimpleChanges,\n  ViewChild,\n} from '@angular/core';\nimport {\n  ControlValueAccessor,\n  FormControl,\n  FormGroup,\n  NG_VALUE_ACCESSOR,\n  ReactiveFormsModule,\n  Validators,\n} from '@angular/forms';\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\n\nimport {\n  convert12hTo24h,\n  convert24hTo12h,\n  convertTimeToDate,\n  DateTimeFormatOptions,\n  DayPeriod,\n  getAmPm,\n  getDayPeriods,\n  getListOfHours,\n  getListOfMinutes,\n  getListOfSeconds,\n  isHour12,\n  isValidTime,\n  ITimeValue,\n} from './gtr-time.utils';\nimport {\n  GtrDropdownComponent,\n  GtrDropdownMenuDirective,\n  GtrDropdownToggleDirective,\n} from '../dropdown';\nimport {\n  GtrFormControlDirective,\n  GtrFormSelectDirective,\n  GtrInputGroupComponent,\n  GtrInputGroupTextDirective,\n} from '../form';\nimport { GtrTemplateIdDirective } from '../shared';\nimport { GtrTimePickerRollColComponent } from './time-picker-roll-col/gtr-time-picker-roll-col.component';\nimport { GtrTimePickerRollAmPmComponent } from './time-picker-roll-col/gtr-time-picker-roll-am-pm.component';\n\n@Component({\n  selector: 'gtr-time-picker',\n  templateUrl: './gtr-time-picker.component.html',\n  //styleUrls: ['./time-picker.component.scss'],\n  exportAs: 'gtrTimePicker',\n  imports: [\n    NgClass,\n    NgTemplateOutlet,\n    ReactiveFormsModule,\n    GtrDropdownComponent,\n    GtrDropdownToggleDirective,\n    GtrDropdownMenuDirective,\n    GtrFormControlDirective,\n    GtrFormSelectDirective,\n    GtrInputGroupComponent,\n    GtrInputGroupTextDirective,\n    GtrTimePickerRollColComponent,\n    GtrTimePickerRollAmPmComponent,\n  ],\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => GtrTimePickerComponent),\n      multi: true,\n    },\n  ],\n})\nexport class GtrTimePickerComponent\n  implements OnChanges, OnInit, ControlValueAccessor, AfterViewInit\n{\n  constructor() {}\n\n  static ngAcceptInputType_cleaner: BooleanInput;\n  static ngAcceptInputType_disabled: BooleanInput;\n  static ngAcceptInputType_indicator: BooleanInput;\n  static ngAcceptInputType_inputReadOnly: BooleanInput;\n  static ngAcceptInputType_seconds: BooleanInput;\n  static ngAcceptInputType_visible: BooleanInput;\n\n  /**\n   * Toggle visibility or set the content of the cleaner button.\n   * @type boolean\n   * @default true\n   */\n  @Input()\n  set cleaner(value: boolean) {\n    this._cleaner = coerceBooleanProperty(value);\n  }\n\n  get cleaner() {\n    return this._cleaner;\n  }\n\n  private _cleaner: boolean = true;\n\n  /**\n   * Sets DateTime format options including timeZone\n   * @type DateTimeFormatOptions\n   * @default {}\n   * @note The date object doesn't store timeZone, it keeps the local timezone of the browser, regardless if you parsed UTC dates.\n   */\n  @Input() dateTimeFormatOptions: DateTimeFormatOptions = {};\n\n  /**\n   * Toggle the disabled state for the component.\n   * @type boolean\n   * @default false\n   */\n  @Input()\n  set disabled(value: boolean) {\n    this._disabled = coerceBooleanProperty(value);\n  }\n\n  get disabled(): boolean {\n    return this._disabled;\n  }\n\n  private _disabled: boolean = false;\n\n  /**\n   * Filter available hours to pick.\n   * @type (value: number) => boolean;\n   * @default undefined\n   */\n  @Input() filterHours?: (value: number) => boolean;\n\n  /**\n   * Filter available minutes to pick.\n   * @type (value: number) => boolean;\n   * @default undefined\n   */\n  @Input() filterMinutes?: (value: number) => boolean;\n\n  /**\n   * Filter available seconds to pick.\n   * @type (value: number) => boolean;\n   * @default undefined\n   */\n  @Input() filterSeconds?: (value: number) => boolean;\n\n  /**\n   * Toggle visibility or set the content of the input indicator.\n   * @type boolean\n   * @default true\n   */\n  @Input()\n  set indicator(value: boolean) {\n    this._indicator = coerceBooleanProperty(value);\n  }\n\n  get indicator() {\n    return this._indicator;\n  }\n\n  private _indicator: boolean = true;\n\n  /**\n   * Toggle the readonly state for the component.\n   * @type boolean\n   * @default false\n   */\n  @Input()\n  set inputReadOnly(value: boolean) {\n    this._inputReadOnly = coerceBooleanProperty(value);\n  }\n\n  get inputReadOnly(): boolean {\n    return this._inputReadOnly;\n  }\n\n  private _inputReadOnly: boolean = false;\n\n  /**\n   * Sets the default locale for components. If not set, it is inherited from the browser.\n   * @type string\n   * @default default\n   */\n  @Input() locale: string = 'default';\n\n  /**\n   * Specifies short hint visible in time input.\n   * @type string\n   * @default 'Select time'\n   */\n  @Input() placeholder: string = 'Select time';\n\n  /**\n   * Toggle seconds visibility.\n   * @type boolean\n   * @default false\n   */\n  @Input()\n  set seconds(value: boolean) {\n    this._seconds = coerceBooleanProperty(value);\n  }\n\n  get seconds(): boolean {\n    return this._seconds;\n  }\n\n  private _seconds: boolean = false;\n\n  /**\n   * Size the component small or large.\n   * @type 'sm' | 'lg' | undefined\n   * @default undefined\n   */\n  @Input() size?: 'sm' | 'lg';\n\n  /**\n   * Initial selected time.\n   * @type Date | string | null | number\n   * @default undefined\n   */\n  @Input()\n  set time(value: Date | string | undefined) {\n    if (value && isValidTime(value)) {\n      const time = convertTimeToDate(value);\n      if (!time) {\n        this.clearTime();\n        return;\n      }\n      this.dayPeriod = getAmPm(time, this.locale);\n      if (this._time?.getTime() !== time.getTime()) {\n        this._time = new Date(time.getTime());\n      }\n    } else {\n      this.clearTime();\n    }\n  }\n\n  get time(): Date | undefined {\n    return this._time;\n  }\n\n  private _time?: Date;\n  private _timeInternal?: Date;\n\n  /**\n   * Set the time picker variant to a roll or select.\n   * @type 'roll' | 'select'\n   * @default 'roll'\n   */\n  @Input() variant: 'roll' | 'select' = 'roll';\n\n  /**\n   * Toggle visual validation feedback.\n   * @type boolean | undefined\n   * @default undefined\n   */\n  @Input() valid?: boolean;\n\n  /**\n   * Toggle the visibility of dropdown timepicker menu component.\n   * @type boolean\n   * @default false\n   */\n  @Input()\n  set visible(value: boolean) {\n    this._visible = coerceBooleanProperty(value);\n  }\n\n  get visible() {\n    return this._visible;\n  }\n\n  private _visible: boolean = false;\n\n  @Output() timeChange: EventEmitter<Date | undefined> = new EventEmitter<Date | undefined>(false);\n\n  @HostListener('blur') onBlur() {\n    this.onTouched();\n  }\n\n  @ViewChild(GtrDropdownComponent, { read: ElementRef }) dropdownRef!: ElementRef;\n\n  templates: any = {};\n  @ContentChildren(GtrTemplateIdDirective, { descendants: true })\n  contentTemplates!: QueryList<GtrTemplateIdDirective>;\n\n  listOfHours!: ITimeValue[];\n  listOfHours12!: ITimeValue[];\n  listOfMinutes!: ITimeValue[];\n  listOfSeconds!: ITimeValue[];\n  hour12: boolean = isHour12(this.locale);\n  dayPeriods = [\n    { value: 'am', label: 'am' },\n    { value: 'pm', label: 'pm' },\n  ];\n\n  set timeInputValue(value: string) {\n    this.timeInput.setValue(value);\n    this._timeInputValue = value;\n  }\n\n  get timeInputValue(): string {\n    return this._timeInputValue;\n  }\n\n  private _timeInputValue: string =\n    this.time?.toLocaleTimeString(this.locale, {\n      timeStyle: this.seconds ? 'medium' : 'short',\n    }) ?? '';\n\n  get timePickerClasses() {\n    return {\n      'form-control': this.variant === 'select' && this.valid !== undefined,\n      'is-valid': this.valid === true,\n      'is-invalid': this.valid === false,\n    };\n  }\n\n  selectTime = new FormGroup<{\n    selectHours: FormControl<number | null>;\n    selectMinutes: FormControl<number | null>;\n    selectSeconds?: FormControl<number | null>;\n    selectDayPeriod?: FormControl<'am' | 'pm' | null>;\n  }>(\n    {\n      selectHours: new FormControl(\n        { value: this.hour, disabled: this.disabled },\n        { validators: [Validators.min(0)] },\n      ),\n      selectMinutes: new FormControl(\n        { value: this.minute, disabled: this.disabled },\n        Validators.min(0),\n      ),\n      selectSeconds: new FormControl(\n        { value: this.second, disabled: this.disabled },\n        Validators.min(0),\n      ),\n      selectDayPeriod: new FormControl(\n        { value: this.dayPeriod, disabled: this.disabled },\n        Validators.required,\n      ),\n    },\n    { validators: [Validators.required] },\n  );\n\n  timeInput = new FormControl(\n    {\n      value: this.timeInputValue,\n      disabled: this.disabled,\n    },\n    { validators: [Validators.required] },\n  );\n\n  set hour(value: number) {\n    if (this._hour !== value) {\n      if (value < 0) {\n        this.clearTime();\n        return;\n      }\n      this._hour = value;\n    }\n  }\n\n  get hour(): number {\n    return this._hour;\n  }\n\n  private _hour = -1;\n\n  set minute(value: number) {\n    if (this._minute !== value) {\n      if (value < 0) {\n        this.clearTime();\n        return;\n      }\n      this._minute = value;\n    }\n  }\n\n  get minute(): number {\n    return this._minute;\n  }\n\n  private _minute = -1;\n\n  set second(value: number) {\n    if (this._second !== value) {\n      if (value < 0) {\n        this.clearTime();\n        return;\n      }\n      this._second = value;\n    }\n  }\n\n  get second(): number {\n    return this._second;\n  }\n\n  private _second = -1;\n\n  set dayPeriod(value) {\n    this._dayPeriod = value;\n    this.listOfHours12 = this.hour12\n      ? this.listOfHours?.filter(\n          (item) => (item.dayPeriod && item.dayPeriod === value) || !item.dayPeriod,\n        )\n      : this.listOfHours;\n    this.patchSelectTimeValues();\n  }\n\n  get dayPeriod() {\n    return this._dayPeriod;\n  }\n\n  private _dayPeriod: DayPeriod = 'am';\n\n  setTime() {\n    this._hour = this._hour < 0 ? 0 : this._hour;\n    this._minute = this._minute < 0 ? 0 : this._minute;\n    this._second = this._second < 0 ? 0 : this._second;\n\n    const time = new Date(this._time?.getTime() || new Date());\n    time.setHours(this.hour, this.minute, this.second, 0);\n    this.time = time;\n    this.emitTime(time);\n  }\n\n  public clearTime() {\n    if (this.time) {\n      this._time = undefined;\n      this.emitTime(undefined);\n    }\n    this._hour = -1;\n    this._minute = -1;\n    this._second = -1;\n    this.dayPeriod = 'am';\n    this.patchSelectTimeValues();\n    this.timeInputValue = '';\n  }\n\n  emitTime(time: Date | undefined) {\n    const timeValue = !!time && isValidTime(time) ? new Date(time.getTime()) : undefined;\n    if (this._timeInternal?.getTime() !== timeValue?.getTime()) {\n      this.timeChange.emit(timeValue);\n      this.onChange(timeValue);\n      this.onTouched();\n      this._timeInternal = timeValue;\n    }\n    this.timeInputValue =\n      this.time?.toLocaleTimeString(this.locale, {\n        timeStyle: this.seconds ? 'medium' : 'short',\n      }) ?? '';\n  }\n\n  ngOnInit(): void {\n    this.setTimeLists();\n    this.updateSelectTime();\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes['time']) {\n      if (!changes['time'].firstChange) {\n        if (this._timeInternal?.getTime() !== changes['time'].currentValue?.getTime()) {\n          this.updateSelectTime();\n        }\n      }\n    }\n  }\n\n  ngAfterViewInit(): void {\n    setTimeout(() => {\n      this.contentTemplates.forEach((child: GtrTemplateIdDirective) => {\n        this.templates[child.id] = child.templateRef;\n      });\n    });\n  }\n\n  setTimeLists() {\n    this.dayPeriods = getDayPeriods(this.locale, this.dateTimeFormatOptions);\n    this.hour12 = isHour12(this.locale);\n    this.listOfHours = this.listOfTimeSegments(getListOfHours, this.filterHours);\n    this.listOfMinutes = this.listOfTimeSegments(getListOfMinutes, this.filterMinutes);\n    this.listOfSeconds = this.listOfTimeSegments(getListOfSeconds, this.filterSeconds);\n    if (this.variant === 'select') {\n      const undefSegment = { value: -1, label: ' --', disabled: true };\n      this.listOfHours.unshift({ ...undefSegment });\n      this.listOfMinutes.unshift({ ...undefSegment });\n      this.listOfSeconds.unshift({ ...undefSegment });\n    }\n    this.listOfHours12 = this.hour12\n      ? this.listOfHours.filter(\n          (item) => (item.dayPeriod && item.dayPeriod === this.dayPeriod) || !item.dayPeriod,\n        )\n      : this.listOfHours;\n  }\n\n  updateSelectTime(time = this.time) {\n    if (!!time && isValidTime(time)) {\n      const hour = time.getHours() ?? 0;\n      const minute = time.getMinutes() ?? 0;\n      const second = this.seconds ? time.getSeconds() ?? 0 : 0;\n\n      const closestSecond = this.closestTime(this.listOfSeconds, second);\n      const closestMinute = this.closestTime(this.listOfMinutes, minute);\n      const closestHour = this.closestTime(this.listOfHours, hour);\n\n      this.second = this.seconds ? closestSecond.value : 0;\n      this.minute = closestMinute.value;\n      this.hour = closestHour.value;\n      this.setTime();\n      this.patchSelectTimeValues();\n    }\n  }\n\n  closestTime(timeArray: ITimeValue[], timeSegment: number) {\n    let array = timeArray ?? [{ value: 0, label: '00' }];\n    if (this.time) {\n      array = timeArray.filter((el) => el.value >= 0);\n      array = array.length ? array : timeArray;\n    }\n    return array.reduce((a: ITimeValue, b: ITimeValue) => {\n      return Math.abs(b.value - timeSegment) < Math.abs(a.value - timeSegment) ? b : a;\n    });\n  }\n\n  listOfTimeSegments(\n    getListOfTimeSegments: (\n      locale: string,\n      dateTimeFormatOptions: DateTimeFormatOptions,\n    ) => ITimeValue[],\n    filterTimeSegments: ((timeSegmentValue: number) => boolean) | undefined,\n  ) {\n    const list = getListOfTimeSegments(this.locale, this.dateTimeFormatOptions).filter(\n      (segment: ITimeValue) => {\n        return typeof filterTimeSegments === 'function' ? filterTimeSegments(segment.value) : true;\n      },\n    );\n    return list.length\n      ? list\n      : getListOfTimeSegments(this.locale, this.dateTimeFormatOptions).slice(0, 1);\n  }\n\n  handleSelectDayPeriodChange(dayPeriod: DayPeriod) {\n    if (dayPeriod !== this.dayPeriod) {\n      const hrs = this.time?.getHours() ?? (this.hour < 0 ? 0 : this.hour);\n      const hour = hrs > 12 ? convert24hTo12h(hrs) : convert12hTo24h(dayPeriod, hrs);\n      this.hour = this.closestTime(this.listOfHours, hour).value;\n      if (hour >= 0) {\n        this.setTime();\n      }\n      this.updateSelectTime();\n    }\n  }\n\n  handleSelectHoursChange(hour: number) {\n    this.hour = hour;\n    if (hour >= 0) {\n      this.setTime();\n    }\n    this.updateSelectTime();\n  }\n\n  handleSelectMinutesChange(minute: number) {\n    this.minute = minute;\n    if (minute >= 0) {\n      this.setTime();\n    }\n    this.updateSelectTime();\n  }\n\n  handleSelectSecondsChange(second: number) {\n    this.second = second;\n    if (second >= 0) {\n      this.setTime();\n    }\n    this.updateSelectTime();\n  }\n\n  patchSelectTimeValues() {\n    const dayPeriod = this.selectTime.get('selectDayPeriod')?.value;\n    if (this.dayPeriod !== dayPeriod) {\n      this.selectTime.patchValue({\n        selectDayPeriod: this.dayPeriod ?? 'am',\n      });\n    }\n    const hours = this.selectTime.get('selectHours')?.value;\n    const minutes = this.selectTime.get('selectMinutes')?.value;\n    const seconds = this.selectTime.get('selectSeconds')?.value;\n    const goUpdate =\n      (this.second < 0 && this.minute < 0) ||\n      (this.hour >= 0 && this.minute >= 0 && this.second >= 0);\n    const timeChanged = this.hour !== hours || this.minute !== minutes || this.second !== seconds;\n    if (goUpdate && timeChanged) {\n      if (this.hour !== hours) {\n        this.selectTime.patchValue({\n          selectHours: this.hour ?? 0,\n        });\n      }\n      if (this.minute !== minutes) {\n        this.selectTime.patchValue({\n          selectMinutes: this.minute ?? 0,\n        });\n      }\n      if (this.second !== seconds) {\n        this.selectTime.patchValue({\n          selectSeconds: this.second ?? 0,\n        });\n      }\n    }\n  }\n\n  trackByHour(index: number, hour: ITimeValue) {\n    return hour;\n  }\n\n  onChange = (value: Date | undefined) => {};\n  onTouched = () => {};\n\n  writeValue(value: any): void {\n    this.time = value;\n    this.updateSelectTime();\n  }\n\n  registerOnChange(fn: any): void {\n    this.onChange = fn;\n  }\n\n  registerOnTouched(fn: any): void {\n    this.onTouched = fn;\n  }\n\n  setDisabledState(isDisabled: boolean) {\n    this.disabled = isDisabled;\n  }\n\n  handleTimeInputChange($event: any) {\n    const value = $event.target?.value;\n    if (!value || !isValidTime(value)) {\n      this.clearTime();\n      return;\n    }\n    const time = convertTimeToDate(value);\n    this.updateSelectTime(time ?? new Date(Date.now()));\n  }\n\n  handleClear($event: MouseEvent) {\n    this.clearTime();\n  }\n\n  handleBlur($event: FocusEvent) {\n    if (this.disabled) {\n      return;\n    }\n    this.dropdownRef?.nativeElement?.classList.remove('show');\n    setTimeout(() => {\n      this.onBlur();\n    }, 100);\n  }\n\n  handleFocus($event: FocusEvent) {\n    if (this.disabled) {\n      return;\n    }\n    this.dropdownRef?.nativeElement?.classList.add('show');\n  }\n}\n","@if (variant === 'select') {\n  <div class=\"date-picker-timepickers\">\n    <div class=\"picker time-picker\">\n      <div [formGroup]=\"selectTime\" class=\"time-picker-body\" [ngClass]=\"timePickerClasses\">\n        <span class=\"time-picker-inline-icon\"></span>\n        <select [attr.disabled]=\"disabled || null\" gtrSelect class=\"ms-0\" formControlName=\"selectHours\"\n                (ngModelChange)=\"handleSelectHoursChange($event)\" (blur)=\"onBlur()\" [sizing]=\"size ?? ''\">\n          @for (hour of listOfHours12; track i; let i = $index) {\n            <option [ngValue]=\"hour.value\"\n                    [attr.disabled]=\"hour.disabled || null\">{{ hour.label }}\n            </option>\n          }\n        </select>\n        {{ ' :' }}<select [attr.disabled]=\"disabled || null\" gtrSelect class=\"ms-0\" formControlName=\"selectMinutes\"\n                          (ngModelChange)=\"handleSelectMinutesChange($event)\" (blur)=\"onBlur()\" [sizing]=\"size ?? ''\">\n        @for (minute of listOfMinutes; track $index) {\n          <option [ngValue]=\"minute.value\"\n                  [attr.disabled]=\"minute.disabled || null\">{{ minute.label }}\n          </option>\n        }\n      </select>\n        @if (seconds) {\n          {{ ' :' }}<select [attr.disabled]=\"disabled || null\" gtrSelect class=\"ms-0\" formControlName=\"selectSeconds\"\n                            (ngModelChange)=\"handleSelectSecondsChange($event)\" (blur)=\"onBlur()\" [sizing]=\"size ?? ''\">\n            @for (second of listOfSeconds; track $index) {\n              <option [ngValue]=\"second.value\"\n                      [attr.disabled]=\"second.disabled || null\">{{ second.label }}\n              </option>\n            }\n          </select>\n        }\n        @if (hour12) {\n          <select [attr.disabled]=\"disabled || null\" gtrSelect class=\"ms-0\" formControlName=\"selectDayPeriod\"\n                  (ngModelChange)=\"handleSelectDayPeriodChange($event)\" (blur)=\"onBlur()\" [sizing]=\"size ?? ''\">\n            @for (dayPeriod of dayPeriods; track $index) {\n              <option [ngValue]=\"dayPeriod.value\"\n                      class=\"time-picker-roll-cell\">{{ dayPeriod.label }}\n              </option>\n            }\n          </select>\n        }\n      </div>\n    </div>\n  </div>\n}\n\n@if (variant === 'roll') {\n  <gtr-dropdown #dropdown=\"gtrDropdown\" [autoClose]=\"'outside'\" class=\"time-picker picker\" [ngClass]=\"timePickerClasses\"\n                [visible]=\"visible\">\n    <gtr-input-group [caret]=\"false\"\n                     [disabled]=\"disabled ?? dropdown.visible\"\n                     [sizing]=\"size ?? ''\"\n                     gtrDropdownToggle\n                     class=\"picker-input-group\">\n      <input (blur)=\"handleBlur($event);\"\n             (change)=\"handleTimeInputChange($event)\"\n             (focus)=\"handleFocus($event)\"\n             [formControl]=\"timeInput\"\n             [placeholder]=\"placeholder\"\n             gtrFormControl\n             [attr.tabindex]=\"disabled ? -1 : 0\"\n             [attr.disabled]=\"disabled ? '' : null\"\n             [attr.pattern]=\"hour12 ? '(((0[1-9])|(1[0-2])):([0-5])([0-9])\\\\\\\\s(A|P)M)' : '([01]?[0-9]|2[0-3]):[0-5][0-9]'\"\n             [readonly]=\"inputReadOnly ?? null\"\n             [valid]=\"valid\"\n      >\n      @if (indicator || cleaner) {\n        <span gtrInputGroupText>\n          @if (indicator) {\n            <span class=\"picker-input-group-indicator\">\n              <span class=\"picker-input-group-icon time-picker-input-icon\"></span>\n            </span>\n          }\n          @if (cleaner && time && !disabled) {\n            <span (click)=\"!disabled && handleClear($event)\"\n                  class=\"picker-input-group-cleaner\" role=\"button\">\n              <span class=\"picker-input-group-icon time-picker-cleaner-icon\"></span>\n            </span>\n          }\n        </span>\n      }\n\n    </gtr-input-group>\n    <div gtrDropdownMenu #dropdownMenu=\"gtrDropdownMenu\">\n      <div class=\"time-picker-body time-picker-roll\" style=\"position: relative;\">\n        <gtr-time-picker-roll-col\n          [elements]=\"listOfHours12\"\n          [selected]=\"hour\"\n          (selectedChange)=\"handleSelectHoursChange($event)\"\n          [disabled]=\"disabled\"\n          [refresh]=\"dropdownMenu.visible\"\n          role=\"listbox\"\n        >\n        </gtr-time-picker-roll-col>\n        <gtr-time-picker-roll-col\n          [elements]=\"listOfMinutes\"\n          [selected]=\"minute\"\n          (selectedChange)=\"handleSelectMinutesChange($event)\"\n          [disabled]=\"disabled\"\n          [refresh]=\"dropdownMenu.visible\"\n          role=\"listbox\"\n        >\n        </gtr-time-picker-roll-col>\n\n        @if (seconds) {\n          <gtr-time-picker-roll-col\n            [elements]=\"listOfSeconds\"\n            [selected]=\"second\"\n            (selectedChange)=\"handleSelectSecondsChange($event)\"\n            [disabled]=\"disabled\"\n            [refresh]=\"dropdownMenu.visible\"\n            role=\"listbox\"\n          >\n          </gtr-time-picker-roll-col>\n        }\n\n        @if (hour12) {\n          <gtr-time-picker-roll-am-pm\n            [elements]=\"dayPeriods\"\n            [selected]=\"dayPeriod\"\n            (selectedChange)=\"handleSelectDayPeriodChange($event)\"\n            [disabled]=\"disabled\"\n            [refresh]=\"dropdownMenu.visible\"\n            role=\"listbox\"\n          >\n          </gtr-time-picker-roll-am-pm>\n        }\n      </div>\n      @if (templates?.timePickerFooter) {\n        <div class=\"picker-footer\">\n          <ng-container *ngTemplateOutlet=\"templates?.timePickerFooter; context: {$implicit: dropdown}\"></ng-container>\n        </div>\n      }\n    </div>\n  </gtr-dropdown>\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { TCustomRange } from './gtr-date-range-picker.types';\n\n@Pipe({\n  name: 'gtrCustomRangeKey',\n  standalone: true,\n})\nexport class GtrCustomRangeKeyPipe implements PipeTransform {\n  transform(customRange: TCustomRange, ...args: unknown[]): unknown {\n    return customRange[0];\n  }\n}\n","import {\n  AfterViewInit,\n  booleanAttribute,\n  Component,\n  ContentChildren,\n  ElementRef,\n  EventEmitter,\n  forwardRef,\n  HostListener,\n  Inject,\n  Input,\n  LOCALE_ID,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Output,\n  QueryList,\n  SimpleChanges,\n  ViewChild,\n} from '@angular/core';\nimport { formatDate, NgClass, NgTemplateOutlet, registerLocaleData } from '@angular/common';\nimport {\n  ControlValueAccessor,\n  FormControl,\n  FormGroup,\n  NG_VALUE_ACCESSOR,\n  ReactiveFormsModule,\n  Validators,\n} from '@angular/forms';\nimport { BooleanInput, coerceBooleanProperty, coerceNumberProperty } from '@angular/cdk/coercion';\nimport { BreakpointObserver } from '@angular/cdk/layout';\nimport { Subscription } from 'rxjs';\n\nimport { Options } from '@popperjs/core';\n\nimport {\n  getDateFormatString,\n  getLocalDateFromString,\n  isDateDisabled,\n  isValidDate,\n  validFormat,\n} from '../../calendar/gtr-calendar.utils';\nimport {\n  DateFilterType,\n  DayFormatType,\n  WeekdayFormatType,\n} from '../../calendar/gtr-calendar.service';\nimport { Colors } from '../../../core-components.types';\nimport { GtrTemplateIdDirective } from '../../shared';\nimport { IDateValidation, TCustomRange } from './gtr-date-range-picker.types';\nimport localeEsUs from '@angular/common/locales/es-US';\nimport {\n  GtrDropdownComponent,\n  GtrDropdownMenuDirective,\n  GtrDropdownToggleDirective,\n} from '../../dropdown';\nimport {\n  GtrFormControlDirective,\n  GtrInputGroupComponent,\n  GtrInputGroupTextDirective,\n} from '../../form';\nimport { GtrIconComponent } from '../../../atoms/icon';\nimport { GtrCalendarComponent } from '../../calendar';\nimport { GtrTimePickerComponent } from '../../time-picker';\nimport { GtrButtonDirective } from '../../../atoms/button-directive';\nimport { GtrCustomRangeKeyPipe } from './gtr-custom-range-key.pipe';\n\nregisterLocaleData(localeEsUs);\n\n/** Must be a valid date string */\n// todo: validation\n// export function invalidDateStringValidator(locale: string): ValidatorFn {\n//   return (control: AbstractControl): ValidationErrors | null => {\n//     // const validDate = !isNaN(Date.parse(control.value));\n//     stringToDateConvert(control.value, locale);\n//     const dateShim = cvtDate(control.value, locale);\n//     // @ts-ignore\n//     // control.setValue(new Date(dateShim.year, dateShim.month, dateShim.day))\n//     console.log('dateShim', dateShim, locale);\n//     const validDate = isValidDate(control.value);\n//     console.log('invalidDateStringValidator', control, control.value, validDate);\n//     return validDate ? { invalidDateStringValidator: { value: control.value } } : null;\n//   };\n// }\n\n@Component({\n  selector: 'gtr-date-range-picker',\n  templateUrl: './gtr-date-range-picker.component.html',\n  styleUrls: ['./gtr-date-range-picker.component.scss'],\n  exportAs: 'gtrDateRangePicker',\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => GtrDateRangePickerComponent),\n      multi: true,\n    },\n    {\n      provide: LOCALE_ID,\n      useValue: 'en-US', //navigator.language || 'en-US',\n    },\n  ],\n  imports: [\n    NgTemplateOutlet,\n    GtrDropdownComponent,\n    NgClass,\n    GtrDropdownToggleDirective,\n    GtrDropdownMenuDirective,\n    GtrInputGroupComponent,\n    ReactiveFormsModule,\n    GtrFormControlDirective,\n    GtrInputGroupTextDirective,\n    GtrIconComponent,\n    GtrCalendarComponent,\n    GtrTimePickerComponent,\n    GtrButtonDirective,\n    GtrCustomRangeKeyPipe,\n  ],\n})\nexport class GtrDateRangePickerComponent\n  implements OnInit, OnDestroy, ControlValueAccessor, AfterViewInit, OnChanges\n{\n  static ngAcceptInputType_closeOnSelect: BooleanInput;\n  static ngAcceptInputType_disabled: BooleanInput;\n  static ngAcceptInputType_navYearFirst: BooleanInput;\n\n  constructor(\n    private breakpointObserver: BreakpointObserver,\n    @Inject(LOCALE_ID) private localeId: string,\n  ) {}\n\n  @Input() id: string = '';\n  @Input() testid: string = '';\n\n  @Input() required: boolean = false;\n\n  /**\n   * Set the format of day name.\n   * @default 'numeric'\n   * @type DayFormatType\n   */\n  @Input() dayFormat: DayFormatType = 'numeric';\n\n  /**\n   * The number of calendars that render on desktop devices.\n   * @type number\n   * @default 2\n   */\n  @Input()\n  set calendars(value: number) {\n    this._calendars = coerceNumberProperty(value);\n  }\n\n  get calendars() {\n    return this._calendars;\n  }\n\n  private _calendars: number = 2;\n\n  /**\n   * Toggle visibility or set the content of the cleaner button.\n   * @type boolean\n   * @default true\n   */\n  @Input()\n  set cleaner(value: boolean) {\n    this._cleaner = coerceBooleanProperty(value);\n  }\n\n  get cleaner() {\n    return this._cleaner;\n  }\n\n  private _cleaner: boolean = true;\n\n  /**\n   * Determine if the dropdown should be closed after value setting.\n   * @type boolean\n   * @default false\n   */\n  @Input()\n  set closeOnSelect(value: boolean) {\n    this.#closeOnSelect = coerceBooleanProperty(value);\n  }\n\n  get closeOnSelect() {\n    return this.#closeOnSelect;\n  }\n\n  #closeOnSelect: boolean = false;\n\n  /**\n   * Set date format.\n   * We use Angular formatDate() function, see:\n   * - https://angular.io/api/common/formatDate\n   * - https://angular.io/api/common/DatePipe#pre-defined-format-options\n   */\n  @Input()\n  format?: string;\n\n  /**\n   * Toggle visibility or set the content of the input indicator.\n   * @type boolean\n   * @default true\n   */\n  @Input()\n  set indicator(value: boolean) {\n    this._indicator = coerceBooleanProperty(value);\n  }\n\n  get indicator() {\n    return this._indicator;\n  }\n\n  private _indicator: boolean = true;\n\n  /**\n   * Toggle the readonly state for the component.\n   * @type boolean\n   * @default false\n   */\n  @Input()\n  set inputReadOnly(value: boolean) {\n    this._inputReadOnly = coerceBooleanProperty(value);\n  }\n\n  get inputReadOnly(): boolean {\n    this._inputReadOnly = this.type === 'days' ? this._inputReadOnly : true;\n    return this._inputReadOnly || typeof this.format === 'string';\n  }\n\n  private _inputReadOnly: boolean = false;\n\n  /**\n   * Reorder year-month navigation, and render year first.\n   * @type boolean\n   * @default false\n   */\n  @Input()\n  set navYearFirst(value: boolean) {\n    this._navYearFirst = coerceBooleanProperty(value);\n  }\n\n  get navYearFirst() {\n    return this._navYearFirst;\n  }\n\n  private _navYearFirst: boolean = false;\n\n  @Input()\n  set alwaysOpen(value: boolean) {\n    this._alwaysOpen = coerceBooleanProperty(value);\n  }\n\n  get alwaysOpen() {\n    return this._alwaysOpen;\n  }\n\n  private _alwaysOpen: boolean = false;\n\n  /**\n   * Specifies short hints that are visible in start date and end date inputs.\n   * type string\n   */\n  @Input()\n  set placeholder(value: string | string[]) {\n    if (this.type !== 'days') {\n      value = this.range ? ['Start date', 'End date'] : 'Select date';\n    }\n    this._placeholder = value;\n  }\n\n  get placeholder() {\n    return this._placeholder;\n  }\n\n  private _placeholder: string | string[] = this.formatPlaceholder();\n\n  /**\n   * Predefined date ranges the user can select from.\n   * @type ICalendarRanges\n   */\n  @Input() ranges?: object;\n\n  @Input('type')\n  set type(value: 'days' | 'months' | 'years') {\n    if (value === 'months') {\n      this.format = 'MMMM yyyy';\n    }\n    if (value === 'years') {\n      this.format = 'yyyy';\n    }\n    if (value !== 'days') {\n      this.placeholder = this.range ? ['Start date', 'End date'] : 'Select date';\n    }\n    this._type = value;\n  }\n\n  get type() {\n    return this._type;\n  }\n\n  _type: 'days' | 'months' | 'years' = 'days';\n\n  /**\n   * Sets the color context of the cancel button to one of Gettrx’s themed colors.\n   * @type 'primary' | 'secondary' | 'success' | 'danger' | 'warning' | 'info' | 'dark' | 'light' | string\n   * @default 'secondary'\n   */\n  @Input() rangesButtonsColor?: Colors = 'secondary';\n\n  /**\n   * Size the ranges button small or large.\n   * @type 'sm' | 'lg' | ''\n   */\n  @Input() rangesButtonsSize: 'sm' | 'lg' | '' = '';\n\n  /**\n   * Set the ranges button variant to an outlined button or a ghost button.\n   * @type 'outline' | 'ghost' | undefined\n   */\n  @Input() rangesButtonsVariant?: 'outline' | 'ghost' = 'ghost';\n\n  /**\n   * Default icon or character that separates two dates.\n   * @type boolean\n   * @default true\n   */\n  @Input()\n  set separator(value: boolean) {\n    this._separator = coerceBooleanProperty(value);\n  }\n\n  get separator(): boolean {\n    return this._separator;\n  }\n\n  private _separator: boolean = false;\n\n  /**\n   * Size the component small or large.\n   * @type 'sm' | 'lg' | undefined\n   * @default undefined\n   */\n  @Input() size?: 'sm' | 'lg';\n\n  /**\n   * Provide an additional time selection by adding select boxes to choose time.\n   * @type boolean\n   * @default false\n   */\n  @Input()\n  set timepicker(value: boolean) {\n    this._timepicker = coerceBooleanProperty(value);\n  }\n\n  get timepicker(): boolean {\n    return false;\n    // return this._timepicker;\n  }\n\n  private _timepicker: boolean = false;\n\n  /**\n   * Toggle visual validation feedback.\n   * @type boolean | undefined\n   * @default undefined\n   */\n  @Input() valid?: boolean;\n  /**\n   * Toggle visual validation feedback.\n   * @type boolean | undefined\n   * @default undefined\n   */\n  @Input({ transform: booleanAttribute }) invalid?: boolean;\n\n  /**\n   * Toggle the visibility of the dropdown date-picker component.\n   * @type boolean\n   * @default false\n   */\n  @Input()\n  set visible(value: boolean) {\n    this._visible = coerceBooleanProperty(value);\n  }\n\n  get visible(): boolean {\n    return this._visible;\n  }\n\n  private _visible: boolean = false;\n\n  @Input()\n  set startDate(value) {\n    const prevDate = this._startDate ? new Date(this._startDate) : null;\n    this._startDate = value ? new Date(value) : null;\n    if (prevDate?.getTime() !== this._startDate?.getTime()) {\n      this.startDateValue = this.formatDate(this._startDate);\n      this.startDateChange.emit(this._startDate);\n    }\n    this.handleInputChangeValidations();\n  }\n\n  get startDate() {\n    return this._startDate;\n  }\n\n  private _startDate?: Date | null;\n\n  @Input()\n  set endDate(value) {\n    const prevDate = this._endDate ? new Date(this._endDate ?? 0) : null;\n    this._endDate = value ? new Date(value) : null;\n    if (prevDate?.getTime() !== this._endDate?.getTime()) {\n      this.endDateValue = this.formatDate(this._endDate);\n      this.endDateChange.emit(this._endDate);\n    }\n    this.handleInputChangeValidations();\n  }\n\n  get endDate() {\n    return this._endDate;\n  }\n\n  private _endDate?: Date | null;\n\n  @Input() calendarDate: Date = new Date();\n  @Input() disabledDates: Date[] | Date[][] = [];\n\n  @Input()\n  set firstDayOfWeek(value: number) {\n    this._firstDayOfWeek = coerceNumberProperty(value);\n  }\n\n  get firstDayOfWeek() {\n    return this._firstDayOfWeek;\n  }\n\n  private _firstDayOfWeek: number = 1;\n\n  @Input() locale: string = 'en-US';\n  @Input() maxDate: Date | null = null;\n  @Input() minDate: Date | null = null;\n\n  @Input() name = 'date-range-picker';\n  @Input() dataTransactionName = 'no-tagged';\n\n  @Input()\n  set navigation(value: boolean) {\n    this._navigation = coerceBooleanProperty(value);\n  }\n\n  get navigation() {\n    return this._navigation;\n  }\n\n  private _navigation: boolean = true;\n\n  /**\n   * Allow range selection.\n   * @type boolean\n   * @default false\n   */\n  @Input()\n  set range(value: boolean) {\n    this._range = coerceBooleanProperty(value);\n  }\n\n  get range(): boolean {\n    return this._range;\n  }\n\n  private _range: boolean = true;\n\n  @Input() dateFilter?: DateFilterType;\n\n  @Input()\n  set disabled(value: boolean) {\n    this._disabled = coerceBooleanProperty(value);\n    this._disabled ? this.startDateInput.disable() : this.startDateInput.enable();\n    this._disabled ? this.endDateInput.disable() : this.endDateInput.enable();\n  }\n\n  get disabled(): boolean {\n    return this._disabled;\n  }\n\n  private _disabled = false;\n\n  @Input()\n  set value(value: any) {\n    const newValue = this.range ? { ...value } : value;\n    if (JSON.stringify(this._value) !== JSON.stringify(newValue)) {\n      this._value = newValue;\n      if (this.range) {\n        this.handleStartDateChange(newValue.startDate ?? null);\n        this.handleEndDateChange(newValue.endDate ?? null);\n      } else {\n        this.handleStartDateChange(newValue ?? null);\n      }\n      this.onChange(newValue);\n      this.onTouched();\n      this.valueChange.emit(this.value);\n      if (this.closeOnSelect) {\n        const hasValue = this.range ? !!(this.value.startDate && this.value.endDate) : !!this.value;\n        this.visible = !hasValue;\n      }\n    }\n  }\n\n  get value() {\n    return this._value;\n  }\n\n  private _value: any = {};\n\n  /**\n   * Set length or format of day name.\n   * @type WeekdayFormatType\n   * @default 'short'\n   */\n  @Input() weekdayFormat: WeekdayFormatType = 'short';\n\n  /**\n   * Optional popper Options object\n   * @type Partial<Options>\n   */\n  @Input('popperOptions') popperjsOptions: Partial<Options> = {\n    strategy: 'fixed',\n  };\n\n  /**\n   * Set whether days in adjacent months shown before or after the current month are selectable. This only applies if the `showAdjacentDays` option is set to true.\n   * @type boolean\n   * @default false\n   */\n  @Input()\n  set selectAdjacentDays(value: boolean) {\n    this.#selectAdjacentDays = coerceBooleanProperty(value);\n  }\n\n  get selectAdjacentDays(): boolean {\n    return this.#selectAdjacentDays;\n  }\n\n  #selectAdjacentDays: boolean = false;\n\n  /**\n   * Set whether to display dates in adjacent months (non-selectable) at the start and end of the current month.\n   * @type boolean\n   * @default true\n   */\n  @Input() showAdjacentDays: boolean = true;\n\n  @Output() readonly valueChange = new EventEmitter<Date | Date[] | undefined>();\n\n  @Output() calendarCellHover: EventEmitter<Date | null> = new EventEmitter<Date | null>();\n  @Output() calendarDateChange: EventEmitter<Date> = new EventEmitter<Date>();\n  @Output() endDateChange: EventEmitter<Date | null> = new EventEmitter<Date | null>();\n  @Output() startDateChange: EventEmitter<Date | null> = new EventEmitter<Date | null>();\n  @Output() dateValidationChange: EventEmitter<IDateValidation | null> =\n    new EventEmitter<IDateValidation | null>();\n\n  // @ViewChild(GtrCalendarComponent) calendarComponent!: GtrCalendarComponent;\n  @ViewChild('startDateElementRef')\n  startDateElementRef!: ElementRef<HTMLInputElement>;\n  @ViewChild('endDateElementRef')\n  endDateElementRef!: ElementRef<HTMLInputElement>;\n\n  templates: any = {};\n  @ContentChildren(GtrTemplateIdDirective, { descendants: true })\n  contentTemplates!: QueryList<GtrTemplateIdDirective>;\n\n  protected dateChangeSubscriptions: Subscription[] = [];\n\n  protected subscribeDateChange(subscribe: boolean = true): void {\n    if (subscribe) {\n      // todo\n      // this.dateChangeSubscriptions.push(this.startDateChange.subscribe(next => {\n      //   this.startDate = next;\n      //   this.onChange(next);\n      // }));\n      // this.dateChangeSubscriptions.push(this.startDateChange.subscribe(next => {\n      //   this.endDate = next;\n      //   this.onChange(next);\n      // }));\n      return;\n    }\n    this.dateChangeSubscriptions.forEach((subscription) => {\n      subscription?.unsubscribe();\n    });\n  }\n\n  @HostListener('blur') onBlur() {\n    this.onTouched();\n  }\n\n  public isMobile = true;\n  public customRanges!: TCustomRange[];\n  public showRanges: boolean = false;\n\n  set startDateValue(value: string) {\n    this.startDateInput.setValue(value);\n    this._startDateValue = value;\n  }\n\n  get startDateValue(): string {\n    return this._startDateValue;\n  }\n\n  private _startDateValue: string = this.formatDate(this.startDate);\n\n  set endDateValue(value: string) {\n    this.endDateInput.setValue(value);\n    this._endDateValue = value;\n  }\n\n  get endDateValue(): string {\n    return this._endDateValue;\n  }\n\n  public _endDateValue: string = this.formatDate(this.endDate);\n\n  public get startDatePlaceholder(): string {\n    return Array.isArray(this.placeholder) ? this.placeholder[0] : this.placeholder;\n  }\n\n  public get endDatePlaceholder(): string {\n    return Array.isArray(this.placeholder) ? this.placeholder[1] : this.placeholder;\n  }\n\n  private layoutChanges!: Subscription;\n\n  // todo: validation\n  startDateInput = new FormControl({ value: this.startDateValue, disabled: this.disabled }, [\n    Validators.required,\n    // Validators.minLength(8),\n    // Validators.maxLength(10),\n    // invalidDateStringValidator(this.locale)\n  ]);\n  endDateInput = new FormControl({ value: this.endDateValue, disabled: this.disabled }, [\n    Validators.required,\n    // Validators.minLength(8),\n    // Validators.maxLength(10),\n    // invalidDateStringValidator(this.locale)\n  ]);\n  dateRangeGroup!: FormGroup;\n\n  set inputStartHoverValue(value) {\n    this._inputStartHoverValue = value;\n  }\n\n  get inputStartHoverValue() {\n    return this._inputStartHoverValue;\n  }\n\n  private _inputStartHoverValue!: Date | null;\n\n  set inputEndHoverValue(value) {\n    this._inputEndHoverValue = value;\n  }\n\n  get inputEndHoverValue() {\n    return this._inputEndHoverValue;\n  }\n\n  private _inputEndHoverValue!: Date | null;\n\n  get datePickerClasses() {\n    return {\n      'is-valid': this.valid === true || this.invalid === false,\n      'is-invalid': this.valid === false || this.invalid === true,\n    };\n  }\n\n  formatDate(date: Date | null | undefined) {\n    return !date || !isValidDate(date)\n      ? ''\n      : this.format\n        ? formatDate(date, this.format, this.locale)\n        : this.timepicker\n          ? date.toLocaleString(this.locale)\n          : date.toLocaleDateString(this.locale);\n  }\n\n  formatPlaceholder() {\n    const format = getDateFormatString(this.locale || this.localeId);\n    return this.range ? [format, format] : format;\n  }\n\n  readonly #breakpoints = {\n    OneCalendarRanges: '(min-width: 480px)',\n    TwoCalendars: '(max-width: 650px)',\n    TwoCalendarsRanges: '(max-width: 810px)',\n  };\n\n  ngOnInit(): void {\n    this.customRanges = this.ranges ? Object.entries(this.ranges) : [];\n\n    const breakpoints = this.#breakpoints;\n\n    this.layoutChanges = this.breakpointObserver\n      .observe([\n        breakpoints.OneCalendarRanges,\n        breakpoints.TwoCalendars,\n        breakpoints.TwoCalendarsRanges,\n      ])\n      .subscribe((result) => {\n        if (result.matches) {\n          this.isMobile =\n            (this.customRanges?.length > 0 && result.breakpoints[breakpoints.TwoCalendarsRanges]) ||\n            result.breakpoints[breakpoints.TwoCalendars];\n          if (this.customRanges?.length > 0) {\n            this.showRanges = !result.breakpoints[breakpoints.OneCalendarRanges];\n          }\n        }\n      });\n\n    this.startDateValue = this.formatDate(this.startDate);\n    this.endDateValue = this.formatDate(this.endDate);\n    this.subscribeDateChange();\n  }\n\n  ngOnDestroy() {\n    this.layoutChanges?.unsubscribe();\n    this.subscribeDateChange(false);\n  }\n\n  ngAfterViewInit(): void {\n    setTimeout(() => {\n      this.contentTemplates.forEach((child: GtrTemplateIdDirective) => {\n        this.templates[child.id] = child.templateRef;\n      });\n    });\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes['date']) {\n      // for date-picker component\n      const date = this.convertValueToDate(changes['date']?.currentValue) ?? null;\n      this.handleStartDateChange(date);\n      this.calendarDate = date ?? this.calendarDate;\n    }\n    if (changes['startDate']) {\n      const date = this.convertValueToDate(changes['startDate']?.currentValue) ?? null;\n      this.handleStartDateChange(date);\n      this.calendarDate = date ?? this.calendarDate;\n    }\n    if (changes['endDate']) {\n      const date = this.convertValueToDate(changes['endDate']?.currentValue) ?? null;\n      this.handleEndDateChange(date);\n    }\n    if (changes['locale']) {\n      this.startDateValue = this.formatDate(this.startDate);\n      this.endDateValue = this.formatDate(this.endDate);\n    }\n  }\n\n  convertValueToDate(value: Date | string | number | undefined | null) {\n    if (!value) {\n      return null;\n    }\n    if (typeof value === 'string') {\n      return getLocalDateFromString(value, this.locale, this.timepicker);\n    }\n    return new Date(value) ?? null;\n  }\n\n  getCustomRangeKey(customRange: any) {\n    return customRange[0];\n  }\n\n  setCustomRange(customRange: any) {\n    const key = this.getCustomRangeKey(customRange);\n    this.handleStartDateChange(customRange[1][0]);\n    this.handleEndDateChange(customRange[1][1]);\n  }\n\n  handleCalendarCellHover($event: Date | null) {\n    this.calendarCellHover.emit($event);\n    if (!this.startDate) {\n      this.setInputValue(this.startDateElementRef, $event);\n      this.inputStartHoverValue = $event;\n      this.setInputValue(this.endDateElementRef, null);\n      this.inputEndHoverValue = null;\n      return;\n    }\n    if (!this.endDate) {\n      this.setInputValue(this.endDateElementRef, $event);\n      this.inputEndHoverValue = $event;\n      return;\n    }\n  }\n\n  handleCalendarDateChange($event: Date) {\n    if (this.calendarDate.getTime() !== $event.getTime()) {\n      this.calendarDateChange.emit($event);\n    }\n  }\n\n  handleStartDateChange(date: Date | null) {\n    if (date?.getTime() !== this.startDate?.getTime()) {\n      this.startDate = date ?? null;\n      this.startDateValue = this.formatDate(this.startDate);\n      this.inputStartHoverValue = null;\n      this.value = this.range\n        ? { startDate: this.startDate, endDate: this.endDate }\n        : this.startDate;\n    }\n  }\n\n  handleEndDateChange(date: Date | null) {\n    if (date?.getTime() !== this.endDate?.getTime()) {\n      if (!this.range) {\n        return;\n      }\n      this.endDate = date ?? null;\n      this.endDateValue = this.formatDate(this.endDate);\n      this.inputEndHoverValue = null;\n      this.value = this.range\n        ? { startDate: this.startDate, endDate: this.endDate }\n        : this.startDate;\n    }\n  }\n\n  handleClear($event?: MouseEvent) {\n    // this.calendarComponent.clearDates();\n    this.handleStartDateChange(null);\n    this.handleEndDateChange(null);\n  }\n\n  handleStartDateInputChange($event: any) {\n    const validValue = validFormat($event.target?.value, this.locale);\n    const date = getLocalDateFromString($event.target?.value, this.locale, this.timepicker);\n    if (!date) {\n      // this.calendarComponent.clearDates();\n      this.handleStartDateChange(null);\n      this.handleEndDateChange(null);\n    }\n    if (validValue && date instanceof Date && date.getTime()) {\n      if (!(this.forbiddenDate(date) || (this.endDate && this.endDate < date))) {\n        this.calendarDate = date;\n        this.startDate = date;\n      } else {\n        this.handleInputChangeValidations(false);\n      }\n    } else {\n      this.handleInputChangeValidations(false);\n    }\n    this.handleStartDateChange(this.startDate ?? null);\n  }\n\n  handleEndDateInputChange($event: any) {\n    const date = getLocalDateFromString($event.target?.value, this.locale, this.timepicker);\n    if (!date) {\n      this.endDate = null;\n    }\n    if (date instanceof Date && date.getTime()) {\n      if (!(this.forbiddenDate(date) || (this.startDate && this.startDate > date))) {\n        this.calendarDate = date;\n        this.endDate = date;\n      } else {\n        this.handleInputChangeValidations(false);\n      }\n    } else {\n      this.handleInputChangeValidations(false);\n    }\n    this.handleEndDateChange(this.endDate ?? null);\n  }\n\n  forbiddenDate(date: Date) {\n    return (\n      isDateDisabled(date, this.minDate, this.maxDate, this.disabledDates) ||\n      (this.dateFilter ? !this.dateFilter(date) : false)\n    );\n  }\n\n  setInputValue = (elementRef: ElementRef, date: Date | null) => {\n    if (!elementRef) {\n      return;\n    }\n    elementRef.nativeElement.value = this.formatDate(date);\n    // elementRef.nativeElement.valueAsDate = date;\n    return;\n  };\n\n  onChange: any = (value: any) => {};\n  onTouched: any = () => {};\n\n  registerOnChange(fn: any): void {\n    this.onChange = fn;\n  }\n\n  registerOnTouched(fn: any): void {\n    this.onTouched = fn;\n  }\n\n  setDisabledState(isDisabled: boolean): void {\n    this.disabled = isDisabled;\n  }\n\n  writeValue(value: any): void {\n    if (value !== null) {\n      this.value = this.range ? { ...value } : value;\n    }\n  }\n\n  handleStartTimeChange(time: Date | undefined) {\n    this.startDate = time ?? this.startDate;\n  }\n\n  handleEndTimeChange(time: Date | undefined) {\n    if (!this.range) {\n      return;\n    }\n    this.endDate = time ?? this.endDate;\n  }\n\n  handleInputChangeValidations(valid: boolean = true) {\n    const errors = valid ? null : { wrongDate: !valid };\n    this.dateValidationChange.emit(errors);\n    this.invalid = !valid;\n  }\n}\n","@if (alwaysOpen) {\n  <div class=\"date-range-picker-input\">\n    <ng-container *ngTemplateOutlet=\"dateRangePickerInput\"></ng-container>\n  </div>\n  <div class=\"date-range-picker-calendar\">\n    <ng-container *ngTemplateOutlet=\"dateRangePicker\"></ng-container>\n    @if (templates?.datePickerFooter) {\n      <div class=\"picker-footer\">\n        <ng-container *ngTemplateOutlet=\"templates?.datePickerFooter\"></ng-container>\n      </div>\n    }\n  </div>\n  <ng-content></ng-content>\n}\n\n@if (!alwaysOpen) {\n  <gtr-dropdown #dropdown=\"gtrDropdown\"\n                [autoClose]=\"'outside'\"\n                class=\"date-picker picker\"\n                [ngClass]=\"datePickerClasses\"\n                [(visible)]=\"visible\" [popperOptions]=\"popperjsOptions\">\n\n    <div gtrDropdownToggle\n         [caret]=\"false\"\n         [disabled]=\"disabled ?? dropdown.visible\">\n      <ng-container *ngTemplateOutlet=\"dateRangePickerInput\"></ng-container>\n    </div>\n    <div gtrDropdownMenu>\n      <ng-container *ngTemplateOutlet=\"dateRangePicker\"></ng-container>\n\n      @if (templates?.datePickerFooter) {\n        <div class=\"picker-footer\">\n          <ng-container *ngTemplateOutlet=\"templates?.datePickerFooter; context: {$implicit: dropdown}\"></ng-container>\n        </div>\n      }\n    </div>\n    <ng-content></ng-content>\n  </gtr-dropdown>\n}\n\n<ng-template #dateRangePickerInput>\n\n  <gtr-input-group [sizing]=\"size ?? ''\"\n                   [invalid]=\"invalid\"\n                   class=\"picker-input-group\"\n  >\n    <input (change)=\"handleStartDateInputChange($event)\"\n           [formControl]=\"startDateInput\"\n           [ngClass]=\"{hover: !!inputStartHoverValue}\"\n           [placeholder]=\"startDatePlaceholder\"\n           gtrFormControl\n           #startDateElementRef\n           [attr.tabindex]=\"disabled ? -1 : 0\"\n           pattern=\"[1-9]*\"\n           [readonly]=\"inputReadOnly ?? null\"\n           [required]=\"required ?? null\"\n           [valid]=\"range ? undefined : valid\"\n           [name]=\"name\"\n           [attr.data-transaction-name]=\"dataTransactionName + '-date-picker-input-start-date'\"\n           class=\"date-picker-input\"\n    >\n    @if (range && separator !== false) {\n      <span gtrInputGroupText>\n        <span class=\"picker-input-group-icon date-picker-arrow-icon\"></span>\n      </span>\n    }\n\n    @if (range) {\n      <input (change)=\"handleEndDateInputChange($event)\"\n             [formControl]=\"endDateInput\"\n             [ngClass]=\"{hover: !!inputEndHoverValue}\"\n             [placeholder]=\"endDatePlaceholder\"\n             gtrFormControl\n             #endDateElementRef\n             [attr.tabindex]=\"disabled ? -1 : 0\"\n             pattern=\"[1-9]*\"\n             [readonly]=\"inputReadOnly ?? null\"\n             [required]=\"required ?? null\"\n             [valid]=\"valid ?? undefined\"\n             [name]=\"name\"\n             [attr.data-transaction-name]=\"dataTransactionName + '-date-picker-input-end-date'\"\n             class=\"date-picker-input\"\n      >\n    }\n\n    @if (!alwaysOpen) {\n      @if (indicator || cleaner) {\n        <span class=\"picker-input-group-icons\">\n          @if (indicator) {\n            <span class=\"picker-input-group-indicator\">\n              <gtr-icon name=\"chevron-down\" [size]=\"20\"></gtr-icon>\n            </span>\n          }\n          @if (cleaner && startDateElementRef.value && !disabled) {\n            <span (click)=\"!disabled && handleClear($event)\"\n                  [attr.data-transaction-name]=\"dataTransactionName + '-date-picker-cleaner'\"\n                  class=\"picker-input-group-cleaner\" role=\"button\">\n              <gtr-icon name=\"x\" [size]=\"20\"></gtr-icon>\n            </span>\n          }\n        </span>\n      }\n    }\n  </gtr-input-group>\n</ng-template>\n\n<ng-template #dateRangePicker>\n\n  <div class=\"date-picker-body\">\n    @if (!showRanges) {\n      @if (ranges && customRanges.length > 0) {\n        <div class=\"date-picker-ranges\"\n             [attr.data-transaction-name]=\"dataTransactionName + '-date-range-picker'\">\n          @for (customRange of customRanges; track $index) {\n            <button (click)=\"setCustomRange(customRange)\"\n                    [color]=\"rangesButtonsColor\"\n                    [size]=\"rangesButtonsSize\"\n                    [variant]=\"rangesButtonsVariant\"\n                    [name]=\"name\"\n                    [attr.data-transaction-name]=\"dataTransactionName + '-date-range-picker'\"\n                    gtrButton>\n              {{ customRange | gtrCustomRangeKey }}\n            </button>\n          }\n        </div>\n      }\n    }\n    <gtr-calendar\n      (calendarCellHover)=\"handleCalendarCellHover($event)\"\n      (calendarDateChange)=\"handleCalendarDateChange($event)\"\n      (endDateChange)=\"handleEndDateChange($event)\"\n      (startDateChange)=\"handleStartDateChange($event)\"\n      [calendarDate]=\"calendarDate\"\n      [calendars]=\"isMobile ? 1 : calendars\"\n      [dateFilter]=\"dateFilter\"\n      [disabledDates]=\"disabledDates\"\n      [endDate]=\"endDate\"\n      [firstDayOfWeek]=\"firstDayOfWeek\"\n      [locale]=\"locale\"\n      [maxDate]=\"maxDate\"\n      [minDate]=\"minDate\"\n      [navigation]=\"navigation\"\n      [range]=\"range\"\n      [startDate]=\"startDate\"\n      [navYearFirst]=\"navYearFirst\"\n      [dayFormat]=\"dayFormat\"\n      [weekdayFormat]=\"weekdayFormat\"\n      [selectAdjacentDays]=\"selectAdjacentDays\"\n      [showAdjacentDays]=\"showAdjacentDays\"\n      [dataTransactionName]=\"dataTransactionName + '-date-picker'\"\n      [type]=\"type\"\n      class=\"date-picker-calendars\"\n    ></gtr-calendar>\n    @if (false && timepicker) {\n      <div class=\"date-picker-timepickers\">\n        <!-- todo-->\n        <gtr-time-picker\n          variant=\"select\"\n          [locale]=\"locale\"\n          [disabled]=\"!startDate\"\n          [time]=\"startDate ?? undefined\"\n          (timeChange)=\"handleStartTimeChange($event)\"\n        ></gtr-time-picker>\n        @if (range) {\n          <gtr-time-picker\n            variant=\"select\"\n            [locale]=\"locale\"\n            [disabled]=\"!endDate\"\n            [time]=\"endDate ?? undefined\"\n            (timeChange)=\"handleEndTimeChange($event)\"\n          ></gtr-time-picker>\n        }\n      </div>\n    }\n  </div>\n\n\n</ng-template>\n","import {\n  Component,\n  EventEmitter,\n  forwardRef,\n  Inject,\n  Input,\n  LOCALE_ID,\n  Output,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';\nimport { BreakpointObserver } from '@angular/cdk/layout';\n\nimport { GtrDateRangePickerComponent } from '../date-range-picker';\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\nimport {\n  GtrDropdownComponent,\n  GtrDropdownMenuDirective,\n  GtrDropdownToggleDirective,\n} from '../dropdown';\nimport {\n  GtrFormControlDirective,\n  GtrInputGroupComponent,\n  GtrInputGroupTextDirective,\n} from '../form';\nimport { GtrIconComponent } from '../../atoms/icon';\nimport { GtrCalendarComponent } from '../calendar';\nimport { GtrTimePickerComponent } from '../time-picker';\nimport { GtrButtonDirective } from '../../atoms/button-directive';\nimport { GtrCustomRangeKeyPipe } from '../date-range-picker/date-range-picker/gtr-custom-range-key.pipe';\n\n@Component({\n  selector: 'gtr-date-picker',\n  templateUrl: '../date-range-picker/date-range-picker/gtr-date-range-picker.component.html',\n  styleUrls: ['../date-range-picker/date-range-picker/gtr-date-range-picker.component.scss'],\n  exportAs: 'gtrDatePicker',\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => GtrDatePickerComponent),\n      multi: true,\n    },\n    {\n      provide: LOCALE_ID,\n      useValue: 'en-US', //navigator.language || 'en-US',\n    },\n  ],\n  imports: [\n    NgTemplateOutlet,\n    GtrDropdownComponent,\n    NgClass,\n    GtrDropdownToggleDirective,\n    GtrDropdownMenuDirective,\n    GtrInputGroupComponent,\n    ReactiveFormsModule,\n    GtrFormControlDirective,\n    GtrInputGroupTextDirective,\n    GtrIconComponent,\n    GtrCalendarComponent,\n    GtrTimePickerComponent,\n    GtrButtonDirective,\n    GtrCustomRangeKeyPipe,\n  ],\n})\nexport class GtrDatePickerComponent extends GtrDateRangePickerComponent {\n  constructor(breakpointObserver: BreakpointObserver, @Inject(LOCALE_ID) localeId: string) {\n    super(breakpointObserver, localeId);\n  }\n\n  // @ts-ignore\n  @Output('dateChange') override startDateChange: EventEmitter<Date | null> =\n    new EventEmitter<Date | null>();\n\n  override get range(): boolean {\n    return false;\n  }\n\n  override get calendars() {\n    return 1;\n  }\n\n  override get endDate() {\n    return null;\n  }\n\n  @Input() override name = 'date-picker';\n  @Input() override dataTransactionName = 'no-tagged';\n\n  get date() {\n    return this.startDate;\n  }\n\n  @Input()\n  set date(value: Date | null | undefined) {\n    this.startDate = value;\n  }\n\n  // @ts-ignore\n  override writeValue(value: Date | null | undefined): void {\n    this.date = value;\n    this.startDateValue = this.date ? this.date.toLocaleDateString(this.locale) : '';\n  }\n\n  override subscribeDateChange(subscribe: boolean = true): void {\n    if (subscribe) {\n      this.dateChangeSubscriptions.push(\n        this.startDateChange.subscribe((next) => {\n          this.date = next;\n          this.onChange(next);\n        }),\n      );\n      return;\n    }\n    this.dateChangeSubscriptions.forEach((subscription) => {\n      subscription?.unsubscribe();\n    });\n  }\n}\n","import { Component, ElementRef, EventEmitter, Input, Output, ViewChild } from '@angular/core';\nimport { GtrFileInputList } from './gtr-file-input.model';\nimport { GtrButtonComponent } from '../../../atoms/button';\n\n@Component({\n  selector: 'gtr-file-input',\n  templateUrl: './gtr-file-input.component.html',\n  styleUrls: ['./gtr-file-input.component.scss'],\n  imports: [GtrButtonComponent],\n})\nexport class GtrFileInputComponent {\n  @ViewChild('fileInputElement')\n  public fileInputElement!: ElementRef<HTMLInputElement>;\n\n  @Input() name = 'file-input';\n  @Input() dataTransactionName = 'no-tagged';\n  /**\n   * accept for file input\n   * i.e. CSV, png, image/*\n   */\n  @Input() public accept!: string;\n\n  /**\n   * heading text for file input\n   */\n  @Input() public heading!: string;\n\n  /**\n   * description/info text for file input\n   */\n  @Input() public description!: string;\n\n  /**\n   * aria label attribute\n   */\n  @Input() public ariaLabel!: string | null;\n\n  /**\n   * identifier attribute\n   */\n  @Input() public identifier!: string;\n\n  /**\n   * File upload event\n   * @returns list of files selected\n   */\n  @Output() public readonly gtrFileSelected: EventEmitter<GtrFileInputList | null> =\n    new EventEmitter();\n\n  /**\n   * File upload event\n   * @returns list of files selected\n   */\n  @Output() public readonly gtrFileError: EventEmitter<string[]> = new EventEmitter();\n\n  /**\n   * Show name of current selected file at 0 index\n   */\n  public currentSelectedFileName!: string;\n\n  /**\n   * TO get file input\n   * @returns\n   */\n  public getFileInputElement(): HTMLInputElement {\n    return this.fileInputElement.nativeElement;\n  }\n\n  /**\n   * Local function to validate file type\n   * @param file\n   * @returns boolean\n   */\n  public validateFileType(file: File): boolean {\n    const fileType = file.type || '';\n    const fileExtension = file.name.split('.').pop()?.toLowerCase() || '';\n\n    if (this.accept) {\n      const acceptedTypes = this.accept.split(',');\n      const isValidType = acceptedTypes.some((type) => {\n        type = type.trim();\n\n        if (type.startsWith('.')) {\n          // Match file extension\n          return fileExtension === type.substring(1);\n        } else if (type.endsWith('/*')) {\n          // Match wildcard MIME type\n          const wildcardType = type.substring(0, type.length - 2);\n          return fileType.startsWith(wildcardType);\n        } else {\n          // Match full MIME type\n          return fileType === type;\n        }\n      });\n\n      return isValidType;\n    }\n\n    return true; // No specific accept attribute, allow all files\n  }\n\n  /**\n   * validate file type\n   */\n  public filterValidFiles(files: FileList): GtrFileInputList | null {\n    const validFiles: File[] = [];\n    const invalidFiles: File[] = [];\n\n    for (let i = 0; i < files.length; i++) {\n      const file = files[i];\n      if (this.validateFileType(file)) {\n        validFiles.push(file);\n      } else {\n        invalidFiles.push(file);\n      }\n    }\n\n    if (invalidFiles.length) {\n      const errorMessages = invalidFiles.map(\n        (file) => `${file.name} has an unsupported file type.`,\n      );\n      this.gtrFileError.emit(errorMessages);\n    }\n\n    if (validFiles.length) {\n      return {\n        length: validFiles.length,\n        item: (index: number) => validFiles[index] || null,\n        files: validFiles,\n      } as GtrFileInputList;\n    }\n\n    return null;\n  }\n\n  /**\n   * local method to handle file change events\n   * @param event\n   */\n  public handleFileChange(event: Event) {\n    const inputElement = event.target as HTMLInputElement;\n    const validFiles = this.filterValidFiles(inputElement.files as FileList);\n    validFiles && validFiles.length\n      ? (this.currentSelectedFileName =\n          validFiles.files && validFiles.files[0]\n            ? this.fileTextLimit(validFiles.files[0]?.name)\n            : '')\n      : '';\n    this.gtrFileSelected.emit(validFiles && validFiles.length ? validFiles : null);\n  }\n\n  /**\n   * local method to handle file drop event\n   * @param event\n   */\n  public handleDrop(event: DragEvent) {\n    event.preventDefault();\n    const validFiles = event?.dataTransfer?.files\n      ? this.filterValidFiles(event?.dataTransfer?.files)\n      : null;\n    validFiles && validFiles.length\n      ? (this.currentSelectedFileName =\n          validFiles.files && validFiles.files[0]\n            ? this.fileTextLimit(validFiles.files[0]?.name)\n            : '')\n      : '';\n    this.gtrFileSelected.emit(validFiles && validFiles.length ? validFiles : null);\n  }\n\n  /**\n   * local function to set text limit\n   */\n  public fileTextLimit(fileName: string) {\n    return fileName ? (fileName.length > 30 ? `${fileName.slice(0, 30)}...` : fileName) : '';\n  }\n}\n","<div\n  class=\"gtr-file-input-wrapper\"\n  [attr.id]=\"identifier || 'gtr-file-input'\"\n  [attr.data-testid]=\"identifier || 'gtr-file-input'\"\n>\n  <div\n    class=\"gtr-file-input-container\"\n    [attr.data-transaction-name]=\"dataTransactionName + '-file-input-drop'\"\n    (drop)=\"handleDrop($event)\"\n    tabindex=\"0\"\n    role=\"button\"\n    [attr.aria-label]=\"ariaLabel ?? 'gtr-file-input'\"\n  >\n    <input\n      hidden\n      #fileInputElement\n      type=\"file\"\n      [accept]=\"accept\"\n      (change)=\"handleFileChange($event)\"\n      [name]=\"name\"\n      [attr.data-transaction-name]=\"dataTransactionName + '-file-input'\"\n      aria-hidden=\"true\"\n    />\n    <div class=\"gtr-file-input-icon\">\n      <svg\n        width=\"48\"\n        height=\"48\"\n        viewBox=\"0 0 48 48\"\n        fill=\"none\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <path\n          d=\"M32 32L24 24L16 32\"\n          stroke=\"#F2994A\"\n          stroke-width=\"2\"\n          stroke-linecap=\"round\"\n          stroke-linejoin=\"round\"\n        />\n        <path\n          d=\"M24 24V42\"\n          stroke=\"#F2994A\"\n          stroke-width=\"2\"\n          stroke-linecap=\"round\"\n          stroke-linejoin=\"round\"\n        />\n        <path\n          d=\"M40.7799 36.78C42.7306 35.7165 44.2716 34.0337 45.1597 31.9972C46.0477 29.9607 46.2323 27.6864 45.6843 25.5334C45.1363 23.3803 43.8869 21.471 42.1333 20.1069C40.3796 18.7427 38.2216 18.0014 35.9999 18H33.4799C32.8745 15.6585 31.7462 13.4846 30.1798 11.642C28.6134 9.79927 26.6496 8.33567 24.4361 7.36118C22.2226 6.3867 19.817 5.92669 17.4002 6.01573C14.9833 6.10478 12.6181 6.74057 10.4823 7.8753C8.34649 9.01003 6.49574 10.6142 5.06916 12.5671C3.64259 14.5201 2.6773 16.771 2.24588 19.1508C1.81446 21.5305 1.92813 23.977 2.57835 26.3065C3.22856 28.636 4.3984 30.7877 5.99992 32.6\"\n          stroke=\"#F2994A\"\n          stroke-width=\"2\"\n          stroke-linecap=\"round\"\n          stroke-linejoin=\"round\"\n        />\n        <path\n          d=\"M32 32L24 24L16 32\"\n          stroke=\"#F2994A\"\n          stroke-width=\"2\"\n          stroke-linecap=\"round\"\n          stroke-linejoin=\"round\"\n        />\n      </svg>\n    </div>\n    <div class=\"gtr-file-info-wrapper\">\n      <span class=\"gtr-file-input-heading\">\n        {{ currentSelectedFileName ?? heading ?? \"Drag and drop files here, or click to browse\" }}\n      </span>\n      <span class=\"gtr-file-input-description\">\n        {{ description || \"CSV, excel, PNG, JPG, JPEG files accepted\" }}\n      </span>\n    </div>\n    <div>\n      <gtr-button variant=\"outline\" color=\"success\" (click)=\"fileInputElement.click()\"\n      [dataTransactionName]=\"dataTransactionName + '-file-input-select'\">\n        Select File\n      </gtr-button>\n    </div>\n  </div>\n</div>\n","export class StyleVariables {\n  static white = '--gtr-color-base-white-100';\n  static black = '--gtr-color-base-black-100';\n  static gray40 = '--gtr-color-base-black-40';\n  static gray10 = '--gtr-color-base-black-10';\n\n  static borderContrast = '--gtr-color-border-contrast';\n}\n","import { StyleVariables } from './variables.parameters';\n\nexport enum EContrastColor {\n  light = 1,\n  dark = 2,\n}\n\nexport const CContrastBorderColorVariable = {\n  [EContrastColor.light]: `transparent`,\n  [EContrastColor.dark]: `var(${StyleVariables.gray10})`,\n};\n","import { EContrastColor } from '../parameters/colors.parameter';\n\nexport class ColorHelper {\n  static getContrastColor(hex: string, contrastValue = 180): EContrastColor {\n    if (hex.indexOf('#') === 0) {\n      hex = hex.slice(1);\n    }\n    // convert 3-digit hex to 6-digits.\n    if (hex.length === 3) {\n      hex = hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2];\n    }\n    // Convert to RGB value\n    const r = parseInt(hex.slice(0, 2), 16);\n    const g = parseInt(hex.slice(2, 4), 16);\n    const b = parseInt(hex.slice(4, 6), 16);\n    // Get YIQ ratio\n    const yiq = (r * 299 + g * 587 + b * 114) / 1000;\n\n    // Check contrast\n    return yiq >= contrastValue ? EContrastColor.dark : EContrastColor.light;\n  }\n}\n","import {\n  Component,\n  DestroyRef,\n  EventEmitter,\n  forwardRef,\n  inject,\n  Input,\n  OnInit,\n  Output,\n} from '@angular/core';\nimport {\n  ControlValueAccessor,\n  FormControl,\n  NG_VALUE_ACCESSOR,\n  ReactiveFormsModule,\n} from '@angular/forms';\nimport { NgxColorsModule, validColorValidator } from 'ngx-colors';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ColorHelper } from '../../../helpers/color.helper';\nimport { EContrastColor } from '../../../parameters/colors.parameter';\nimport { GtrInputComponent } from '../../atoms/input';\nimport { GtrIconComponent } from '../../atoms/icon';\n\n@Component({\n  selector: 'gtr-input-color',\n  templateUrl: './gtr-input-color.component.html',\n  styleUrls: ['./gtr-input-color.component.scss'],\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => GtrInputColorComponent),\n      multi: true,\n    },\n  ],\n  imports: [GtrInputComponent, NgxColorsModule, ReactiveFormsModule, GtrIconComponent],\n})\nexport class GtrInputColorComponent implements ControlValueAccessor, OnInit {\n  private readonly destroyRef = inject(DestroyRef);\n\n  public touched: boolean = false;\n  public inputControl = new FormControl('', validColorValidator());\n  public colorControl = new FormControl('');\n  public hasBorder: boolean = false;\n  public inputInvalid: boolean = false;\n\n  @Input() inputLabel: string = 'Color';\n  @Input() invalid: boolean = false;\n  @Input() placeholder!: string;\n\n  @Input() colorPickerControls: 'default' | 'only-alpha' | 'no-alpha' = 'no-alpha';\n  @Input() hideColorPicker: boolean = false;\n  @Input() hidePickerTextInput: boolean = true;\n  @Input() hideErrorMessage: boolean = false;\n\n  @Input() name = 'input-color';\n  @Input() dataTransactionName = 'no-tagged';\n\n  @Input() set disabled(value: boolean) {\n    this.setDisabledState(value);\n  }\n  get disabled() {\n    return this._disabled;\n  }\n  private _disabled: boolean = false;\n\n  @Input() set value(value: string) {\n    this.inputControl.setValue(value || '');\n    this.colorControl.setValue(value || '');\n  }\n\n  @Input() set inputValue(value: string) {\n    this.inputControl.setValue(value || '');\n  }\n\n  @Input() set colorValue(value: string) {\n    this.colorControl.setValue(value || '');\n  }\n\n  @Output() valueChange = new EventEmitter<string>();\n\n  constructor() {}\n\n  ngOnInit() {\n    this.inputControl.valueChanges.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((color) => {\n      this.inputInvalid = this.inputControl?.invalid;\n      if (this.inputControl.valid) {\n        this.colorControl.setValue(color, { emitEvent: false });\n        this.handleValue(color);\n      }\n    });\n    this.colorControl.valueChanges.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((color) => {\n      this.inputControl.setValue(color);\n    });\n  }\n\n  private onChange: any = () => {};\n  private onTouched: any = () => {};\n\n  handleValue(color: string | null) {\n    const contrastColor = ColorHelper.getContrastColor(color as string, 230);\n    this.hasBorder = contrastColor === EContrastColor.dark;\n\n    this.onChange(color);\n    this.touched = true;\n    this.onTouched(true);\n    this.valueChange.emit(color || '');\n  }\n\n  registerOnChange(fn: any): void {\n    this.onChange = fn;\n  }\n\n  registerOnTouched(fn: any): void {\n    this.onTouched = fn;\n  }\n\n  setDisabledState(isDisabled: boolean): void {\n    this._disabled = isDisabled;\n    if (isDisabled) {\n      this.inputControl.disable();\n      this.colorControl.disable();\n    } else {\n      this.inputControl.enable();\n      this.colorControl.enable();\n    }\n  }\n\n  writeValue(obj: any): void {\n    this.value = obj;\n  }\n\n  handleTouch() {\n    this.touched = true;\n    this.onTouched(true);\n  }\n}\n","<div class=\"input-color-container\">\n  <div class=\"gtr-custom-label\">{{ inputLabel }}</div>\n\n  <div\n    class=\"d-flex flex-row align-items-center input-color\"\n    [class.has-border]=\"hasBorder\"\n    [class.invalid]=\"!disabled && (invalid || inputInvalid)\"\n  >\n    <gtr-input\n      type=\"text\"\n      [isValid]=\"inputControl.valid\"\n      [placeholder]=\"placeholder || ''\"\n      [dataTransactionName]=\"dataTransactionName + '-color'\"\n      [name]=\"name\"\n      [formControl]=\"inputControl\">\n    </gtr-input>\n\n    <ngx-colors\n      ngx-colors-trigger\n      [hideColorPicker]=\"hideColorPicker\"\n      [colorPickerControls]=\"colorPickerControls\"\n      [hideTextInput]=\"hidePickerTextInput\"\n      [formControl]=\"colorControl\"\n      acceptLabel=\"Accept\"\n      cancelLabel=\"Cancel\"\n    ></ngx-colors>\n\n  </div>\n  @if (!disabled && (invalid || inputInvalid) && inputControl.errors && !hideErrorMessage) {\n    @if (inputControl.invalid && (inputControl.dirty || inputControl.touched)) {\n      <div class=\"custom-error\">\n        <gtr-icon name=\"info-circle-filled\" [size]=\"12\"></gtr-icon>\n        @if (inputControl.errors['invalidColor']) {\n          <span>The color is invalid.</span>\n        }\n      </div>\n    }\n  }\n</div>\n","export const GtrComponentName = 'gtr-numeric-counter';\n","import { Component, EventEmitter, Input, Output, forwardRef } from '@angular/core';\nimport { GtrNumericCounterChangeEvent } from './gtr-numeric-counter.type';\nimport { GtrComponentName } from './gtr-numeric-counter.const';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { NgClass } from '@angular/common';\nimport { GtrIconComponent } from '../../../atoms/icon';\n\n@Component({\n  selector: 'gtr-numeric-counter',\n  templateUrl: './gtr-numeric-counter.component.html',\n  styleUrls: ['./gtr-numeric-counter.component.scss'],\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => GtrNumericCounterComponent),\n      multi: true,\n    },\n  ],\n  imports: [NgClass, GtrIconComponent],\n})\nexport class GtrNumericCounterComponent implements ControlValueAccessor {\n  /*\n   * Value for numeric counter, Value must be number\n   * @default is 0\n   */\n  @Input() public value: number = 0;\n\n  /*\n   * Step value for number input\n   * @default is 0\n   */\n  @Input() public step: number = 0;\n\n  /*\n   * min value for number input\n   * @default is 0\n   */\n  @Input() public min: number = 0;\n\n  /*\n   * max value for number input\n   * @default is 9999\n   */\n  @Input() public max: number = 9999;\n\n  /*\n   * name attribute for input\n   * @default is gtr-numeric-counter\n   */\n  @Input() public name: string = 'gtr-numeric-counter';\n\n  /*\n   * identifier for counter use as a unique id instead of using id attribute\n   */\n  @Input() public identifier!: string;\n\n  /*\n   * to disable counter\n   * @default value is false\n   */\n  @Input() public disabled: boolean = false;\n\n  /*\n   * to readonly\n   * @default value is false\n   */\n  @Input() public readonly: boolean = false;\n\n  @Input() public dataTransactionName = 'no-tagged';\n\n  /*\n   * Event Emitter for numeric counter on value change\n   */\n  @Output()\n  public readonly gtrChange: EventEmitter<GtrNumericCounterChangeEvent> = new EventEmitter();\n\n  private onChange: any = () => {};\n  private onTouch: any = () => {};\n\n  writeValue(value: any): void {\n    this.value = value;\n  }\n\n  registerOnChange(fn: any): void {\n    this.onChange = fn;\n  }\n\n  registerOnTouched(fn: any): void {\n    this.onTouch = fn;\n  }\n\n  setDisabledState?(isDisabled: boolean): void {\n    this.disabled = isDisabled;\n  }\n\n  /*\n   * handle keydown event for number counter\n   */\n  public handleKeyDown(event: KeyboardEvent) {\n    if (!this.disabled && !this.readonly) {\n      this.onTouch();\n\n      if (event && event.key) {\n        switch (event.key) {\n          case 'ArrowUp': {\n            event.preventDefault();\n            this.incrementCounter();\n            break;\n          }\n          case 'ArrowDown': {\n            event.preventDefault();\n            this.decrementCounter();\n            break;\n          }\n        }\n      }\n    }\n  }\n\n  /*\n   * Local method to increment counter value\n   */\n  public incrementCounter = () => {\n    if (!this.disabled && !this.readonly) {\n      const value = this.value + 1;\n      if (value < this.max) {\n        this.value = value;\n        this.handleOnChange();\n      }\n    }\n  };\n\n  /*\n   * Local method to decrement counter value\n   */\n  public decrementCounter = () => {\n    if (!this.disabled && !this.readonly) {\n      if (this.min < this.value) {\n        this.value--;\n        this.handleOnChange();\n      }\n    }\n  };\n\n  /*\n   * Local method to handle on change and input event\n   */\n  public handleOnChange = (event?: Event) => {\n    const eventValue = (event?.target as HTMLInputElement)?.value as unknown as number;\n    const value = Number(eventValue) || this.value;\n    this.gtrChange.emit({\n      component: GtrComponentName,\n      value: value,\n    });\n    this.value = value;\n    this.onChange(value);\n    this.onTouch();\n  };\n}\n","<div\n  aria-label=\"gtr-numeric-counter\"\n  aria-describedBy=\"gtr-numeric-counter\"\n  class=\"gtr-numeric-counter-wrapper\"\n  [ngClass]=\"{\n    readonly: readonly,\n    disabled: disabled\n  }\"\n  tabindex=\"0\"\n  [attr.aria-disabled]=\"disabled ? 'true' : 'false'\"\n  [attr.aria-readonly]=\"readonly ? 'true' : 'false'\"\n  [attr.id]=\"identifier || 'gtr-numeric-counter'\"\n  [attr.data-testid]=\"identifier || 'gtr-numeric-counter'\"\n  (keydown)=\"handleKeyDown($event)\"\n  [attr.data-transaction-name]=\"dataTransactionName + '-numeric-counter'\"\n>\n  <button\n    type=\"button\"\n    class=\"gtr-numeric-counter-button gtr__isminus\"\n    [attr.aria-disabled]=\"value <= min ? 'true' : 'false'\"\n    [disabled]=\"value <= min\"\n    (click)=\"decrementCounter()\"\n    [attr.data-transaction-name]=\"dataTransactionName + '-numeric-counter-minus'\"\n  >\n    <gtr-icon name=\"minus\" [size]=\"18\"\n    [dataTransactionName]=\"dataTransactionName + '-numeric-counter-minus'\"></gtr-icon>\n  </button>\n  <input\n    [disabled]=\"disabled\"\n    [readOnly]=\"readonly\"\n    [attr.aria-disabled]=\"disabled ? 'true' : 'false'\"\n    [attr.aria-readonly]=\"readonly ? 'true' : 'false'\"\n    role=\"spinbutton\"\n    class=\"gtr-numeric-counter-input\"\n    type=\"number\"\n    [step]=\"step\"\n    [min]=\"min\"\n    [max]=\"max\"\n    [name]=\"name\"\n    [value]=\"value\"\n    pattern=\"[0-9]*\"\n    inputmode=\"numeric\"\n    [attr.aria-valuemin]=\"min\"\n    [attr.aria-valuemax]=\"max\"\n    [attr.aria-valuenow]=\"value\"\n    (change)=\"handleOnChange($event)\"\n    [attr.data-transaction-name]=\"dataTransactionName + '-numeric-counter-input'\"\n  />\n  <button\n    type=\"button\"\n    class=\"gtr-numeric-counter-button gtr__isplus\"\n    [attr.aria-disabled]=\"value >= max ? 'true' : 'false'\"\n    (click)=\"incrementCounter()\"\n    [disabled]=\"value >= max - 1\"\n    [attr.data-transaction-name]=\"dataTransactionName + '-numeric-counter-plus'\"\n  >\n    <gtr-icon name=\"plus\" [size]=\"18\"\n    [dataTransactionName]=\"dataTransactionName + '-numeric-counter-plus'\"></gtr-icon>\n  </button>\n</div>\n","export const GtrPageSizeOptions: number[] = [5, 10, 20, 50, 100];\nexport const GtrDefaultPageIndex: number = 1;\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { GtrPage } from '../../models';\n\n@Pipe({\n  name: 'gtrValidatePage',\n  pure: true,\n  standalone: true,\n})\nexport class GtrValidatePagePipe implements PipeTransform {\n  transform(value: GtrPage | undefined, returnValue?: string): number | string {\n    if (value && typeof value === 'number') {\n      return value;\n    }\n    return returnValue ?? '';\n  }\n}\n","import { GtrPage } from '../helpers';\n\n/**\n *  component function to create page range\n * @param start\n * @param end\n * @returns\n */\nexport function pageRange(start: number, end: number): GtrPage[] {\n  let length: number = end - start + 1;\n  /**\n   * Create an array of certain length and set the elements within it from\n   * start value to end value.\n   * */\n  return Array.from({ length }, (_, index) => index + start) as GtrPage[];\n}\n\n/**\n * Method to create pagination data\n * @param res\n * @returns\n */\nexport function usePagination(res: {\n  totalCount: number;\n  pageSize: number;\n  siblingCount: number;\n  currentPage: number;\n  pageIndex: number;\n}): GtrPage[] | undefined {\n  const totalPageCount: number = Math.ceil(res.totalCount / res.pageSize);\n\n  // Pages count is determined as siblingCount + firstPage + lastPage + currentPage + 2*DOTS\n  const totalPageNumbers = res.siblingCount > 0 ? res.siblingCount + 5 : 1 + 5;\n\n  /**\n   * Case 1:\n   * If the number of pages is less than the page numbers we want to show in our\n   * paginationComponent, we return the range [1, ...totalPageCount]\n   */\n  if (totalPageNumbers >= totalPageCount) {\n    return pageRange(1, totalPageCount) as GtrPage[];\n  }\n\n  /**\n   * Calculate left and right sibling index and make sure they are within range 1 and totalPageCount\n   */\n  const leftSiblingIndex = Math.max(res.currentPage - res.siblingCount, 1);\n  const rightSiblingIndex = Math.min(res.currentPage + res.siblingCount, totalPageCount);\n\n  /**\n   * We do not show dots just when there is just one page number to be inserted between the extremes of sibling and the page limits i.e 1 and totalPageCount. Hence we are using leftSiblingIndex > 2 and rightSiblingIndex < totalPageCount - 2\n   */\n  const shouldShowLeftDots = leftSiblingIndex > 2;\n  const shouldShowRightDots = rightSiblingIndex < totalPageCount - (hasMobileView() ? 1 : 2);\n\n  const firstPageIndex = 1;\n  const lastPageIndex = totalPageCount;\n\n  /**\n   * Case 2: No left dots to show, but rights dots to be shown\n   */\n  if (!shouldShowLeftDots && shouldShowRightDots) {\n    let leftItemCount = (hasMobileView() ? 3 : 3 + 2) * res.siblingCount;\n    let leftRange = pageRange(1, leftItemCount) as GtrPage[];\n\n    return [...leftRange, '...', totalPageCount];\n  }\n\n  /**\n   * Case 3: No right dots to show, but left dots to be shown\n   */\n  if (shouldShowLeftDots && !shouldShowRightDots) {\n    let rightItemCount = (hasMobileView() ? 3 : 3 + 2) * res.siblingCount;\n    let rightRange = pageRange(totalPageCount - rightItemCount + 1, totalPageCount);\n    return [firstPageIndex, '...', ...rightRange] as GtrPage[];\n  }\n\n  /**\n   * Case 4: Both left and right dots to be shown\n   */\n  if (shouldShowLeftDots && shouldShowRightDots) {\n    const middleRange = hasMobileView()\n      ? pageRange(res.pageIndex, res.pageIndex)\n      : pageRange(leftSiblingIndex, rightSiblingIndex);\n    return [firstPageIndex, '...', ...middleRange, '...', lastPageIndex] as GtrPage[];\n  }\n\n  return undefined;\n}\n\nexport function hasMobileView(): boolean {\n  const _viewWidth = window.innerWidth;\n  if (_viewWidth && _viewWidth > 820) {\n    return false;\n  } else {\n    return true;\n  }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n  name: 'gtrTrimText',\n  standalone: true,\n})\nexport class GtrTrimTextPipe implements PipeTransform {\n  transform(value: string | number | null | undefined, limit: number): string | number | undefined {\n    if (!value) {\n      return;\n    }\n\n    if (typeof value === 'number') {\n      return value;\n    }\n\n    if (value?.length <= limit) {\n      return value;\n    }\n\n    return value?.substring(0, limit) + '...';\n  }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { GtrTrimTextPipe } from '../trim-text/gtr-trim-text.pipe';\n\n@Pipe({\n  name: 'gtrFormatSelectedValue',\n  standalone: true,\n})\nexport class GtrFormatSelectedValuePipe implements PipeTransform {\n  private readonly _limitText = new GtrTrimTextPipe();\n\n  transform(\n    value: any,\n    options: any[],\n    valueKey: string,\n    selectedLabel: string,\n    labelKey: string,\n    textLimit: number,\n    multiple: boolean,\n    selectedValueLazy: any[],\n    selectedValues: any[] | undefined,\n    selectedValuesRaw: any[] | undefined,\n    lazyLoaded: boolean,\n  ) {\n    if (multiple) {\n      const optionsList = lazyLoaded\n        ? selectedValueLazy?.length\n          ? selectedValueLazy\n          : selectedValuesRaw?.length\n          ? selectedValuesRaw\n          : []\n        : selectedValuesRaw;\n      const _option = optionsList?.find((option) =>\n        valueKey\n          ? option[valueKey] === value\n          : typeof value == 'object'\n          ? JSON.stringify(option) == JSON.stringify(value)\n          : option === value,\n      );\n      let formattedOption: any;\n      if (selectedLabel) {\n        formattedOption = _option ? (selectedLabel ? _option[selectedLabel] : _option) : '';\n      } else {\n        formattedOption = _option ? (labelKey ? _option[labelKey] : _option) : '';\n      }\n      return formattedOption && this._limitText.transform(formattedOption, textLimit || 28);\n    } else {\n      const _option = selectedValuesRaw?.find((option) =>\n        valueKey\n          ? option[valueKey] === selectedValues?.[0]\n          : typeof selectedValues?.[0] === 'object'\n          ? JSON.stringify(option) === JSON.stringify(selectedValues[0])\n          : option === selectedValues?.[0],\n      );\n\n      let formattedOption: any;\n      if (selectedLabel) {\n        formattedOption = _option ? (selectedLabel ? _option[selectedLabel] : _option) : '';\n      } else {\n        formattedOption = _option ? (labelKey ? _option[labelKey] : _option) : '';\n      }\n      return formattedOption ? formattedOption : selectedValues?.[0] ? selectedValues?.[0] : '';\n    }\n  }\n}\n","export enum GtrSelectListLoaderVariation {\n  TEXT = 'TEXT',\n  SPINNER = 'SPINNER',\n}\n","import {\n  AfterViewInit,\n  Component,\n  ElementRef,\n  EventEmitter,\n  HostListener,\n  Input,\n  OnChanges,\n  Output,\n  SimpleChanges,\n  forwardRef,\n  OnDestroy,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { throwError } from 'rxjs';\nimport {\n  GtrFormatSelectedValuePipe,\n  GtrSelectListLoaderVariation,\n  GtrSelectScroll,\n  GtrTrimTextPipe,\n} from '../helpers';\nimport { GtrSkeletonDirective } from '../../../atoms/skeleton';\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\nimport { GtrIconComponent } from '../../../atoms/icon';\n\n@Component({\n  selector: 'gtr-select',\n  templateUrl: './gtr-select.component.html',\n  styleUrls: ['./gtr-select.component.scss'],\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => GtrSelectComponent),\n      multi: true,\n    },\n  ],\n  imports: [\n    GtrSkeletonDirective,\n    NgClass,\n    NgTemplateOutlet,\n    GtrIconComponent,\n    GtrFormatSelectedValuePipe,\n    GtrTrimTextPipe,\n  ],\n})\nexport class GtrSelectComponent\n  implements OnChanges, ControlValueAccessor, AfterViewInit, OnDestroy\n{\n  /** Input Label used for select box label */\n  @Input() public inputLabel!: string;\n\n  /**\n   * To Show placeholder for select box\n   * @default Select\n   */\n  @Input() public placeholder: string = 'Select';\n\n  /** Float placeholder is used to keep the placeholder in container after selection */\n  @Input() public floatPlaceholder: boolean = false;\n\n  /** Label key used to map label for internal objects of options */\n  @Input() public labelKey!: string;\n\n  /** Value key used to map value for internal objects of options */\n  @Input() public valueKey!: string;\n\n  /** Selected label used to map display text instead of actual value from options */\n  @Input() public selectedLabel!: string;\n\n  /** Highlight label used to map higlight label by adding \"font-weight: bold\" style property text when sub label are present for option list */\n  @Input() public highlightLabel!: string;\n\n  /** Sub label used to show the second label in option list */\n  @Input() public subLabel!: string;\n\n  /** View Only state of select box */\n  @Input() public isOnlyView: boolean = false;\n\n  /** Used to bind value of select box */\n  @Input() public value!: any | any[];\n\n  /** Multiple check is used to allow the select box to accept multiple values */\n  @Input() public multiple: boolean = false;\n\n  /** To allow lazy loading feature */\n  @Input() public lazyLoaded: boolean = false;\n\n  /** Searchable check used to enable search box in select box list wrapper */\n  @Input() public searchable: boolean = false;\n\n  /** Allow to disable select box */\n  @Input() public disabled: boolean = false;\n\n  /** Allow to disable select box */\n  @Input() public hideOptions: boolean = false;\n\n  /** Allow to clean search when closing the select */\n  @Input() public cleanSearchWhenClose: boolean = false;\n\n  /** Allow to enable readonly state for select box */\n  @Input() public readonly: boolean = false;\n\n  /** If is invalid then select box accept error message and style border to red color of select box input wrapper */\n  @Input() public is_invalid: boolean = false;\n\n  /** To show loading while searching or fetching list */\n  @Input() public listLoading: boolean = false;\n\n  /** To show skeleton view */\n  @Input() public loading: boolean = false;\n\n  /** To show a change is loading */\n  @Input() public changeLoading: boolean = false;\n\n  /** TO show loading spinner in search box / searching... text in the lists while searching */\n  @Input() public listLoaderVariation: GtrSelectListLoaderVariation =\n    GtrSelectListLoaderVariation.TEXT;\n\n  /**\n   * Pass options list must be an array\n   * @default empty[]\n   */\n  @Input() public options: any[] = [];\n\n  /**\n   * Autowrap value and options text if increase than given value\n   * @default 28\n   */\n  @Input() public textLimit: number = 28;\n\n  /**\n   * Mark first option ready to select\n   * @default false\n   */\n  @Input() public autoSelect: boolean = false;\n\n  /**\n   * Change select box to autocomplete input\n   */\n  @Input() public autocomplete: boolean = false;\n\n  /**\n   * Reset autocomplete input\n   */\n  @Input() set resetAutocomplete(value: boolean) {\n    if (value) {\n      this.autocompleteInputValue = '';\n    }\n  }\n\n  /**\n   * To enable add button in select box\n   */\n  @Input() public enableAddButton: boolean = false;\n\n  /**\n   * To change button position in option list\n   */\n  @Input() public addButtonPosition: 'top' | 'bottom' = 'bottom';\n\n  /**\n   * Input to change add button label\n   */\n  @Input() public addButtonLabel: string = '+ Add';\n\n  /**\n   * Input property to change Search Placeholder\n   */\n  @Input() public searchPlaceholder: string = 'Search';\n\n  /**\n   * Enable clear button for single select mode\n   * @default false\n   */\n  @Input() public clearable: boolean = false;\n\n  /**\n   * Event for add button clicked\n   */\n  @Output() public addButtonClicked = new EventEmitter<string>();\n\n  /** Toggle state for select box container */\n  public isOpen!: boolean;\n\n  /** To set search value */\n  public searchValue!: string;\n\n  /** To set autocomplete input value */\n  public autocompleteInputValue!: string;\n\n  /** Store selected values */\n  public selectedValues!: any[];\n  public selectedValuesRaw!: any[];\n\n  /** Store selected values for multiple */\n  public multipleSelectedValues: any[] = [];\n  public multipleSelectedValuesRaw: any[] = [];\n\n  /** State for touched events */\n  public touched!: boolean;\n\n  /** Filtered options without affection actual list */\n  public filteredOptions!: any[];\n\n  /** Store selected value if lazyloading is enabled */\n  public selectedValueLazy: any[] = [];\n\n  /** Enums for Custom Select Loader Variations */\n  public readonly loaderVariation = GtrSelectListLoaderVariation;\n\n  @Input() name = 'select';\n  @Input() dataTransactionName = 'no-tagged';\n\n  /** Event for value change */\n  @Output() public readonly valueChanged: EventEmitter<any> = new EventEmitter();\n\n  /** Event for search value change */\n  @Output() public readonly searchChanged: EventEmitter<any> = new EventEmitter();\n\n  /** Event for autocomplete input */\n  @Output() public readonly autocompleteInputChanged: EventEmitter<any> = new EventEmitter();\n\n  /** Event for scrolling in list */\n  @Output() public readonly gtrScroll: EventEmitter<GtrSelectScroll> =\n    new EventEmitter<GtrSelectScroll>();\n\n  /** Event if selectbox changed touched state */\n  @Output() public readonly gtrTouched: EventEmitter<any> = new EventEmitter();\n\n  /** Event to validate autocomplete when select box get closed */\n  @Output() public readonly gtrBlur: EventEmitter<any> = new EventEmitter();\n\n  /**\n   * Contructor\n   * @param _el\n   */\n  constructor(private _el: ElementRef) {}\n\n  /** Control Value Accessor Methods */\n  private onChange: any = () => {};\n  private onTouched: any = () => {};\n\n  writeValue(value: any): void {\n    this.value = value;\n    this.setInitialValue(false);\n  }\n\n  registerOnChange(fn: any): void {\n    this.onChange = fn;\n  }\n\n  registerOnTouched(fn: any): void {\n    this.onTouched = fn;\n  }\n\n  setDisabledState(isDisabled: boolean): void {\n    this.disabled = isDisabled;\n  }\n\n  /**\n   * On Changes Hook\n   * @param changes\n   */\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes?.['value'] || changes?.['options']) {\n      this.setInitialValue(false);\n    }\n\n    this.filterOptionList();\n  }\n\n  /**\n   * On ViewInit Hook\n   */\n  ngAfterViewInit(): void {\n    this.adjustPosition();\n  }\n\n  /*********** PUBLIC METHODS ***************/\n\n  /**\n   * NOTE: toggleSelectBox() function is declared to hide/show the dropdown list based on user latest event\n   */\n  public toggleSelectBox(open: boolean = false) {\n    if (open) {\n      this.isOpen = true;\n    } else {\n      this.isOpen = !this.isOpen;\n    }\n    this.adjustPosition();\n    if (this.isOpen && !this.touched) {\n      this.handleTouchEvent();\n    }\n\n    if (!this.isOpen) {\n      this.handleCloseSelect();\n      this.gtrBlur.emit(this.autocomplete ? this.autocompleteInputValue : '');\n    }\n  }\n\n  /** Remove options */\n  public removeOptions(event: Event, option: any) {\n    this.handleOptionClick(option, true);\n    event.stopPropagation();\n  }\n\n  /** Clear single select value */\n  public clearValue(event: Event) {\n    event.stopPropagation();\n    this.selectedValues = [];\n    this.selectedValuesRaw = [];\n    this.selectedValueLazy = [];\n    this.value = null;\n    this.valueChanged.emit(null);\n    this.onChange(null);\n  }\n\n  /**\n   * HandleOptionClick function is declared to emit value changed events\n   * @param option\n   * @param removeOption\n   * @param emitValue\n   * @param toggleSelectBox\n   */\n  public handleOptionClick(\n    option: any,\n    removeOption: boolean = false,\n    emitValue: boolean = true,\n    toggleSelectBox: boolean = true,\n  ) {\n    if (this.hideOptions) {\n      return;\n    }\n    const optionValue = this.getOptionValue(option);\n    if (this.multiple) {\n      const index = this.multipleSelectedValues.indexOf(optionValue ? optionValue : option);\n      if (index <= -1) {\n        this.multipleSelectedValues = [...this.multipleSelectedValues, optionValue];\n        this.multipleSelectedValuesRaw = [...this.multipleSelectedValuesRaw, option];\n      } else {\n        this.multipleSelectedValues = this.multipleSelectedValues.filter((value) =>\n          optionValue ? value !== optionValue : value != option,\n        );\n        this.multipleSelectedValuesRaw = this.multipleSelectedValuesRaw.filter((valueRaw) =>\n          this.multipleSelectedValues.find((value) => value === this.getOptionValue(valueRaw)),\n        );\n      }\n      if (this.lazyLoaded && this.multipleSelectedValues?.length) {\n        this.multipleSelectedValues?.forEach((singleOption) => {\n          const filteredValues = this.options?.filter((option) =>\n            this.valueKey ? option[this.valueKey] == singleOption : option == singleOption,\n          );\n          if (filteredValues && filteredValues[0]) {\n            if (!this.selectedValueLazy?.includes(filteredValues[0])) {\n              this.selectedValueLazy?.push(filteredValues[0]);\n            }\n          }\n        });\n      } else {\n        this.selectedValueLazy = [];\n      }\n      emitValue\n        ? (this.valueChanged.emit(this.multipleSelectedValues),\n          this.onChange(this.multipleSelectedValues))\n        : '';\n      removeOption ? (toggleSelectBox ? this.handleCloseSelect() : '') : '';\n    } else {\n      if (this.lazyLoaded) {\n        this.selectedValueLazy = [option];\n      }\n      this.selectedValues = [optionValue];\n      this.selectedValuesRaw = [option];\n      emitValue ? (this.valueChanged.emit(optionValue), this.onChange(optionValue)) : '';\n      toggleSelectBox ? this.handleCloseSelect() : '';\n    }\n  }\n\n  /**\n   * handleSearchInput function is declared to filter the array based on search events.\n   * @param event\n   */\n  public handleSearchInput(event: Event) {\n    const inputElement = event?.target as HTMLInputElement;\n    this.searchValue = inputElement?.value;\n    this.searchChanged.emit(this.searchValue || '');\n    this.filterOptionList();\n  }\n\n  /** Method to filter option list */\n  public filterOptionList() {\n    this.filteredOptions = this.lazyLoaded\n      ? this.options\n      : this.options?.filter((option) =>\n          this.labelKey\n            ? JSON.stringify(option[this.labelKey])\n                ?.toLowerCase()\n                ?.includes(\n                  (\n                    (this.autocomplete ? this.autocompleteInputValue : this.searchValue) || ''\n                  )?.toLowerCase(),\n                )\n            : JSON.stringify(option)\n                ?.toLowerCase()\n                ?.includes(\n                  (\n                    (this.autocomplete ? this.autocompleteInputValue : this.searchValue) || ''\n                  )?.toLowerCase(),\n                ),\n        );\n    this.adjustPosition();\n  }\n\n  /**\n   * Lazy loading on scroll for change page\n   */\n  public lazyLoadPaginationScroll() {\n    const optionsContainer: HTMLDivElement =\n      this._el?.nativeElement?.querySelector('.gtr-options-list');\n    if (optionsContainer) {\n      const scrollHeight = Math.round(optionsContainer.scrollHeight || 0);\n      const scrollTop = Math.round(optionsContainer.scrollTop || 0);\n      const clientHeight = Math.round(optionsContainer.clientHeight || 0);\n      const reachedBottom = scrollHeight - scrollTop <= clientHeight + 1 ? true : false;\n      const reachedTop = scrollTop === 0 ? true : false;\n      this.gtrScroll.emit({\n        scrollHeight: scrollHeight || 0,\n        scrollTop: scrollTop || 0,\n        clientHeight: clientHeight || 0,\n        reachedBottom: reachedBottom || false,\n        reachedTop: reachedTop || false,\n      });\n    }\n  }\n\n  /*********** PRIVATE METHODS ***************/\n\n  /** Handle Touch Events */\n  private handleTouchEvent = () => {\n    this.onTouched();\n    this.touched = true;\n    this.gtrTouched.emit(this.touched || false);\n  };\n\n  /** Set Initial value on every change */\n  private setInitialValue(toggleBox: boolean = true) {\n    if (this.value) {\n      if (this.multiple) {\n        if (Array.isArray(this.value)) {\n          this.multipleSelectedValues = [];\n          this.multipleSelectedValuesRaw = [];\n          const _initValue = this.value?.map((_value) => {\n            let value;\n            value = this.options?.find((option) =>\n              this.valueKey\n                ? option[this.valueKey] == _value\n                : typeof _value == 'object'\n                  ? JSON.stringify(option) == JSON.stringify(_value)\n                  : option == _value,\n            );\n            if (!value && this.lazyLoaded) {\n              value = this.selectedValueLazy?.find((option) =>\n                this.valueKey\n                  ? option[this.valueKey] == _value\n                  : typeof _value == 'object'\n                    ? JSON.stringify(option) == JSON.stringify(_value)\n                    : option == _value,\n              );\n            }\n            return value;\n          });\n          _initValue && _initValue?.length\n            ? _initValue?.forEach((option) =>\n                option ? this.handleOptionClick(option, false, false, toggleBox) : '',\n              )\n            : '';\n        } else {\n          throwError(() => 'TypeError: value attribute must be an array');\n        }\n      } else {\n        let _initValue;\n        _initValue = this.options?.find((option) =>\n          this.valueKey\n            ? option[this.valueKey] === this.value\n            : typeof this.value === 'object'\n              ? JSON.stringify(option) === JSON.stringify(this.value)\n              : option === this.value,\n        );\n        _initValue ? this.handleOptionClick(_initValue, false, false, toggleBox) : '';\n      }\n    } else {\n      this.selectedValues = [];\n      this.selectedValuesRaw = [];\n      this.multipleSelectedValues = [];\n      this.multipleSelectedValuesRaw = [];\n      this.selectedValueLazy = [];\n      this.cleanSearch();\n    }\n  }\n\n  @HostListener('keydown', ['$event'])\n  private handleKeyboardNavigations(event: KeyboardEvent) {\n    if (this.isOpen && !this.isOnlyView) {\n      if (event.key === 'Escape') {\n        this.handleCloseSelect();\n      } else if (event.key === 'ArrowDown') {\n        event.preventDefault();\n        const nextOption = this.getNextVisibleOption() as HTMLLIElement;\n        this.setFocusOnOption(nextOption);\n      } else if (event.key == 'ArrowUp') {\n        event.preventDefault();\n        const prevOption = this.getPrevVisibleOption() as HTMLLIElement;\n        this.setFocusOnOption(prevOption);\n      }\n    }\n  }\n\n  /*\n   * getNextVisibleOption function is declared to focus on next li sibling on keyboard navigation.\n   */\n  private getNextVisibleOption(): HTMLLIElement | null {\n    const focusedOption = this.getFocusedOption();\n    if (!focusedOption) {\n      return null;\n    }\n    let nextOption = focusedOption?.nextElementSibling as HTMLLIElement;\n    while (nextOption && (!nextOption.innerText || nextOption.style.display === 'none')) {\n      nextOption = nextOption?.nextElementSibling as HTMLLIElement;\n    }\n    return nextOption;\n  }\n\n  /*\n   * getPrevVisibleOption function is declared to focus on prev li sibling on keyboard navigation.\n   */\n  private getPrevVisibleOption(): HTMLLIElement | null {\n    const focusedOption = this.getFocusedOption();\n    if (!focusedOption) {\n      return null;\n    }\n    let prevOption = focusedOption?.previousElementSibling as HTMLLIElement;\n    while (prevOption && (!prevOption.innerText || prevOption.style.display === 'none')) {\n      prevOption = prevOption?.previousElementSibling as HTMLLIElement;\n    }\n    return prevOption;\n  }\n\n  /*\n   * getFocusedOption function is declared to focus on current li sibling on keyboard navigation.\n   */\n  private getFocusedOption(): HTMLLIElement | null {\n    const activeElement = document.activeElement as HTMLLIElement;\n    return activeElement\n      ? (activeElement?.closest('li.gtr-option') as HTMLLIElement)\n      : this.getFirstVisibleOption()\n        ? this.getFirstVisibleOption()\n        : null;\n  }\n\n  /**\n   * Get first visible option of list\n   */\n  private getFirstVisibleOption(): HTMLLIElement | null {\n    const optionsList = this._el?.nativeElement?.querySelector('.gtr-options-list');\n    if (!optionsList) return null;\n    const firstOption = optionsList.querySelector('li.gtr-option') as HTMLLIElement;\n    return firstOption || null;\n  }\n\n  /**\n   * setFocusOnOption function is declared to set focus on HTML li element.\n   * @param option\n   */\n  private setFocusOnOption(option: HTMLLIElement) {\n    if (option) {\n      option.focus();\n    }\n  }\n\n  /**\n   * function to listen whether click triger outside of element to hide dropdown\n   * @param event\n   */\n  @HostListener('window:click', ['$event'])\n  private onClickOutside(event: any) {\n    if (!event?.composedPath()?.includes(this._el.nativeElement)) {\n      this.handleCloseSelect();\n      this.gtrBlur.emit(this.autocomplete ? this.autocompleteInputValue : '');\n    }\n  }\n\n  /**\n   * Function to listen whether screen size change to adjust position\n   */\n  @HostListener('window:resize', ['$event'])\n  private onWindowResize(event: any) {\n    this.adjustPosition();\n  }\n\n  /**\n   * Function to listen whether screen scroll to adjust position\n   */\n  @HostListener('window:scroll', ['$event'])\n  private onWindowScroll(event: any) {\n    this.adjustPosition();\n  }\n\n  /** TO adjust position of option list wrapper */\n  private adjustPosition = () => {\n    const rect = this._el?.nativeElement.getBoundingClientRect();\n    const viewHeight = window.innerHeight || document.documentElement.clientHeight;\n    const selectBox = this._el?.nativeElement?.querySelector('.gtr-select');\n    if (selectBox) {\n      if (rect.top > viewHeight - rect.bottom) {\n        selectBox.classList.remove('open-bottom');\n        selectBox.classList.add('open-up');\n        const dropMenu = selectBox.querySelector('.gtr-options-wrapper') as HTMLElement;\n        if (dropMenu) {\n          window.requestAnimationFrame(() => {\n            dropMenu.style.top =\n              dropMenu.offsetHeight === 0 ? '40px' : `-${dropMenu.offsetHeight}px`;\n          });\n        }\n      } else {\n        selectBox.classList.remove('open-up');\n        selectBox.classList.add('open-bottom');\n        const dropMenu = selectBox.querySelector('.gtr-options-wrapper') as HTMLElement;\n        if (dropMenu) {\n          window.requestAnimationFrame(() => {\n            dropMenu.style.top = `40px`;\n          });\n        }\n      }\n    }\n  };\n\n  private getOptionValue(option: any) {\n    return this.valueKey ? option[this.valueKey] : option;\n  }\n\n  /**\n   * Handle click of add button in dropdown list\n   */\n  public handleAddButton(enterKeyPressed: boolean = false) {\n    if (this.isOpen && !this.hideOptions) {\n      if (enterKeyPressed && this.filteredOptions?.length > 0 && this.autoSelect) {\n        this.handleOptionClick(this.filteredOptions[0]);\n      } else {\n        this.addButtonClicked.emit(this.autocompleteInputValue || '');\n        this.toggleSelectBox();\n      }\n    }\n  }\n\n  /**\n   * Handle emitted input value for autocomplete input\n   * @param event\n   */\n  public handleAutocompleteInput(event: Event) {\n    !this.isOpen ? (this.isOpen = true) : '';\n    const inputElement = event?.target as HTMLInputElement;\n    this.autocompleteInputValue = inputElement?.value;\n    this.autocompleteInputChanged.emit(this.autocompleteInputValue);\n    this.filterOptionList();\n  }\n\n  public handleCloseSelect() {\n    this.isOpen = false;\n    if (this.cleanSearchWhenClose) {\n      this.cleanSearch();\n    }\n  }\n\n  public cleanSearch() {\n    if (this.searchValue && !this.isOpen) {\n      this.searchValue = '';\n      this.searchChanged.emit(this.searchValue || '');\n      this.filterOptionList();\n    }\n  }\n\n  ngOnDestroy() {\n    this.cleanSearch();\n  }\n}\n","<!-- ************ Select Box Element ************ -->\n<div class=\"gtr-select-wrapper\" [class.gtr-only-view]=\"isOnlyView\" [class.multiple]=\"multiple\">\n  <!-- Input Label -->\n  @if (inputLabel) {\n    <ng-container *ngTemplateOutlet=\"inputLabelTemplate\"></ng-container>\n  }\n  <!-- Input Label ends here... -->\n\n  <!-- skeleton loading -->\n  <ng-container *skeleton=\"\n      loading;\n      repeat: 1;\n      className: 'skeleton-margin-bottom';\n      height: '16px';\n      width: '150px'\n    \">\n    <!-- Select Box Container -->\n    <div class=\"gtr-select\" [ngClass]=\"{\n        invalid: is_invalid,\n        disabled: disabled,\n        readonly: readonly\n      }\" [attr.aria-readonly]=\"readonly ? 'true' : 'false'\">\n\n      @if (autocomplete) {\n        <!-- Select box autocomplete container -->\n\n        @if (!multiple) {\n          <input type=\"text\" class=\"gtr-autocomplete-input gtr-select-box\" tabindex=\"0\"\n                 [placeholder]=\"placeholder || ''\" [value]=\"\n              selectedValues && selectedValues.length && !multiple\n                ? (selectedValues\n                  | gtrFormatSelectedValue\n                    : options\n                    : valueKey\n                    : selectedLabel\n                    : labelKey\n                    : textLimit\n                    : multiple\n                    : selectedValueLazy\n                    : selectedValues\n                    : selectedValuesRaw\n                    : lazyLoaded)\n                : autocompleteInputValue || ''\n            \" (input)=\"handleAutocompleteInput($event)\" (click)=\"toggleSelectBox(true)\"\n                 (keyup.enter)=\"handleAddButton(true)\"\n                 [attr.data-transaction-name]=\"dataTransactionName + '-select-autocomplete'\"/>\n        } @else {\n          <!-- Multi-select selected values -->\n          @if (multipleSelectedValues && multiple) {\n\n            <div tabindex=\"0\" class=\"gtr-select-box\" [ngClass]=\"{\n                  multi: multipleSelectedValues && multipleSelectedValues.length,\n                  open: isOpen,\n              }\" [attr.aria-expanded]=\"isOpen ? 'true' : 'false'\">\n              <div class=\"gtr-selected-items\">\n                <!-- Multi selected values -->\n                @for (item of multipleSelectedValues; track i; let i = $index) {\n                  <!-- NOTE: case1 to show chips if index is smaller or equal than 1 -->\n                  @if (i <= 1) {\n                    <span class=\"gtr-multi-select-value\">\n                      {{\n                        (item\n                          | gtrFormatSelectedValue\n                          : options\n                            : valueKey\n                            : selectedLabel\n                            : labelKey\n                            : textLimit\n                            : multiple\n                            : selectedValueLazy\n                            : multipleSelectedValues\n                            : multipleSelectedValuesRaw\n                            : lazyLoaded) + \" \"\n                      }}\n                      <gtr-icon name=\"x\" [size]=\"14\" weight=\"bold\" color=\"var(--gtr-color-base-primary-60)\"\n                                (click)=\"removeOptions($event, item)\"\n                                [attr.data-transaction-name]=\"dataTransactionName + '-select-close'\"></gtr-icon>\n                    </span>\n                  }\n                }\n\n                <!-- Enter autocomplete input -->\n                <input type=\"text\" class=\"gtr-autocomplete-input\" tabindex=\"0\" [placeholder]=\"placeholder || ''\"\n                       [value]=\"autocompleteInputValue || ''\" (input)=\"handleAutocompleteInput($event)\"\n                       (click)=\"toggleSelectBox(true)\" (keyup.enter)=\"handleAddButton(true)\"\n                       [attr.data-transaction-name]=\"dataTransactionName + '-select-autocomplete'\"/>\n                <!-- Enter autocomplete input ends here -->\n\n                <!-- NOTE: case2 show total count by subtracting 2 if selected values length are greater than 2 -->\n                @if (multipleSelectedValues && multipleSelectedValues.length > 2) {\n                  <span class=\"gtr-multi-select-count\">+ {{ multipleSelectedValues.length - 2 }}</span>\n                }\n              </div>\n            </div>\n          }\n\n          <!-- Multi-select selected values ends here... -->\n        }\n        <!-- Select box autocomplete container ends here -->\n\n      } @else {\n        <!-- Select Box Input Wrapper -->\n        <div tabindex=\"0\" class=\"gtr-select-box\" [ngClass]=\"{\n                multi: multipleSelectedValues && multipleSelectedValues.length,\n                open: isOpen,\n                float: floatPlaceholder,\n            }\" [attr.aria-expanded]=\"isOpen ? 'true' : 'false'\" (click)=\"toggleSelectBox()\"\n             (keyup.enter)=\"toggleSelectBox()\"\n             [attr.data-transaction-name]=\"dataTransactionName + '-select-wrapper'\">\n          <gtr-icon name=\"chevron-down\" [size]=\"20\" color=\"var(--gtr-color-base-black-60)\"></gtr-icon>\n\n          <!-- NOTE: if don't have selected values then show placeholder -->\n          <!-- Placeholder -->\n          @if (!(multipleSelectedValues?.length || selectedValues?.length)) {\n            <ng-container *ngTemplateOutlet=\"placeholderTemplate\"></ng-container>\n          }\n          <!-- Placeholder ends here... -->\n\n          <!-- Single select selected values -->\n          @if (selectedValues?.length && !multiple) {\n            <div class=\"gtr-selected-items\">\n              <!-- float placeholder -->\n              @if (floatPlaceholder) {\n                <ng-container *ngTemplateOutlet=\"floatPlaceholderTemplate\"></ng-container>\n              }\n              <!-- float placeholder ends here... -->\n\n              <!-- Single select value -->\n              <span class=\"gtr-single-select\">{{\n                  selectedValues\n                    | gtrFormatSelectedValue\n                    : options\n                      : valueKey\n                      : selectedLabel\n                      : labelKey\n                      : textLimit\n                      : multiple\n                      : selectedValueLazy\n                      : selectedValues\n                      : selectedValuesRaw\n                      : lazyLoaded\n                }}</span>\n              <!-- Single select value ends here... -->\n\n              <!-- Clear button for single select -->\n              @if (clearable && !disabled && !readonly) {\n                <gtr-icon name=\"x\" [size]=\"16\" weight=\"bold\" color=\"var(--gtr-color-base-black-60)\" class=\"gtr-clear-icon\" (click)=\"clearValue($event)\" [attr.data-transaction-name]=\"dataTransactionName + '-select-clear'\"></gtr-icon>\n              }\n            </div>\n          }\n          <!-- Single select selected values ends here... -->\n\n          <!-- Multi-select selected values -->\n          @if (multipleSelectedValues && multiple) {\n            <div class=\"gtr-selected-items\">\n              <!-- float placeholder -->\n              @if (floatPlaceholder) {\n                <ng-container *ngTemplateOutlet=\"floatPlaceholderTemplate\"></ng-container>\n              }\n              <!-- float placeholder ends here... -->\n\n              <!-- Multi selected values -->\n              @for (item of multipleSelectedValues; track i; let i = $index) {\n                <!-- NOTE: case1 to show chips if index is smaller or equal than 1 -->\n                @if (i <= 1) {\n                  <span class=\"gtr-multi-select-value\">\n                    {{\n                      (item\n                        | gtrFormatSelectedValue\n                        : options\n                          : valueKey\n                          : selectedLabel\n                          : labelKey\n                          : textLimit\n                          : multiple\n                          : selectedValueLazy\n                          : multipleSelectedValues\n                          : multipleSelectedValuesRaw\n                          : lazyLoaded) + \" \"\n                    }}\n                    <gtr-icon name=\"x\" [size]=\"14\" weight=\"bold\" color=\"var(--gtr-color-base-primary-60)\"\n                              (click)=\"removeOptions($event, item)\"\n                              [attr.data-transaction-name]=\"dataTransactionName + '-select-remove-option'\"></gtr-icon>\n                  </span>\n                }\n              }\n\n              <!-- NOTE: case2 show total count by subtracting 2 if selected values length are greater than 2 -->\n              @if (multipleSelectedValues && multipleSelectedValues.length > 2) {\n                <span class=\"gtr-multi-select-count\">+ {{ multipleSelectedValues.length - 2 }}</span>\n              }\n            </div>\n          }\n          <!-- Multi-select selected values ends here... -->\n        </div>\n        <!-- Select Box Input Wrapper ends here... -->\n      }\n\n      <!-- Select Box options list wrapper -->\n      @if (!disabled && !readonly) {\n        <span class=\"gtr-options-wrapper\" [class.open]=\"isOpen\">\n          <!-- Search Wrapper -->\n          @if (!autocomplete && searchable) {\n            <span class=\"gtr-input-wrapper\">\n              <input type=\"text\" class=\"gtr-search-input\" [class.showLoader]=\"\n                  listLoading && listLoaderVariation === loaderVariation.SPINNER\n                \" [placeholder]=\"searchPlaceholder\" [value]=\"searchValue || ''\" (input)=\"handleSearchInput($event)\"\n                     [attr.data-transaction-name]=\"dataTransactionName + '-select-input-search'\"/>\n              <div [class.gtr-select-spinner]=\"\n                  listLoading && listLoaderVariation === loaderVariation.SPINNER\n                \"></div>\n            </span>\n          }\n          <!-- Search Wrapper ends here... -->\n\n          <!-- add-button template -->\n          @if (enableAddButton && addButtonPosition === 'top') {\n            <ng-container *ngTemplateOutlet=\"addButtonTemplate\"></ng-container>\n          }\n          <!-- add button template ends here -->\n\n          <!-- Options List Wrapper -->\n          <ul class=\"gtr-options-list\" [class.disabled]=\"hideOptions\" role=\"listbox\"\n              [attr.data-transaction-name]=\"dataTransactionName + '-select-option-list'\"\n              (scroll)=\"lazyLoadPaginationScroll()\">\n            <!-- Loader -->\n            @if (listLoading && listLoaderVariation === loaderVariation.TEXT) {\n              <li class=\"gtr-loading-text\">\n                <span>Searching...</span>\n              </li>\n            }\n            <!-- Loader ends here... -->\n\n            <!-- No Data -->\n            @if (!listLoading && !filteredOptions?.length) {\n              <li class=\"gtr-loading-text\">\n                <span>No results found</span>\n              </li>\n            }\n            <!-- No Data ends here... -->\n\n            <!-- Options list -->\n            @if ((!listLoading ||\n              (listLoading &&\n                listLoaderVariation === loaderVariation.SPINNER)) &&\n            filteredOptions?.length) {\n              @for (option of filteredOptions; track i; let i = $index) {\n                <!-- NOTE: for single select -->\n                @if (!multiple) {\n                  <li class=\"gtr-option\" [class.change-loading]=\"changeLoading\" [ngClass]=\"{\n                      selected:\n                        selectedValues &&\n                        selectedValues.includes(\n                          valueKey ? option[valueKey] : option\n                        ),\n                      hovered: autoSelect && autocomplete && i == 0\n                    }\" [attr.data-value]=\"option\" [attr.aria-selected]=\"\n                      selectedValues &&\n                      selectedValues.includes(\n                        valueKey ? option[valueKey] : option\n                      )\n                        ? 'true'\n                        : 'false'\n                    \" role=\"option\" (keyup.enter)=\"handleOptionClick(option)\" (click)=\"handleOptionClick(option)\"\n                      [attr.name]=\"name\"\n                      [attr.data-transaction-name]=\"dataTransactionName + '-select-option'\"\n                      tabindex=\"0\">\n                    <ng-container [ngTemplateOutlet]=\"optionLabelTemplate\"\n                                  [ngTemplateOutletContext]=\"{ option: option }\"></ng-container>\n                  </li>\n                } @else {\n                  <!-- NOTE: for multi select -->\n                  <li class=\"gtr-option\" [class.change-loading]=\"changeLoading\" [ngClass]=\"{\n                      selected:\n                        multipleSelectedValues &&\n                        multipleSelectedValues.includes(\n                          valueKey ? option[valueKey] : option\n                        ),\n                      hovered: autoSelect && autocomplete && i == 0\n                    }\" [attr.data-value]=\"option\" (keyup.enter)=\"handleOptionClick(option)\" [attr.aria-selected]=\"\n                      multipleSelectedValues &&\n                      multipleSelectedValues.includes(\n                        valueKey ? option[valueKey] : option\n                      )\n                        ? 'true'\n                        : 'false'\n                    \" (click)=\"handleOptionClick(option)\"\n                      [attr.name]=\"name\"\n                      [attr.data-transaction-name]=\"dataTransactionName + '-select-option'\" tabindex=\"0\" role=\"option\">\n                    <ng-container [ngTemplateOutlet]=\"optionLabelTemplate\"\n                                  [ngTemplateOutletContext]=\"{ option: option }\"></ng-container>\n                  </li>\n                }\n              }\n            }\n          </ul>\n          <!-- Options List Wrapper -->\n\n          <!-- add button  -->\n          @if (enableAddButton && addButtonPosition === 'bottom') {\n            <ng-container *ngTemplateOutlet=\"addButtonTemplate\"></ng-container>\n          }\n          <!-- add button  -->\n        </span>\n      }\n      <!-- Select Box options list wrapper -->\n    </div>\n    <!-- Select Box Container ends here -->\n\n    <!-- Error Message -->\n    @if (is_invalid && !isOnlyView) {\n      <ng-container *ngTemplateOutlet=\"errorMessageTemplate\"></ng-container>\n    }\n    <!-- Error Message ends here... -->\n  </ng-container>\n  <!-- skeleton loading ends here... -->\n</div>\n<!-- ************ Select Box Element ************ -->\n\n<!-- ************ Common Templates ************ -->\n\n<!-- Input Label Template -->\n<ng-template #inputLabelTemplate>\n  <label for=\"gtr-select\" class=\"gtr-form-element-label\" [class.gtr-only-view]=\"isOnlyView\">{{ inputLabel }}</label>\n</ng-template>\n<!-- Input Label Template ends here... -->\n\n<!-- Error Message Template -->\n<ng-template #errorMessageTemplate>\n  <div class=\"gtr-error-wrap\">\n    <ng-content select=\"[slot='custom-error']\"></ng-content>\n  </div>\n</ng-template>\n<!-- Error Message Template ends here... -->\n\n<!-- Placeholder Template -->\n<ng-template #placeholderTemplate>\n  <div class=\"gtr-selected-items\">\n    <span class=\"gtr-placeholder\" [attr.aria-placeholder]=\"placeholder\">{{\n        placeholder | gtrTrimText : textLimit\n      }}</span>\n  </div>\n</ng-template>\n<!-- Placeholder Template ends here... -->\n\n<!-- Floating Placeholder Template -->\n<ng-template #floatPlaceholderTemplate>\n  <span class=\"gtr-placeholder float\" [attr.aria-placeholder]=\"placeholder\">{{\n      placeholder | gtrTrimText : textLimit\n    }}</span>\n</ng-template>\n<!-- Floating Placeholder Template ends here... -->\n\n<!-- Option Label Template -->\n<ng-template #optionLabelTemplate let-option=\"option\">\n  <div class=\"gtr-option-custom-label\">\n    <span [ngClass]=\"{\n        bold: highlightLabel && labelKey && highlightLabel == labelKey\n      }\">{{\n        (labelKey ? option[labelKey] : option) | gtrTrimText : textLimit\n      }}</span>\n    @if (subLabel) {\n      <br/>\n      <span class=\"sub-label\" [ngClass]=\"{\n          bold: highlightLabel && subLabel && highlightLabel === subLabel\n        }\">{{\n          (subLabel ? option[subLabel] : option) | gtrTrimText : textLimit\n        }}</span>\n    }\n  </div>\n</ng-template>\n<!-- Option Label Template ends here... -->\n\n<!-- Add button template -->\n<ng-template #addButtonTemplate>\n  <div class=\"add-button-wrapper\" [class.disabled]=\"hideOptions\" tabindex=\"0\" (click)=\"handleAddButton()\"\n       (keyup.enter)=\"handleAddButton()\"\n       [attr.data-transaction-name]=\"dataTransactionName + '-select-add-button'\">\n    <span class=\"add-button\">\n      <span [innerHTML]=\"addButtonLabel\"></span>\n    </span>\n  </div>\n</ng-template>\n<!-- Add button template ends here -->","import {\n  Component,\n  EventEmitter,\n  HostListener,\n  Input,\n  OnChanges,\n  OnInit,\n  Output,\n  SimpleChanges,\n  booleanAttribute,\n} from '@angular/core';\nimport { GtrDefaultPageIndex, GtrPageSizeOptions, GtrValidatePagePipe } from '../helpers';\nimport { GtrPage, GtrPageEvent, GtrPaginationOptions } from '../helpers';\nimport { hasMobileView, usePagination } from './gtr-pagination.utils';\nimport { GtrSelectComponent } from '../../select';\nimport { GtrIconComponent } from '../../../atoms/icon';\nimport { NgTemplateOutlet } from '@angular/common';\n\n@Component({\n  selector: 'gtr-pagination',\n  templateUrl: './gtr-pagination.component.html',\n  styleUrls: ['./gtr-pagination.component.scss'],\n  imports: [GtrSelectComponent, GtrIconComponent, NgTemplateOutlet, GtrValidatePagePipe],\n})\nexport class GtrPaginationComponent implements OnInit, OnChanges {\n  /** [aria-label] have string type and its used to set the aria attribute for pagination component */\n  @Input() public options: GtrPaginationOptions = { type: 'default', hideLast: false };\n\n  /** identifier] for dom reference */\n  @Input() public identifier!: string;\n\n  /** [disabled] is type of boolean which is used to disable the pagination navigation */\n  @Input({ transform: booleanAttribute }) public disabled: boolean = false;\n\n  /** [limit] is used for the count of total items */\n  @Input() public limit!: number;\n\n  /** [pageSize] is used to set the limit of total items per page */\n  @Input() public pageSize!: number;\n\n  /** [pageSizeOptions] have number array type it is used to set the page size options */\n  @Input() public pageSizeOptions: number[] = GtrPageSizeOptions;\n\n  /** [hidePageSize] have boolean type and its used to hide/show the pagesize options default value is true */\n  @Input() public hidePageSize: boolean = false;\n\n  @Input() dataTransactionName: string = 'no-tagged';\n\n  /**\n   * [showFirstLastButtons] have boolean type and its used to hide/show the\n   * first and last navigation buttons for pagination and its default value is true\n   */\n  @Input({ transform: booleanAttribute }) public showFirstLastButtons: boolean = false;\n\n  /** [pageIndex] have number type and its used to set the current page default value is 1 */\n  @Input() public pageIndex: number = GtrDefaultPageIndex;\n\n  /** [aria-label] have string type and its used to set the aria attribute for pagination component */\n  @Input() public ariaLabel!: string;\n\n  /** Next result token used for token pagination */\n  @Input() public nextPageToken!: string | null;\n\n  /** Previous page token used for token pagination */\n  @Input() public prevPageToken!: string | null;\n\n  /** Current page token used for token pagination */\n  @Input() public currentPageToken!: string | null;\n\n  /**\n   * (pageEvent) When the user interacts with the paginator, a pageEvent will be fired that can be used to update any associated data view.\n   */\n  @Output() public readonly pageEvent: EventEmitter<GtrPageEvent> = new EventEmitter();\n\n  /**\n   * (getNumberOfPages) When the user interacts with the paginator, a pageEvent will be fired that can be used to get the total number of pages.\n   */\n  @Output() public readonly getNumberOfPages: EventEmitter<number> = new EventEmitter();\n\n  /** [totalPages] have number type and used to store the count of total pages */\n  public totalPages!: number;\n\n  /**\n   * state to manage page array\n   */\n  public pagesArray: GtrPage[] = [];\n\n  /**\n   * state to manage responsive view for mobile and desktop\n   */\n  private _isMobile: boolean = false;\n\n  public defaultPage = GtrDefaultPageIndex;\n\n  public hasBothDots: any = null; // fix this empty variable used in the html\n\n  /**\n   * Component Initialization\n   */\n  ngOnInit() {\n    this.onScreenResize();\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes['limit'] || changes['pageSize']) {\n      this.limit = changes['limit']?.currentValue || this.limit;\n\n      if (this.options?.type !== 'token') {\n        this.pageSize = changes['pageSize']?.currentValue || this.pageSize;\n        this._setTotalPages();\n      }\n    }\n  }\n\n  /**\n   * To set total pages\n   */\n  private _setTotalPages() {\n    const count = Math.ceil(this.limit / this.pageSize);\n    this.totalPages = count ?? 0;\n    this.pageIndex = 1;\n\n    const data = {\n      totalCount: this.limit,\n      pageSize: this.pageSize,\n      siblingCount: 1,\n      currentPage: this.pageIndex,\n      pageIndex: this.pageIndex,\n    };\n    const _pagesArray = usePagination(data) as GtrPage[];\n    this.pagesArray = _pagesArray?.length ? _pagesArray : [];\n    this.getNumberOfPages.emit(this.totalPages);\n  }\n\n  /** changePage method which is used to send page event to the consuming component */\n  public changeTokenPagination(token: string | null) {\n    const pageEvent: GtrPageEvent = {\n      previousPageIndex: 0,\n      pageIndex: 0,\n      pageSize: this.pageSize,\n      totalCount: 0,\n      currentPageToken: token || null,\n    };\n    this.pageEvent.emit(pageEvent);\n  }\n\n  public changePage(currentPage: GtrPage) {\n    if (typeof currentPage !== 'number') return;\n\n    this.pageIndex = currentPage;\n    const pageEvent: GtrPageEvent = {\n      previousPageIndex: currentPage > 1 ? currentPage - 1 : 1,\n      pageIndex: this.pageIndex,\n      pageSize: this.pageSize,\n      totalCount: this.limit,\n    };\n    const data = {\n      totalCount: this.limit,\n      pageSize: this.pageSize,\n      siblingCount: 1,\n      currentPage: this.pageIndex,\n      pageIndex: this.pageIndex,\n    };\n    const _pagesArray = usePagination(data) as GtrPage[];\n    this.pagesArray = _pagesArray?.length ? _pagesArray : [];\n    this.pageEvent.emit(pageEvent);\n  }\n\n  /** Change page size option */\n  public onPageSizeChange(value: number) {\n    this.pageSize = value || 10;\n    this.pageIndex = 1;\n    const pageEvent: GtrPageEvent = {\n      previousPageIndex:\n        this.options?.type === 'token' ? 0 : this.pageIndex > 1 ? this.pageIndex - 1 : 1,\n      pageIndex: this.pageIndex,\n      pageSize: this.pageSize,\n      totalCount: this.limit,\n      currentPageToken: null,\n    };\n    this.pageEvent.emit(pageEvent);\n  }\n\n  /** Listen to screen change events */\n  @HostListener('window:resize', ['$event'])\n  onScreenResize() {\n    this._isMobile = hasMobileView();\n    this.options?.type !== 'token' && this._setTotalPages();\n  }\n}\n","<div>\n  @switch (options.type) {\n    @case ('flat') {\n      <div class=\"flat\">\n        @if (!this.hidePageSize) {\n          <div class=\"gtr-pagination-ps-options-wrapper\">\n            <span>Items per Page: </span>\n            <gtr-select\n              [value]=\"pageSize\"\n              [options]=\"pageSizeOptions\"\n              [disabled]=\"disabled\"\n              (valueChanged)=\"onPageSizeChange($event)\"\n              [dataTransactionName]=\"dataTransactionName + '-pagination-page-size'\"\n            ></gtr-select>\n          </div>\n        }\n\n        <nav\n          aria-label=\"page\"\n          [attr.id]=\"identifier || 'gtr__pagination'\"\n          [attr.data-testid]=\"identifier || 'gtr__pagination'\"\n          role=\"navigation\"\n          [attr.data-transaction-name]=\"dataTransactionName + '-pagination-nav'\"\n          [attr.aria-label]=\"ariaLabel || 'gtr__pagination'\"\n        >\n          <ul class=\"gtr-pagination\"\n              [attr.data-transaction-name]=\"dataTransactionName + '-pagination-nav'\">\n            <li\n              class=\"gtr-pagination-item\"\n              [class.disabled]=\"pageIndex === 1\"\n              [attr.data-transaction-name]=\"dataTransactionName + '-pagination-first-page'\"\n              (click)=\"changePage(1)\"\n            >\n              <a class=\"gtr-pagination-link\"\n                 [attr.data-transaction-name]=\"dataTransactionName + '-pagination-first-page'\"\n                 href=\"javascript:void(0);\">First </a>\n            </li>\n            <li\n              class=\"gtr-pagination-item\"\n              [class.disabled]=\"pageIndex === 1\"\n              [attr.data-transaction-name]=\"dataTransactionName + '-pagination-previous-page'\"\n              (click)=\"changePage(pageIndex - 1)\"\n            >\n              <a class=\"gtr-pagination-link\"\n                 [attr.data-transaction-name]=\"dataTransactionName + '-pagination-previous-page'\"\n                 href=\"javascript:void(0);\">\n                <gtr-icon name=\"chevron-left\" [size]=\"20\"></gtr-icon>\n              </a>\n            </li>\n            <li\n              class=\"gtr-pagination-item\"\n              [class.disabled]=\"pageIndex === totalPages\"\n              [attr.data-transaction-name]=\"dataTransactionName + '-pagination-next-page'\"\n              (click)=\"changePage(pageIndex + 1)\"\n            >\n              <a class=\"gtr-pagination-link\"\n                 [attr.data-transaction-name]=\"dataTransactionName + '-pagination-next-page'\"\n                 href=\"javascript:void(0);\">\n                <gtr-icon name=\"chevron-right\" [size]=\"20\"></gtr-icon>\n              </a>\n            </li>\n            @if (!options.hideLast) {\n              <li\n                class=\"gtr-pagination-item\"\n                [class.disabled]=\"pageIndex === totalPages\"\n                id=\"gtr-pagination-link-last\"\n                (click)=\"changePage(totalPages)\"\n                [attr.data-transaction-name]=\"dataTransactionName + '-pagination-last-page'\"\n              >\n                <a class=\"gtr-pagination-link\"\n                   [attr.data-transaction-name]=\"dataTransactionName + '-pagination-last-page'\"\n                   href=\"javascript:void(0);\">Last </a>\n              </li>\n            }\n          </ul>\n        </nav>\n      </div>\n    }\n    <!-- token pagination -->\n    @case ('token') {\n      <div class=\"flat\">\n        <ng-container [ngTemplateOutlet]=\"tokenPagination\"></ng-container>\n      </div>\n    }\n    <!-- token pagination ends -->\n\n    @default {\n      <div>\n        @if (pageIndex !== 0 && pagesArray?.length) {\n          <div\n            class=\"gtr-pagination-wrapper\"\n            [attr.id]=\"identifier || 'gtr__pagination'\"\n            [attr.data-testid]=\"identifier || 'gtr__pagination'\"\n            role=\"navigation\"\n            [attr.data-transaction-name]=\"dataTransactionName + '-pagination-nav'\"\n            [attr.aria-label]=\"ariaLabel || 'gtr__pagination'\"\n          >\n            @if (!this.hidePageSize) {\n              <div class=\"gtr-pagination-ps-options-wrapper\">\n                <span>Items per Page: </span>\n                <gtr-select\n                  [value]=\"pageSize\"\n                  [options]=\"pageSizeOptions\"\n                  [disabled]=\"disabled\"\n                  [dataTransactionName]=\"dataTransactionName + '-pagination-page-size'\"\n                  [attr.data-transaction-name]=\"dataTransactionName + '-pagination-page-size'\"\n                  (valueChanged)=\"onPageSizeChange($event)\"\n                ></gtr-select>\n              </div>\n            }\n\n            @if (showFirstLastButtons) {\n              <button\n                tabindex=\"0\"\n                class=\"gtr-pagination-button\"\n                type=\"button\"\n                [disabled]=\"pageIndex === 1 || disabled\"\n                [attr.data-transaction-name]=\"dataTransactionName + '-pagination-first-page'\"\n                (click)=\"changePage(defaultPage)\"\n                aria-label=\"gtr__pagination-first-page\"\n              >\n                <gtr-icon name=\"chevrons-left\" [size]=\"20\"></gtr-icon>\n              </button>\n            }\n\n            <button\n              tabindex=\"0\"\n              class=\"gtr-pagination-button\"\n              type=\"button\"\n              [disabled]=\"pageIndex === 1 || disabled\"\n              [attr.data-transaction-name]=\"dataTransactionName + '-pagination-previous-page'\"\n              (click)=\"changePage(pageIndex - 1)\"\n              aria-label=\"gtr__pagination-prev-page\"\n            >\n              <gtr-icon name=\"chevron-left\" [size]=\"20\"></gtr-icon>\n            </button>\n\n            @if (pagesArray?.length) {\n              @for (page of pagesArray; track i; let i = $index) {\n                <button\n                  type=\"button\"\n                  [disabled]=\"disabled\"\n                  (click)=\"changePage(page)\"\n                  [attr.data-transaction-name]=\"dataTransactionName + '-pagination-page-' + page\"\n                  [attr.aria-label]=\"'gtr__pagination-page' + page\"\n                  [attr.aria-current]=\"page === pageIndex ? 'true' : 'false'\"\n                  class=\"gtr-pagination-button\"\n                  [class.active]=\"pageIndex === page\"\n                  tabindex=\"0\"\n                >\n                  {{ page | gtrValidatePage : \"...\" }}\n                </button>\n              }\n            }\n\n            <button\n              tabindex=\"0\"\n              class=\"gtr-pagination-button\"\n              type=\"button\"\n              [disabled]=\"pageIndex === pagesArray[pagesArray.length - 1] || disabled\"\n              [attr.data-transaction-name]=\"dataTransactionName + '-pagination-next-page'\"\n              (click)=\"changePage(pageIndex + 1)\"\n              aria-label=\"gtr__pagination-next-page\"\n            >\n              <gtr-icon name=\"chevron-right\" [size]=\"20\"></gtr-icon>\n            </button>\n\n            @if (showFirstLastButtons) {\n              <button\n                tabindex=\"0\"\n                class=\"gtr-pagination-button\"\n                type=\"button\"\n                [disabled]=\"pageIndex === pagesArray[pagesArray.length - 1] || disabled\"\n                [attr.data-transaction-name]=\"dataTransactionName + '-pagination-last-page'\"\n                (click)=\"changePage(totalPages)\"\n                aria-label=\"Last Page\"\n              >\n                <gtr-icon name=\"chevrons-right\" [size]=\"20\"></gtr-icon>\n              </button>\n            }\n          </div>\n        }\n      </div>\n    }\n  }\n</div>\n<ng-template #tokenPagination>\n  @if (!this.hidePageSize) {\n    <div class=\"gtr-pagination-ps-options-wrapper\">\n      <span>Items per Page: </span>\n      <gtr-select\n        [value]=\"pageSize\"\n        [options]=\"pageSizeOptions\"\n        [disabled]=\"disabled\"\n        (valueChanged)=\"onPageSizeChange($event)\"\n        [dataTransactionName]=\"dataTransactionName + '-pagination-page-size'\"\n        [attr.data-transaction-name]=\"dataTransactionName + '-pagination-page-size'\"\n      ></gtr-select>\n    </div>\n  }\n\n  <nav\n    aria-label=\"page\"\n    [attr.id]=\"identifier || 'gtr__pagination'\"\n    [attr.data-testid]=\"identifier || 'gtr__pagination'\"\n    role=\"navigation\"\n    [attr.aria-label]=\"ariaLabel || 'gtr__pagination'\"\n    [attr.data-transaction-name]=\"dataTransactionName + '-pagination-nav'\"\n  >\n    <ul class=\"gtr-pagination\" [attr.data-transaction-name]=\"dataTransactionName + '-pagination-nav'\">\n      <li\n        class=\"gtr-pagination-item\"\n        [class.disabled]=\"!currentPageToken\"\n        [attr.data-transaction-name]=\"dataTransactionName + '-pagination-first-page'\"\n        (click)=\"changeTokenPagination(null)\"\n      >\n        <a class=\"gtr-pagination-link\" href=\"javascript:void(0);\"\n           [attr.data-transaction-name]=\"dataTransactionName + '-pagination-first-page'\">First </a>\n      </li>\n      <li\n        class=\"gtr-pagination-item\"\n        [class.disabled]=\"!currentPageToken\"\n        [attr.data-transaction-name]=\"dataTransactionName + '-pagination-previous-page'\"\n        (click)=\"changeTokenPagination(prevPageToken)\"\n      >\n        <a class=\"gtr-pagination-link\" href=\"javascript:void(0);\"\n           [attr.data-transaction-name]=\"dataTransactionName + '-pagination-previous-page'\">\n          <gtr-icon name=\"chevron-left\" [size]=\"20\"></gtr-icon>\n        </a>\n      </li>\n      <li\n        class=\"gtr-pagination-item\"\n        [class.disabled]=\"!nextPageToken || currentPageToken === nextPageToken\"\n        [attr.data-transaction-name]=\"dataTransactionName + '-pagination-next-page'\"\n        (click)=\"changeTokenPagination(nextPageToken)\"\n      >\n        <a class=\"gtr-pagination-link\" href=\"javascript:void(0);\"\n           [attr.data-transaction-name]=\"dataTransactionName + '-pagination-next-page'\">\n          <gtr-icon name=\"chevron-right\" [size]=\"20\"></gtr-icon>\n        </a>\n      </li>\n    </ul>\n  </nav>\n</ng-template>\n","import {\n  booleanAttribute,\n  Component,\n  ElementRef,\n  EventEmitter,\n  Input,\n  Output,\n  Renderer2,\n  ViewChild,\n} from '@angular/core';\nimport { GtrIconComponent } from '../../atoms/icon';\nimport { GtrSkeletonDirective } from '../../atoms/skeleton';\n\nconst enum EStatCardDate {\n  today = 'Today',\n  last7Days = 'Last 7 days',\n  last14Days = 'Last 14 days',\n  last30Days = 'Last 30 days',\n  currentMonth = 'Current Month',\n  lastMonth = 'Last Month',\n  custom = 'Custom',\n}\n\nconst CStatCardDateList = [\n  EStatCardDate.today,\n  EStatCardDate.last7Days,\n  EStatCardDate.last14Days,\n  EStatCardDate.last30Days,\n  EStatCardDate.currentMonth,\n  EStatCardDate.lastMonth,\n];\n\n@Component({\n  selector: 'gtr-stat-card',\n  templateUrl: './gtr-stat-card.component.html',\n  styleUrls: ['./gtr-stat-card.component.scss'],\n  imports: [GtrIconComponent, GtrSkeletonDirective],\n})\nexport class GtrStatCardComponent {\n  @ViewChild('iconContainer') iconContainer?: ElementRef;\n  @ViewChild('labelContainer') labelContainer?: ElementRef;\n  @ViewChild('dateSelectWrapper') dateSelectWrapper?: ElementRef;\n\n  @Input({ required: false })\n  showSkeletonLoading: boolean = false;\n  /**\n   * Stats\n   */\n  @Input({ required: true })\n  title: string = 'Card Title';\n\n  @Input({ required: true })\n  displayValue: string | number = '';\n\n  @Input({ required: true })\n  value: string | number = '0';\n\n  @Input()\n  iconName: string = 'info-circle';\n\n  @Input({ transform: booleanAttribute })\n  isDangerCard: string | boolean = false;\n\n  /**\n   * Percentage\n   **/\n\n  @Input({ transform: booleanAttribute })\n  enabledPercentage: string | boolean = false;\n\n  @Input()\n  percentage: number = 0;\n\n  @Input({ transform: booleanAttribute })\n  isPercentageTrendUp: string | boolean = false;\n\n  @Input() statsCardId = '';\n\n  @Input() dataTransactionName: string = 'no-tagged';\n\n  /**\n   * Date Select\n   */\n  @Input({ transform: booleanAttribute })\n  enabledDateSelect: string | boolean = false;\n\n  @Input()\n  dateOptions: EStatCardDate[] | string[] = CStatCardDateList;\n\n  @Input()\n  set dateSelected(dateSelected: EStatCardDate | string) {\n    this._dateSelected = dateSelected;\n  }\n\n  get dateSelected(): EStatCardDate | string {\n    return this._dateSelected;\n  }\n\n  private _dateSelected: EStatCardDate | string = EStatCardDate.last30Days;\n\n  @Output() dateSelectedChange = new EventEmitter<EStatCardDate | string>();\n\n  @ViewChild('DateSelectOptions', { static: false })\n  dateSelectOptions?: ElementRef;\n\n  constructor(private renderer: Renderer2) {\n    document.body.addEventListener('touchstart', function () {\n      document.body.classList.add('touched');\n    });\n\n    this.renderer.listen('window', 'click', (e: Event) => {\n      /**\n       * Only run when toggleButton is not clicked\n       * If we don't check this, all clicks (even on the toggle button) gets into this\n       * section which in the result we might never see the menu open!\n       * And the menu itself is checked here, and it's where we check just outside of\n       * the menu and button the condition abbove must close the menu\n       */\n      if (\n        this.labelContainer &&\n        this.dateSelectOptions &&\n        this.dateSelectWrapper &&\n        !(this.dateSelectWrapper?.nativeElement as HTMLElement)?.contains(\n          e.target as HTMLElement,\n        ) &&\n        e.target !== this.dateSelectOptions.nativeElement &&\n        e.target !== this.labelContainer.nativeElement\n      ) {\n        if (this.dateSelectOptions?.nativeElement?.classList.contains('open')) {\n          this.dateSelectOptions?.nativeElement?.classList.remove('open');\n        }\n      }\n    });\n  }\n\n  /**\n   * Methods\n   */\n  openDateSelect() {\n    this.dateSelectOptions?.nativeElement?.classList.add('open');\n  }\n\n  closeDateSelect() {\n    this.dateSelectOptions?.nativeElement?.classList.remove('open');\n  }\n\n  dateSelectedChangeEvent(date: EStatCardDate | string) {\n    this.dateSelected = date;\n    this.dateSelectedChange.emit(date);\n    this.closeDateSelect();\n  }\n}\n","<div class=\"gtr-stats-card\" [id]=\"statsCardId\" [attr.data-testid]=\"statsCardId\"\n     [attr.data-transaction-name]=\"dataTransactionName + '-stat-card'\">\n  <div class=\"gtr-stats-card-header\">\n    <div class=\"gtr-stats-card-title-wrapper\">\n      <h3 class=\"gtr-stats-card-title\" [id]=\"statsCardId+'-title'\"\n          [attr.data-testid]=\"statsCardId+'-title'\">{{ title }}</h3>\n    </div>\n  </div>\n\n  <div class=\"gtr-stats-card-content\">\n    <div [id]=\"statsCardId+'-content-icon'\" [attr.data-testid]=\"statsCardId+'-content-icon'\"\n         class=\"gtr-stats-card-icon-wrapper gtr-stats-card-icon-{{isDangerCard ?  'danger' : 'success'}}\">\n      <gtr-icon [name]=\"iconName\" [size]=\"18\">\n      </gtr-icon>\n    </div>\n    <div class=\"gtr-stats-card-value\">\n      <ng-container *skeleton=\"showSkeletonLoading; repeat: 1; height: '20px'; width: '100px'\">\n        <h2 class=\"gtr-stats-card-value-label\">\n          <span [title]=\"displayValue\" [id]=\"statsCardId+'-content-label'\"\n                [attr.data-testid]=\"statsCardId+'-content-label'\">{{ value }}</span>\n        </h2>\n      </ng-container>\n    </div>\n  </div>\n  @if (enabledPercentage || enabledDateSelect) {\n    <div class=\"gtr-stats-card-footer\" [class.content-right]=\"!enabledDateSelect && enabledPercentage\">\n      @if (enabledDateSelect) {\n        <div class=\"gtr-stats-card-date\" [id]=\"statsCardId+'-date'\" [attr.data-testid]=\"statsCardId+'-date'\">\n\n          <div class=\"gtr-stats-card-date-select\" #dateSelectWrapper [id]=\"statsCardId+'-date-select'\"\n               [attr.data-transaction-name]=\"dataTransactionName + '-stat-card-date-select'\"\n               [attr.data-testid]=\"statsCardId+'-date-select'\" (click)=\"openDateSelect()\">\n          <span class=\"gtr-stats-card-date-select-label\" [id]=\"statsCardId+'-date-select-label'\"\n                [attr.data-transaction-name]=\"dataTransactionName + '-stat-card-date-option-label'\"\n                [attr.data-testid]=\"statsCardId+'-date-select-label'\" #labelContainer>{{ dateSelected }}</span>\n            <gtr-icon #iconContainer class=\"gtr-stats-card-date-select-icon\" name=\"chevron-down\" [size]=\"12\"></gtr-icon>\n          </div>\n\n          <div class=\"gtr-stats-card-date-options-wrapper\" [id]=\"statsCardId+'-date-options-wrapper'\"\n               [attr.data-testid]=\"statsCardId+'-date-options-wrapper'\" tabindex=\"0\" #DateSelectOptions>\n            @for (date of dateOptions; track $index) {\n              <span class=\"gtr-stats-card-date-options-value\" [id]=\"statsCardId+'-date-options-value'\"\n                    [attr.data-testid]=\"statsCardId+'-date-options-value'\" (click)=\"dateSelectedChangeEvent(date)\"\n                    [attr.data-transaction-name]=\"dataTransactionName + '-stat-card-date-option'\"\n                    [class.active]=\"dateSelected === date\">{{ date }}\n            </span>\n            }\n          </div>\n\n        </div>\n      }\n\n      @if (enabledPercentage) {\n        <span class=\"gtr-stats-card-percentage\" [id]=\"statsCardId+'-percentage'\"\n              [attr.data-testid]=\"statsCardId+'-percentage'\">\n        <ng-container *skeleton=\"showSkeletonLoading; repeat: 1; height: '14px'; width: '48px'\">\n          <span class=\"gtr-stats-card-percentage-label\" [id]=\"statsCardId+'-percentage-label'\"\n                [attr.data-testid]=\"statsCardId+'-percentage-label'\">\n            {{ percentage }}%\n          </span>\n          <gtr-icon [id]=\"statsCardId+'-percentage-icon'\" [attr.data-testid]=\"statsCardId+'-percentage-icon'\"\n                    [name]=\"isPercentageTrendUp ?\n                  'trending-up' :\n                  'trending-down'\" [color]=\"isPercentageTrendUp ?\n                  'var(--gtr-color-base-success-base)' :\n                  'var(--gtr-color-base-danger-base)'\" [size]=\"14\"></gtr-icon>\n        </ng-container>\n      </span>\n      }\n    </div>\n  }\n</div>\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { TCOLUMN, THEAD } from './gtr-table.interface';\n@Pipe({ name: 'gtrFetchAttribute', standalone: true })\nexport class GtrFetchAttributePipe implements PipeTransform {\n  constructor() {}\n  transform(column: TCOLUMN | any, attribute: string, index: number, data: THEAD[] | any[]): any {\n    if (column?.[attribute]) {\n      return column[attribute];\n    }\n\n    if (data?.[index]?.[attribute]) {\n      return data[index][attribute];\n    }\n\n    return '';\n  }\n}\n","import {\n  ChangeDetectorRef,\n  ComponentRef,\n  Directive,\n  EmbeddedViewRef,\n  EventEmitter,\n  Input,\n  OnChanges,\n  OnDestroy,\n  Output,\n  QueryList,\n  SimpleChanges,\n  Type,\n  ViewContainerRef,\n} from '@angular/core';\nimport { Subject, Subscription, fromEvent, takeUntil } from 'rxjs';\nimport { DynamicHostDirective } from './dynamic-host.directive';\n\n@Directive({\n  selector: '[appDynamicComponent]',\n  standalone: true,\n})\nexport class DynamicComponentDirective implements OnChanges, OnDestroy {\n  @Input('appDynamicComponent') component: any;\n  @Input() isDestroy!: boolean;\n\n  @Output() eventEmitter: EventEmitter<any> = new EventEmitter();\n\n  closed$ = new Subject<void>();\n  componentRef!: ComponentRef<any>;\n  changesSubscription: Subscription | null = null;\n\n  constructor() {}\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (!this.component?.hosts || !(this.component.hosts instanceof QueryList)) {\n      return;\n    }\n\n    // subscribe once\n    if (!this.changesSubscription) {\n      this.changesSubscription = this.component.hosts.changes.subscribe(() => {\n        this.renderMatchingHost();\n      });\n    }\n\n    // initial render / rerender when input changes\n    this.renderMatchingHost();\n  }\n\n  private renderMatchingHost(): void {\n    const hostsArray: DynamicHostDirective[] = this.component.hosts.toArray();\n\n    const host = hostsArray.find(\n      (h: DynamicHostDirective) =>\n        h.rowIndex === this.component.rowIndex && h.colIndex === this.component.colIndex,\n    );\n\n    if (!host) {\n      console.warn(\n        `No matching host found for rowIndex=${this.component?.rowIndex}, colIndex=${this.component?.colIndex}`,\n      );\n      return;\n    }\n\n    // only render THIS cell's component\n    if (!host.viewContainerRef.length) {\n      this.loadComponents(\n        host.viewContainerRef,\n        host.rowIndex,\n        host.properties,\n        host.events,\n        host.text,\n      );\n    } else {\n      // If you want rerender on changes, keep this\n      this.loadComponents(\n        host.viewContainerRef,\n        host.rowIndex,\n        host.properties,\n        host.events,\n        host.text,\n      );\n    }\n  }\n\n  ngOnDestroy(): void {\n    this.closed$.next();\n    this.closed$.complete();\n\n    if (this.changesSubscription) {\n      this.changesSubscription.unsubscribe();\n    }\n\n    if (this.componentRef) {\n      this.componentRef.destroy();\n    }\n  }\n\n  loadComponents(\n    ref: ViewContainerRef,\n    rowIndex: number,\n    properties: any,\n    events: any,\n    text: string,\n  ) {\n    if (!ref) {\n      console.error('ViewContainerRef is undefined.');\n      return;\n    }\n\n    ref.clear();\n\n    const { name } = this.component.componentData;\n    const componentType: Type<any> = name;\n\n    // Create dynamic component\n    this.componentRef = this.createDynamicComponent<any>(componentType, ref);\n\n    if (text) {\n      const nativeElement = (this.componentRef.hostView as EmbeddedViewRef<any>)\n        .rootNodes[0] as HTMLElement;\n      nativeElement.innerText = text;\n    }\n\n    // Set up event bindings\n    if (events) {\n      this.detectChanges(this.componentRef, [...events], rowIndex);\n    }\n\n    if (properties) {\n      // clone to avoid shared reference issues\n      const clonedProperties = structuredClone\n        ? structuredClone(properties)\n        : JSON.parse(JSON.stringify(properties));\n\n      this.updateInstance(clonedProperties);\n    }\n\n    // Trigger CD\n    const changeDetector = this.componentRef.injector.get(ChangeDetectorRef);\n    changeDetector.detectChanges();\n  }\n\n  public createDynamicComponent<T>(component: Type<T>, viewRef: ViewContainerRef): ComponentRef<T> {\n    if (!viewRef) {\n      throw new Error('Container reference is undefined');\n    }\n    viewRef.clear();\n    return viewRef.createComponent(component);\n  }\n\n  updateInstance(instances: Array<object>) {\n    instances.forEach((item: any) => {\n      Object.keys(item).forEach((key) => {\n        this.componentRef.instance[key] = item[key];\n      });\n    });\n  }\n\n  detectChanges(ref: any, events: any, rowIndex: number) {\n    const currentRowIndex = rowIndex;\n\n    events.forEach((event: any) => {\n      if (ref.instance[event]) {\n        ref.instance[event].pipe(takeUntil(this.closed$)).subscribe((emittedEvent: any) => {\n          this.eventEmitter.emit({\n            value: emittedEvent,\n            type: 'event',\n            rowId: currentRowIndex,\n          });\n        });\n      }\n    });\n\n    fromEvent(ref.location.nativeElement, 'click')\n      .pipe(takeUntil(this.closed$))\n      .subscribe((event: any) => this.clickHandler(event));\n  }\n\n  clickHandler(event?: any) {\n    this.eventEmitter.emit({ value: event, type: 'click' });\n  }\n\n  eventHandler(event?: any) {\n    this.eventEmitter.emit({ value: event, type: 'event' });\n  }\n\n  destroyComponent() {\n    this.closed$.next();\n    if (this.componentRef) {\n      this.componentRef.destroy();\n    }\n  }\n}\n","import { Directive, Input, ViewContainerRef } from '@angular/core';\n\n@Directive({\n  selector: '[appDynamicHost]',\n  exportAs: 'appDynamicHost',\n  standalone: true,\n})\nexport class DynamicHostDirective {\n  @Input() rowIndex!: number; // Add rowIndex as an input property\n  @Input() properties!: any; // Add properties as an input property\n  @Input() events!: any; // Add events as an input property\n  @Input() text!: any; // Add text as an input property\n  @Input() colIndex!: number; // ✅ Add column index as an input property\n\n  constructor(public viewContainerRef: ViewContainerRef) {}\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n  AfterViewChecked,\n  ChangeDetectorRef,\n  Component,\n  EventEmitter,\n  HostListener,\n  Input,\n  OnDestroy,\n  Output,\n  QueryList,\n  ViewChildren,\n  ViewEncapsulation,\n  forwardRef,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { TCOLUMN, THEAD, TROW } from '../gtr-table.interface';\nimport { GtrFetchAttributePipe } from '../gtr-fetch-attribute.pipe';\nimport { GtrBadgeComponent } from '../../../atoms/badge';\nimport { GtrSkeletonDirective } from '../../../atoms/skeleton';\nimport { GtrCheckboxComponent } from '../../checkbox';\nimport { GtrPopoverComponent } from '../../../atoms/popover';\nimport { RouterModule } from '@angular/router';\nimport { DynamicComponentDirective } from '../dynamic-component.directive';\nimport { DynamicHostDirective } from '../dynamic-host.directive';\n@Component({\n  selector: 'gtr-table-responsive',\n  templateUrl: './gtr-table-responsive.component.html',\n  styleUrls: ['./gtr-table-responsive.component.scss'],\n  exportAs: 'gtrTableResponsive',\n  encapsulation: ViewEncapsulation.None,\n  imports: [\n    NgTemplateOutlet,\n    GtrFetchAttributePipe,\n    GtrBadgeComponent,\n    GtrSkeletonDirective,\n    GtrCheckboxComponent,\n    GtrPopoverComponent,\n    RouterModule,\n    DynamicComponentDirective,\n    DynamicHostDirective,\n  ],\n  providers: [\n    GtrFetchAttributePipe,\n    GtrSkeletonDirective,\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => GtrTableResponsiveComponent),\n      multi: true,\n    },\n  ],\n})\nexport class GtrTableResponsiveComponent implements OnDestroy, AfterViewChecked {\n  @ViewChildren(DynamicHostDirective) dynamicHosts!: QueryList<DynamicHostDirective>;\n  @Input() isLoading: boolean = false;\n  appDynamicHost: any;\n\n  constructor(\n    private cdRef: ChangeDetectorRef,\n    private attributesPipe: GtrFetchAttributePipe,\n  ) {}\n\n  /**\n   * Set the hide/show state of checbox.\n   * @default 'boolean'\n   * @type CheckBox State\n   */\n  @Input() enableSelection: boolean = true;\n\n  /**\n   * Table columns\n   */\n  @Input() columns: THEAD[] = [];\n\n  /**\n   * Table data\n   */\n  @Input() data: TROW[] = [];\n\n  /**\n   * Table data\n   */\n  @Input() tableResponsiveId = '';\n\n  @Input() dataTransactionName: string = 'no-tagged';\n\n  /**\n   * The selection changed eventemitter\n   */\n  @Output() onSelection: EventEmitter<any> = new EventEmitter<{\n    selectedRows: any;\n    lastSelected?: any;\n    all: boolean;\n  }>();\n\n  /**\n   * Action eventemitter\n   */\n  @Output() onAction: EventEmitter<any> = new EventEmitter<any>();\n\n  /**\n   * Component Event eventemitter\n   */\n  @Output() handleEvent: EventEmitter<any> = new EventEmitter();\n\n  /**\n   * Sorting eventemitter\n   */\n  @Output() onSort: EventEmitter<any> = new EventEmitter();\n\n  /**\n   * To check screen size\n   */\n  @HostListener('window:resize', ['$event'])\n  onResize(event: { target: { innerWidth: any } }) {\n    event.target.innerWidth;\n  }\n\n  ngAfterViewChecked(): void {\n    this.cdRef.detectChanges();\n  }\n\n  fetchSelection() {\n    return this.data.every((x: any) => x.isSelected);\n  }\n\n  /**\n   * The method is used to emit Select All state\n   */\n  selectAll(event: any) {\n    this.data.map((x: any) => (x.isSelected = event.checked));\n    this.onSelection.emit({\n      all: event.checked,\n      selectedRows: this.data.filter((x: any) => x.isSelected),\n    });\n  }\n\n  /**\n   * The method is used to emit selected rows\n   */\n  selectionDone(event: any, item: any) {\n    item['isSelected'] = event.checked;\n    const dataToEmit: any = {\n      all: false,\n      row: item,\n      selectedRows: this.data.filter((x: any) => x.isSelected),\n    };\n    if (event.checked) {\n      dataToEmit['lastSelected'] = item;\n    }\n    this.onSelection.emit(dataToEmit);\n  }\n\n  /**\n   * The method is used to emit action\n   */\n  public actionDone(value: string, row: any, action: any) {\n    action.value = value;\n    this.onAction.emit({ id: row.id, action });\n  }\n\n  fetchEvent(e: any) {\n    this.handleEvent.emit(e);\n  }\n\n  onColumnClick(rowId: any, column: TCOLUMN) {\n    this.onAction.emit({ action: { name: 'text' }, id: rowId, column });\n  }\n\n  getActions(columns: TCOLUMN[] | undefined) {\n    return columns?.find((x) => x.actions);\n  }\n\n  /**\n   * The method is used to check show/hidden state of row\n   */\n  checkRowHiddenState(row: any, column: any, expandAttributes: any, i: number) {\n    if (!expandAttributes) {\n      return;\n    }\n    const includedColumns = row.columnsData.some((x: { hide: any }) => !x.hide);\n    if (\n      this.attributesPipe.transform(column, 'priority', i, this.columns) === 'HIGH' ||\n      (Object.keys(expandAttributes).length && expandAttributes.isExpanded) ||\n      !Object.keys(expandAttributes).length ||\n      (Object.keys(expandAttributes).length &&\n        includedColumns.length - 1 < expandAttributes.expandAfter)\n    ) {\n      return true;\n    }\n\n    return false;\n  }\n\n  /**\n   * The method is used to toggle show/hide state of row\n   */\n  expandRow(row: any) {\n    if (Object.keys(row.expand).length) {\n      row.expand.isExpanded = !row.expand.isExpanded;\n    }\n  }\n\n  ngOnDestroy(): void {}\n}\n","@if (data.length) {\n<div class='table-responsive-wrapper' [id]=\"tableResponsiveId\" [attr.data-testid]=\"tableResponsiveId\"\n  [attr.data-transaction-name]=\"dataTransactionName\">\n\n  @if (enableSelection) {\n  <div class='table-selection'>\n    <gtr-checkbox label=\"Select All\" [id]=\"tableResponsiveId+'-row-select-all'\"\n      [attr.data-transaction-name]=\"dataTransactionName+'-row-select-all'\"\n      [attr.data-testid]=\"tableResponsiveId+'-row-select-all'\" [checked]=\"fetchSelection()\"\n      (selectionChanged)=\"this.selectAll($event)\" />\n  </div>\n  }\n  @for (row of data; track rowIndex; let rowIndex = $index) {\n  <div class='table-responsive-wrapper-container'>\n    <div class='table-responsive-menu'>\n\n      @if (enableSelection) {\n      <div class='table-responsive-menu-item'>\n        <ng-container *skeleton=\"isLoading;\n          repeat: 1;\n          className: '';\n          height: '20px';\n          width: '20px'\">\n          <ng-container [ngTemplateOutletContext]=\"{row: row, index: rowIndex}\"\n            [ngTemplateOutlet]=\"gtrCheckbox\"></ng-container>\n        </ng-container>\n      </div>\n      }\n\n      @if (getActions(row?.columnsData)?.actions) {\n      <div class=\"table-responsive-menu-item\" [class.full-width]=\"!enableSelection\">\n        <ng-container [ngTemplateOutletContext]=\"{row: row, index: rowIndex}\"\n          [ngTemplateOutlet]=\"popover\"></ng-container>\n      </div>\n      }\n    </div>\n\n    <ng-container [ngTemplateOutlet]=\"renderRow\" [ngTemplateOutletContext]=\"{row:row, index: rowIndex}\"></ng-container>\n    <ng-container [ngTemplateOutlet]=\"expandIcon\" [ngTemplateOutletContext]=\"{expandAttributes: row}\"></ng-container>\n  </div>\n  }\n</div>\n} @else {\n<ng-container *ngTemplateOutlet=\"other\"></ng-container>\n}\n<ng-template #renderRow let-row=\"row\" let-i=\"index\">\n  @for (column of row.columnsData; track colIndex; let colIndex = $index) {\n  @if ((column | gtrFetchAttribute : 'type' : colIndex : columns) !== 'actions' && checkRowHiddenState(row, column,\n  row.expand, colIndex)) {\n  <div class='table-responsive-container'>\n\n    <div class='table-responsive-item table-label' [class.hide]=\"column.hide\">\n      @switch (column | gtrFetchAttribute : 'headingType' : colIndex : columns) {\n      @case ('innerHTML') {\n      <span [innerHTML]=\"columns[colIndex].label\"></span>\n      }\n      @default {\n      {{ columns[colIndex].label }}\n      }\n      }\n    </div>\n\n    <div class='table-responsive-item' [class.hide]=\"column.hide\">\n      @switch (column | gtrFetchAttribute : 'type' : colIndex : columns) {\n      @case ('status') {\n      <div [id]=\"tableResponsiveId+'-col-status-'+i+'-'+colIndex\" class=\"col-status col-sm-status\"\n        [attr.data-testid]=\"tableResponsiveId+'-col-status-'+i+'-'+colIndex\">\n        <ng-container\n          *skeleton=\"isLoading;\n              repeat:(((column | gtrFetchAttribute : 'skeletonConfigs' : colIndex : columns) && ((column | gtrFetchAttribute : 'skeletonConfigs' : colIndex : columns).responsiveTable) && (column | gtrFetchAttribute : 'skeletonConfigs' : colIndex : columns).responsiveTable.repeat) || 1);\n              className: (((column | gtrFetchAttribute : 'skeletonConfigs' : colIndex : columns) && ((column | gtrFetchAttribute : 'skeletonConfigs' : colIndex : columns).responsiveTable) && (column | gtrFetchAttribute : 'skeletonConfigs' : colIndex : columns).responsiveTable.className) || 'skeleton-margin-bottom');\n              height: (((column | gtrFetchAttribute : 'skeletonConfigs' : colIndex : columns) && ((column | gtrFetchAttribute : 'skeletonConfigs' : colIndex : columns).responsiveTable) && (column | gtrFetchAttribute : 'skeletonConfigs' : colIndex : columns).responsiveTable.height) || '20px');\n              width: (((column | gtrFetchAttribute : 'skeletonConfigs' : colIndex : columns) && ((column | gtrFetchAttribute : 'skeletonConfigs' : colIndex : columns).responsiveTable) && (column | gtrFetchAttribute : 'skeletonConfigs' : colIndex : columns).responsiveTable.width) || '100%')\">\n          <ng-container [ngTemplateOutlet]=\"statusColumn\" [ngTemplateOutletContext]=\"{column:column, index: colIndex}\">\n          </ng-container>\n        </ng-container>\n      </div>\n      }\n      @case ('innerHTML') {\n      <div [id]=\"tableResponsiveId+'-col-innerHTML-'+i+'-'+colIndex\" class=\"col-innerHtml col-sm-innerHtml\"\n        [attr.data-testid]=\"tableResponsiveId+'-col-innerHTML-'+i+'-'+colIndex\">\n        <ng-container\n          *skeleton=\"isLoading;\n              repeat:(((column | gtrFetchAttribute : 'skeletonConfigs' : colIndex : columns) && ((column | gtrFetchAttribute : 'skeletonConfigs' : colIndex : columns).responsiveTable) && (column | gtrFetchAttribute : 'skeletonConfigs' : colIndex : columns).responsiveTable.repeat) || 1);\n              className: (((column | gtrFetchAttribute : 'skeletonConfigs' : colIndex : columns) && ((column | gtrFetchAttribute : 'skeletonConfigs' : colIndex : columns).responsiveTable) && (column | gtrFetchAttribute : 'skeletonConfigs' : colIndex : columns).responsiveTable.className) || 'skeleton-margin-bottom');\n              height: (((column | gtrFetchAttribute : 'skeletonConfigs' : colIndex : columns) && ((column | gtrFetchAttribute : 'skeletonConfigs' : colIndex : columns).responsiveTable) && (column | gtrFetchAttribute : 'skeletonConfigs' : colIndex : columns).responsiveTable.height) || '20px');\n              width: (((column | gtrFetchAttribute : 'skeletonConfigs' : colIndex : columns) && ((column | gtrFetchAttribute : 'skeletonConfigs' : colIndex : columns).responsiveTable) && (column | gtrFetchAttribute : 'skeletonConfigs' : colIndex : columns).responsiveTable.width) || '100%')\">\n          <ng-container [ngTemplateOutlet]=\"innerHTMLColumn\" [ngTemplateOutletContext]=\"{data: column.value}\">\n          </ng-container>\n        </ng-container>\n      </div>\n      }\n      @case ('link') {\n      <div class=\"col-link col-sm-link\">\n        <ng-container\n          *skeleton=\"isLoading;\n              repeat:(((column | gtrFetchAttribute : 'skeletonConfigs' : colIndex : columns) && ((column | gtrFetchAttribute : 'skeletonConfigs' : colIndex : columns).mainTable) && (column | gtrFetchAttribute : 'skeletonConfigs' : colIndex : columns).mainTable.repeat) || 1);\n              className: (((column | gtrFetchAttribute : 'skeletonConfigs' : colIndex : columns) && ((column | gtrFetchAttribute : 'skeletonConfigs' : colIndex : columns).mainTable) && (column | gtrFetchAttribute : 'skeletonConfigs' : colIndex : columns).mainTable.className) || 'skeleton-margin-bottom');\n              height: (((column | gtrFetchAttribute : 'skeletonConfigs' : colIndex : columns) && ((column | gtrFetchAttribute : 'skeletonConfigs' : colIndex : columns).mainTable) && (column | gtrFetchAttribute : 'skeletonConfigs' : colIndex : columns).mainTable.height) || '20px');\n              width: (((column | gtrFetchAttribute : 'skeletonConfigs' : colIndex : columns) && ((column | gtrFetchAttribute : 'skeletonConfigs' : colIndex : columns).mainTable) && (column | gtrFetchAttribute : 'skeletonConfigs' : colIndex : columns).mainTable.width) || '100%')\">\n          <ng-container [ngTemplateOutlet]=\"linkColumn\"\n            [ngTemplateOutletContext]=\"{data: column, index: colIndex, row: row}\">\n          </ng-container>\n        </ng-container>\n      </div>\n      }\n      @case ('component') {\n      <div [id]=\"tableResponsiveId+'-col-component-'+i+'-'+colIndex\" class=\"col-component col-sm-component\"\n        [attr.data-testid]=\"tableResponsiveId+'-col-component-'+i+'-'+colIndex\">\n        <ng-container\n          *skeleton=\"isLoading;\n              repeat:(((column | gtrFetchAttribute : 'skeletonConfigs' : colIndex : columns) && ((column | gtrFetchAttribute : 'skeletonConfigs' : colIndex : columns).responsiveTable) && (column | gtrFetchAttribute : 'skeletonConfigs' : colIndex : columns).responsiveTable.repeat) || 1);\n              className: (((column | gtrFetchAttribute : 'skeletonConfigs' : colIndex : columns) && ((column | gtrFetchAttribute : 'skeletonConfigs' : colIndex : columns).responsiveTable) && (column | gtrFetchAttribute : 'skeletonConfigs' : colIndex : columns).responsiveTable.className) || 'skeleton-margin-bottom');\n              height: (((column | gtrFetchAttribute : 'skeletonConfigs' : colIndex : columns) && ((column | gtrFetchAttribute : 'skeletonConfigs' : colIndex : columns).responsiveTable) && (column | gtrFetchAttribute : 'skeletonConfigs' : colIndex : columns).responsiveTable.height) || '20px');\n              width: (((column | gtrFetchAttribute : 'skeletonConfigs' : colIndex : columns) && ((column | gtrFetchAttribute : 'skeletonConfigs' : colIndex : columns).responsiveTable) && (column | gtrFetchAttribute : 'skeletonConfigs' : colIndex : columns).responsiveTable.width) || '100%')\">\n          <ng-template [appDynamicHost] #vc=\"appDynamicHost\" [rowIndex]=\"i\" [properties]=\"column?.value?.properties\"\n            [events]=\"column?.value?.events\" [text]=\"column?.value?.text\"></ng-template>\n          <ng-container [appDynamicComponent]=\"{componentData:\n                 { name: column?.value?.name },\n                rowIndex: i,\n                hosts: dynamicHosts}\" (eventEmitter)=\"fetchEvent($event)\"></ng-container>\n        </ng-container>\n      </div>\n      }\n      @default {\n      <div [id]=\"tableResponsiveId+'-col-string-'+i+'-'+colIndex\" class=\"col-default col-sm-default\"\n        [attr.data-testid]=\"tableResponsiveId+'-col-string-'+i+'-'+colIndex\">\n        <ng-container\n          *skeleton=\"isLoading;\n              repeat:(((column | gtrFetchAttribute : 'skeletonConfigs' : colIndex : columns) && ((column | gtrFetchAttribute : 'skeletonConfigs' : colIndex : columns).responsiveTable) && (column | gtrFetchAttribute : 'skeletonConfigs' : colIndex : columns).responsiveTable.repeat) || 1);\n              className: (((column | gtrFetchAttribute : 'skeletonConfigs' : colIndex : columns) && ((column | gtrFetchAttribute : 'skeletonConfigs' : colIndex : columns).responsiveTable) && (column | gtrFetchAttribute : 'skeletonConfigs' : colIndex : columns).responsiveTable.className) || 'skeleton-margin-bottom');\n              height: (((column | gtrFetchAttribute : 'skeletonConfigs' : colIndex : columns) && ((column | gtrFetchAttribute : 'skeletonConfigs' : colIndex : columns).responsiveTable) && (column | gtrFetchAttribute : 'skeletonConfigs' : colIndex : columns).responsiveTable.height) || '20px');\n              width: (((column | gtrFetchAttribute : 'skeletonConfigs' : colIndex : columns) && ((column | gtrFetchAttribute : 'skeletonConfigs' : colIndex : columns).responsiveTable) && (column | gtrFetchAttribute : 'skeletonConfigs' : colIndex : columns).responsiveTable.width) || '100%')\">\n          <ng-container [ngTemplateOutlet]=\"stringColumn\" [ngTemplateOutletContext]=\"{column:column, index: colIndex}\">\n          </ng-container>\n        </ng-container>\n      </div>\n      }\n      }\n    </div>\n  </div>\n  }\n  }\n</ng-template>\n\n<ng-template #stringColumn let-column=\"column\" let-i=\"index\">\n  @switch (column | gtrFetchAttribute : 'wrap' : i : columns) {\n  @case ('TRUNCATE') {\n  <div title={{column?.value}}>\n    {{ column.value?.length > 30 ? (column.value?.slice(0, 30) + '....') : column?.value }}\n  </div>\n  }\n  @case ('WRAP') {\n  <div>\n    <span class='word-wrap' title={{column?.value}}> {{ column?.value }} </span>\n  </div>\n  }\n  @default {\n  <div>{{ column?.value }}</div>\n  }\n  }\n</ng-template>\n\n<ng-template #linkColumn let-column=\"data\" let-i=\"index\" let-row=\"row\">\n  @switch (column.value?.type) {\n  @case ('external') {\n  <div title={{column?.value?.text}}>\n    @switch (column | gtrFetchAttribute : 'wrap' : i : columns) {\n    @case ('TRUNCATE') {\n    <div title={{column?.value?.text}}>\n      <a class=\"link\" [style.color]=\"column.value?.color\" [class.disabled]=\"column.value?.disabled\"\n        [attr.data-transaction-name]=\"dataTransactionName+'--col-link'\" [href]=\"column?.value?.link\"\n        [target]=\"column?.value?.target || '_blank'\">{{\n        column?.value?.text?.length > 30\n        ? (column?.value?.text?.slice(0, 30) + '....') : column?.value?.text\n        }}</a>\n    </div>\n    }\n    @case ('WRAP') {\n    <div>\n      <a [style.color]=\"column.value?.color\" [class.disabled]=\"column.value?.disabled\" [href]=\"column.value?.link\"\n        [attr.data-transaction-name]=\"dataTransactionName+'--col-link'\" class=\"link wrap\"\n        [target]=\"column?.value?.target || '_blank'\">{{ column?.value?.text }}</a>\n    </div>\n    }\n    @default {\n    <div>\n      <a class=\"link\" [style.color]=\"column.value?.color\" [class.disabled]=\"column.value?.disabled\"\n        [attr.data-transaction-name]=\"dataTransactionName+'--col-link'\" [href]=\"column.value?.link\"\n        [target]=\"column?.value?.target || '_blank'\">{{ column?.value?.text }}</a>\n    </div>\n    }\n    }\n  </div>\n  }\n  @case ('custom') {\n  <div title={{column?.value?.text}}>\n    <a class=\"link\" [style.color]=\"column.value?.color\" [class.disabled]=\"column.value?.disabled\"\n      [attr.data-transaction-name]=\"dataTransactionName+'--col-link'\" (click)=\"this.onColumnClick(row['id'], column)\">{{\n      column?.value?.text }}</a>\n  </div>\n  }\n  @default {\n  <div>\n    @switch (column | gtrFetchAttribute : 'wrap' : i : columns) {\n    @case ('TRUNCATE') {\n    <div title={{column?.value?.text}}>\n      <a class=\"link\" [style.color]=\"column.value?.color\" [class.disabled]=\"column.value?.disabled\"\n        [attr.data-transaction-name]=\"dataTransactionName+'--col-link'\" [routerLink]=\"column?.value?.link\">{{\n        column?.value?.text?.length > 30 ? (column?.value?.text?.slice(0, 30) +\n        '....') : column?.value?.text\n        }}</a>\n    </div>\n    }\n    @case ('WRAP') {\n    <div>\n      <a [style.color]=\"column.value?.color\" [class.disabled]=\"column.value?.disabled\"\n        [attr.data-transaction-name]=\"dataTransactionName+'--col-link'\" [routerLink]=\"column.value?.link\"\n        class=\"link wrap\">{{ column?.value?.text }}</a>\n    </div>\n    }\n    @default {\n    <div>\n      <a class=\"link\" [style.color]=\"column.value?.color\" [class.disabled]=\"column.value?.disabled\"\n        [attr.data-transaction-name]=\"dataTransactionName+'--col-link'\" routerLink=\"{{column.value?.link}}\">{{\n        column?.value?.text }}</a>\n    </div>\n    }\n    }\n  </div>\n  }\n  }\n</ng-template>\n\n<ng-template #statusColumn let-column=\"column\" let-i=\"index\">\n  <gtr-badge type=\"pill\" [color]=\"column | gtrFetchAttribute : 'color' : i : columns\"\n    [attr.data-transaction-name]=\"dataTransactionName+'--col-status-badge-'+i\"\n    [dataTransactionName]=\"dataTransactionName+'--col-status-badge-'+i\">{{column?.value}}</gtr-badge>\n</ng-template>\n\n<ng-template #innerHTMLColumn let-data=\"data\">\n  <div class=\"wrap\" [innerHTML]=\"data\"></div>\n</ng-template>\n\n<ng-template #expandIcon let-expandAttributes=\"expandAttributes\">\n  @if (expandAttributes && expandAttributes.expand) {\n  <div class=\"expanded-arrow-icon\" [attr.data-transaction-name]=\"dataTransactionName+'-expand'\"\n    [class.expanded]=\"expandAttributes.expand.isExpanded\" (click)=\"this.expandRow(expandAttributes)\">\n    <img src=\"assets/images/arrow-down-navigate.svg\">\n  </div>\n  }\n</ng-template>\n\n<ng-template #popover let-row=\"row\" let-rowIndex=\"index\">\n  <ng-container *skeleton=\"isLoading;\n  repeat: 1;\n  className: 'sk-float-right-mr-10';\n  height: '20px';\n  width: '5px'\">\n    <gtr-popover [position]=\"'left'\" [showPositionIndicator]=\"false\" [padding]=\"10\" [moveX]=\"5\" [moveY]=\"-25\">\n      <span slot=\"gtr-popover-trigger\">\n        <svg width=\"25\" height=\"22\" viewBox=\"0 0 25 22\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n          <ellipse cx=\"12.6466\" cy=\"11.0002\" rx=\"1.02451\" ry=\"0.916667\" fill=\"black\" fill-opacity=\"0.4\" stroke=\"#00599C\"\n            stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n          <ellipse cx=\"12.6466\" cy=\"17.4167\" rx=\"1.02451\" ry=\"0.916667\" fill=\"#00599C\" stroke=\"#00599C\"\n            stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n          <ellipse cx=\"12.6466\" cy=\"4.58317\" rx=\"1.02451\" ry=\"0.916667\" fill=\"#00599C\" stroke=\"#00599C\"\n            stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n        </svg>\n      </span>\n      <div slot=\"gtr-popover-content\">\n        <div class=\"gtr-popover-content\">\n          <ul>\n            @for (action of getActions(row?.columnsData)?.actions; track actionIndex; let actionIndex = $index) {\n            <li [class.hide]=\"action.hide\"\n              [attr.data-transaction-name]=\"dataTransactionName+'-col-action-icon-'+rowIndex+'-'+actionIndex\">\n              <a [id]=\"tableResponsiveId+'-col-action-icon-'+rowIndex+'-'+actionIndex\"\n                [attr.data-testid]=\"tableResponsiveId+'-col-action-icon-'+rowIndex+'-'+actionIndex\"\n                [attr.data-transaction-name]=\"dataTransactionName+'-col-action-icon-'+rowIndex+'-'+actionIndex\"\n                (click)=\"actionDone('', row, action)\" class=\"d-flex\">{{ action.name }}</a>\n            </li>\n            }\n          </ul>\n        </div>\n      </div>\n    </gtr-popover>\n  </ng-container>\n</ng-template>\n\n<ng-template #other>\n  <div class=\"gtr-table-responsive-no-data-found mt-26\">\n    <img src=\"./assets/images/no-data.svg\">\n  </div>\n  <div class=\"gtr-table-responsive-no-data-found\">\n    No Records Found\n  </div>\n</ng-template>\n\n<ng-template #gtrCheckbox let-row=\"row\" let-colIndex=\"index\">\n  <gtr-checkbox [checked]=\"!!row?.isSelected\" [id]=\"tableResponsiveId+'-col-selection-'+colIndex\"\n    [attr.data-testid]=\"tableResponsiveId+'-col-selection-'+colIndex\"\n    [dataTransactionName]=\"dataTransactionName + '--col-selection'\"\n    [attr.data-transaction-name]=\"dataTransactionName+'--col-selection'\"\n    (selectionChanged)=\"selectionDone($event, row)\"></gtr-checkbox>\n</ng-template>\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n  AfterViewChecked,\n  ChangeDetectorRef,\n  Component,\n  EventEmitter,\n  Input,\n  OnDestroy,\n  Output,\n  QueryList,\n  ViewChildren,\n  ViewContainerRef,\n  ViewEncapsulation,\n  forwardRef,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { TCOLUMN, THEAD, TROW } from '../gtr-table.interface';\nimport { GtrFetchAttributePipe } from '../gtr-fetch-attribute.pipe';\nimport { GtrBadgeComponent } from '../../../atoms/badge';\nimport { GtrIconComponent } from '../../../atoms/icon';\nimport { GtrCheckboxComponent } from '../../checkbox';\nimport { GtrSkeletonDirective } from '../../../atoms/skeleton';\nimport { GtrButtonComponent } from '../../../atoms/button';\nimport { RouterModule } from '@angular/router';\nimport { DynamicHostDirective } from '../dynamic-host.directive';\nimport { DynamicComponentDirective } from '../dynamic-component.directive';\n@Component({\n  selector: 'gtr-table-main',\n  templateUrl: './gtr-table-main.component.html',\n  styleUrls: ['./gtr-table-main.component.scss'],\n  exportAs: 'gtrTableMain',\n  encapsulation: ViewEncapsulation.None,\n  imports: [\n    NgTemplateOutlet,\n    GtrFetchAttributePipe,\n    GtrBadgeComponent,\n    GtrIconComponent,\n    GtrCheckboxComponent,\n    GtrSkeletonDirective,\n    GtrButtonComponent,\n    RouterModule,\n    DynamicComponentDirective,\n    DynamicHostDirective,\n  ],\n  providers: [\n    GtrSkeletonDirective,\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => GtrTableMainComponent),\n      multi: true,\n    },\n  ],\n})\nexport class GtrTableMainComponent implements OnDestroy, AfterViewChecked {\n  @ViewChildren(DynamicHostDirective) dynamicHosts!: QueryList<DynamicHostDirective>;\n\n  constructor(private cdRef: ChangeDetectorRef) {}\n\n  @ViewChildren('template', { read: ViewContainerRef })\n  public templateRef!: QueryList<ViewContainerRef>;\n\n  @ViewChildren('childRows', { read: ViewContainerRef })\n  public childRowRef!: QueryList<ViewContainerRef>;\n\n  @Input() dataTransactionName: string = 'no-tagged';\n\n  /**\n   * Set the hide/show state of checbox.\n   * @default 'boolean'\n   * @type CheckBox State\n   */\n  @Input() enableSelection: boolean = true;\n  @Input() isLoading: boolean = false;\n\n  /**\n   * Table columns\n   */\n  @Input() columns: THEAD[] = [];\n\n  /**\n   * Table columns\n   */\n  @Input() tableMainId = '';\n\n  /**\n   * Table data\n   */\n  @Input() data: TROW[] = [];\n\n  /**\n   * The selection changed eventemitter\n   */\n  @Output() onSelection = new EventEmitter<{\n    lastSelected?: any;\n    selectedRows: any;\n    all: boolean;\n  }>();\n\n  /**\n   * Action eventemitter\n   */\n  @Output() onAction: EventEmitter<any> = new EventEmitter();\n\n  /**\n   * Component Event eventemitter\n   */\n  @Output() handleEvent: EventEmitter<any> = new EventEmitter();\n\n  /**\n   * Sorting eventemitter\n   */\n  @Output() onSort: EventEmitter<any> = new EventEmitter();\n\n  ngAfterViewChecked() {\n    this.cdRef.detectChanges();\n  }\n\n  onSorting(sortType: number, column: any) {\n    if (sortType === column.sorting.sort) {\n      column.sorting.sort = 0;\n    } else {\n      column.sorting.sort = sortType;\n    }\n    this.onSort.emit(column);\n  }\n\n  actionDone(event: any, rowId: any, action: any) {\n    action.value = event.target.value;\n    this.onAction.emit({ id: rowId, action });\n  }\n\n  fetchEvent(e: any) {\n    this.handleEvent.emit(e);\n  }\n\n  onColumnClick(\n    rowId: string,\n    column: TCOLUMN,\n    event: any,\n    colIndex: number,\n    eventType: string = 'click',\n  ) {\n    this.onAction.emit({ action: { name: eventType }, id: rowId, column, colIndex, event });\n  }\n\n  selectAll(event: any) {\n    this.data.map((x: any) => (x.isSelected = event.checked));\n    this.onSelection.emit({\n      all: event.checked,\n      selectedRows: this.data.filter((x: any) => x.isSelected),\n    });\n  }\n\n  fectchSelection() {\n    return this.data.every((x: any) => x.isSelected);\n  }\n\n  selectionDone(event: any, item: any) {\n    item['isSelected'] = event.checked;\n    const dataToEmit: any = {\n      all: false,\n      row: item,\n      selectedRows: this.data.filter((x: any) => x.isSelected),\n    };\n    if (event.checked) {\n      dataToEmit['lastSelected'] = item;\n    }\n    this.onSelection.emit(dataToEmit);\n  }\n\n  ngOnDestroy(): void {}\n}\n","@if (data.length) {\n  <table\n    class=\"gtr-table\"\n    [id]=\"tableMainId\"\n    [attr.data-testid]=\"tableMainId\"\n    [attr.data-transaction-name]=\"dataTransactionName\"\n  >\n    <thead [attr.data-transaction-name]=\"dataTransactionName + '--thead'\">\n      @if (enableSelection) {\n        <th>\n          <gtr-checkbox\n            [id]=\"tableMainId + '-row-select-all'\"\n            [attr.data-testid]=\"tableMainId + '-row-select-all'\"\n            [checked]=\"fectchSelection()\"\n            [attr.data-transaction-name]=\"dataTransactionName + '--row-select-all'\"\n            (selectionChanged)=\"this.selectAll($event)\"\n          />\n        </th>\n      }\n\n      @for (column of this.columns; track colIndex; let colIndex = $index) {\n        <th\n          class=\"{{ column.align }}\"\n          [class.hide]=\"column.hide\"\n          [style.min-width]=\"column.styles?.min\"\n          [attr.data-transaction-name]=\"dataTransactionName + '--column'\"\n          [style.max-width]=\"column.styles?.max\"\n        >\n          <div\n            [class.gtr-header-label]=\"column.sorting.hasSorting\"\n            [class.split-heading]=\"column.wrap === 'SPLITHEADING'\"\n          >\n            @switch (column | gtrFetchAttribute: \"headingType\" : colIndex : columns) {\n              @case (\"innerHTML\") {\n                <span [innerHTML]=\"column.label\"></span>\n              }\n              @default {\n                {{ column.label }}\n              }\n            }\n          </div>\n          @if (column.sorting.hasSorting) {\n            <span\n              class=\"gtr-header-sorting-wrapper\"\n              [attr.data-transaction-name]=\"dataTransactionName + '--col-sort'\"\n            >\n              <a\n                href=\"javascript:void(0)\"\n                class=\"gtr-sorting-arrow-up\"\n                [id]=\"tableMainId + '-col-sort-up-' + colIndex\"\n                [attr.data-testid]=\"tableMainId + '-col-sort-up-' + colIndex\"\n                [class.active]=\"column.sorting.sort === 1\"\n                [attr.data-transaction-name]=\"dataTransactionName + '--col-sort-up' + colIndex\"\n                (click)=\"$event.stopPropagation(); onSorting(1, column)\"\n              ></a>\n              <a\n                href=\"javascript:void(0)\"\n                class=\"gtr-sorting-arrow-down\"\n                [id]=\"tableMainId + '-col-sort-down-' + colIndex\"\n                [attr.data-testid]=\"tableMainId + '-col-sort-down-' + colIndex\"\n                [class.active]=\"column.sorting.sort === -1\"\n                [attr.data-transaction-name]=\"dataTransactionName + '--col-sort-down' + colIndex\"\n                (click)=\"$event.stopPropagation(); onSorting(-1, column)\"\n              ></a>\n            </span>\n          }\n        </th>\n      }\n    </thead>\n    <tbody [attr.data-transaction-name]=\"dataTransactionName + '--tbody'\">\n      @for (row of data; track rowIndex; let rowIndex = $index) {\n        <tr [attr.data-transaction-name]=\"dataTransactionName + '--row-' + rowIndex\">\n          @if (enableSelection) {\n            <td\n              [attr.data-transaction-name]=\"dataTransactionName + '--column-selection'\"\n              class=\"col-selectionSS\"\n            >\n              <ng-container\n                *skeleton=\"isLoading; repeat: 1; className: ''; height: '20px'; width: '20px'\"\n              >\n                <ng-container\n                  [ngTemplateOutletContext]=\"{ row: row }\"\n                  [ngTemplateOutlet]=\"gtrCheckbox\"\n                ></ng-container>\n              </ng-container>\n            </td>\n          }\n          @for (column of row.columnsData; track colIndex; let colIndex = $index) {\n            <td\n              (click)=\"onColumnClick(row['id'], column, $event, colIndex, 'click')\"\n              [attr.data-transaction-name]=\"dataTransactionName + '--column-' + colIndex\"\n              [class.hide]=\"column.hide\"\n              [class]=\"column | gtrFetchAttribute: 'align' : colIndex : columns\"\n              [style.color]=\"column | gtrFetchAttribute: 'color' : colIndex : columns\"\n            >\n              <div [class.gtr-data-label]=\"this.columns[colIndex].sorting.hasSorting\">\n                @switch (column | gtrFetchAttribute: \"type\" : colIndex : columns) {\n                  @case (\"status\") {\n                    <div\n                      [id]=\"tableMainId + '-col-status-' + rowIndex + '-' + colIndex\"\n                      class=\"col-status\"\n                      [attr.data-testid]=\"tableMainId + '-col-status-' + rowIndex + '-' + colIndex\"\n                    >\n                      <ng-container\n                        *skeleton=\"\n                          isLoading;\n                          repeat: ((column\n                            | gtrFetchAttribute: 'skeletonConfigs' : colIndex : columns) &&\n                            (column | gtrFetchAttribute: 'skeletonConfigs' : colIndex : columns)\n                              .mainTable &&\n                            (column | gtrFetchAttribute: 'skeletonConfigs' : colIndex : columns)\n                              .mainTable.repeat) ||\n                            1;\n                          className: ((column\n                            | gtrFetchAttribute: 'skeletonConfigs' : colIndex : columns) &&\n                            (column | gtrFetchAttribute: 'skeletonConfigs' : colIndex : columns)\n                              .mainTable &&\n                            (column | gtrFetchAttribute: 'skeletonConfigs' : colIndex : columns)\n                              .mainTable.className) ||\n                            'skeleton-margin-bottom';\n                          height: ((column\n                            | gtrFetchAttribute: 'skeletonConfigs' : colIndex : columns) &&\n                            (column | gtrFetchAttribute: 'skeletonConfigs' : colIndex : columns)\n                              .mainTable &&\n                            (column | gtrFetchAttribute: 'skeletonConfigs' : colIndex : columns)\n                              .mainTable.height) ||\n                            '20px';\n                          width: ((column\n                            | gtrFetchAttribute: 'skeletonConfigs' : colIndex : columns) &&\n                            (column | gtrFetchAttribute: 'skeletonConfigs' : colIndex : columns)\n                              .mainTable &&\n                            (column | gtrFetchAttribute: 'skeletonConfigs' : colIndex : columns)\n                              .mainTable.width) ||\n                            '100%'\n                        \"\n                      >\n                        <ng-container\n                          [ngTemplateOutlet]=\"statusColumn\"\n                          [ngTemplateOutletContext]=\"{\n                            columnAttributes: column,\n                            index: colIndex,\n                            data: column.value,\n                          }\"\n                        >\n                        </ng-container>\n                      </ng-container>\n                    </div>\n                  }\n                  @case (\"innerHTML\") {\n                    <div\n                      [id]=\"tableMainId + '-col-innerHTML-' + rowIndex + '-' + colIndex\"\n                      class=\"col-innerHtml\"\n                      [attr.data-testid]=\"\n                        tableMainId + '-col-innerHTML-' + rowIndex + '-' + colIndex\n                      \"\n                    >\n                      <ng-container\n                        *skeleton=\"\n                          isLoading;\n                          repeat: ((column\n                            | gtrFetchAttribute: 'skeletonConfigs' : colIndex : columns) &&\n                            (column | gtrFetchAttribute: 'skeletonConfigs' : colIndex : columns)\n                              .mainTable &&\n                            (column | gtrFetchAttribute: 'skeletonConfigs' : colIndex : columns)\n                              .mainTable.repeat) ||\n                            1;\n                          className: ((column\n                            | gtrFetchAttribute: 'skeletonConfigs' : colIndex : columns) &&\n                            (column | gtrFetchAttribute: 'skeletonConfigs' : colIndex : columns)\n                              .mainTable &&\n                            (column | gtrFetchAttribute: 'skeletonConfigs' : colIndex : columns)\n                              .mainTable.className) ||\n                            'skeleton-margin-bottom';\n                          height: ((column\n                            | gtrFetchAttribute: 'skeletonConfigs' : colIndex : columns) &&\n                            (column | gtrFetchAttribute: 'skeletonConfigs' : colIndex : columns)\n                              .mainTable &&\n                            (column | gtrFetchAttribute: 'skeletonConfigs' : colIndex : columns)\n                              .mainTable.height) ||\n                            '20px';\n                          width: ((column\n                            | gtrFetchAttribute: 'skeletonConfigs' : colIndex : columns) &&\n                            (column | gtrFetchAttribute: 'skeletonConfigs' : colIndex : columns)\n                              .mainTable &&\n                            (column | gtrFetchAttribute: 'skeletonConfigs' : colIndex : columns)\n                              .mainTable.width) ||\n                            '100%'\n                        \"\n                      >\n                        <ng-container\n                          [ngTemplateOutlet]=\"innerHTMLColumn\"\n                          [ngTemplateOutletContext]=\"{ data: column, index: colIndex }\"\n                        >\n                        </ng-container>\n                      </ng-container>\n                    </div>\n                  }\n                  @case (\"link\") {\n                    <div class=\"col-link\">\n                      <ng-container\n                        *skeleton=\"\n                          isLoading;\n                          repeat: ((column\n                            | gtrFetchAttribute: 'skeletonConfigs' : colIndex : columns) &&\n                            (column | gtrFetchAttribute: 'skeletonConfigs' : colIndex : columns)\n                              .mainTable &&\n                            (column | gtrFetchAttribute: 'skeletonConfigs' : colIndex : columns)\n                              .mainTable.repeat) ||\n                            1;\n                          className: ((column\n                            | gtrFetchAttribute: 'skeletonConfigs' : colIndex : columns) &&\n                            (column | gtrFetchAttribute: 'skeletonConfigs' : colIndex : columns)\n                              .mainTable &&\n                            (column | gtrFetchAttribute: 'skeletonConfigs' : colIndex : columns)\n                              .mainTable.className) ||\n                            'skeleton-margin-bottom';\n                          height: ((column\n                            | gtrFetchAttribute: 'skeletonConfigs' : colIndex : columns) &&\n                            (column | gtrFetchAttribute: 'skeletonConfigs' : colIndex : columns)\n                              .mainTable &&\n                            (column | gtrFetchAttribute: 'skeletonConfigs' : colIndex : columns)\n                              .mainTable.height) ||\n                            '20px';\n                          width: ((column\n                            | gtrFetchAttribute: 'skeletonConfigs' : colIndex : columns) &&\n                            (column | gtrFetchAttribute: 'skeletonConfigs' : colIndex : columns)\n                              .mainTable &&\n                            (column | gtrFetchAttribute: 'skeletonConfigs' : colIndex : columns)\n                              .mainTable.width) ||\n                            '100%'\n                        \"\n                      >\n                        <ng-container\n                          [ngTemplateOutlet]=\"linkColumn\"\n                          [ngTemplateOutletContext]=\"{ data: column, index: colIndex, row: row }\"\n                        >\n                        </ng-container>\n                      </ng-container>\n                    </div>\n                  }\n                  @case (\"component\") {\n                    <div\n                      class=\"col-component\"\n                      [id]=\"tableMainId + '-col-component-' + rowIndex + '-' + colIndex\"\n                      [attr.data-testid]=\"\n                        tableMainId + '-col-component-' + rowIndex + '-' + colIndex\n                      \"\n                    >\n                      <ng-container\n                        *skeleton=\"\n                          isLoading;\n                          repeat: ((column\n                            | gtrFetchAttribute: 'skeletonConfigs' : colIndex : columns) &&\n                            (column | gtrFetchAttribute: 'skeletonConfigs' : colIndex : columns)\n                              .mainTable &&\n                            (column | gtrFetchAttribute: 'skeletonConfigs' : colIndex : columns)\n                              .mainTable.repeat) ||\n                            1;\n                          className: ((column\n                            | gtrFetchAttribute: 'skeletonConfigs' : colIndex : columns) &&\n                            (column | gtrFetchAttribute: 'skeletonConfigs' : colIndex : columns)\n                              .mainTable &&\n                            (column | gtrFetchAttribute: 'skeletonConfigs' : colIndex : columns)\n                              .mainTable.className) ||\n                            'skeleton-margin-bottom';\n                          height: ((column\n                            | gtrFetchAttribute: 'skeletonConfigs' : colIndex : columns) &&\n                            (column | gtrFetchAttribute: 'skeletonConfigs' : colIndex : columns)\n                              .mainTable &&\n                            (column | gtrFetchAttribute: 'skeletonConfigs' : colIndex : columns)\n                              .mainTable.height) ||\n                            '20px';\n                          width: ((column\n                            | gtrFetchAttribute: 'skeletonConfigs' : colIndex : columns) &&\n                            (column | gtrFetchAttribute: 'skeletonConfigs' : colIndex : columns)\n                              .mainTable &&\n                            (column | gtrFetchAttribute: 'skeletonConfigs' : colIndex : columns)\n                              .mainTable.width) ||\n                            '100%'\n                        \"\n                      >\n                        <ng-template\n                          [appDynamicHost]\n                          #vc=\"appDynamicHost\"\n                          [rowIndex]=\"rowIndex\"\n                          [colIndex]=\"colIndex\"\n                          [properties]=\"column?.value?.properties\"\n                          [events]=\"column?.value?.events\"\n                          [text]=\"column?.value?.text\"\n                        ></ng-template>\n                        <ng-container\n                          [appDynamicComponent]=\"{\n                            componentData: {\n                              name: column.value.name,\n                            },\n                            rowIndex: rowIndex,\n                            colIndex: colIndex,\n                            hosts: dynamicHosts,\n                          }\"\n                          (eventEmitter)=\"fetchEvent($event)\"\n                        ></ng-container>\n                      </ng-container>\n                    </div>\n                  }\n                  @case (\"actions\") {\n                    <div\n                      class=\"overflow-auto\"\n                      class=\"col-actions\"\n                      [id]=\"tableMainId + '-col-actions-' + rowIndex + '-' + colIndex\"\n                      [attr.data-testid]=\"tableMainId + '-col-actions-' + rowIndex + '-' + colIndex\"\n                      [attr.data-transaction-name]=\"\n                        dataTransactionName + '-col-actions-' + rowIndex + '-' + colIndex\n                      \"\n                    >\n                      <ng-container\n                        *skeleton=\"\n                          isLoading;\n                          repeat: ((column\n                            | gtrFetchAttribute: 'skeletonConfigs' : colIndex : columns) &&\n                            (column | gtrFetchAttribute: 'skeletonConfigs' : colIndex : columns)\n                              .mainTable &&\n                            (column | gtrFetchAttribute: 'skeletonConfigs' : colIndex : columns)\n                              .mainTable.repeat) ||\n                            1;\n                          className: ((column\n                            | gtrFetchAttribute: 'skeletonConfigs' : colIndex : columns) &&\n                            (column | gtrFetchAttribute: 'skeletonConfigs' : colIndex : columns)\n                              .mainTable &&\n                            (column | gtrFetchAttribute: 'skeletonConfigs' : colIndex : columns)\n                              .mainTable.className) ||\n                            'skeleton-margin-bottom';\n                          height: ((column\n                            | gtrFetchAttribute: 'skeletonConfigs' : colIndex : columns) &&\n                            (column | gtrFetchAttribute: 'skeletonConfigs' : colIndex : columns)\n                              .mainTable &&\n                            (column | gtrFetchAttribute: 'skeletonConfigs' : colIndex : columns)\n                              .mainTable.height) ||\n                            '20px';\n                          width: ((column\n                            | gtrFetchAttribute: 'skeletonConfigs' : colIndex : columns) &&\n                            (column | gtrFetchAttribute: 'skeletonConfigs' : colIndex : columns)\n                              .mainTable &&\n                            (column | gtrFetchAttribute: 'skeletonConfigs' : colIndex : columns)\n                              .mainTable.width) ||\n                            '100%'\n                        \"\n                      >\n                        <ng-container\n                          [ngTemplateOutlet]=\"actionMenu\"\n                          [ngTemplateOutletContext]=\"{ row: row, column: column, index: colIndex }\"\n                        >\n                        </ng-container>\n                      </ng-container>\n                    </div>\n                  }\n                  @default {\n                    <div\n                      [id]=\"tableMainId + '-col-string-' + rowIndex + '-' + colIndex\"\n                      class=\"col-default\"\n                      [attr.data-testid]=\"tableMainId + '-col-string-' + rowIndex + '-' + colIndex\"\n                    >\n                      <ng-container\n                        *skeleton=\"\n                          isLoading;\n                          repeat: ((column\n                            | gtrFetchAttribute: 'skeletonConfigs' : colIndex : columns) &&\n                            (column | gtrFetchAttribute: 'skeletonConfigs' : colIndex : columns)\n                              .mainTable &&\n                            (column | gtrFetchAttribute: 'skeletonConfigs' : colIndex : columns)\n                              .mainTable.repeat) ||\n                            1;\n                          className: ((column\n                            | gtrFetchAttribute: 'skeletonConfigs' : colIndex : columns) &&\n                            (column | gtrFetchAttribute: 'skeletonConfigs' : colIndex : columns)\n                              .mainTable &&\n                            (column | gtrFetchAttribute: 'skeletonConfigs' : colIndex : columns)\n                              .mainTable.className) ||\n                            'skeleton-margin-bottom';\n                          height: ((column\n                            | gtrFetchAttribute: 'skeletonConfigs' : colIndex : columns) &&\n                            (column | gtrFetchAttribute: 'skeletonConfigs' : colIndex : columns)\n                              .mainTable &&\n                            (column | gtrFetchAttribute: 'skeletonConfigs' : colIndex : columns)\n                              .mainTable.height) ||\n                            '20px';\n                          width: ((column\n                            | gtrFetchAttribute: 'skeletonConfigs' : colIndex : columns) &&\n                            (column | gtrFetchAttribute: 'skeletonConfigs' : colIndex : columns)\n                              .mainTable &&\n                            (column | gtrFetchAttribute: 'skeletonConfigs' : colIndex : columns)\n                              .mainTable.width) ||\n                            '100%'\n                        \"\n                      >\n                        <ng-container\n                          [ngTemplateOutlet]=\"stringColumn\"\n                          [ngTemplateOutletContext]=\"{ column: column, index: colIndex }\"\n                        >\n                        </ng-container>\n                      </ng-container>\n                    </div>\n                  }\n                }\n              </div>\n            </td>\n          }\n        </tr>\n      }\n    </tbody>\n  </table>\n} @else {\n  <ng-container *ngTemplateOutlet=\"other\"></ng-container>\n}\n<ng-template #childRows></ng-template>\n\n<ng-template #other>\n  <div class=\"gtr-no-data-found mt-26\">\n    <img src=\"./assets/images/no-data.svg\" />\n  </div>\n  <div class=\"gtr-no-data-found\">No Records Found</div>\n</ng-template>\n\n<ng-template #stringColumn let-column=\"column\" let-i=\"index\">\n  @switch (column | gtrFetchAttribute: \"wrap\" : i : columns) {\n    @case (\"TRUNCATE\") {\n      <div title=\"{{ column?.value }}\">\n        {{ column?.value?.length > 30 ? column?.value?.slice(0, 30) + \"....\" : column?.value }}\n      </div>\n    }\n    @case (\"WRAP\") {\n      <div>\n        <span title=\"{{ column?.value }}\" class=\"wrap\"> {{ column?.value }} </span>\n      </div>\n    }\n    @default {\n      <div>{{ column?.value }}</div>\n    }\n  }\n</ng-template>\n\n<ng-template #linkColumn let-column=\"data\" let-i=\"index\" let-row=\"row\">\n  @switch (column.value?.type) {\n    @case (\"external\") {\n      <div title=\"{{ column?.value?.text }}\">\n        @switch (column | gtrFetchAttribute: \"wrap\" : i : columns) {\n          @case (\"TRUNCATE\") {\n            <div title=\"{{ column?.value?.text }}\">\n              <a\n                class=\"link\"\n                [style.color]=\"column.value?.color\"\n                [class.disabled]=\"column.value?.disabled\"\n                [attr.data-transaction-name]=\"dataTransactionName + '--col-link'\"\n                [href]=\"column?.value?.link\"\n                [target]=\"column?.value?.target || '_blank'\"\n                >{{\n                  column?.value?.text?.length > 30\n                    ? column?.value?.text?.slice(0, 30) + \"....\"\n                    : column?.value?.text\n                }}</a\n              >\n            </div>\n          }\n          @case (\"WRAP\") {\n            <div>\n              <a\n                [style.color]=\"column.value?.color\"\n                [class.disabled]=\"column.value?.disabled\"\n                [href]=\"column.value?.link\"\n                [attr.data-transaction-name]=\"dataTransactionName + '--col-link'\"\n                class=\"link wrap\"\n                [target]=\"column?.value?.target || '_blank'\"\n                >{{ column?.value?.text }}</a\n              >\n            </div>\n          }\n          @default {\n            <div>\n              <a\n                class=\"link\"\n                [style.color]=\"column.value?.color\"\n                [class.disabled]=\"column.value?.disabled\"\n                [attr.data-transaction-name]=\"dataTransactionName + '--col-link'\"\n                [href]=\"column.value?.link\"\n                [target]=\"column?.value?.target || '_blank'\"\n                >{{ column?.value?.text }}</a\n              >\n            </div>\n          }\n        }\n      </div>\n    }\n    @case (\"custom\") {\n      <div title=\"{{ column?.value?.text }}\">\n        <a\n          class=\"link\"\n          [style.color]=\"column.value?.color\"\n          [class.disabled]=\"column.value?.disabled\"\n          [attr.data-transaction-name]=\"dataTransactionName + '--col-link-custom'\"\n          >{{ column?.value?.text }}</a\n        >\n      </div>\n    }\n    @default {\n      @switch (column | gtrFetchAttribute: \"wrap\" : i : columns) {\n        @case (\"TRUNCATE\") {\n          <div title=\"{{ column?.value?.text }}\">\n            <a\n              class=\"link\"\n              [style.color]=\"column.value?.color\"\n              [class.disabled]=\"column.value?.disabled\"\n              [attr.data-transaction-name]=\"dataTransactionName + '--col-link'\"\n              [routerLink]=\"column?.value?.link\"\n              >{{\n                column?.value?.text?.length > 30\n                  ? column?.value?.text?.slice(0, 30) + \"....\"\n                  : column?.value?.text\n              }}</a\n            >\n          </div>\n        }\n        @case (\"WRAP\") {\n          <div>\n            <a\n              [style.color]=\"column.value?.color\"\n              [class.disabled]=\"column.value?.disabled\"\n              [attr.data-transaction-name]=\"dataTransactionName + '--col-link'\"\n              [routerLink]=\"column.value?.link\"\n              class=\"link wrap\"\n              >{{ column?.value?.text }}</a\n            >\n          </div>\n        }\n        @default {\n          <div>\n            <a\n              class=\"link\"\n              [style.color]=\"column.value?.color\"\n              [class.disabled]=\"column.value?.disabled\"\n              [attr.data-transaction-name]=\"dataTransactionName + '--col-link'\"\n              routerLink=\"{{ column.value?.link }}\"\n              >{{ column?.value?.text }}</a\n            >\n          </div>\n        }\n      }\n    }\n  }\n</ng-template>\n\n<ng-template #actionMenu let-row=\"row\" let-column=\"column\" let-i=\"index\">\n  <div [class]=\"(column | gtrFetchAttribute: 'align' : i : columns) + ' action-menu'\">\n    @for (action of column.actions; track actionIndex; let actionIndex = $index) {\n      <span class=\"gtr-data-label\">\n        @if (!action.hide) {\n          @switch (action.type) {\n            @case (\"button\") {\n              <ng-container\n                [ngTemplateOutlet]=\"gtrButton\"\n                [ngTemplateOutletContext]=\"{ row: row, action: action, index: actionIndex }\"\n              >\n              </ng-container>\n            }\n            @case (\"icon\") {\n              <ng-container\n                [ngTemplateOutlet]=\"gtrIcon\"\n                [ngTemplateOutletContext]=\"{ row: row, action: action, index: actionIndex }\"\n              >\n              </ng-container>\n            }\n            @case (\"dropdown\") {\n              <ng-container\n                [ngTemplateOutlet]=\"gtrDropdown\"\n                [ngTemplateOutletContext]=\"{ row: row, action: action, index: actionIndex }\"\n              >\n              </ng-container>\n            }\n            @case (\"input\") {\n              <ng-container\n                [ngTemplateOutlet]=\"gtrInput\"\n                [ngTemplateOutletContext]=\"{ row: row, action: action, index: actionIndex }\"\n              >\n              </ng-container>\n            }\n            @case (\"textarea\") {\n              <ng-container\n                [ngTemplateOutlet]=\"gtrTextarea\"\n                [ngTemplateOutletContext]=\"{ row: row, action: action, index: actionIndex }\"\n              >\n              </ng-container>\n            }\n            @case (\"toggle\") {\n              <ng-container\n                [ngTemplateOutlet]=\"gtrTextarea\"\n                [ngTemplateOutletContext]=\"{ row: row, action: action, index: actionIndex }\"\n              >\n              </ng-container>\n            }\n            @default {\n              <div\n                [id]=\"tableMainId + '-col-action-default-' + i\"\n                [attr.data-testid]=\"tableMainId + '-col-action-default-' + actionIndex\"\n                [attr.data-transaction-name]=\"\n                  dataTransactionName + '--col-action-default-' + actionIndex\n                \"\n                (click)=\"$event.stopPropagation(); actionDone($event, row['id'], action)\"\n              >\n                {{ action.name }}\n              </div>\n            }\n          }\n        }\n      </span>\n    }\n  </div>\n</ng-template>\n\n<ng-template #statusColumn let-columnAttributes=\"columnAttributes\" let-i=\"index\" let-data=\"data\">\n  <gtr-badge\n    type=\"pill\"\n    [positionProperty]=\"{ align: (columnAttributes | gtrFetchAttribute: 'align' : i : columns) }\"\n    [attr.data-transaction-name]=\"dataTransactionName + '--col-status-badge-' + i\"\n    [dataTransactionName]=\"dataTransactionName + '--col-status-badge-' + i\"\n    [color]=\"columnAttributes | gtrFetchAttribute: 'color' : i : columns\"\n    >{{ data }}</gtr-badge\n  >\n</ng-template>\n\n<ng-template #innerHTMLColumn let-data=\"data\" let-i=\"index\">\n  @switch (data | gtrFetchAttribute: \"wrap\" : i : columns) {\n    @case (\"TRUNCATE\") {\n      <div>\n        <div [innerHTML]=\"data?.value\"></div>\n      </div>\n    }\n    @case (\"WRAP\") {\n      <div>\n        <div [innerHTML]=\"data?.value\"></div>\n      </div>\n    }\n    @case (\"INNERHTMLWRAP\") {\n      <div>\n        <div class=\"wrap-content\" [innerHTML]=\"data?.value\"></div>\n      </div>\n    }\n    @default {\n      <div [innerHTML]=\"data?.value\"></div>\n    }\n  }\n</ng-template>\n\n<ng-template #gtrButton let-row=\"row\" let-action=\"action\" let-i=\"index\">\n  <div class=\"gtr-table-buttons\">\n    <gtr-button\n      [id]=\"tableMainId + '-col-action-btn-' + i\"\n      [attr.data-testid]=\"tableMainId + '-col-action-btn-' + i\"\n      [attr.data-transaction-name]=\"dataTransactionName + '--col-action-btn-' + i\"\n      [dataTransactionName]=\"dataTransactionName + '--col-action-btn-' + i\"\n      (click)=\"$event.stopPropagation(); actionDone($event, row['id'], action)\"\n      >{{ action.name }}\n    </gtr-button>\n  </div>\n</ng-template>\n\n<ng-template #gtrIcon let-row=\"row\" let-action=\"action\" let-i=\"index\">\n  @if (action.link) {\n    <a\n      [href]=\"action.link\"\n      class=\"action-link\"\n      (click)=\"\n        $event.preventDefault(); $event.stopPropagation(); actionDone($event, row['id'], action)\n      \"\n    >\n      <gtr-icon\n        [id]=\"tableMainId + '-col-action-icon-' + i\"\n        [attr.data-testid]=\"tableMainId + '-col-action-icon-' + i\"\n        [attr.data-transaction-name]=\"dataTransactionName + '--col-action-icon-' + i\"\n        [dataTransactionName]=\"dataTransactionName + '--col-action-icon-' + i\"\n        [size]=\"action.size\"\n        [name]=\"action.icon\"\n        [color]=\"action.color\"\n      ></gtr-icon>\n    </a>\n  } @else {\n    <gtr-icon\n      [id]=\"tableMainId + '-col-action-icon-' + i\"\n      (click)=\"$event.stopPropagation(); actionDone($event, row['id'], action)\"\n      [attr.data-testid]=\"tableMainId + '-col-action-icon-' + i\"\n      [attr.data-transaction-name]=\"dataTransactionName + '--col-action-icon-' + i\"\n      [dataTransactionName]=\"dataTransactionName + '--col-action-icon-' + i\"\n      [size]=\"action.size\"\n      [name]=\"action.icon\"\n      [color]=\"action.color\"\n    ></gtr-icon>\n  }\n</ng-template>\n\n<ng-template #gtrInput let-row=\"row\" let-action=\"action\" let-i=\"index\">\n  <a\n    class=\"table-action-link\"\n    [id]=\"tableMainId + '-col-action-icon-' + i\"\n    [attr.data-testid]=\"tableMainId + '-col-action-icon-' + i\"\n    [attr.data-transaction-name]=\"dataTransactionName + '--col-action-icon-' + i\"\n    [href]=\"action.link\"\n    (click)=\"\n      $event.preventDefault(); $event.stopPropagation(); actionDone($event, row['id'], action)\n    \"\n  >\n    <gtr-icon\n      [dataTransactionName]=\"dataTransactionName + '--col-action-icon-' + i\"\n      [size]=\"action.size\"\n      [name]=\"action.icon\"\n      [color]=\"action.color\"\n    ></gtr-icon>\n  </a>\n</ng-template>\n\n<ng-template #gtrTextarea let-row=\"row\" let-action=\"action\" let-i=\"index\">\n  <textarea\n    [placeholder]=\"action.name\"\n    [id]=\"tableMainId + '-col-action-textarea-' + i\"\n    [attr.data-transaction-name]=\"dataTransactionName + '--col-action-textarea-' + i\"\n    [attr.data-testid]=\"tableMainId + '-col-action-textarea-' + i\"\n    (input)=\"$event.stopPropagation(); actionDone($event, row['id'], action)\"\n  ></textarea>\n</ng-template>\n\n<ng-template #gtrDropdown let-row=\"row\" let-action=\"action\" let-i=\"index\">\n  <select\n    [id]=\"tableMainId + '-col-action-select-' + i\"\n    [attr.data-testid]=\"tableMainId + '-col-action-select-' + i\"\n    [attr.data-transaction-name]=\"dataTransactionName + '--col-action-select-' + i\"\n    (change)=\"$event.stopPropagation(); actionDone($event, row['id'], action)\"\n  >\n    <option value=\"\">Select</option>\n    <option value=\"1\">Yes</option>\n    <option value=\"2\">No</option>\n  </select>\n</ng-template>\n\n<ng-template #gtrCheckbox let-row=\"row\">\n  <gtr-checkbox\n    [checked]=\"!!row?.isSelected\"\n    [id]=\"tableMainId + '-col-selection'\"\n    [dataTransactionName]=\"dataTransactionName + '--col-selection'\"\n    [attr.data-transaction-name]=\"dataTransactionName + '--col-selection'\"\n    [attr.data-testid]=\"tableMainId + '-col-selection'\"\n    (selectionChanged)=\"selectionDone($event, row)\"\n  ></gtr-checkbox>\n</ng-template>\n","import {\n  Component,\n  EventEmitter,\n  HostListener,\n  Input,\n  OnDestroy,\n  Output,\n  forwardRef,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';\nimport { GtrTableResponsiveComponent } from './table-responsive/gtr-table-responsive.component';\nimport { GtrTableMainComponent } from './table-main/gtr-table-main.component';\nimport { THEAD, TROW } from './gtr-table.interface';\n\n@Component({\n  selector: 'gtr-table',\n  templateUrl: './gtr-table.component.html',\n  styleUrls: ['./gtr-table.component.scss'],\n  exportAs: 'gtrTable',\n  imports: [ReactiveFormsModule, GtrTableResponsiveComponent, GtrTableMainComponent],\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => GtrTableComponent),\n      multi: true,\n    },\n  ],\n})\nexport class GtrTableComponent implements OnDestroy {\n  constructor() {}\n\n  public switchState: boolean = false;\n\n  @Input() dataTransactionName: string = 'no-tagged';\n  /**\n   * Set the table type.\n   * @default 'boolean'\n   * @type TableType\n   */\n  @Input() isResponsive: boolean = true;\n\n  /**\n   * Set the skeleton loading state.\n   * @default 'boolean'\n   * @type LoadingState\n   */\n  @Input() loading: boolean = false;\n\n  /**\n   * Set the hide/show state of checbox.\n   * @default 'boolean'\n   * @type CheckBox State\n   */\n  @Input() enableSelection: boolean = true;\n\n  /**\n   * Set the id of main web table.\n   * @default 'string'\n   * @type CheckBox State\n   */\n  @Input() tableMainId = '';\n\n  /**\n   * Set id of responsive table.\n   * @default 'string'\n   * @type CheckBox State\n   */\n  @Input() tableResponsiveId = '';\n\n  /**\n   * Table columns\n   */\n  @Input() columns: THEAD[] = [];\n\n  /**\n   * Table data\n   */\n  @Input() data: TROW[] = [];\n\n  /**\n   * The selection changed eventemitter\n   * @default '{ value: any; all: boolean }'\n   * @type Event Emitter\n   */\n  @Output() onSelection = new EventEmitter<{ value: any; all: boolean }>();\n\n  /**\n   * Action eventemitter\n   */\n  @Output() onAction = new EventEmitter<any>();\n\n  /**\n   * Component Event eventemitter\n   */\n  @Output() handleEvent: EventEmitter<any> = new EventEmitter();\n\n  /**\n   * Sorting eventemitter\n   */\n  @Output() onSort: EventEmitter<any> = new EventEmitter();\n\n  /**\n   * To check screen size\n   */\n  @HostListener('window:resize', ['$event'])\n  onResize(event: { target: { innerWidth: number } }) {\n    event.target.innerWidth;\n    if (event.target.innerWidth <= 768) {\n      this.switchState = true;\n    } else {\n      this.switchState = false;\n    }\n  }\n\n  ngOnInit(): void {\n    this.switchState = this.isResponsive && window.innerWidth <= 768;\n  }\n\n  selectionChange(ev: any) {\n    this.onSelection.emit(ev);\n  }\n\n  actionDone(ev: { value: boolean; id: number }) {\n    this.onAction.emit(ev);\n  }\n\n  fetchEvent(ev: any) {\n    this.handleEvent.emit(ev);\n  }\n\n  sorting(ev: { value: boolean; id: number }) {\n    this.onSort.emit(ev);\n  }\n\n  ngOnDestroy(): void {}\n}\n","@if (switchState) {\n<gtr-table-responsive [id]=\"tableResponsiveId\" [attr.data-testid]=\"tableResponsiveId\" [isLoading]=\"loading\"\n  (handleEvent)=\"fetchEvent($event)\" (onSelection)=\"this.selectionChange($event)\" (onAction)=\"this.actionDone($event)\"\n  [data]=\"this.data\" [columns]=\"this.columns\" [enableSelection]=\"this.enableSelection\"\n  [dataTransactionName]=\"dataTransactionName + '-table'\" />\n}\n@if (!switchState) {\n<gtr-table-main [id]=\"tableMainId\" [attr.data-testid]=\"tableMainId\" [isLoading]=\"loading\"\n  (handleEvent)=\"fetchEvent($event)\" (onSelection)=\"this.selectionChange($event)\" (onAction)=\"this.actionDone($event)\"\n  (onSort)=\"this.sorting($event)\" [data]=\"this.data\" [columns]=\"this.columns\"\n  [dataTransactionName]=\"dataTransactionName + '-table'\" [enableSelection]=\"this.enableSelection\" />\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\n\n@Component({\n  standalone: true,\n  selector: 'gtr-tab',\n  templateUrl: './gtr-tab.component.html',\n  styleUrls: ['./gtr-tab.component.scss'],\n})\nexport class GtrTabComponent {\n  @Input() label: string = '';\n  @Input() active: boolean = false;\n  @Input() dataTransactionName: string = 'no-tagged';\n  @Input() disabled: boolean = false;\n  @Output() tabChange = new EventEmitter<any>();\n\n  private _activeTab: { activeTab?: GtrTabComponent | GtrTabComponent[]; index?: number } = {};\n\n  constructor() {}\n\n  set activeTab(\n    activeTab: { activeTab: GtrTabComponent | GtrTabComponent[]; index: number } | null,\n  ) {\n    if (!activeTab) return;\n    this._activeTab.activeTab = activeTab?.activeTab;\n    this._activeTab.index = activeTab?.index;\n    this.tabChange.emit(this._activeTab);\n  }\n}\n","@if (active) {\n  <div class=\"gtr-active-tab-content\" [class.active]=\"active\"\n       [attr.data-transaction-name]=\"dataTransactionName + '-tab'\">\n    <ng-content></ng-content>\n  </div>\n}\n","import {\n  Component,\n  ContentChildren,\n  ElementRef,\n  EventEmitter,\n  Input,\n  Output,\n  QueryList,\n  ViewChild,\n} from '@angular/core';\nimport { GtrTabComponent } from '../tab/gtr-tab.component';\n\n@Component({\n  standalone: true,\n  selector: 'gtr-tabs-wrapper',\n  templateUrl: './gtr-tabs-wrapper.component.html',\n  styleUrls: ['./gtr-tabs-wrapper.component.scss'],\n})\nexport class GtrTabsWrapperComponent {\n  @ContentChildren(GtrTabComponent) tabs: QueryList<GtrTabComponent> =\n    new QueryList<GtrTabComponent>();\n\n  @Input() position: 'start' | 'end' | 'center' | 'fill' = 'start';\n\n  @Input() dataTransactionName: string = 'no-tagged';\n\n  @Input()\n  id: string = '';\n\n  @Input()\n  testId: string = '';\n\n  @ViewChild('tabScrollContainerRef', { static: true })\n  tabScrollContainerRef!: ElementRef;\n  @ViewChild('tabScrollListRef', { static: true })\n  tabScrollListRef!: ElementRef;\n\n  @Output() tabChanges = new EventEmitter<any>();\n\n  get tabsContainerClass() {\n    return `gtr-tabs-container ${this.position}`;\n  }\n\n  get tabsWrapperClass() {\n    return `gtr-tabs-wrapper ${this.position}`;\n  }\n\n  get tabListLength() {\n    return this.tabs?.toArray()?.length || 0;\n  }\n\n  ngOnInit(): void {}\n\n  ngAfterContentInit() {\n    if (this.tabs?.toArray()?.length <= 0) return;\n    const activeTab = this.tabs?.toArray()?.filter((t) => t?.active)[0];\n    this.selectTab(activeTab || this.tabs?.first);\n  }\n\n  ngAfterViewInit() {\n    this.onTabListScroll();\n  }\n\n  selectTab(selectedTab: GtrTabComponent): void {\n    try {\n      this.tabs.toArray().forEach((tab) => (tab.active = tab === selectedTab));\n      const activeTab = this.tabs.toArray()?.filter((tab) => tab?.active);\n      const activeTabIndex = this.tabs.toArray()?.findIndex((tab) => tab.active);\n      selectedTab.activeTab = { activeTab: activeTab, index: activeTabIndex };\n      this.tabChanges.emit({ activeTab: activeTab, index: activeTabIndex });\n    } catch (err) {}\n  }\n\n  onTabListScroll() {\n    try {\n      const tabContainerEl = this.tabScrollListRef.nativeElement;\n      if (!this.tabScrollListRef) {\n        return;\n      }\n      if (!this.isScrollable(this.tabScrollListRef.nativeElement)) {\n        tabContainerEl.classList.remove('fade-right');\n        tabContainerEl.classList.remove('fade-left');\n        return;\n      }\n      if (this.tabScrollListRef.nativeElement.scrollLeft > 0) {\n        tabContainerEl.classList.remove('fade-left');\n        tabContainerEl.classList.add('fade-right');\n      } else {\n        tabContainerEl.classList.remove('fade-right');\n        tabContainerEl.classList.add('fade-left');\n      }\n    } catch (err) {}\n  }\n\n  isScrollable(element: HTMLElement): boolean {\n    const hasHorizontalScroll = element?.scrollWidth > element?.clientWidth;\n    return hasHorizontalScroll;\n  }\n\n  /**\n   * commented for future use\n   * code is used for change tab by click on left,right arrow keys.\n   */\n\n  // @HostListener('keydown.arrowRight', ['$event'])\n  // onArrowRight(event: KeyboardEvent): void {\n  //   event.preventDefault();\n  //   this.selectNextTab();\n  // }\n\n  // @HostListener('keydown.arrowLeft', ['$event'])\n  // onArrowLeft(event: KeyboardEvent): void {\n  //   event.preventDefault();\n  //   this.selectPreviousTab();\n  // }\n\n  // getPreviousEnabledIndex(tabs: any, currentIndex: number): number {\n  //   let previousIndex = currentIndex - 1;\n  //   while (previousIndex >= 0) {\n  //     if (!tabs[previousIndex].disabled) {\n  //       return previousIndex;\n  //     }\n  //     previousIndex--;\n  //   }\n  //   return currentIndex;\n  // }\n\n  // getNextEnabledIndex(tabs: any, currentIndex: number): number {\n  //   let nextIndex = currentIndex + 1;\n  //   while (nextIndex < tabs.length) {\n  //     if (!tabs[nextIndex].disabled) {\n  //       return nextIndex;\n  //     }\n  //     nextIndex++;\n  //   }\n  //   return currentIndex;\n  // }\n\n  // selectPreviousTab(): void {\n  //   const tabs = this.tabs.toArray();\n  //   const currentIndex = tabs.findIndex((tab: TabComponent) => tab.active);\n  //   const previous = this.getPreviousEnabledIndex(tabs, currentIndex);\n  //   const previousIndex = previous;\n  //   this.selectTab(tabs[previousIndex]);\n  // }\n\n  // selectNextTab(): void {\n  //   const tabs = this.tabs.toArray();\n  //   const currentIndex = tabs.findIndex((tab: TabComponent) => tab.active);\n  //   const next = this.getNextEnabledIndex(tabs, currentIndex);\n  //   const nextIndex = next;\n  //   this.selectTab(tabs[nextIndex]);\n  // }\n}\n","<div\n  class=\"gtr-tabs-list-container\"\n  #tabScrollContainerRef\n  [id]=\"id\"\n  [attr.data-test-id]=\"testId\"\n  [attr.data-transaction-name]=\"dataTransactionName + '-tabs-wrapper'\"\n>\n  <div\n    [class]=\"tabsContainerClass\"\n    (scroll)=\"onTabListScroll()\"\n    #tabScrollListRef\n    [attr.data-transaction-name]=\"dataTransactionName + '-tabs-wrapper'\"\n  >\n    <div [class]=\"tabsWrapperClass\">\n      @for (tab of tabs; track $index) {\n        <div #tabButton\n             class=\"gtr-tab-button tab\"\n             [class.w-100]=\"position === 'fill'\"\n             [class.active]=\"tab.active\"\n             [class.disabled]=\"tab.disabled\"\n             (click)=\"selectTab(tab)\"\n             (keyup.enter)=\"selectTab(tab)\"\n             role=\"tab\"\n             [tabindex]=\"tab.disabled ? -1 : 0\"\n             [attr.data-transaction-name]=\"dataTransactionName + '-tabs-wrapper-button'\"\n        >\n          {{ tab.label }}\n        </div>\n      }\n    </div>\n  </div>\n</div>\n@if (tabListLength > 0) {\n  <div class=\"gtr-tab-content-wrapper\"\n       [attr.data-transaction-name]=\"dataTransactionName + '-tabs-wrapper-content-wrapper'\">\n    <div class=\"gtr-tab-content\"\n         [attr.data-transaction-name]=\"dataTransactionName + '-tabs-wrapper-content'\">\n      <ng-content></ng-content>\n    </div>\n  </div>\n}\n","/** Converts any CSS color (hex, rgb, hsl, etc.) to rgba with alpha */\nexport function toRGBA(color: string, alpha: number): string {\n  // Create a hidden element to let the browser resolve the color\n  const temp = document.createElement('div');\n  temp.style.color = color;\n  document.body.appendChild(temp);\n\n  const computed = getComputedStyle(temp).color; // always returns \"rgb(r,g,b)\" or \"rgba(r,g,b,a)\"\n  document.body.removeChild(temp);\n\n  const rgbaMatch = computed.match(/(\\d+),\\s*(\\d+),\\s*(\\d+)/);\n  if (!rgbaMatch) return color; // fallback if parsing fails\n\n  const [_, r, g, b] = rgbaMatch;\n  return `rgba(${r}, ${g}, ${b}, ${alpha})`;\n}\n","import {\n  Component,\n  Input,\n  Output,\n  EventEmitter,\n  inject,\n  DestroyRef,\n  OnInit,\n  OnChanges,\n  SimpleChanges,\n  ViewChild,\n  ElementRef,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport {\n  ControlValueAccessor,\n  FormControl,\n  FormsModule,\n  NgControl,\n  ReactiveFormsModule,\n  ValidatorFn,\n  Validators,\n} from '@angular/forms';\nimport { GtrIconComponent } from '../../../atoms/icon';\nimport { toRGBA } from '../helpers/functions';\n\n@Component({\n  selector: 'gtr-tags-input',\n  templateUrl: './gtr-tags-input.component.html',\n  styleUrl: './gtr-tags-input.component.scss',\n  imports: [ReactiveFormsModule, FormsModule, GtrIconComponent],\n})\nexport class GtrTagsInputComponent implements ControlValueAccessor, OnInit, OnChanges {\n  @ViewChild('tagInputRef') tagInputRef!: ElementRef<HTMLInputElement>;\n\n  @Input() value: string[] = [];\n  @Input() inputLabel: string = '';\n  @Input() type: string = 'text';\n  @Input() disabled: boolean = false;\n  @Input() readonly: boolean = false;\n  @Input() dataTransactionName: string = 'tag-input';\n  @Input() invalid: boolean = false;\n  @Input() placeholder: string = 'Press enter to add tag ...';\n  @Input() options: string[] = [];\n  @Input() maxTags: number = Infinity;\n  @Input() removeLastOnBackspace: boolean = true;\n  @Input() canDeleteTags: boolean = true;\n  @Input() canAddTags: boolean = true;\n  @Input() onlyFromDropdown: boolean = false;\n  @Input() color: string = '#21617d'; // dynamic color\n  @Input() dangerColor: string = '#d9534f'; // dynamic danger color\n\n  private _removeValidators = true;\n\n  // Reset tag input\n  @Input() set resetTagInput(state: boolean) {\n    if (state) {\n      this.tagControl?.reset('');\n    }\n  }\n\n  // Value Changed\n  @Output() valueChanged = new EventEmitter<string[]>();\n\n  // On Touched\n  @Output() touched = new EventEmitter<boolean>();\n\n  // Tag Form Control Status\n  @Output() inputStatus = new EventEmitter<string>();\n\n  // Set Tag Validators\n  @Input() removeValidators: boolean = false;\n  @Input() customValidators: ValidatorFn[] = [Validators.required];\n\n  // services\n  private readonly _destroyRef = inject(DestroyRef);\n\n  // is touched\n  public isTouched: boolean = false;\n\n  /** Control Value Accessor Methods */\n  private onChange: any = () => {};\n  private onTouched: any = () => {};\n\n  // Tag Control\n  public tagControl = new FormControl('');\n  public filteredOptions: string[] = [];\n  public showDropdown: boolean = false;\n  private controlDir = inject(NgControl, { self: true, optional: true });\n  private elementRef = inject(ElementRef);\n\n  constructor() {\n    if (this.controlDir) {\n      this.controlDir.valueAccessor = this;\n    }\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes['removeValidators']) {\n      this._removeValidators = this.removeValidators;\n    }\n\n    if (changes['customValidators'] || changes['removeValidators']) {\n      this.updateTagValidators();\n    }\n\n    if (\n      (changes['primaryColor'] && changes['primaryColor'].currentValue) ||\n      (changes['dangerColor'] && changes['dangerColor'].currentValue)\n    ) {\n      this.applyColorVariables(\n        changes['primaryColor'].currentValue,\n        changes['dangerColor'].currentValue,\n      );\n    }\n\n    if (changes['canAddTags'] || changes['value'] || changes['maxTags']) {\n      this.updateDisabledState();\n    }\n  }\n\n  ngOnInit(): void {\n    this.applyColorVariables(this.color);\n    this.updateTagValidators();\n\n    // Listen for input changes to filter dropdown\n    this.tagControl.valueChanges\n      .pipe(takeUntilDestroyed(this._destroyRef))\n      .subscribe((inputValue: any) => {\n        this.filterOptions(inputValue);\n      });\n\n    this.tagControl?.statusChanges?.pipe(takeUntilDestroyed(this._destroyRef))?.subscribe({\n      next: (res) => {\n        this.inputStatus.emit(res);\n      },\n    });\n  }\n\n  private updateDisabledState(): void {\n    const shouldDisable = !this.canAddTags || this.value.length >= this.maxTags;\n\n    if (shouldDisable && this.tagControl.enabled) {\n      this.tagControl.disable({ emitEvent: false });\n    } else if (!shouldDisable && this.tagControl.disabled) {\n      this.tagControl.enable({ emitEvent: false });\n    }\n  }\n\n  private applyColorVariables(color: string, danger: string = this.dangerColor): void {\n    const root = this.elementRef.nativeElement;\n\n    // Convert to rgba with alpha 0.1 using browser-safe method\n    const rgba = toRGBA(color, 0.1);\n\n    root.style.setProperty('--dropdown-hover-bg', rgba);\n    root.style.setProperty('--dropdown-hover-color', color);\n    root.style.setProperty('--dropdown-active-bg', color);\n    root.style.setProperty('--dropdown-active-color', '#fff');\n    root.style.setProperty('--danger-color', danger);\n  }\n\n  public filterOptions(inputValue: string): void {\n    const filterValue = inputValue?.toLowerCase() || '';\n\n    // Show all options if input is empty\n    this.filteredOptions = this.options.filter(\n      (option) => option.toLowerCase().includes(filterValue) && !this.value.includes(option),\n    );\n\n    this.showDropdown = this.filteredOptions.length > 0;\n  }\n\n  public selectOption(option: string): void {\n    this.tagControl.setValue(option);\n    this.addTag({ target: { value: option } } as any); // Simulate input event\n    this.showDropdown = false;\n  }\n\n  private updateTagValidators(): void {\n    if (this._removeValidators) {\n      this.tagControl.setValidators([]);\n    } else {\n      this.tagControl.setValidators([...this.customValidators]);\n    }\n    this.tagControl.updateValueAndValidity();\n  }\n\n  writeValue(value: string[] | null | undefined): void {\n    this.value = value || [];\n  }\n\n  registerOnChange(fn: any): void {\n    this.onChange = fn;\n  }\n\n  registerOnTouched(fn: any): void {\n    this.onTouched = fn;\n  }\n\n  handleBackspace(event: KeyboardEvent | Event): void {\n    const keyboardEvent = event as KeyboardEvent;\n    setTimeout(() => {\n      const inputValue = this.tagControl.value;\n      if (!inputValue && this.removeLastOnBackspace && this.value.length > 0) {\n        keyboardEvent.preventDefault();\n        this.removeTag(this.value.length - 1);\n        this.tagInputRef?.nativeElement?.focus();\n      }\n    });\n  }\n\n  setDisabledState(isDisabled: boolean): void {\n    this.disabled = isDisabled;\n    if (this.disabled) {\n      this.tagControl.disable();\n    }\n  }\n\n  // Handle Blur\n  public handleBlur(): void {\n    this.isTouched = true;\n    this.onTouched();\n    this.touched.emit(true);\n\n    // Delay closing dropdown to allow option click\n    setTimeout(() => {\n      this.showDropdown = false;\n    }, 100);\n  }\n\n  //Add Tag\n  public addTag(event: Event) {\n    if (!this.canAddTags) return;\n\n    const inputValue = (event.target as HTMLInputElement)?.value?.trim();\n    if (!inputValue) return;\n\n    if (this.onlyFromDropdown && !this.options.includes(inputValue)) return;\n\n    if (this.value.length >= this.maxTags) {\n      this.tagControl.setValue('');\n      this.tagControl.markAsTouched();\n      this.showDropdown = false;\n      return;\n    }\n\n    if (this.tagControl?.valid) {\n      this.value = [...this.value, inputValue];\n      this.onChange(this.value);\n      this.valueChanged.emit(this.value);\n      this.tagControl.reset('');\n    } else {\n      this.tagControl?.markAllAsTouched();\n    }\n  }\n\n  // Remove Tag\n  public removeTag(index: number): void {\n    if (index > -1) {\n      const newValue = [...this.value];\n      newValue.splice(index, 1);\n      this.value = [...newValue];\n      this.onChange(this.value);\n      console.log(this.value);\n\n      this.tagControl.setValue('');\n      this.filterOptions('');\n      this.tagInputRef?.nativeElement?.focus();\n    }\n  }\n}\n","<div class=\"tag-input-wrapper\">\n  @if (inputLabel) {\n    <label for=\"tag-input\" class=\"tag-input-label gtr-custom-label\">{{ inputLabel }}</label>\n  }\n  <div\n    class=\"tag-input-container\"\n    [class.invalid]=\"invalid || (tagControl?.invalid && tagControl?.touched)\"\n  >\n    @for (item of value; track i; let i = $index) {\n      <div class=\"tag-chips\">\n        {{ item }}\n        @if (canDeleteTags) {\n          <gtr-icon name=\"x\" [size]=\"16\" color=\"primary\" (click)=\"removeTag(i)\"></gtr-icon>\n        }\n      </div>\n    }\n\n    <div class=\"input-wrapper\">\n      <input\n        #tagInputRef\n        [type]=\"type\"\n        (focus)=\"filterOptions('')\"\n        name=\"tag\"\n        class=\"tag-input\"\n        [placeholder]=\"placeholder\"\n        [formControl]=\"tagControl\"\n        [attr.data-transaction-name]=\"dataTransactionName + '--input'\"\n        (blur)=\"handleBlur()\"\n        (keydown.backspace)=\"handleBackspace($event)\"\n        (keydown.enter)=\"addTag($event)\"\n      />\n      @if (showDropdown && filteredOptions.length > 0) {\n        <ul class=\"dropdown-list\">\n          @for (option of filteredOptions; track option) {\n            <li (mousedown)=\"selectOption(option)\" [class.active]=\"option === tagControl.value\">\n              {{ option }}\n            </li>\n          }\n        </ul>\n      }\n    </div>\n\n    @if (value.length >= maxTags) {\n      <span class=\"tag-limit-msg\">Maximum {{ maxTags }} tags allowed</span>\n    }\n  </div>\n\n  <!-- Error container -->\n  @if (invalid || (tagControl?.touched && tagControl?.invalid)) {\n    <div class=\"gtr-error-message\">\n      <ng-content slot=\"['custom-error']\"> </ng-content>\n    </div>\n  }\n</div>\n","import {\n  ElementRef,\n  HostListener,\n  Directive,\n  Input,\n  NgZone,\n  OnDestroy,\n  OnChanges,\n  AfterContentChecked,\n  Output,\n  EventEmitter,\n  SimpleChanges,\n} from '@angular/core';\n\nconst MAX_LOOKUP_RETRIES = 3;\n\n@Directive({\n  selector: '[autosize]',\n  standalone: true,\n})\nexport class AutosizeDirective implements OnDestroy, OnChanges, AfterContentChecked {\n  @Input()\n  set minRows(value: number) {\n    this._minRows = +value;\n    if (this.textAreaEl) {\n      this.textAreaEl.rows = this._minRows;\n    }\n  }\n\n  @Input('autosize')\n  set _autosize(autosize: boolean | string) {\n    this.autosize = typeof autosize === 'boolean' ? autosize : true;\n  }\n\n  private _minRows!: number;\n\n  @Input() maxRows!: number;\n  @Input() onlyGrow = false;\n  @Input() useImportant = false;\n\n  @Output() resized = new EventEmitter<number>();\n\n  private autosize = true;\n  private retries = 0;\n  private textAreaEl: any;\n\n  private _oldContent!: string;\n  private _oldWidth!: number;\n\n  private _windowResizeHandler!: (...args: Array<any>) => any;\n  private _destroyed = false;\n\n  @HostListener('input', ['$event.target'])\n  onInput(textArea: HTMLTextAreaElement): void {\n    this.adjust();\n  }\n\n  constructor(\n    public element: ElementRef,\n    private _zone: NgZone,\n  ) {\n    if (this.element.nativeElement.tagName !== 'TEXTAREA') {\n      this._findNestedTextArea();\n    } else {\n      this.textAreaEl = this.element.nativeElement;\n      this.textAreaEl.style['overflow-y'] = 'hidden';\n      this._onTextAreaFound();\n    }\n  }\n\n  ngOnDestroy() {\n    this._destroyed = true;\n    if (this._windowResizeHandler) {\n      window.removeEventListener('resize', this._windowResizeHandler, false);\n    }\n  }\n\n  ngAfterContentChecked() {\n    this.adjust();\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    this.adjust(true);\n  }\n\n  _findNestedTextArea() {\n    this.textAreaEl = this.element.nativeElement.querySelector('TEXTAREA');\n\n    if (!this.textAreaEl && this.element.nativeElement.shadowRoot) {\n      this.textAreaEl = this.element.nativeElement.shadowRoot.querySelector('TEXTAREA');\n    }\n\n    if (!this.textAreaEl) {\n      if (this.retries >= MAX_LOOKUP_RETRIES) {\n        console.warn('autosize: textarea not found');\n      } else {\n        this.retries++;\n        setTimeout(() => {\n          this._findNestedTextArea();\n        }, 100);\n      }\n      return;\n    }\n\n    this.textAreaEl.style['overflow-y'] = 'hidden';\n    this._onTextAreaFound();\n  }\n\n  _onTextAreaFound() {\n    this._addWindowResizeHandler();\n    setTimeout(() => {\n      this.adjust();\n    });\n  }\n\n  _addWindowResizeHandler() {\n    this._windowResizeHandler = debounce(() => {\n      this._zone.run(() => {\n        this.adjust();\n      });\n    }, 200);\n\n    this._zone.runOutsideAngular(() => {\n      window.addEventListener('resize', this._windowResizeHandler, false);\n    });\n  }\n\n  adjust(inputsChanged = false): void {\n    if (this.autosize && !this._destroyed && this.textAreaEl && this.textAreaEl.parentNode) {\n      const currentText = this.textAreaEl.value;\n\n      if (\n        inputsChanged === false &&\n        currentText === this._oldContent &&\n        this.textAreaEl.offsetWidth === this._oldWidth\n      ) {\n        return;\n      }\n\n      this._oldContent = currentText;\n      this._oldWidth = this.textAreaEl.offsetWidth;\n\n      const clone = this.textAreaEl.cloneNode(true);\n      const parent = this.textAreaEl.parentNode;\n      clone.style.width = this.textAreaEl.offsetWidth + 'px';\n      clone.style.visibility = 'hidden';\n      clone.style.position = 'absolute';\n      clone.textContent = currentText;\n\n      parent.appendChild(clone);\n\n      clone.style['overflow-y'] = 'hidden';\n      clone.style.height = 'auto';\n\n      let height = clone.scrollHeight;\n\n      // add into height top and bottom borders' width\n      let computedStyle = window.getComputedStyle(clone, null);\n      height += parseInt(computedStyle.getPropertyValue('border-top-width'));\n      height += parseInt(computedStyle.getPropertyValue('border-bottom-width'));\n\n      if (computedStyle.getPropertyValue('box-sizing') === 'content-box') {\n        height -= parseInt(computedStyle.getPropertyValue('padding-top'));\n        height -= parseInt(computedStyle.getPropertyValue('padding-bottom'));\n      }\n\n      const oldHeight = this.textAreaEl.offsetHeight;\n      const willGrow = height > oldHeight;\n\n      if (this.onlyGrow === false || willGrow) {\n        const lineHeight = this._getLineHeight();\n        const rowsCount = height / lineHeight;\n\n        if (this._minRows && this._minRows >= rowsCount) {\n          height = this._minRows * lineHeight;\n        } else if (this.maxRows && this.maxRows <= rowsCount) {\n          // never shrink the textarea if onlyGrow is true\n          const maxHeight = this.maxRows * lineHeight;\n          height = this.onlyGrow ? Math.max(maxHeight, oldHeight) : maxHeight;\n          this.textAreaEl.style['overflow-y'] = 'auto';\n        } else {\n          this.textAreaEl.style['overflow-y'] = 'hidden';\n        }\n\n        const heightStyle = height + 'px';\n        const important = this.useImportant ? 'important' : '';\n\n        this.textAreaEl.style.setProperty('height', heightStyle, important);\n\n        this.resized.emit(height);\n      }\n\n      parent.removeChild(clone);\n    }\n  }\n\n  private _getLineHeight() {\n    let lineHeight = parseInt(this.textAreaEl.style.lineHeight, 10);\n    if (isNaN(lineHeight) && window.getComputedStyle) {\n      const styles = window.getComputedStyle(this.textAreaEl);\n      lineHeight = parseInt(styles.lineHeight, 10);\n    }\n\n    if (isNaN(lineHeight)) {\n      const fontSize = window.getComputedStyle(this.textAreaEl, null).getPropertyValue('font-size');\n      lineHeight = Math.floor(parseInt(fontSize.replace('px', ''), 10) * 1.5);\n    }\n\n    return lineHeight;\n  }\n}\n\nfunction debounce<Params extends Array<any>>(\n  func: (...args: Params) => any,\n  timeout: number,\n): (...args: Params) => void {\n  let timer: any | number;\n  return (...args: Params) => {\n    clearTimeout(timer);\n    timer = setTimeout(() => {\n      func(...args);\n    }, timeout);\n  };\n}\n","/*\n * Public API Surface of core-components-angular\n */\n\nexport * from './lib/core-components.types';\n\nexport * from './lib/atoms/badge';\nexport * from './lib/atoms/button-directive';\nexport * from './lib/atoms/button';\nexport * from './lib/atoms/button-dropdown';\nexport * from './lib/atoms/switch';\nexport * from './lib/atoms/tooltip';\nexport * from './lib/atoms/input';\nexport * from './lib/atoms/textarea';\nexport * from './lib/atoms/icon';\nexport * from './lib/atoms/popover';\nexport * from './lib/atoms/radio-button';\nexport * from './lib/atoms/skeleton';\nexport * from './lib/atoms/toaster';\nexport * from './lib/atoms/display-value';\n\nexport * from './lib/molecules/accordion';\nexport * from './lib/molecules/calendar';\nexport * from './lib/molecules/checkbox';\nexport * from './lib/molecules/modal';\nexport * from './lib/molecules/date-picker';\nexport * from './lib/molecules/date-range-picker';\nexport * from './lib/molecules/dropdown';\nexport * from './lib/molecules/file-input';\nexport * from './lib/molecules/form';\nexport * from './lib/molecules/input-color';\nexport * from './lib/molecules/numeric-counter';\nexport * from './lib/molecules/pagination';\nexport * from './lib/molecules/select';\nexport * from './lib/molecules/shared';\nexport * from './lib/molecules/stat-card';\nexport * from './lib/molecules/table';\nexport * from './lib/molecules/tabs';\nexport * from './lib/molecules/time-picker';\nexport * from './lib/molecules/tags-input';\n\nexport * from './lib/directives/autosize';\n\nexport * from './helpers/color.helper';\nexport * from './parameters/colors.parameter';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.GtrToasterService","i1.GtrCalendarService","i1.GtrDropdownService","i2.GtrDropdownComponent","i2","i1","i1.GtrFetchAttributePipe"],"mappings":"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AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;MC/sBa,uBAAuB,CAAA;AAClC,IAAA,WAAA,CAAmB,UAAsB,EAAA;QAAtB,IAAA,CAAA,UAAU,GAAV,UAAU;IAAe;kIADjC,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CA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"}