{"version":3,"file":"marcura-marcura-tooltip.mjs","sources":["../../src/lib/components/attached-tooltip-content/attached-tooltip-content.component.ts","../../src/lib/model/tooltip-horizontal-align.enum.ts","../../src/lib/model/tooltip-vertical-align.enum.ts","../../src/lib/model/tooltip-arrow-position.enum.ts","../../src/lib/model/tooltip-module-config.const.ts","../../src/lib/model/tooltip-position-mode.enum.ts","../../src/lib/model/tooltip-position.enum.ts","../../src/lib/model/tooltip-type.enum.ts","../../src/lib/model/tooltip-width.enum.ts","../../src/lib/components/tooltip/tooltip.component.ts","../../src/lib/components/tooltip/tooltip.component.html","../../src/lib/components/validation-hints/validation-hints.component.ts","../../src/lib/components/validation-hints/validation-hints.component.html","../../src/lib/components/validation-tooltip-content/validation-tooltip-content.component.ts","../../src/lib/directives/attached-tooltip.directive.ts","../../src/lib/tooltip.injectables.ts","../../src/lib/directives/validation-tooltip.directive.ts","../../src/lib/model/validation-hint.ts","../../src/lib/tooltip.module.ts","../../src/marcura-marcura-tooltip.ts"],"sourcesContent":["import {Component, Input} from '@angular/core';\r\n\r\n@Component({\r\n  selector: 'sg-attached-tooltip-content',\r\n  template: '{{ content }}',\r\n  standalone: false,\r\n})\r\nexport class AttachedTooltipContentComponent {\r\n  @Input()\r\n  public content: string = '';\r\n}\r\n","export enum TooltipHorizontalAlign {\r\n  Center = 'center',\r\n  Left = 'left',\r\n  Right = 'right',\r\n}\r\n","export enum TooltipVerticalAlign {\r\n  Center = 'center',\r\n  Bottom = 'bottom',\r\n  Top = 'top',\r\n}\r\n","export enum TooltipArrowPosition {\r\n  Center = 'center',\r\n  Left = 'left',\r\n  Right = 'right',\r\n}\r\n","import {InjectionToken} from '@angular/core';\r\nimport {ITooltipModuleConfig} from './tooltip-module-config.interface';\r\n\r\nexport const TOOLTIP_MODULE_CONFIG: InjectionToken<ITooltipModuleConfig> = new InjectionToken<ITooltipModuleConfig>(\r\n  'TooltipModule.ITooltipModuleConfig'\r\n);\r\n","export enum TooltipPositionMode {\r\n  Absolute = 'absolute',\r\n  Fixed = 'fixed',\r\n}\r\n","export enum TooltipPosition {\r\n  Bottom = 'bottom',\r\n  Top = 'top',\r\n  Left = 'left',\r\n  Right = 'right',\r\n}\r\n","export enum TooltipType {\r\n  Light = 'light',\r\n  Dark = 'dark',\r\n  Error = 'error',\r\n  Warning = 'warning',\r\n  Info = 'info',\r\n  Success = 'success',\r\n}\r\n","export enum TooltipWidth {\r\n  Anchor = 'anchor',\r\n  Auto = 'auto',\r\n}\r\n","import {\r\n  ChangeDetectionStrategy,\r\n  ChangeDetectorRef,\r\n  Component,\r\n  EventEmitter,\r\n  HostBinding,\r\n  Inject,\r\n  Input,\r\n  OnDestroy,\r\n  Output,\r\n} from '@angular/core';\r\nimport {Assert, ObservableGroup, Observer, WINDOW} from '@marcura/marcura-common';\r\nimport {PopupAnimation} from '@progress/kendo-angular-popup';\r\nimport {TooltipHorizontalAlign} from '../../model/tooltip-horizontal-align.enum';\r\nimport {TooltipVerticalAlign} from '../../model/tooltip-vertical-align.enum';\r\nimport {BehaviorSubject, combineLatest} from 'rxjs';\r\nimport {IKendoPositionChangedEvent} from '../../model/kendo-position-changed.event';\r\nimport {ITooltipAlign} from '../../model/tooltip-align.interface';\r\nimport {TooltipArrowPosition} from '../../model/tooltip-arrow-position.enum';\r\nimport {ITooltipConfig} from '../../model/tooltip-config.interface';\r\nimport {ITooltipMargin} from '../../model/tooltip-margin.interface';\r\nimport {TOOLTIP_MODULE_CONFIG} from '../../model/tooltip-module-config.const';\r\nimport {ITooltipModuleConfig} from '../../model/tooltip-module-config.interface';\r\nimport {TooltipPositionMode} from '../../model/tooltip-position-mode.enum';\r\nimport {TooltipPosition} from '../../model/tooltip-position.enum';\r\nimport {TooltipType} from '../../model/tooltip-type.enum';\r\nimport {TooltipWidth} from '../../model/tooltip-width.enum';\r\n\r\nexport interface ITooltipComponentObservable {\r\n  readonly isOpen: boolean;\r\n}\r\n\r\n@Component({\r\n  selector: 'sg-tooltip',\r\n  templateUrl: 'tooltip.component.html',\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  standalone: false,\r\n})\r\nexport class TooltipComponent implements OnDestroy {\r\n  private readonly _observer: Observer = new Observer();\r\n  private readonly _config: ITooltipConfig = Assert.defined(this._moduleConfig.tooltip);\r\n  private readonly _window: Window;\r\n  private _popupWidth: string = 'auto';\r\n  private readonly _width: BehaviorSubject<TooltipWidth> = new BehaviorSubject<TooltipWidth>(\r\n    this._config.width ?? TooltipWidth.Anchor\r\n  );\r\n  private readonly _type: BehaviorSubject<TooltipType> = new BehaviorSubject<TooltipType>(\r\n    this._config.type ?? TooltipType.Error\r\n  );\r\n  // For allignment samples and info refer to:\r\n  // https://www.telerik.com/kendo-angular-ui/components/popup/aligning-positioning/#toc-positioning\r\n  private readonly _align: BehaviorSubject<ITooltipAlign> = new BehaviorSubject<ITooltipAlign>(\r\n    this._config.align ?? {\r\n      horizontal: TooltipHorizontalAlign.Center,\r\n      vertical: TooltipVerticalAlign.Top,\r\n    }\r\n  );\r\n  private readonly _anchorAlign: BehaviorSubject<ITooltipAlign> = new BehaviorSubject<ITooltipAlign>(\r\n    this._config.anchorAlign ?? {\r\n      horizontal: TooltipHorizontalAlign.Center,\r\n      vertical: TooltipVerticalAlign.Bottom,\r\n    }\r\n  );\r\n  private readonly _isVerticalFlip: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\r\n  private readonly _position: BehaviorSubject<TooltipPosition> = new BehaviorSubject<TooltipPosition>(\r\n    TooltipPosition.Top\r\n  );\r\n  private readonly _arrowHorizontalPosition: BehaviorSubject<TooltipArrowPosition | null> = new BehaviorSubject<TooltipArrowPosition | null>(\r\n    null\r\n  );\r\n  private readonly _arrowVerticalPosition: BehaviorSubject<TooltipArrowPosition | null> = new BehaviorSubject<TooltipArrowPosition | null>(\r\n    null\r\n  );\r\n  private readonly _isOpen: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\r\n  private _openTimer?: number;\r\n  private _positionMode: TooltipPositionMode = this._config.positionMode ?? TooltipPositionMode.Absolute;\r\n  private _margin: ITooltipMargin = this._config.margin ?? {horizontal: 0, vertical: 0};\r\n  private _openDelay: number = this._config.openDelay ?? 0;\r\n  private _hasClose: boolean = this._config.hasClose ?? false;\r\n  private _anchor: HTMLElement | undefined = undefined;\r\n  @HostBinding('class.sg-tooltip')\r\n  public readonly hasCssClass: boolean = true;\r\n  @HostBinding('class.sg-tooltip--type-light')\r\n  public get isLightType(): boolean {\r\n    return this._type.value === TooltipType.Light;\r\n  }\r\n  @HostBinding('class.sg-tooltip--type-dark')\r\n  public get isDarkType(): boolean {\r\n    return this._type.value === TooltipType.Dark;\r\n  }\r\n  @HostBinding('class.sg-tooltip--type-error')\r\n  public get isErrorType(): boolean {\r\n    return this._type.value === TooltipType.Error;\r\n  }\r\n  @HostBinding('class.sg-tooltip--type-warning')\r\n  public get isWarningType(): boolean {\r\n    return this._type.value === TooltipType.Warning;\r\n  }\r\n  @HostBinding('class.sg-tooltip--width-auto')\r\n  public get isAutoWidth(): boolean {\r\n    return this._width.value === TooltipWidth.Auto;\r\n  }\r\n  @HostBinding('class.sg-tooltip--width-anchor')\r\n  public get isAnchorWidth(): boolean {\r\n    return this._width.value === TooltipWidth.Anchor;\r\n  }\r\n  @HostBinding('class.sg-tooltip--arrow-horizontal-position-left')\r\n  public get isLeftArrowHorizontalPosition(): boolean {\r\n    return this._arrowHorizontalPosition.value === TooltipArrowPosition.Left;\r\n  }\r\n  @HostBinding('class.sg-tooltip--arrow-horizontal-position-center')\r\n  public get isCenterArrowHorizontalPosition(): boolean {\r\n    return this._arrowHorizontalPosition.value === TooltipArrowPosition.Center;\r\n  }\r\n  @HostBinding('class.sg-tooltip--arrow-horizontal-position-right')\r\n  public get isRightArrowHorizontalPosition(): boolean {\r\n    return this._arrowHorizontalPosition.value === TooltipArrowPosition.Right;\r\n  }\r\n  @HostBinding('class.sg-tooltip--arrow-vertical-position-center')\r\n  public get isCenterArrowVerticalPosition(): boolean {\r\n    return this._arrowVerticalPosition.value === TooltipArrowPosition.Center;\r\n  }\r\n  @HostBinding('class.sg-tooltip--position-top')\r\n  public get isTopPosition(): boolean {\r\n    return this._position.value === TooltipPosition.Top;\r\n  }\r\n  @HostBinding('class.sg-tooltip--position-bottom')\r\n  public get isBottomPosition(): boolean {\r\n    return this._position.value === TooltipPosition.Bottom;\r\n  }\r\n  @HostBinding('class.sg-tooltip--position-left')\r\n  public get isLeftPosition(): boolean {\r\n    return this._position.value === TooltipPosition.Left;\r\n  }\r\n  @HostBinding('class.sg-tooltip--position-right')\r\n  public get isRightPosition(): boolean {\r\n    return this._position.value === TooltipPosition.Right;\r\n  }\r\n  @Input()\r\n  public animate: PopupAnimation = {\r\n    type: 'fade',\r\n    duration: 100,\r\n    direction: 'down',\r\n  };\r\n  @Input()\r\n  public get anchor(): HTMLElement {\r\n    return Assert.defined(this._anchor);\r\n  }\r\n  public set anchor(anchor: HTMLElement) {\r\n    this._anchor = anchor;\r\n    this._updatePopupWidth();\r\n  }\r\n  @Input()\r\n  public get type(): TooltipType {\r\n    return this._type.value;\r\n  }\r\n  public set type(type: TooltipType) {\r\n    if (type && this._type.value !== type) {\r\n      this._type.next(type);\r\n    }\r\n  }\r\n  @Input()\r\n  public get width(): TooltipWidth {\r\n    return this._width.value;\r\n  }\r\n  public set width(width: TooltipWidth) {\r\n    if (width && this._width.value !== width) {\r\n      this._width.next(width);\r\n      this._updatePopupWidth();\r\n    }\r\n  }\r\n  @Input()\r\n  public get align(): ITooltipAlign {\r\n    return this._align.value;\r\n  }\r\n  public set align(align: ITooltipAlign) {\r\n    const _align: ITooltipAlign = {...this._align.value};\r\n\r\n    if (align) {\r\n      if (align.horizontal) {\r\n        _align.horizontal = align.horizontal;\r\n      }\r\n\r\n      if (align.vertical) {\r\n        _align.vertical = align.vertical;\r\n      }\r\n    }\r\n\r\n    if (this._align.value.horizontal !== _align.horizontal || this._align.value.vertical !== _align.vertical) {\r\n      this._align.next(_align);\r\n    }\r\n  }\r\n  @Input()\r\n  public get anchorAlign(): ITooltipAlign {\r\n    return this._anchorAlign.value;\r\n  }\r\n  public set anchorAlign(anchorAlign: ITooltipAlign) {\r\n    const _anchorAlign: ITooltipAlign = {...this._anchorAlign.value};\r\n\r\n    if (anchorAlign) {\r\n      if (anchorAlign.horizontal) {\r\n        _anchorAlign.horizontal = anchorAlign.horizontal;\r\n      }\r\n\r\n      if (anchorAlign.vertical) {\r\n        _anchorAlign.vertical = anchorAlign.vertical;\r\n      }\r\n    }\r\n\r\n    if (\r\n      this._anchorAlign.value.horizontal !== _anchorAlign.horizontal ||\r\n      this._anchorAlign.value.vertical !== _anchorAlign.vertical\r\n    ) {\r\n      this._anchorAlign.next(_anchorAlign);\r\n    }\r\n  }\r\n  @Input()\r\n  @HostBinding('class.sg-tooltip--has-close')\r\n  public get hasClose(): boolean {\r\n    return this._hasClose;\r\n  }\r\n  public set hasClose(hasClose: boolean) {\r\n    this._hasClose = !!hasClose;\r\n  }\r\n  @Input()\r\n  public get isOpen(): boolean {\r\n    return this._isOpen.value;\r\n  }\r\n  public set isOpen(isOpen: boolean) {\r\n    if (this._isOpen.value === isOpen) {\r\n      return;\r\n    }\r\n\r\n    // Give anchor a moment to render before setting the popup width, when tooltip is used inside a dialog.\r\n    this._window.setTimeout(() => {\r\n      this._updatePopupWidth();\r\n      this._changeDetectorRef.markForCheck();\r\n    });\r\n    this._isOpen.next(isOpen);\r\n    this.isOpenChange.emit(this._isOpen.value);\r\n\r\n    if (this._isOpen.value) {\r\n      this.opened.emit();\r\n    } else {\r\n      this.closed.emit();\r\n    }\r\n  }\r\n  @Input()\r\n  public get openDelay(): number {\r\n    return this._openDelay;\r\n  }\r\n  public set openDelay(openDelay: number) {\r\n    if (typeof openDelay === 'number' && this._openDelay !== openDelay) {\r\n      this._openDelay = openDelay;\r\n    }\r\n  }\r\n  @Input()\r\n  public get positionMode(): TooltipPositionMode {\r\n    return this._positionMode;\r\n  }\r\n  public set positionMode(positionMode: TooltipPositionMode) {\r\n    this._positionMode = positionMode || this._positionMode;\r\n  }\r\n  @Input()\r\n  public get margin(): ITooltipMargin {\r\n    return this._margin;\r\n  }\r\n  public set margin(margin: ITooltipMargin) {\r\n    const _margin: ITooltipMargin = {...this._margin};\r\n\r\n    if (margin) {\r\n      if (margin.horizontal) {\r\n        _margin.horizontal = margin.horizontal;\r\n      }\r\n\r\n      if (margin.vertical) {\r\n        _margin.vertical = margin.vertical;\r\n      }\r\n    }\r\n\r\n    if (this._margin.horizontal !== _margin.horizontal || this._margin.vertical !== _margin.vertical) {\r\n      this._margin = _margin;\r\n    }\r\n  }\r\n  @Input()\r\n  public closeOnOutsideClick: boolean = false;\r\n  @Output()\r\n  public readonly opened: EventEmitter<void> = new EventEmitter();\r\n  @Output()\r\n  public readonly closed: EventEmitter<void> = new EventEmitter();\r\n  // Two-way data binding for isOpen - [(isOpen)]=\"...\".\r\n  // Keep it private as this event isn't for outside use.\r\n  @Output()\r\n  private readonly isOpenChange: EventEmitter<boolean> = new EventEmitter();\r\n  public get popupWidth(): string {\r\n    return this._popupWidth;\r\n  }\r\n  public readonly observable: ObservableGroup<ITooltipComponentObservable> = {\r\n    isOpen: this._isOpen,\r\n  };\r\n\r\n  public constructor(\r\n    // Use any as type here to make strictMetadataEmit work without an error.\r\n    // See https://github.com/angular/angular/issues/20351.\r\n    @Inject(WINDOW) window: any,\r\n    @Inject(TOOLTIP_MODULE_CONFIG)\r\n    private readonly _moduleConfig: ITooltipModuleConfig,\r\n    private readonly _changeDetectorRef: ChangeDetectorRef\r\n  ) {\r\n    this._window = window;\r\n\r\n    this._observer.listen(\r\n      combineLatest([this._align, this._anchorAlign, this._isVerticalFlip]),\r\n      ([align, anchorAlign, isVerticalFlip]) => {\r\n        let position: TooltipPosition = TooltipPosition.Bottom;\r\n\r\n        if (anchorAlign.horizontal === 'right' && align.horizontal === 'left') {\r\n          position = TooltipPosition.Right;\r\n        } else if (anchorAlign.horizontal === 'left' && align.horizontal === 'right') {\r\n          position = TooltipPosition.Left;\r\n        } else if (isVerticalFlip) {\r\n          position = anchorAlign.vertical === 'bottom' ? TooltipPosition.Top : TooltipPosition.Bottom;\r\n        } else {\r\n          position = anchorAlign.vertical === 'bottom' ? TooltipPosition.Bottom : TooltipPosition.Top;\r\n        }\r\n\r\n        if (this._position.value !== position) {\r\n          this._position.next(position);\r\n          this._changeDetectorRef.markForCheck();\r\n        }\r\n      }\r\n    );\r\n\r\n    this._observer.listen(\r\n      combineLatest([this._align, this._anchorAlign, this._position]),\r\n      ([align, anchorAlign, position]) => {\r\n        let arrowHorizontalPosition: TooltipArrowPosition | null = TooltipArrowPosition.Center;\r\n        let arrowVerticalPosition: TooltipArrowPosition | null = null;\r\n\r\n        if (position === TooltipPosition.Left || position === TooltipPosition.Right) {\r\n          // Tooltip is positioned left or right to anchor - horizontal position is irrelevant.\r\n          arrowHorizontalPosition = null;\r\n          arrowVerticalPosition = TooltipArrowPosition.Center;\r\n        } else if (align.horizontal === anchorAlign.horizontal) {\r\n          if (align.horizontal === 'left') {\r\n            arrowHorizontalPosition = TooltipArrowPosition.Left;\r\n          } else if (align.horizontal === 'right') {\r\n            arrowHorizontalPosition = TooltipArrowPosition.Right;\r\n          }\r\n        }\r\n\r\n        if (this._arrowHorizontalPosition.value !== arrowHorizontalPosition) {\r\n          this._arrowHorizontalPosition.next(arrowHorizontalPosition);\r\n          this._changeDetectorRef.markForCheck();\r\n        }\r\n\r\n        if (this._arrowVerticalPosition.value !== arrowVerticalPosition) {\r\n          this._arrowVerticalPosition.next(arrowVerticalPosition);\r\n          this._changeDetectorRef.markForCheck();\r\n        }\r\n      }\r\n    );\r\n  }\r\n\r\n  private _updatePopupWidth(): void {\r\n    this._popupWidth = this.width === TooltipWidth.Anchor && this.anchor ? `${this.anchor.offsetWidth}px` : 'auto';\r\n  }\r\n\r\n  public ngOnDestroy(): void {\r\n    this._observer.destroy();\r\n  }\r\n\r\n  public onOutsideClicked(event: MouseEvent): void {\r\n    if (!this.anchor.contains(<HTMLElement>event.target)) {\r\n      this.close();\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Opens tooltip.\r\n   *\r\n   * @param [shouldDelay=false] Determines whether to delay opening to avoid tooltip flickering while user just passing by with the mouse.\r\n   * @memberof TooltipComponent\r\n   */\r\n  public open(shouldDelay: boolean = false): Promise<void> {\r\n    return new Promise((resolve) => {\r\n      if (shouldDelay) {\r\n        if (this._openTimer) {\r\n          this._window.clearTimeout(this._openTimer);\r\n        }\r\n\r\n        this._openTimer = this._window.setTimeout(() => {\r\n          this.isOpen = true;\r\n          resolve();\r\n          this._changeDetectorRef.markForCheck();\r\n        }, this.openDelay);\r\n      } else {\r\n        this.isOpen = true;\r\n        resolve();\r\n      }\r\n    });\r\n  }\r\n\r\n  /**\r\n   * Closes tooltip.\r\n   *\r\n   * @memberof TooltipComponent\r\n   */\r\n  public close(): void {\r\n    if (this._openTimer) {\r\n      this._window.clearTimeout(this._openTimer);\r\n    }\r\n\r\n    this.isOpen = false;\r\n  }\r\n\r\n  /**\r\n   * Toggles tooltip.\r\n   *\r\n   * @param [shouldDelay=false] Determines whether to delay opening to avoid tooltip flickering while user just passing by with the mouse.\r\n   * @memberof TooltipComponent\r\n   */\r\n  public async toggle(shouldDelay: boolean = false): Promise<void> {\r\n    if (this.isOpen) {\r\n      this.close();\r\n    } else {\r\n      await this.open(shouldDelay);\r\n    }\r\n  }\r\n\r\n  public onPositionChanged(event: IKendoPositionChangedEvent): void {\r\n    // Avoid ExpressionChangedAfterItHasBeenCheckedError when vertical flip changes.\r\n    // Function setTimeout is used as ChangeDetectorRef has no effect on the error.\r\n    this._window.setTimeout(() => {\r\n      if (this._isVerticalFlip.value !== event.flip.vertical) {\r\n        this._isVerticalFlip.next(event.flip.vertical);\r\n      }\r\n    });\r\n  }\r\n}\r\n","<kendo-popup\r\n  *ngIf=\"observable.isOpen | async\"\r\n  [sgOutsideClick]=\"closeOnOutsideClick\"\r\n  [anchor]=\"anchor\"\r\n  [anchorAlign]=\"{\r\n    horizontal: anchorAlign.horizontal || 'center',\r\n    vertical: anchorAlign.vertical || 'center'\r\n  }\"\r\n  [popupAlign]=\"{\r\n    horizontal: align.horizontal || 'center',\r\n    vertical: align.vertical || 'center'\r\n  }\"\r\n  [animate]=\"animate\"\r\n  [positionMode]=\"positionMode\"\r\n  [margin]=\"{\r\n    horizontal: margin.horizontal || 0,\r\n    vertical: margin.vertical || 0\r\n  }\"\r\n  (positionChange)=\"onPositionChanged($event)\"\r\n  (outsideClick)=\"onOutsideClicked($event)\"\r\n  [style.width]=\"popupWidth\"\r\n>\r\n  <div class=\"sg-tooltip__wrapper\">\r\n    <div class=\"sg-tooltip__inner\">\r\n      <div class=\"sg-tooltip__icon\" *ngIf=\"isErrorType || isWarningType\">\r\n        <i class=\"far\" [class.fa-times-circle]=\"isErrorType\" [class.fa-exclamation-circle]=\"isWarningType\"> </i>\r\n      </div>\r\n      <div class=\"sg-tooltip__content\">\r\n        <ng-content></ng-content>\r\n      </div>\r\n      <div class=\"sg-tooltip__close\" (click)=\"close()\" *ngIf=\"hasClose\">\r\n        <i class=\"far fa-times\"></i>\r\n      </div>\r\n    </div>\r\n    <div class=\"sg-tooltip__arrow\"></div>\r\n  </div>\r\n</kendo-popup>\r\n","import {ChangeDetectionStrategy, Component, Input} from '@angular/core';\r\nimport {ObservableGroup} from '@marcura/marcura-common';\r\nimport {combineLatest, BehaviorSubject} from 'rxjs';\r\nimport {map} from 'rxjs/operators';\r\nimport {ValidationHint} from '../../model/validation-hint';\r\n\r\ninterface IValidationHintItemObservable {\r\n  readonly iconCssClass: string;\r\n  readonly textCssClass: string;\r\n}\r\n\r\nclass ValidationHintItem {\r\n  public readonly observable: ObservableGroup<IValidationHintItemObservable> = {\r\n    iconCssClass: combineLatest([this.hint.observable.icon, this.hint.observable.color]).pipe(\r\n      map(([icon, color]) => {\r\n        const cssClass: string = icon ? `far ${icon} u-margin-right--xxs` : '';\r\n        return `${cssClass} u-color-text--${color}`;\r\n      })\r\n    ),\r\n    textCssClass: this.hint.observable.color.pipe(map((color) => `u-color-text--${color}`)),\r\n  };\r\n\r\n  public constructor(public readonly hint: ValidationHint) {}\r\n}\r\n\r\ninterface IValidationHintsComponentObservable {\r\n  readonly items: ValidationHintItem[];\r\n}\r\n\r\n@Component({\r\n  selector: 'sg-validation-hints',\r\n  templateUrl: 'validation-hints.component.html',\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  standalone: false,\r\n})\r\nexport class ValidationHintsComponent {\r\n  private readonly _validationHints: BehaviorSubject<ValidationHint[]> = new BehaviorSubject<ValidationHint[]>([]);\r\n  @Input()\r\n  public get validationHints(): ValidationHint[] {\r\n    return this._validationHints.value;\r\n  }\r\n  public set validationHints(validationHints: ValidationHint[]) {\r\n    this._validationHints.next(validationHints || []);\r\n  }\r\n  public readonly observable: ObservableGroup<IValidationHintsComponentObservable> = {\r\n    items: this._validationHints.pipe(\r\n      map((validationHints) => validationHints.map((validationHint) => new ValidationHintItem(validationHint)))\r\n    ),\r\n  };\r\n}\r\n","<div *ngFor=\"let item of observable.items | async\">\r\n  <i [class]=\"item.observable.iconCssClass | async\"></i\r\n  ><span [class]=\"item.observable.textCssClass | async\">{{ item.hint.observable.text | async }}</span>\r\n</div>\r\n","import {Component, Input} from '@angular/core';\r\nimport {AbstractControl} from '@angular/forms';\r\nimport {Assert} from '@marcura/marcura-common';\r\nimport {BehaviorSubject, Observable} from 'rxjs';\r\nimport {skip} from 'rxjs/operators';\r\nimport {ValidationTooltipError} from '../../model/validation-tooltip-error.interface';\r\n\r\n@Component({\r\n  selector: 'sg-validation-tooltip-content',\r\n  template: '{{error.text}}',\r\n  standalone: false,\r\n})\r\nexport class ValidationTooltipContentComponent<\r\n  TValue = any,\r\n  TError extends ValidationTooltipError = ValidationTooltipError\r\n> {\r\n  private readonly _errorSubject: BehaviorSubject<TError | undefined> = new BehaviorSubject<TError | undefined>(\r\n    undefined\r\n  );\r\n  private readonly _valueSubject: BehaviorSubject<TValue | null> = new BehaviorSubject<TValue | null>(null);\r\n  private readonly _controlSubject: BehaviorSubject<AbstractControl | undefined> = new BehaviorSubject<\r\n    AbstractControl | undefined\r\n  >(undefined);\r\n  protected readonly _error: Observable<TError | undefined> = this._errorSubject.pipe(skip(1));\r\n  protected readonly _value: Observable<TValue | null> = this._valueSubject.pipe(skip(1));\r\n  protected readonly _control: Observable<AbstractControl | undefined> = this._controlSubject.pipe(skip(1));\r\n  @Input()\r\n  public get error(): TError {\r\n    return Assert.defined(this._errorSubject.value);\r\n  }\r\n  public set error(error: TError) {\r\n    this._errorSubject.next(error);\r\n  }\r\n  @Input()\r\n  public get value(): TValue | null {\r\n    return this._valueSubject.value;\r\n  }\r\n  public set value(value: TValue | null) {\r\n    this._valueSubject.next(value);\r\n  }\r\n  @Input()\r\n  public get control(): AbstractControl {\r\n    return Assert.defined(this._controlSubject.value);\r\n  }\r\n  public set control(control: AbstractControl) {\r\n    this._controlSubject.next(control);\r\n  }\r\n}\r\n","import {\r\n  ComponentFactory,\r\n  ComponentFactoryResolver,\r\n  ComponentRef,\r\n  Directive,\r\n  ElementRef,\r\n  EventEmitter,\r\n  Inject,\r\n  Injector,\r\n  Input,\r\n  OnDestroy,\r\n  Output,\r\n  ViewContainerRef,\r\n} from '@angular/core';\r\nimport {Assert, Nil, Observer} from '@marcura/marcura-common';\r\nimport {TooltipHorizontalAlign} from '../model/tooltip-horizontal-align.enum';\r\nimport {TooltipVerticalAlign} from '../model/tooltip-vertical-align.enum';\r\nimport {BehaviorSubject} from 'rxjs';\r\nimport {AttachedTooltipContentComponent} from '../components/attached-tooltip-content/attached-tooltip-content.component';\r\nimport {TooltipComponent} from '../components/tooltip/tooltip.component';\r\nimport {IAttachedTooltipConfig} from '../model/attached-tooltip-config.interface';\r\nimport {ITooltipAlign} from '../model/tooltip-align.interface';\r\nimport {ITooltipMargin} from '../model/tooltip-margin.interface';\r\nimport {TOOLTIP_MODULE_CONFIG} from '../model/tooltip-module-config.const';\r\nimport {ITooltipModuleConfig} from '../model/tooltip-module-config.interface';\r\nimport {TooltipPositionMode} from '../model/tooltip-position-mode.enum';\r\nimport {TooltipType} from '../model/tooltip-type.enum';\r\nimport {TooltipWidth} from '../model/tooltip-width.enum';\r\n\r\n@Directive({\r\n  selector: '[sgAttachedTooltip]',\r\n  exportAs: 'attachedTooltip',\r\n  standalone: false,\r\n})\r\nexport class AttachedTooltipDirective implements OnDestroy {\r\n  private readonly _config: IAttachedTooltipConfig = Assert.defined(this._moduleConfig.attachedTooltip);\r\n  private readonly _observer: Observer = new Observer();\r\n  private readonly _tooltipObserver: Observer = new Observer();\r\n  private readonly _controlObserver: Observer = new Observer();\r\n  private _tooltipComponentRef?: ComponentRef<TooltipComponent>;\r\n  private _contentComponentRef?: ComponentRef<AttachedTooltipContentComponent>;\r\n  private readonly _eventsAnchor: HTMLElement = this._element.nativeElement;\r\n  private readonly _align: BehaviorSubject<ITooltipAlign> = new BehaviorSubject(\r\n    this._config.align ?? {\r\n      horizontal: TooltipHorizontalAlign.Center,\r\n      vertical: TooltipVerticalAlign.Top,\r\n    }\r\n  );\r\n  private readonly _anchorAlign: BehaviorSubject<ITooltipAlign> = new BehaviorSubject(\r\n    this._config.anchorAlign ?? {\r\n      horizontal: TooltipHorizontalAlign.Center,\r\n      vertical: TooltipVerticalAlign.Bottom,\r\n    }\r\n  );\r\n  private readonly _hasClose: BehaviorSubject<boolean> = new BehaviorSubject(this._config.hasClose ?? false);\r\n  private readonly _openDelay: BehaviorSubject<number> = new BehaviorSubject(this._config.openDelay ?? 0);\r\n  private readonly _margin: BehaviorSubject<ITooltipMargin> = new BehaviorSubject(\r\n    this._config.margin ?? {\r\n      horizontal: 0,\r\n      vertical: 0,\r\n    }\r\n  );\r\n  private readonly _positionMode: BehaviorSubject<TooltipPositionMode> = new BehaviorSubject(\r\n    this._config.positionMode ?? TooltipPositionMode.Absolute\r\n  );\r\n  private readonly _type: BehaviorSubject<TooltipType> = new BehaviorSubject(this._config.type ?? TooltipType.Error);\r\n  private readonly _width: BehaviorSubject<TooltipWidth> = new BehaviorSubject(\r\n    this._config.width ?? TooltipWidth.Anchor\r\n  );\r\n  private _isDisabled: boolean = false;\r\n  private _content: string = '';\r\n  private _isOpen: boolean = false;\r\n  @Input('sgAttachedTooltip')\r\n  public get content(): string {\r\n    return this._content;\r\n  }\r\n  public set content(content: string) {\r\n    this._content = content;\r\n  }\r\n  @Input('attachedTooltipAnchor')\r\n  public anchor: HTMLElement | Nil = null;\r\n  @Input('attachedTooltipAlign')\r\n  public get align(): ITooltipAlign {\r\n    return this._align.value;\r\n  }\r\n  public set align(align: ITooltipAlign) {\r\n    this._align.next({\r\n      horizontal: align?.horizontal || this._align.value.horizontal,\r\n      vertical: align?.vertical || this._align.value.vertical,\r\n    });\r\n  }\r\n  @Input('attachedTooltipAnchorAlign')\r\n  public get anchorAlign(): ITooltipAlign {\r\n    return this._anchorAlign.value;\r\n  }\r\n  public set anchorAlign(anchorAlign: ITooltipAlign) {\r\n    this._anchorAlign.next({\r\n      horizontal: anchorAlign?.horizontal || this._anchorAlign.value.horizontal,\r\n      vertical: anchorAlign?.vertical || this._anchorAlign.value.vertical,\r\n    });\r\n  }\r\n  @Input('attachedTooltipHasClose')\r\n  public get hasClose(): boolean {\r\n    return this._hasClose.value;\r\n  }\r\n  public set hasClose(hasClose: boolean) {\r\n    this._hasClose.next(!!hasClose);\r\n  }\r\n  @Input('attachedTooltipOpenDelay')\r\n  public get openDelay(): number {\r\n    return this._openDelay.value;\r\n  }\r\n  public set openDelay(openDelay: number) {\r\n    this._openDelay.next(typeof openDelay === 'number' ? openDelay : this._openDelay.value);\r\n  }\r\n  @Input('attachedTooltipMargin')\r\n  public get margin(): ITooltipMargin {\r\n    return this._margin.value;\r\n  }\r\n  public set margin(margin: ITooltipMargin) {\r\n    this._margin.next({\r\n      horizontal: margin?.horizontal || this._margin.value.horizontal,\r\n      vertical: margin?.vertical || this._margin.value.vertical,\r\n    });\r\n  }\r\n  @Input('attachedTooltipPositionMode')\r\n  public get positionMode(): TooltipPositionMode {\r\n    return this._positionMode.value;\r\n  }\r\n  public set positionMode(positionMode: TooltipPositionMode) {\r\n    this._positionMode.next(positionMode || this._positionMode.value);\r\n  }\r\n  @Input('attachedTooltipType')\r\n  public get type(): TooltipType {\r\n    return this._type.value;\r\n  }\r\n  public set type(type: TooltipType) {\r\n    this._type.next(type || this._type.value);\r\n  }\r\n  @Input('attachedTooltipWidth')\r\n  public get width(): TooltipWidth {\r\n    return this._width.value;\r\n  }\r\n  public set width(width: TooltipWidth) {\r\n    this._width.next(width || this._width.value);\r\n  }\r\n  @Input('attachedTooltipIsDisabled')\r\n  public get isDisabled(): boolean {\r\n    return this._isDisabled;\r\n  }\r\n  public set isDisabled(isDisabled: boolean) {\r\n    this._isDisabled = isDisabled;\r\n\r\n    if (this._isDisabled) {\r\n      this._detachEvents();\r\n      this._removeTooltipComponent();\r\n    } else {\r\n      this._attachEvents();\r\n    }\r\n  }\r\n  @Input('attachedTooltipIsOpen')\r\n  public get isOpen(): boolean {\r\n    return this._isOpen;\r\n  }\r\n  public set isOpen(isOpen: boolean) {\r\n    if (isOpen === this._isOpen) {\r\n      return;\r\n    }\r\n\r\n    this._isOpen = isOpen;\r\n    this.attachedTooltipIsOpenChange.emit(this._isOpen);\r\n\r\n    if (this._isOpen) {\r\n      this.open();\r\n    } else {\r\n      this.close();\r\n    }\r\n  }\r\n  @Output()\r\n  public attachedTooltipOpened: EventEmitter<void> = new EventEmitter();\r\n  @Output()\r\n  public attachedTooltipClosed: EventEmitter<void> = new EventEmitter();\r\n  // Two-way data binding for isOpen - [(isOpen)]=\"...\".\r\n  // Keep it private as this event isn't for outside use.\r\n  @Output()\r\n  private attachedTooltipIsOpenChange: EventEmitter<boolean> = new EventEmitter();\r\n\r\n  public constructor(\r\n    protected readonly _viewContainerRef: ViewContainerRef,\r\n    protected readonly _componentFactoryResolver: ComponentFactoryResolver,\r\n    protected readonly _element: ElementRef,\r\n    protected readonly _injector: Injector,\r\n    @Inject(TOOLTIP_MODULE_CONFIG)\r\n    private readonly _moduleConfig: ITooltipModuleConfig\r\n  ) {\r\n    this.type = this._config.type || this.type;\r\n    this.width = this._config.width || this.width;\r\n    this.align = this._config.align || this.align;\r\n    this.anchorAlign = this._config.anchorAlign || this.anchorAlign;\r\n    this.margin = this._config.margin || this.margin;\r\n    this.positionMode = this._config.positionMode || this.positionMode;\r\n    this._attachEvents();\r\n\r\n    this._observer.listen(this._align, () => {\r\n      if (this._tooltipComponentRef) {\r\n        this._tooltipComponentRef.instance.align = this.align;\r\n        this._tooltipComponentRef.hostView.detectChanges();\r\n      }\r\n    });\r\n\r\n    this._observer.listen(this._anchorAlign, () => {\r\n      if (this._tooltipComponentRef) {\r\n        this._tooltipComponentRef.instance.anchorAlign = this.anchorAlign;\r\n        this._tooltipComponentRef.hostView.detectChanges();\r\n      }\r\n    });\r\n\r\n    this._observer.listen(this._hasClose, () => {\r\n      if (this._tooltipComponentRef) {\r\n        this._tooltipComponentRef.instance.hasClose = this.hasClose;\r\n        this._tooltipComponentRef.hostView.detectChanges();\r\n      }\r\n    });\r\n\r\n    this._observer.listen(this._margin, () => {\r\n      if (this._tooltipComponentRef) {\r\n        this._tooltipComponentRef.instance.margin = this.margin;\r\n        this._tooltipComponentRef.hostView.detectChanges();\r\n      }\r\n    });\r\n\r\n    this._observer.listen(this._openDelay, () => {\r\n      if (this._tooltipComponentRef) {\r\n        this._tooltipComponentRef.instance.openDelay = this.openDelay;\r\n        this._tooltipComponentRef.hostView.detectChanges();\r\n      }\r\n    });\r\n\r\n    this._observer.listen(this._positionMode, () => {\r\n      if (this._tooltipComponentRef) {\r\n        this._tooltipComponentRef.instance.positionMode = this.positionMode;\r\n        this._tooltipComponentRef.hostView.detectChanges();\r\n      }\r\n    });\r\n\r\n    this._observer.listen(this._type, () => {\r\n      if (this._tooltipComponentRef) {\r\n        this._tooltipComponentRef.instance.type = this.type;\r\n        this._tooltipComponentRef.hostView.detectChanges();\r\n      }\r\n    });\r\n\r\n    this._observer.listen(this._width, () => {\r\n      if (this._tooltipComponentRef) {\r\n        this._tooltipComponentRef.instance.width = this.width;\r\n        this._tooltipComponentRef.hostView.detectChanges();\r\n      }\r\n    });\r\n  }\r\n\r\n  private _createTooltipComponent(): void {\r\n    this._removeTooltipComponent();\r\n\r\n    const tooltipComponentFactory: ComponentFactory<TooltipComponent> = this._componentFactoryResolver.resolveComponentFactory(\r\n      TooltipComponent\r\n    );\r\n    const contentComponentFactory: ComponentFactory<AttachedTooltipContentComponent> = this._componentFactoryResolver.resolveComponentFactory(\r\n      AttachedTooltipContentComponent\r\n    );\r\n    this._contentComponentRef = contentComponentFactory.create(this._injector);\r\n    this._tooltipComponentRef = this._viewContainerRef.createComponent(tooltipComponentFactory, 0, undefined, [\r\n      [this._contentComponentRef.location.nativeElement],\r\n    ]);\r\n    this._tooltipComponentRef.instance.anchor = this.anchor ?? this._eventsAnchor;\r\n    this._tooltipComponentRef.instance.anchorAlign = this.anchorAlign;\r\n    this._tooltipComponentRef.instance.align = this.align;\r\n    this._tooltipComponentRef.instance.hasClose = this.hasClose;\r\n    this._tooltipComponentRef.instance.margin = this.margin;\r\n    this._tooltipComponentRef.instance.openDelay = this.openDelay;\r\n    this._tooltipComponentRef.instance.positionMode = this.positionMode;\r\n    this._tooltipComponentRef.instance.type = this.type;\r\n    this._tooltipComponentRef.instance.width = this.width;\r\n    this._tooltipComponentRef.hostView.detectChanges();\r\n\r\n    this._tooltipObserver.listen(this._tooltipComponentRef.instance.opened, () => this.attachedTooltipOpened.emit());\r\n    this._tooltipObserver.listen(this._tooltipComponentRef.instance.closed, () => {\r\n      this.close();\r\n      this.attachedTooltipClosed.emit();\r\n    });\r\n  }\r\n\r\n  private _removeTooltipComponent(): void {\r\n    if (!this._tooltipComponentRef) {\r\n      return;\r\n    }\r\n\r\n    this._viewContainerRef.remove(this._viewContainerRef.indexOf(this._tooltipComponentRef.hostView));\r\n    this._tooltipComponentRef.destroy();\r\n\r\n    if (this._contentComponentRef) {\r\n      this._contentComponentRef.destroy();\r\n    }\r\n\r\n    this._tooltipComponentRef = undefined;\r\n    this._contentComponentRef = undefined;\r\n    this._tooltipObserver.clear();\r\n  }\r\n\r\n  private _attachEvents(): void {\r\n    this._detachEvents();\r\n\r\n    if (this._isDisabled) {\r\n      return;\r\n    }\r\n\r\n    this._eventsAnchor.addEventListener('mouseenter', this._onAnchorMouseEntered);\r\n    this._eventsAnchor.addEventListener('mouseleave', this._onAnchorMouseLeft);\r\n    this._eventsAnchor.addEventListener('mousedown', this._onAnchorMouseDowned);\r\n  }\r\n\r\n  private _detachEvents(): void {\r\n    this._eventsAnchor.removeEventListener('mouseenter', this._onAnchorMouseEntered);\r\n    this._eventsAnchor.removeEventListener('mouseleave', this._onAnchorMouseLeft);\r\n    this._eventsAnchor.removeEventListener('mousedown', this._onAnchorMouseDowned);\r\n  }\r\n\r\n  private _onAnchorMouseEntered = () => {\r\n    this.open(true);\r\n  };\r\n\r\n  private _onAnchorMouseLeft = () => {\r\n    this.close();\r\n  };\r\n\r\n  private _onAnchorMouseDowned = () => {\r\n    this.close();\r\n  };\r\n\r\n  public ngOnDestroy(): void {\r\n    this._removeTooltipComponent();\r\n    this._observer.destroy();\r\n    this._tooltipObserver.destroy();\r\n    this._controlObserver.destroy();\r\n  }\r\n\r\n  public async open(shouldDelay: boolean = false): Promise<void> {\r\n    if (this._isDisabled) {\r\n      return;\r\n    }\r\n\r\n    if (!this._contentComponentRef || !this._tooltipComponentRef) {\r\n      this._createTooltipComponent();\r\n    }\r\n\r\n    if (!this._contentComponentRef || !this._tooltipComponentRef) {\r\n      return;\r\n    }\r\n\r\n    this._contentComponentRef.instance.content = this.content;\r\n    this._contentComponentRef.hostView.detectChanges();\r\n    await this._tooltipComponentRef.instance.open(shouldDelay);\r\n    this.isOpen = true;\r\n  }\r\n\r\n  public close(): void {\r\n    if (this._isDisabled || !this._tooltipComponentRef) {\r\n      return;\r\n    }\r\n\r\n    this._tooltipComponentRef.instance.close();\r\n    this._removeTooltipComponent();\r\n    this.isOpen = false;\r\n  }\r\n\r\n  public async toggle(): Promise<void> {\r\n    if (this._isDisabled) {\r\n      return;\r\n    }\r\n\r\n    if (this._tooltipComponentRef?.instance.isOpen) {\r\n      this.close();\r\n    } else {\r\n      await this.open();\r\n    }\r\n  }\r\n}\r\n","import {InjectionToken} from '@angular/core';\r\nimport {ValidationErrors} from '@angular/forms';\r\nimport {ValidationTooltipError} from './model/validation-tooltip-error.interface';\r\n\r\nexport type ValidationTooltipErrorFn = (error: ValidationErrors | null) => ValidationTooltipError | undefined;\r\nexport const VALIDATION_TOOLTIP_ERROR_FN: InjectionToken<ValidationTooltipErrorFn> = new InjectionToken(\r\n  'TooltipModule.ValidationTooltipErrorFn'\r\n);\r\n","import {\r\n  ComponentFactory,\r\n  ComponentFactoryResolver,\r\n  ComponentRef,\r\n  Directive,\r\n  ElementRef,\r\n  EventEmitter,\r\n  Inject,\r\n  Injector,\r\n  Input,\r\n  OnDestroy,\r\n  Optional,\r\n  Output,\r\n  Type,\r\n  ViewContainerRef,\r\n} from '@angular/core';\r\nimport {AbstractControl} from '@angular/forms';\r\nimport {\r\n  ABSTRACT_CONTROL_COMPONENT,\r\n  AbstractControlComponent,\r\n  Assert,\r\n  IOpenableControlComponent,\r\n  Is,\r\n  Observer,\r\n  OPENABLE_CONTROL_COMPONENT,\r\n} from '@marcura/marcura-common';\r\nimport {TooltipHorizontalAlign} from '../model/tooltip-horizontal-align.enum';\r\nimport {TooltipVerticalAlign} from '../model/tooltip-vertical-align.enum';\r\nimport {TooltipComponent} from '../components/tooltip/tooltip.component';\r\nimport {ValidationTooltipContentComponent} from '../components/validation-tooltip-content/validation-tooltip-content.component';\r\nimport {ITooltipAlign} from '../model/tooltip-align.interface';\r\nimport {ITooltipMargin} from '../model/tooltip-margin.interface';\r\nimport {TOOLTIP_MODULE_CONFIG} from '../model/tooltip-module-config.const';\r\nimport {ITooltipModuleConfig} from '../model/tooltip-module-config.interface';\r\nimport {TooltipPositionMode} from '../model/tooltip-position-mode.enum';\r\nimport {TooltipType} from '../model/tooltip-type.enum';\r\nimport {TooltipWidth} from '../model/tooltip-width.enum';\r\nimport {IValidationTooltipConfig} from '../model/validation-tooltip-config.interface';\r\nimport {ValidationTooltipError} from '../model/validation-tooltip-error.interface';\r\nimport {ValidationTooltipHasCloseFn} from '../model/validation-tooltip-has-close-fn.type';\r\nimport {ValidationTooltipTemplateFn} from '../model/validation-tooltip-template-fn.type';\r\nimport {ValidationTooltipTypeFn} from '../model/validation-tooltip-type-fn.type';\r\nimport {VALIDATION_TOOLTIP_ERROR_FN, ValidationTooltipErrorFn} from '../tooltip.injectables';\r\n\r\n@Directive({\r\n  selector: '[sgValidationTooltip]',\r\n  exportAs: 'validationTooltip',\r\n  standalone: false,\r\n})\r\nexport class ValidationTooltipDirective implements OnDestroy {\r\n  private _config: IValidationTooltipConfig = Assert.defined(this._moduleConfig.validationTooltip);\r\n  private readonly _tooltipObserver: Observer = new Observer();\r\n  private readonly _controlObserver: Observer = new Observer();\r\n  private _tooltipComponentRef: ComponentRef<TooltipComponent> | undefined = undefined;\r\n  private _contentComponentRef: ComponentRef<ValidationTooltipContentComponent> | undefined = undefined;\r\n  private _anchor: HTMLElement | null = null;\r\n  private _width: TooltipWidth = this._config.width ?? TooltipWidth.Anchor;\r\n  private _align: ITooltipAlign = this._config.align ?? {\r\n    horizontal: TooltipHorizontalAlign.Center,\r\n    vertical: TooltipVerticalAlign.Top,\r\n  };\r\n  private _anchorAlign: ITooltipAlign = this._config.anchorAlign ?? {\r\n    horizontal: TooltipHorizontalAlign.Center,\r\n    vertical: TooltipVerticalAlign.Bottom,\r\n  };\r\n  private _positionMode: TooltipPositionMode = this._config.positionMode ?? TooltipPositionMode.Absolute;\r\n  private _margin: ITooltipMargin = this._config.margin ?? {\r\n    horizontal: 0,\r\n    vertical: 0,\r\n  };\r\n  private _formControl: AbstractControl | null = null;\r\n  private _isDisabled: boolean = false;\r\n  private get _canOpen(): boolean {\r\n    return (\r\n      !this._isDisabled &&\r\n      this.formControl !== null &&\r\n      this.formControl.invalid &&\r\n      (this.formControl.touched || this.formControl.dirty)\r\n    );\r\n  }\r\n  @Input()\r\n  public get validationTooltipIsDisabled(): boolean {\r\n    return this._isDisabled;\r\n  }\r\n  public set validationTooltipIsDisabled(isDisabled: boolean) {\r\n    this._isDisabled = isDisabled;\r\n\r\n    if (this._isDisabled) {\r\n      this._detachControlEvents();\r\n      this.close();\r\n    } else {\r\n      this._attachControlEvents();\r\n    }\r\n  }\r\n  @Input()\r\n  public get formControl(): AbstractControl | null {\r\n    return this._formControl;\r\n  }\r\n  public set formControl(formControl: AbstractControl | null) {\r\n    this._formControl = formControl;\r\n\r\n    if (formControl) {\r\n      this._attachControlEvents();\r\n    } else {\r\n      this._detachControlEvents();\r\n    }\r\n  }\r\n  @Input()\r\n  public get validationTooltipAnchor(): HTMLElement | null {\r\n    return this._anchor;\r\n  }\r\n  public set validationTooltipAnchor(validationTooltipAnchor: HTMLElement | null) {\r\n    this._anchor = validationTooltipAnchor;\r\n  }\r\n  @Input()\r\n  public validationTooltipType?: ValidationTooltipTypeFn;\r\n  @Input()\r\n  public get validationTooltipWidth(): TooltipWidth {\r\n    return this._width;\r\n  }\r\n  public set validationTooltipWidth(width: TooltipWidth) {\r\n    this._width = width || this._width;\r\n  }\r\n  @Input()\r\n  public get validationTooltipAnchorAlign(): ITooltipAlign {\r\n    return this._anchorAlign;\r\n  }\r\n  public set validationTooltipAnchorAlign(anchorAlign: ITooltipAlign) {\r\n    this._anchorAlign = {\r\n      horizontal: anchorAlign?.horizontal || this._anchorAlign.horizontal,\r\n      vertical: anchorAlign?.vertical || this._anchorAlign.vertical,\r\n    };\r\n  }\r\n  @Input()\r\n  public get validationTooltipAlign(): ITooltipAlign {\r\n    return this._align;\r\n  }\r\n  public set validationTooltipAlign(align: ITooltipAlign) {\r\n    this._align = {\r\n      horizontal: align?.horizontal || this._align.horizontal,\r\n      vertical: align?.vertical || this._align.vertical,\r\n    };\r\n  }\r\n  @Input()\r\n  public validationTooltipHasClose?: ValidationTooltipHasCloseFn;\r\n  @Input()\r\n  public get validationTooltipPositionMode(): TooltipPositionMode {\r\n    return this._positionMode;\r\n  }\r\n  public set validationTooltipPositionMode(positionMode: TooltipPositionMode) {\r\n    this._positionMode = positionMode || this._positionMode;\r\n  }\r\n  @Input()\r\n  public get validationTooltipMargin(): ITooltipMargin {\r\n    return this._margin;\r\n  }\r\n  public set validationTooltipMargin(margin: ITooltipMargin) {\r\n    this._margin = {\r\n      horizontal: margin?.horizontal || this._margin.horizontal,\r\n      vertical: margin?.vertical || this._margin.vertical,\r\n    };\r\n  }\r\n  @Input()\r\n  public validationTooltipTemplate?: ValidationTooltipTemplateFn;\r\n  @Output()\r\n  public validationTooltipOpened: EventEmitter<void> = new EventEmitter();\r\n  @Output()\r\n  public validationTooltipClosed: EventEmitter<void> = new EventEmitter();\r\n  public get anchor(): HTMLElement {\r\n    return this.validationTooltipAnchor || this._element.nativeElement;\r\n  }\r\n  public get isOpen(): boolean {\r\n    return !!(!this._isDisabled && this._tooltipComponentRef && this._tooltipComponentRef.instance.isOpen);\r\n  }\r\n\r\n  public constructor(\r\n    protected readonly _viewContainerRef: ViewContainerRef,\r\n    protected readonly _componentFactoryResolver: ComponentFactoryResolver,\r\n    protected readonly _element: ElementRef,\r\n    protected readonly _injector: Injector,\r\n    @Inject(TOOLTIP_MODULE_CONFIG)\r\n    private readonly _moduleConfig: ITooltipModuleConfig,\r\n    @Inject(VALIDATION_TOOLTIP_ERROR_FN)\r\n    protected readonly _validationTooltipErrorFn: ValidationTooltipErrorFn,\r\n    @Optional()\r\n    @Inject(ABSTRACT_CONTROL_COMPONENT)\r\n    protected readonly _abstractControlComponent: AbstractControlComponent,\r\n    @Optional()\r\n    @Inject(OPENABLE_CONTROL_COMPONENT)\r\n    protected readonly _openableControlcomponent: IOpenableControlComponent\r\n  ) {}\r\n\r\n  private _getType(error: ValidationTooltipError): TooltipType {\r\n    const type: TooltipType | undefined = this.validationTooltipType && this.validationTooltipType(error);\r\n    return type ?? this._moduleConfig?.validationTooltip?.type ?? TooltipType.Error;\r\n  }\r\n\r\n  private _getHasClose(error: ValidationTooltipError): boolean {\r\n    const hasClose: boolean | undefined = this.validationTooltipHasClose\r\n      ? this.validationTooltipHasClose(error)\r\n      : undefined;\r\n    return hasClose !== undefined ? hasClose : this._moduleConfig.validationTooltip?.hasClose ?? false;\r\n  }\r\n\r\n  private _getConfig(error: ValidationTooltipError): IValidationTooltipConfig {\r\n    return {\r\n      ...this._moduleConfig.validationTooltip,\r\n      type: this._getType(error),\r\n      hasClose: this._getHasClose(error),\r\n    };\r\n  }\r\n\r\n  private _getContentComponentType(error: ValidationTooltipError | undefined): Type<ValidationTooltipContentComponent> {\r\n    const type: Type<ValidationTooltipContentComponent> | undefined =\r\n      error === undefined ? undefined : this.validationTooltipTemplate && this.validationTooltipTemplate(error);\r\n    return type || ValidationTooltipContentComponent;\r\n  }\r\n\r\n  private _hasConfigChanged(config: IValidationTooltipConfig): boolean {\r\n    return JSON.stringify(this._config) !== JSON.stringify(config);\r\n  }\r\n\r\n  private _createTooltipComponent(): void {\r\n    this._removeTooltipComponent();\r\n\r\n    const contentComponentType: Type<ValidationTooltipContentComponent> = this._getContentComponentType(\r\n      this.getError()\r\n    );\r\n    const tooltipComponentFactory: ComponentFactory<TooltipComponent> = this._componentFactoryResolver.resolveComponentFactory(\r\n      TooltipComponent\r\n    );\r\n    const contentComponentFactory: ComponentFactory<ValidationTooltipContentComponent> = this._componentFactoryResolver.resolveComponentFactory(\r\n      contentComponentType\r\n    );\r\n    this._contentComponentRef = contentComponentFactory.create(this._injector);\r\n    this._tooltipComponentRef = this._viewContainerRef.createComponent(tooltipComponentFactory, 0, undefined, [\r\n      [this._contentComponentRef.location.nativeElement],\r\n    ]);\r\n    this._tooltipComponentRef.instance.isOpen = false;\r\n    this._tooltipComponentRef.instance.anchor = this.anchor;\r\n    this._tooltipComponentRef.instance.width = this.validationTooltipWidth;\r\n    this._tooltipComponentRef.instance.anchorAlign = this.validationTooltipAnchorAlign;\r\n    this._tooltipComponentRef.instance.align = this.validationTooltipAlign;\r\n    this._tooltipComponentRef.instance.positionMode = this.validationTooltipPositionMode;\r\n    this._tooltipComponentRef.instance.margin = this.validationTooltipMargin;\r\n    this._tooltipComponentRef.hostView.detectChanges();\r\n\r\n    this._tooltipObserver.listen(this._tooltipComponentRef.instance.opened, () => this.validationTooltipOpened.emit());\r\n    this._tooltipObserver.listen(this._tooltipComponentRef.instance.closed, () => this.close());\r\n  }\r\n\r\n  private _removeTooltipComponent(): void {\r\n    if (!this._tooltipComponentRef) {\r\n      return;\r\n    }\r\n\r\n    this._viewContainerRef.remove(this._viewContainerRef.indexOf(this._tooltipComponentRef.hostView));\r\n    this._tooltipComponentRef.destroy();\r\n    this._contentComponentRef?.destroy();\r\n    this._tooltipComponentRef = undefined;\r\n    this._contentComponentRef = undefined;\r\n    this._tooltipObserver.clear();\r\n  }\r\n\r\n  private _attachControlEvents(): void {\r\n    this._detachControlEvents();\r\n\r\n    if (this._isDisabled) {\r\n      return;\r\n    }\r\n\r\n    if (this.formControl) {\r\n      this._controlObserver.listen(this.formControl.statusChanges, () => this._onControlStatusChanged());\r\n    }\r\n\r\n    if (this._abstractControlComponent) {\r\n      this._controlObserver.listen(this._abstractControlComponent.focused, () => this.onControlFocused());\r\n      this._controlObserver.listen(this._abstractControlComponent.blurred, () => this.onControlBlurred());\r\n      // We wouldn't need to listen to changed event, if formControl.statusChanges were 100% reliable.\r\n      // Generally, formControl.statusChanges works fine, but there's a corner case.\r\n      // When user clears the value formControl.touched is only updated after a short delay.\r\n      // For example, initial numeric input value is 5 and user removes it with a backspace key.\r\n      // Control becomes invalid, but tooltip won't show, though it should.\r\n      // If we check the value of formControl.touched in formControl.statusChanges it'll be false,\r\n      // changing to a true after a timeout.\r\n      this._controlObserver.listen(this._abstractControlComponent.changed, () => this.onControlChanged());\r\n    }\r\n\r\n    if (this._openableControlcomponent) {\r\n      this._controlObserver.listen(this._openableControlcomponent.opened, () => this.onControlOpened());\r\n      this._controlObserver.listen(this._openableControlcomponent.closed, () => this.onControlClosed());\r\n    }\r\n  }\r\n\r\n  private _detachControlEvents(): void {\r\n    this._controlObserver.clear();\r\n  }\r\n\r\n  private _onControlStatusChanged(): void {\r\n    if (this.formControl?.touched || this.formControl?.dirty) {\r\n      this._toggleIfCanOpen();\r\n    } else {\r\n      this.close();\r\n    }\r\n  }\r\n\r\n  private _toggleIfCanOpen(): void {\r\n    if (this._canOpen) {\r\n      this.open();\r\n    } else {\r\n      this.close();\r\n    }\r\n  }\r\n\r\n  public getError(): ValidationTooltipError | undefined {\r\n    return this.formControl ? this._validationTooltipErrorFn(this.formControl.errors) : undefined;\r\n  }\r\n\r\n  public ngOnDestroy(): void {\r\n    this._removeTooltipComponent();\r\n    this._tooltipObserver.destroy();\r\n    this._controlObserver.destroy();\r\n  }\r\n\r\n  public open(): void {\r\n    if (this._isDisabled) {\r\n      return;\r\n    }\r\n\r\n    const error: ValidationTooltipError | undefined = this.getError();\r\n\r\n    if (!error) {\r\n      return;\r\n    }\r\n\r\n    const contentComponentType: Type<ValidationTooltipContentComponent> = this._getContentComponentType(error);\r\n    const oldContentComponent: string | undefined =\r\n      this._contentComponentRef && (<any>this._contentComponentRef.instance).constructor.name;\r\n    const newContentComponent: string | undefined =\r\n      contentComponentType && contentComponentType.prototype.constructor.name;\r\n    const hasContentComponentChanged: boolean =\r\n      Is.truthy(oldContentComponent) && Is.truthy(newContentComponent) && oldContentComponent !== newContentComponent;\r\n    const config: IValidationTooltipConfig = this._getConfig(error);\r\n    // When config changes such as tooltip type, it's better to recreate and reopen tooltip\r\n    // to avoid visual glitches.\r\n    const hasConfigChanged: boolean = this._hasConfigChanged(config);\r\n    this._config = config;\r\n\r\n    if (!this._contentComponentRef || !this._tooltipComponentRef || hasContentComponentChanged || hasConfigChanged) {\r\n      this._createTooltipComponent();\r\n    }\r\n\r\n    if (this._contentComponentRef) {\r\n      this._contentComponentRef.instance.error = error;\r\n      if (this.formControl) {\r\n        this._contentComponentRef.instance.value = this.formControl.value;\r\n        this._contentComponentRef.instance.control = this.formControl;\r\n      }\r\n      this._contentComponentRef.hostView.detectChanges();\r\n    }\r\n    if (this._tooltipComponentRef) {\r\n      this._tooltipComponentRef.instance.type = this._config.type ?? TooltipType.Error;\r\n      this._tooltipComponentRef.instance.hasClose = this._config.hasClose ?? false;\r\n      this._tooltipComponentRef.hostView.detectChanges();\r\n      this._tooltipComponentRef.instance.isOpen = true;\r\n    }\r\n  }\r\n\r\n  public close(): void {\r\n    if (this.isOpen) {\r\n      this.validationTooltipClosed.emit();\r\n    }\r\n\r\n    this._config = this._moduleConfig.validationTooltip ?? this._config;\r\n    this._removeTooltipComponent();\r\n  }\r\n\r\n  public toggle(): void {\r\n    if (this._isDisabled) {\r\n      return;\r\n    }\r\n\r\n    if (this.isOpen) {\r\n      this.close();\r\n    } else {\r\n      this.open();\r\n    }\r\n  }\r\n\r\n  public onControlFocused(): void {\r\n    this._toggleIfCanOpen();\r\n  }\r\n\r\n  public onControlBlurred(): void {\r\n    this._toggleIfCanOpen();\r\n  }\r\n\r\n  public onControlChanged(): void {\r\n    this._toggleIfCanOpen();\r\n  }\r\n\r\n  public onControlOpened(): void {\r\n    this.close();\r\n  }\r\n\r\n  public onControlClosed(): void {\r\n    if (this._canOpen) {\r\n      this.open();\r\n    }\r\n  }\r\n}\r\n","import {ObservableGroup} from '@marcura/marcura-common';\r\nimport {combineLatest, BehaviorSubject} from 'rxjs';\r\nimport {map} from 'rxjs/operators';\r\nimport {TooltipType} from './tooltip-type.enum';\r\nimport {IValidationHintObservable} from './validation-hint-observable.interface';\r\nimport {IValidationHintParams} from './validation-hint-params.interface';\r\n\r\nexport class ValidationHint {\r\n  private readonly _iconClassMappings: Record<TooltipType, string> = {\r\n    [TooltipType.Light]: '',\r\n    [TooltipType.Dark]: '',\r\n    [TooltipType.Error]: 'fa-times-circle',\r\n    [TooltipType.Info]: 'fa-info-circle',\r\n    [TooltipType.Success]: 'fa-check-circle',\r\n    [TooltipType.Warning]: 'fa-exclamation-circle',\r\n  };\r\n  private readonly _colorMappings: Record<TooltipType, string> = {\r\n    [TooltipType.Light]: 'secondary',\r\n    [TooltipType.Dark]: 'onbrand',\r\n    [TooltipType.Error]: 'risk',\r\n    [TooltipType.Info]: 'info',\r\n    [TooltipType.Success]: 'success',\r\n    [TooltipType.Warning]: 'warning',\r\n  };\r\n\r\n  private readonly _text: BehaviorSubject<string> = new BehaviorSubject<string>('');\r\n  private readonly _icon: BehaviorSubject<string | undefined> = new BehaviorSubject<string | undefined>(undefined);\r\n  private readonly _type: BehaviorSubject<TooltipType | undefined> = new BehaviorSubject<TooltipType | undefined>(\r\n    undefined\r\n  );\r\n\r\n  public get text(): string {\r\n    return this._text.value;\r\n  }\r\n  public set text(text: string) {\r\n    const _text: string = (text || '').trim();\r\n\r\n    if (_text && this._text.value !== _text) {\r\n      this._text.next(_text);\r\n    }\r\n  }\r\n  public get icon(): string | undefined {\r\n    return this._icon.value;\r\n  }\r\n  public set icon(icon: string | undefined) {\r\n    if (this._icon.value !== icon) {\r\n      this._icon.next(icon);\r\n    }\r\n  }\r\n  public set type(type: TooltipType | undefined) {\r\n    if (this._type.value !== type) {\r\n      this._type.next(type);\r\n    }\r\n  }\r\n  public get type(): TooltipType | undefined {\r\n    return this._type.value;\r\n  }\r\n\r\n  public readonly observable: ObservableGroup<IValidationHintObservable> = {\r\n    text: this._text,\r\n    icon: combineLatest([this._icon, this._type]).pipe(\r\n      map(([icon, type]) => icon ?? (type ? this._iconClassMappings[type] : ''))\r\n    ),\r\n    color: this._type.pipe(map((type) => (type ? this._colorMappings[type] : 'secondary'))),\r\n  };\r\n\r\n  public constructor(params: IValidationHintParams) {\r\n    this.text = params.text;\r\n    this.icon = params.icon;\r\n    this.type = params.type;\r\n  }\r\n}\r\n","import {CommonModule} from '@angular/common';\r\nimport {ElementRef, ModuleWithProviders, NgModule} from '@angular/core';\r\nimport {CommonModule as MarcuraCommonModue} from '@marcura/marcura-common';\r\nimport {PopupModule, POPUP_CONTAINER} from '@progress/kendo-angular-popup';\r\nimport {AttachedTooltipContentComponent} from './components/attached-tooltip-content/attached-tooltip-content.component';\r\nimport {TooltipComponent} from './components/tooltip/tooltip.component';\r\nimport {ValidationHintsComponent} from './components/validation-hints/validation-hints.component';\r\nimport {ValidationTooltipContentComponent} from './components/validation-tooltip-content/validation-tooltip-content.component';\r\nimport {AttachedTooltipDirective} from './directives/attached-tooltip.directive';\r\nimport {ValidationTooltipDirective} from './directives/validation-tooltip.directive';\r\nimport {TooltipHorizontalAlign} from './model/tooltip-horizontal-align.enum';\r\nimport {TOOLTIP_MODULE_CONFIG} from './model/tooltip-module-config.const';\r\nimport {ITooltipModuleConfig} from './model/tooltip-module-config.interface';\r\nimport {TooltipPositionMode} from './model/tooltip-position-mode.enum';\r\nimport {TooltipType} from './model/tooltip-type.enum';\r\nimport {TooltipVerticalAlign} from './model/tooltip-vertical-align.enum';\r\nimport {TooltipWidth} from './model/tooltip-width.enum';\r\n\r\nconst components: any[] = [TooltipComponent, ValidationTooltipContentComponent, AttachedTooltipContentComponent, ValidationHintsComponent];\r\nconst directives: any[] = [ValidationTooltipDirective, AttachedTooltipDirective];\r\nconst _config: ITooltipModuleConfig = {\r\n  tooltip: {\r\n    align: {\r\n      horizontal: TooltipHorizontalAlign.Center,\r\n      vertical: TooltipVerticalAlign.Bottom,\r\n    },\r\n    anchorAlign: {\r\n      horizontal: TooltipHorizontalAlign.Center,\r\n      vertical: TooltipVerticalAlign.Top,\r\n    },\r\n    hasClose: false,\r\n    margin: {\r\n      horizontal: 0,\r\n      vertical: 0,\r\n    },\r\n    openDelay: 200,\r\n    positionMode: TooltipPositionMode.Absolute,\r\n    type: TooltipType.Light,\r\n    width: TooltipWidth.Auto,\r\n  },\r\n  attachedTooltip: {\r\n    align: {\r\n      horizontal: TooltipHorizontalAlign.Center,\r\n      vertical: TooltipVerticalAlign.Bottom,\r\n    },\r\n    anchorAlign: {\r\n      horizontal: TooltipHorizontalAlign.Center,\r\n      vertical: TooltipVerticalAlign.Top,\r\n    },\r\n    hasClose: false,\r\n    margin: {\r\n      horizontal: 0,\r\n      vertical: 0,\r\n    },\r\n    openDelay: 200,\r\n    positionMode: TooltipPositionMode.Absolute,\r\n    type: TooltipType.Light,\r\n    width: TooltipWidth.Auto,\r\n  },\r\n  validationTooltip: {\r\n    align: {\r\n      horizontal: TooltipHorizontalAlign.Center,\r\n      vertical: TooltipVerticalAlign.Top,\r\n    },\r\n    anchorAlign: {\r\n      horizontal: TooltipHorizontalAlign.Center,\r\n      vertical: TooltipVerticalAlign.Bottom,\r\n    },\r\n    hasClose: true,\r\n    margin: {\r\n      horizontal: 0,\r\n      vertical: 0,\r\n    },\r\n    positionMode: TooltipPositionMode.Absolute,\r\n    type: TooltipType.Error,\r\n    width: TooltipWidth.Anchor,\r\n  },\r\n};\r\n\r\nexport function getPopupContainer(): ElementRef {\r\n  return {nativeElement: document.body} as ElementRef;\r\n}\r\n\r\n@NgModule({\r\n  declarations: [...components, ...directives],\r\n  imports: [CommonModule, MarcuraCommonModue, PopupModule],\r\n  exports: [...components, ...directives],\r\n  providers: [\r\n    {\r\n      provide: POPUP_CONTAINER,\r\n      useFactory: getPopupContainer,\r\n    },\r\n    {\r\n      provide: TOOLTIP_MODULE_CONFIG,\r\n      useValue: _config,\r\n    },\r\n  ],\r\n})\r\nexport class TooltipModule {\r\n  public static forRoot(config?: ITooltipModuleConfig): ModuleWithProviders<TooltipModule> {\r\n    return {\r\n      ngModule: TooltipModule,\r\n      providers: [\r\n        {\r\n          provide: TOOLTIP_MODULE_CONFIG,\r\n          useValue: <ITooltipModuleConfig>{\r\n            tooltip: {\r\n              align: {\r\n                horizontal: config?.tooltip?.align?.horizontal || _config.tooltip?.align?.horizontal,\r\n                vertical: config?.tooltip?.align?.vertical || _config.tooltip?.align?.vertical,\r\n              },\r\n              anchorAlign: {\r\n                horizontal: config?.tooltip?.anchorAlign?.horizontal || _config.tooltip?.anchorAlign?.horizontal,\r\n                vertical: config?.tooltip?.anchorAlign?.vertical || _config.tooltip?.anchorAlign?.vertical,\r\n              },\r\n              hasClose:\r\n                typeof config?.tooltip?.hasClose === 'boolean' ? config?.tooltip.hasClose : _config?.tooltip?.hasClose,\r\n              margin: {\r\n                horizontal: config?.tooltip?.margin?.horizontal || _config.tooltip?.margin?.horizontal,\r\n                vertical: config?.tooltip?.margin?.vertical || _config.tooltip?.margin?.vertical,\r\n              },\r\n              openDelay:\r\n                typeof config?.tooltip?.openDelay === 'number' ? config?.tooltip.openDelay : _config.tooltip?.openDelay,\r\n              positionMode: config?.tooltip?.positionMode || _config.tooltip?.positionMode,\r\n              type: config?.tooltip?.type || _config.tooltip?.type,\r\n              width: config?.tooltip?.width || _config.tooltip?.width,\r\n            },\r\n            attachedTooltip: {\r\n              align: {\r\n                horizontal: config?.attachedTooltip?.align?.horizontal || _config.attachedTooltip?.align?.horizontal,\r\n                vertical: config?.attachedTooltip?.align?.vertical || _config.attachedTooltip?.align?.vertical,\r\n              },\r\n              anchorAlign: {\r\n                horizontal:\r\n                  config?.attachedTooltip?.anchorAlign?.horizontal || _config.attachedTooltip?.anchorAlign?.horizontal,\r\n                vertical:\r\n                  config?.attachedTooltip?.anchorAlign?.vertical || _config.attachedTooltip?.anchorAlign?.vertical,\r\n              },\r\n              hasClose:\r\n                typeof config?.attachedTooltip?.hasClose === 'boolean'\r\n                  ? config?.attachedTooltip.hasClose\r\n                  : _config.attachedTooltip?.hasClose,\r\n              margin: {\r\n                horizontal: config?.attachedTooltip?.margin?.horizontal || _config.attachedTooltip?.margin?.horizontal,\r\n                vertical: config?.attachedTooltip?.margin?.vertical || _config.attachedTooltip?.margin?.vertical,\r\n              },\r\n              openDelay:\r\n                typeof config?.attachedTooltip?.openDelay === 'number'\r\n                  ? config?.attachedTooltip.openDelay\r\n                  : _config.attachedTooltip?.openDelay,\r\n              positionMode: config?.attachedTooltip?.positionMode || _config.attachedTooltip?.positionMode,\r\n              type: config?.attachedTooltip?.type || _config.attachedTooltip?.type,\r\n              width: config?.attachedTooltip?.width || _config.attachedTooltip?.width,\r\n            },\r\n            validationTooltip: {\r\n              align: {\r\n                horizontal:\r\n                  config?.validationTooltip?.align?.horizontal || _config.validationTooltip?.align?.horizontal,\r\n                vertical: config?.validationTooltip?.align?.vertical || _config.validationTooltip?.align?.vertical,\r\n              },\r\n              anchorAlign: {\r\n                horizontal:\r\n                  config?.validationTooltip?.anchorAlign?.horizontal ||\r\n                  _config.validationTooltip?.anchorAlign?.horizontal,\r\n                vertical:\r\n                  config?.validationTooltip?.anchorAlign?.vertical || _config.validationTooltip?.anchorAlign?.vertical,\r\n              },\r\n              hasClose:\r\n                typeof config?.validationTooltip?.hasClose === 'boolean'\r\n                  ? config?.validationTooltip.hasClose\r\n                  : _config.validationTooltip?.hasClose,\r\n              margin: {\r\n                horizontal:\r\n                  config?.validationTooltip?.margin?.horizontal || _config.validationTooltip?.margin?.horizontal,\r\n                vertical: config?.validationTooltip?.margin?.vertical || _config.validationTooltip?.margin?.vertical,\r\n              },\r\n              positionMode: config?.validationTooltip?.positionMode || _config.validationTooltip?.positionMode,\r\n              type: config?.validationTooltip?.type || _config.validationTooltip?.type,\r\n              width: config?.validationTooltip?.width || _config.validationTooltip?.width,\r\n            },\r\n          },\r\n        },\r\n      ],\r\n    };\r\n  }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["MarcuraCommonModue"],"mappings":"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"}