{"version":3,"file":"koalarx-ui-shared-directives.mjs","sources":["../../projects/koala-ui/shared/directives/hook-change.ts","../../projects/koala-ui/shared/directives/input-mask.ts","../../projects/koala-ui/shared/directives/input-currency-mask.ts","../../projects/koala-ui/shared/directives/tooltip.ts","../../projects/koala-ui/shared/directives/button.ts","../../projects/koala-ui/shared/directives/koalarx-ui-shared-directives.ts"],"sourcesContent":["import {\n  Directive,\n  effect,\n  inject,\n  input,\n  ViewContainerRef,\n} from '@angular/core';\n\n@Directive({ selector: '[hookChange]' })\nexport class HookChange {\n  private readonly viewContainerRef = inject(ViewContainerRef);\n\n  hookChange = input.required<any>();\n\n  constructor() {\n    effect(() => {\n      this.hookChange();\n      const onChange = this.viewContainerRef.element.nativeElement.onchange;\n\n      if (onChange) {\n        onChange();\n      }\n    });\n  }\n}\n","import { Directive, effect, ElementRef, inject, input } from '@angular/core';\nimport { NgxMaskPipe } from 'ngx-mask';\n\n@Directive({ selector: 'input[mask]', providers: [NgxMaskPipe] })\nexport class InputMask {\n  private readonly ngxMask = inject(NgxMaskPipe);\n  private readonly elementRef = inject<ElementRef<HTMLInputElement>>(\n    ElementRef<HTMLInputElement>\n  );\n\n  private get currentValue() {\n    return this.input.value;\n  }\n\n  private get input() {\n    return this.elementRef.nativeElement;\n  }\n\n  mask = input.required<string>();\n\n  constructor() {\n    effect(() => {\n      const mask = this.mask();\n\n      if (mask) {\n        this.elementRef.nativeElement.addEventListener('keyup', () =>\n          this.applyMask(mask)\n        );\n        this.elementRef.nativeElement.addEventListener('keypress', () =>\n          this.applyMask(mask)\n        );\n        this.elementRef.nativeElement.addEventListener('keydown', () =>\n          this.applyMask(mask)\n        );\n\n        setTimeout(() => this.applyMask(mask), 1);\n      }\n    });\n  }\n\n  private applyMask(mask: string) {\n    this.setValue(this.ngxMask.transform(this.currentValue, mask));\n  }\n\n  private setValue(value: string) {\n    this.input.value = value;\n  }\n}\n","import {\n  Directive,\n  ElementRef,\n  inject,\n  input,\n  OnDestroy,\n  OnInit,\n  output,\n} from '@angular/core';\nimport { AppConfig } from '@koalarx/ui/core/config';\nimport { KlNumber } from '@koalarx/utils/KlNumber';\nimport { NgxMaskPipe } from 'ngx-mask';\n\n@Directive({\n  selector: 'input[currencyMask]',\n  providers: [NgxMaskPipe],\n})\nexport class InputCurrencyMask implements OnInit, OnDestroy {\n  private readonly elementRef = inject<ElementRef<HTMLInputElement>>(\n    ElementRef<HTMLInputElement>,\n  );\n  private readonly appConfig = inject(AppConfig);\n  private writedValue = 0.0;\n\n  decimalCount = input<number>(2);\n  currencyValue = output<number>();\n\n  private get decimalFormatConfig() {\n    let prefix = '$';\n    let thousandSeparator = ',';\n    let decimalSeparator = '.';\n\n    switch (this.appConfig.language) {\n      case 'en':\n        prefix = '$';\n        break;\n      case 'ptBr':\n        thousandSeparator = '.';\n        decimalSeparator = ',';\n        prefix = 'R$';\n        break;\n    }\n\n    return {\n      prefix,\n      thousandSeparator,\n      decimalSeparator,\n    };\n  }\n\n  private maskCoin(value: number) {\n    const { prefix, thousandSeparator, decimalSeparator } =\n      this.decimalFormatConfig;\n\n    return new KlNumber(value).maskCoin(\n      prefix,\n      thousandSeparator,\n      decimalSeparator,\n      this.decimalCount(),\n    );\n  }\n\n  private unmaskCoin(value: string): number {\n    const { prefix, thousandSeparator, decimalSeparator } =\n      this.decimalFormatConfig;\n\n    return parseFloat(\n      value\n        .replace(prefix, '')\n        .replace(new RegExp(`\\\\${thousandSeparator}`, 'g'), '')\n        .replace(decimalSeparator, '.')\n        .trim(),\n    );\n  }\n\n  private applyMask() {\n    this.setValue(this.maskCoin(this.writedValue));\n  }\n\n  private get currentValue() {\n    return this.input.value;\n  }\n\n  private setValue(value: string) {\n    this.input.value = value;\n  }\n\n  private get input() {\n    return this.elementRef.nativeElement;\n  }\n\n  private onFocus = () => {\n    this.putInputCaretOnTheEnd();\n  };\n\n  private onKeyUp = (event: KeyboardEvent) => {\n    if (/\\d/.test(event.key) || event.key === 'Backspace') {\n      this.updateWritedValue(event.key, event.key === 'Backspace');\n\n      if (isNaN(this.writedValue)) {\n        this.writedValue = 0;\n      }\n\n      this.applyMask();\n    } else if (event.key === 'ArrowLeft' || event.key === 'ArrowRight') {\n      this.putInputCaretOnTheEnd();\n    }\n  };\n\n  private onKeyPress = (event: KeyboardEvent) => {\n    event.preventDefault();\n  };\n\n  private onKeyDown = (event: KeyboardEvent) => {\n    if (event.key === 'Backspace') {\n      event.preventDefault();\n    }\n  };\n\n  private onPaste = (event: ClipboardEvent) => {\n    event.preventDefault();\n\n    if (!event.clipboardData) {\n      return;\n    }\n\n    const pastedValue = event.clipboardData.getData('Text');\n\n    let unmaskedValue = parseFloat(pastedValue);\n\n    if (pastedValue.includes(',')) {\n      unmaskedValue = this.unmaskCoin(event.clipboardData.getData('Text'));\n    }\n\n    this.setValue(this.maskCoin(unmaskedValue));\n  };\n\n  private onReset = () => {\n    this.writedValue = 0.0;\n    this.applyMask();\n  };\n\n  private onChange = () => {\n    if (this.writedValue !== 0) {\n      return;\n    }\n\n    let unmaskedValue = +this.currentValue;\n\n    if (isNaN(unmaskedValue)) {\n      unmaskedValue = this.unmaskCoin(this.currentValue);\n    }\n\n    this.writedValue = unmaskedValue;\n    this.applyMask();\n  };\n\n  private putInputCaretOnTheEnd() {\n    setTimeout(() =>\n      this.input.setSelectionRange(\n        this.currentValue.length,\n        this.currentValue.length,\n      ),\n    );\n  }\n\n  private updateWritedValue(key: string, backspace = false) {\n    let decimal = '';\n\n    for (let i = 0; i < this.decimalCount(); i++) {\n      decimal += '0';\n    }\n\n    if (backspace) {\n      const match = (this.writedValue / 10)\n        .toString()\n        .match(new RegExp(`^-?\\\\d+(?:\\\\.\\\\d{0,${this.decimalCount()}})?`));\n\n      if (match) {\n        this.writedValue = parseFloat(match[0]);\n      }\n    }\n\n    const currentValue = Math.round(this.writedValue * +`1${decimal}`);\n\n    this.writedValue = parseFloat(`${currentValue}${key}`) / +`1${decimal}`;\n    this.currencyValue.emit(this.writedValue);\n  }\n\n  ngOnDestroy(): void {\n    const inputElement = this.elementRef.nativeElement;\n\n    inputElement.removeEventListener('focus', this.onFocus);\n    inputElement.removeEventListener('keyup', this.onKeyUp);\n    inputElement.removeEventListener('keypress', this.onKeyPress);\n    inputElement.removeEventListener('keydown', this.onKeyDown);\n    inputElement.removeEventListener('paste', this.onPaste);\n    inputElement.removeEventListener('reset', this.onReset);\n  }\n\n  ngOnInit(): void {\n    this.writedValue = this.unmaskCoin(this.currentValue);\n\n    this.input.style.textAlign = 'right';\n\n    const inputElement = this.elementRef.nativeElement;\n\n    inputElement.addEventListener('focus', this.onFocus);\n    inputElement.addEventListener('keyup', this.onKeyUp);\n    inputElement.addEventListener('keypress', this.onKeyPress);\n    inputElement.addEventListener('keydown', this.onKeyDown);\n    inputElement.addEventListener('paste', this.onPaste);\n    inputElement.addEventListener('reset', this.onReset);\n    inputElement.onchange = this.onChange;\n\n    setTimeout(() => this.applyMask());\n  }\n}\n","import { Directive, effect, ElementRef, inject, input } from '@angular/core';\n\ntype TooltipPosition = 'top' | 'bottom' | 'left' | 'right';\n\n@Directive({ selector: '[tooltip]' })\nexport class Tooltip {\n  private readonly elementRef = inject<ElementRef<HTMLElement>>(\n    ElementRef<HTMLElement>\n  );\n\n  tooltip = input.required<string>();\n  tooltipPosition = input<TooltipPosition>('top');\n\n  constructor() {\n    effect(() => {\n      const element = this.elementRef.nativeElement;\n      const tooltipText = this.tooltip();\n\n      element.classList.add('tooltip');\n      element.dataset['tip'] = tooltipText;\n\n      switch (this.tooltipPosition()) {\n        case 'top':\n          element.classList.add('tooltip-top');\n          break;\n        case 'bottom':\n          element.classList.add('tooltip-bottom');\n          break;\n        case 'left':\n          element.classList.add('tooltip-left');\n          break;\n        case 'right':\n          element.classList.add('tooltip-right');\n          break;\n      }\n    });\n  }\n}\n","import {\n  ApplicationRef,\n  booleanAttribute,\n  ComponentRef,\n  createComponent,\n  Directive,\n  effect,\n  ElementRef,\n  EnvironmentInjector,\n  inject,\n  input,\n  inputBinding,\n  OnInit,\n} from '@angular/core';\nimport { Loader } from '@koalarx/ui/core/components/loader';\n\nexport type ButtonColor =\n  | 'neutral'\n  | 'primary'\n  | 'secondary'\n  | 'accent'\n  | 'info'\n  | 'success'\n  | 'warning'\n  | 'error'\n  | 'ghost';\n\nexport type ButtonSize =\n  | 'extraSmall'\n  | 'small'\n  | 'medium'\n  | 'large'\n  | 'extraLarge';\n\n@Directive({ selector: 'button[klButton], a[klButton]' })\nexport class Button implements OnInit {\n  private readonly elementRef = inject<ElementRef<HTMLButtonElement>>(\n    ElementRef<HTMLButtonElement>\n  );\n  private readonly appRef = inject(ApplicationRef);\n  private readonly injector = inject(EnvironmentInjector);\n  private loaderComponent: ComponentRef<Loader> | null = null;\n\n  color = input<ButtonColor>('neutral');\n  type = input<'button' | 'submit'>('button');\n  circle = input(false, { transform: booleanAttribute });\n  outline = input(false, { transform: booleanAttribute });\n  soft = input(false, { transform: booleanAttribute });\n  showLoader = input(false, { transform: booleanAttribute });\n  disabled = input(false, { transform: booleanAttribute });\n  size = input<ButtonSize>('medium');\n\n  constructor() {\n    effect(() => this.toggleLoader(this.showLoader()));\n    effect(() => {\n      const disabled = this.disabled();\n      this.elementRef.nativeElement.disabled = disabled;\n    });\n  }\n\n  private createLoaderComponent() {\n    const spanContainer = this.elementRef.nativeElement.insertBefore(\n      document.createElement('span'),\n      this.elementRef.nativeElement.firstChild\n    );\n    spanContainer.classList.add(\n      'flex',\n      'items-center',\n      'justify-center',\n      'h-full'\n    );\n    this.loaderComponent = createComponent(Loader, {\n      environmentInjector: this.injector,\n      hostElement: spanContainer,\n      bindings: [inputBinding('size', () => this.size())],\n    });\n\n    return this.loaderComponent;\n  }\n\n  private toggleLoader(show: boolean) {\n    if (show) {\n      const loaderComponent = this.createLoaderComponent();\n\n      this.elementRef.nativeElement.disabled = true;\n      this.appRef.attachView(loaderComponent.hostView);\n    } else {\n      if (!this.disabled()) {\n        this.elementRef.nativeElement.disabled = false;\n      }\n\n      if (this.loaderComponent) {\n        this.appRef.detachView(this.loaderComponent.hostView);\n        this.loaderComponent.destroy();\n        this.loaderComponent = null;\n      }\n    }\n  }\n\n  private getColorClass(color: ButtonColor): string {\n    switch (color) {\n      case 'neutral':\n        return 'btn-neutral';\n      case 'primary':\n        return 'btn-primary';\n      case 'secondary':\n        return 'btn-secondary';\n      case 'accent':\n        return 'btn-accent';\n      case 'info':\n        return 'btn-info';\n      case 'success':\n        return 'btn-success';\n      case 'warning':\n        return 'btn-warning';\n      case 'error':\n        return 'btn-error';\n      case 'ghost':\n        return 'btn-ghost';\n      default:\n        throw new Error(`Unknown button color: ${color}`);\n    }\n  }\n\n  private getSizeClass(size: ButtonSize): string {\n    switch (size) {\n      case 'extraSmall':\n        return 'btn-xs';\n      case 'small':\n        return 'btn-sm';\n      case 'medium':\n        return 'btn-md';\n      case 'large':\n        return 'btn-lg';\n      case 'extraLarge':\n        return 'btn-xl';\n      default:\n        throw new Error(`Unknown button size: ${size}`);\n    }\n  }\n\n  ngOnInit(): void {\n    this.elementRef.nativeElement.type = this.type();\n    this.elementRef.nativeElement.classList.add('btn');\n    this.elementRef.nativeElement.classList.add(\n      this.getColorClass(this.color())\n    );\n    this.elementRef.nativeElement.classList.add(this.getSizeClass(this.size()));\n\n    if (this.outline()) {\n      this.elementRef.nativeElement.classList.add('btn-outline');\n    }\n\n    if (this.circle()) {\n      this.elementRef.nativeElement.classList.add('btn-circle');\n    }\n\n    if (this.soft()) {\n      this.elementRef.nativeElement.classList.add('btn-soft');\n    }\n  }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}