{"version":3,"file":"ngxhelpers-utils.mjs","sources":["../../../projects/utils/src/case-converter.pipe.ts","../../../projects/utils/src/filter.pipe.ts","../../../projects/utils/src/input-mask.directive.ts","../../../projects/utils/src/key-press-validator.directive.ts","../../../projects/utils/src/outside-click.directive.ts","../../../projects/utils/src/custom-listener.ts","../../../projects/utils/src/popover.directive.ts","../../../projects/utils/src/file-upload.component.ts","../../../projects/utils/src/ngxhelpers-utils.ts"],"sourcesContent":["import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n  name: 'caseConverter',\n  standalone: true\n})\nexport class CaseConverter implements PipeTransform {\n  transform(value: any, caseType: string = 'TC'): string {\n    if (value === '' || !value) {\n      return '';\n    }\n    switch (caseType) {\n      case 'LC':\n        return value.toLowerCase();\n      case 'UC':\n        return value.toUpperCase();\n      case 'CC':\n        return value.charAt(0).toUpperCase() + value.slice(1).toLowerCase();\n      case 'NC':\n        return value;\n      case 'TC':\n        return value.replace(/\\w\\S*/g, (txt: string) => {\n          return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();\n        });\n      default:\n        return value;\n    }\n    return value;\n  }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n  name: 'filterPipe',\n  standalone: true\n})\nexport class FilterPipe<T> implements PipeTransform {\n  transform(value: T[], searchText: string, searchKey: string | string[], nested = false): any {\n    if (!value) {\n      return [];\n    }\n\n    if (!searchText) {\n      return value;\n    }\n\n    if (nested && typeof searchKey === 'string') {\n      return this.filterNChild([...value], searchKey, searchText);\n    }\n\n    if (!searchKey) {\n      return value.filter((item: any) => item.toLowerCase().includes(searchText.toString().toLowerCase()));\n    }\n\n    return value.filter((item: any) => {\n      if (searchKey) {\n        if (typeof searchKey === 'string') {\n          return item[searchKey]?.toLowerCase().includes(searchText.toLowerCase());\n        } else {\n          let data = '';\n          for (let key of searchKey) {\n            data += (item[key] ?? '').toString().toLowerCase();\n          }\n          return data.includes(searchText.toString().toLowerCase());\n        }\n      }\n      return item?.toLowerCase().includes(searchText.toLowerCase());\n    });\n  }\n\n  filterNChild(value: T[], searchKey: string, searchText: string) {\n    const getChildren = (result: T[], el: any) => {\n      if (el[searchKey]?.toLowerCase().includes(searchText.toLowerCase())) {\n        result.push(el);\n        return result;\n      }\n      if (Array.isArray(el['children'])) {\n        const children = el.children.reduce(getChildren, []);\n        if (children.length) result.push({ ...el, children });\n      }\n      return result;\n    };\n\n    return value.reduce(getChildren, []);\n  }\n}\n","import { Directive, ElementRef, HostListener, OnChanges, SimpleChanges, input, inject } from '@angular/core';\nimport { NgControl } from '@angular/forms';\n\n@Directive({\n  selector: '[inputMask]',\n  standalone: true\n})\nexport class InputMaskDirective implements OnChanges {\n  private elm = inject<ElementRef<HTMLInputElement>>(ElementRef<HTMLInputElement>);\n  private ngControl = inject(NgControl, { self: true });\n  mask = input<string>('');\n  decimal = input<number>(0);\n  delimitter = input<string>(',');\n  maxLength = input<number>(100);\n  clearZero = input<boolean>(false);\n  maxValue = input<number>();\n  removeMask = input<boolean>(false);\n  pattern: string = '';\n\n  ngOnChanges(changes: SimpleChanges): void {\n    const numberPattern = '^(?=(?:\\\\d\\\\.?){0,number}$)\\\\d+$';\n    const decimalPattern = '^(?=(?:\\\\d\\\\.?){0,number}$)\\\\d+\\\\.?(?:\\\\.\\\\d{1,decimal})?$';\n    const { decimal, maxLength } = changes;\n    if (decimal?.currentValue || this.decimal()) {\n      this.pattern = decimalPattern.replace(/number/g, (maxLength?.currentValue || this.maxLength()).toString());\n      this.pattern = this.pattern.replace(/decimal/g, (decimal?.currentValue || this.decimal()).toString());\n    } else {\n      this.pattern = numberPattern.replace(/number/g, (maxLength?.currentValue || this.maxLength()).toString());\n    }\n  }\n\n  @HostListener('keydown', ['$event'])\n  onKeyDown(event: KeyboardEvent) {\n    if (this.validateNumPattern(event)) {\n      let val = (event.target as HTMLInputElement).value || '';\n      let caretPosition = (event.target as HTMLInputElement).selectionStart ?? val.length;\n      if (caretPosition < val.length) {\n        const valArr = val.split('');\n        valArr.splice(caretPosition, 0, event.key);\n        val = valArr.join('');\n      } else {\n        val += event.key;\n      }\n      val = val.replace(/[^0-9\\\\.]/g, '');\n      if (val.includes('.')) {\n        if (val.length > this.maxLength() && val.endsWith('.')) {\n          return false;\n        }\n        if (this.maxValue() && Number(val.split('.')[0]) > this.maxValue()!) {\n          return false;\n        }\n      } else if (val.length > this.maxLength()) {\n        return false;\n      }\n      if (\n        this.maxValue() &&\n        Number(val) > this.maxValue()! &&\n        !['Backspace', 'Delete', 'ArrowLeft', 'ArrowRight', 'Tab'].includes(event.key)\n      ) {\n        return false;\n      }\n      if (this.maxValue() && Number(val) === this.maxValue() && event.key === '.') {\n        return false;\n      }\n\n      if (+event.key >= 0 || +event.key <= 9 || event.key === '.') {\n        return new RegExp(this.pattern).test(val);\n      }\n      return event;\n    }\n    return false;\n  }\n\n  validateNumPattern(event: KeyboardEvent) {\n    let allowedKeys = [\n      '-',\n      '.',\n      '0',\n      '1',\n      '2',\n      '3',\n      '4',\n      '5',\n      '6',\n      '7',\n      '8',\n      '9',\n      'Backspace',\n      'Delete',\n      'ArrowLeft',\n      'ArrowRight',\n      'Tab'\n    ];\n    return allowedKeys.includes(event.key);\n  }\n\n  @HostListener('input')\n  onInput() {\n    let { value } = this.elm.nativeElement;\n    value = value?.replace(/[^0-9\\\\.]/g, '') || '';\n    if (this.delimitter() && value) {\n      const updatedVal = this.applyDelimitter(value, this.mask());\n      this.updateModelValue(updatedVal);\n    } else {\n      this.updateModelValue(value);\n    }\n  }\n  applyDelimitter(value: string, mask: string): string {\n    const [maskNo] = mask.split('.');\n    let [valNo, valDec] = value\n      .split('.')\n      .map((val, i) => (val !== '' ? (i === 0 ? Number(val).toString() : val.toString()) : val));\n    let updatedValue = '';\n    if (valNo) {\n      let valLength: number = valNo.length;\n      updatedValue = maskNo.split('').reduceRight((acc, data) => {\n        let newVal = acc;\n        if (valLength) {\n          if (data === this.delimitter()) {\n            newVal = this.delimitter() + newVal;\n          } else {\n            newVal = valNo.charAt(valLength - 1) + newVal;\n            valLength--;\n          }\n        }\n        return newVal;\n      }, '');\n    }\n    if (valDec !== undefined) {\n      updatedValue = updatedValue + '.' + valDec;\n    }\n    return updatedValue;\n  }\n  @HostListener('focusout', ['$event.target.value'])\n  onfocusOut(value: string) {\n    if (value === undefined) {\n      this.updateModelValue('');\n    } else {\n      let pureValue = Number(value.replace(/[^0-9\\\\.]/g, ''));\n      let decimal = Number(pureValue.toString().split('.')[1] ?? 0);\n      if (!pureValue) {\n        if (this.clearZero()) this.updateModelValue('');\n      } else if (value.startsWith('.')) {\n        this.updateModelValue(pureValue.toString());\n      } else if (!decimal) {\n        if (pureValue > this.maxValue()!) {\n          this.updateModelValue(this.applyDelimitter(this.maxValue()!.toString(), this.mask()));\n        } else {\n          this.updateModelValue(value.split('.')[0]);\n        }\n      } else if (decimal) {\n        this.updateModelValue(`${value.split('.')[0]}.${pureValue.toString().split('.')[1]}`);\n      } else if (value.endsWith('.0')) {\n        this.updateModelValue(value.slice(0, -2));\n      }\n    }\n  }\n  updateModelValue(value: any): void {\n    this.ngControl?.control!.setValue(value, { emitEvent: false });\n  }\n}\n","import { Directive, HostListener, input, inject } from '@angular/core';\nimport { NgControl } from '@angular/forms';\n\n@Directive({\n  selector: '[keyPressValidator]',\n  standalone: true\n})\nexport class KeyPressValidatorDirective {\n  private ngControl = inject(NgControl, { self: true });\n  regexPattern = input<string>('');\n  KeyPressType = input<'Allow' | 'Restrict'>('Allow');\n  removePattern = input<string>();\n\n  @HostListener('input', ['$event.target.value'])\n  onInput(value: string) {\n    let newValue = '';\n    if (this.KeyPressType() === 'Restrict') {\n      newValue = value.replace(new RegExp(this.regexPattern(), 'g'), '');\n    } else {\n      if (this.removePattern()) {\n        newValue = value.replace(new RegExp(this.removePattern()!, 'g'), '');\n      } else {\n        newValue = value.replace(new RegExp(this.regexPattern(), 'g'), '');\n      }\n    }\n    this.ngControl?.control!.setValue(newValue);\n  }\n  @HostListener('keypress', ['$event'])\n  onKeyPress(event: KeyboardEvent) {\n    return this.KeyPressType() === 'Allow'\n      ? new RegExp(this.regexPattern(), 'g').test(event.key)\n      : !new RegExp(this.regexPattern(), 'g').test(event.key);\n  }\n}\n","import { Directive, ElementRef, HostListener, output, inject } from '@angular/core';\n\n@Directive({\n  selector: '[outSideClick]',\n  standalone: true\n})\nexport class OutsideClickDirective {\n      private _elementRef = inject(ElementRef);\n  clickOutside = output<boolean>();\n\n  @HostListener('document:click', ['$event.target'])\n  onClick(targetElement: any) {\n    const clickInside = this._elementRef.nativeElement.contains(targetElement);\n    if (!clickInside) {\n      this.clickOutside.emit(true);\n    }\n  }\n}\n","import { ElementRef, Renderer2 } from '@angular/core';\n\nexport class CustomEventListener {\n  private prevPopoverEventHandlersString = '';\n  allowedEvents = ['mouseenter', 'mouseleave', 'click', 'init', 'shown', 'hidden'];\n  listenerFn: Map<string, () => void> = new Map();\n\n  constructor(private elementRef: ElementRef, private renderer: Renderer2) {}\n\n  updateEventHandlers(popoverEventHandlers: Map<string, Function>): void {\n    // Get string representation of eventHandlerMap\n    const eventHandlerMapString = stringifyMap(popoverEventHandlers);\n\n    // Check if event handler map changed\n    if (this.prevPopoverEventHandlersString === eventHandlerMapString) {\n      return;\n    }\n\n    // Update prev string representation of event handler map\n    this.prevPopoverEventHandlersString = eventHandlerMapString;\n\n    // Apply all provided event handlers\n    popoverEventHandlers.forEach((eventHandlerMethod, eventName) => {\n      if (this.allowedEvents.indexOf(eventName) === -1) {\n        throw new Error(`eventName must be one of ${this.allowedEvents}. You passed: ${eventName}`);\n      }\n      // Removes event handler for this event\n      this.removeEvent(eventName);\n\n      // Event handler is effectively removed for this event when eventHandlerMethod is null\n      if (eventHandlerMethod) {\n        // Set single event handler\n        this.addEvent(eventName, (event: any): void => {\n          eventHandlerMethod(event);\n        });\n      }\n    });\n  }\n\n  // Attach events to element\n  addEvent(eventName: string, event: (e: any) => void) {\n    this.listenerFn.set(\n      eventName,\n      this.renderer.listen(this.elementRef.nativeElement, eventName, (eve) => event(eve))\n    );\n  }\n\n  // Remove events from element\n  removeEvent(eventName: string) {\n    let eve = this.listenerFn.get(eventName);\n    if (eve) {\n      eve();\n    }\n  }\n}\nexport const stringifyMap = (map: Map<string, Function | null> | undefined): string => {\n  // Return empty string for empty/null map\n  if (!map) {\n    return '';\n  }\n\n  // Get entries of map as array\n  const mapEntries = Array.from(map);\n\n  // Return JSON string\n  return JSON.stringify(\n    mapEntries.map((mapEntry) =>\n      // Convert event handler method to a string containing its source code for comparison\n      [mapEntry[0], mapEntry[1] ? mapEntry[1].toString() : '']\n    )\n  );\n};\n","import {\n  Directive,\n  OnInit,\n  OnDestroy,\n  ElementRef,\n  HostListener,\n  Renderer2,\n  TemplateRef,\n  HostBinding,\n  ViewContainerRef,\n  input,\n  inject\n} from '@angular/core';\nimport { ComponentType } from '@angular/cdk/portal';\nimport { ScrollDispatcher } from '@angular/cdk/scrolling';\nimport {\n  NgxOverlay,\n  NgxOverlayRef,\n  NgxOverlayConfigOptions,\n  NgxDefaultOverlayPositions,\n  NgxOverlayParams\n} from '@ngxhelpers/overlay';\nimport { CustomEventListener } from './custom-listener';\ntype TriggerType = 'click' | 'hover';\ntype EventType = 'click' | 'mouseenter' | 'mouseleave' | 'init' | 'shown' | 'hidden';\ntype TemplateTypes =\n  | ElementRef<HTMLElement>\n  | TemplateRef<HTMLElement>\n  | HTMLElement\n  | ComponentType<any>\n  | string\n  | null;\n\n@Directive({\n  selector: '[customPopover]',\n  exportAs: 'custom-popover',\n  standalone: true\n})\nexport class PopoverDirective extends CustomEventListener implements OnInit, OnDestroy {\n  private viewContaiverRef = inject(ViewContainerRef);\n  private overlay = inject(NgxOverlay);\n  private sd = inject(ScrollDispatcher);\n  id = input<string>('_popover');\n  popover = input<TemplateTypes>(null);\n  popoverOption = input<NgxOverlayConfigOptions>({});\n  popoverOrigin = input<ElementRef<HTMLElement> | HTMLDivElement | HTMLElement>();\n  popoverContext = input<{\n    [key: string]: any;\n  }>();\n  triggers = input<TriggerType>('hover');\n  popoverEventHandlers = input<Map<string | EventType, Function>>();\n\n  popoverElm!: NgxOverlayRef | undefined;\n  constructor(\n    public eleRef: ElementRef,\n    renderer2: Renderer2\n  ) {\n    super(eleRef, renderer2);\n    this.sd.scrolled().subscribe(() => {\n      if (this.popoverOption().scrollStrategy === 'close') {\n        this.overlay.dispose('popover');\n        this.overlay.disposeHover('popover');\n      }\n    });\n  }\n\n  @HostBinding('class') class = 'custom-popover-elm';\n\n  @HostListener('click', ['$event'])\n  @HostListener('mouseenter', ['$event'])\n  showPopover(event: MouseEvent | PointerEvent): void {\n    if (event.type === 'mouseenter' && this.triggers() === 'hover') {\n      this.showPopOver();\n      this.triggerEvent('mouseenter', event);\n    } else if (event.type === 'click' && this.triggers() === 'click') {\n      this.showPopOver();\n      this.triggerEvent('click', event);\n    }\n  }\n\n  triggerEvent(event: EventType, value: any) {\n    if (this.popoverEventHandlers()?.has(event)) {\n      const fun: Function | undefined = this.popoverEventHandlers()?.get(event);\n      if (fun instanceof Function) {\n        fun(value);\n      }\n    }\n  }\n\n  @HostListener('mouseleave', ['$event'])\n  onmouseleave(): void {\n    if (this.triggers() !== 'click') {\n      this.hide();\n    }\n  }\n\n  showPopOver() {\n    let options = { ...this.popoverOption()! };\n    let content: any = this.popover();\n    if (!options?.containerRef) {\n      options = { ...options, containerRef: this.viewContaiverRef };\n    }\n    if (typeof content === 'string') {\n      const div: any = document.createElement('div');\n      div.innerText = content;\n      const parent = document.createElement('div');\n      parent.append(div);\n      content = div;\n    }\n    const viewOption: NgxOverlayParams<any> = {\n      component: content,\n      origin: this.popoverOrigin() ?? this.eleRef,\n      data: {\n        context: this.popoverContext(),\n        id: this.id(),\n        close: () => {\n          this.hide();\n        }\n      },\n      position: 'popover' as NgxDefaultOverlayPositions<string>,\n      options: {\n        ...options,\n        maxWidth: options?.maxWidth ?? '350px',\n        panelClass: [...(options?.panelClass ?? []), ...['custom-popover']],\n        backdropClass: [...(options?.backdropClass ?? []), ...['custom-popover-backdrop']],\n        disposeClass: options?.disposeClass ?? 'custom-popover',\n        outsideClick: options?.outsideClick ?? true,\n        scrollStrategy: options?.scrollStrategy ?? 'close'\n      }\n    };\n\n    if (this.triggers() === 'click') {\n      this.popoverElm = this.overlay.open<any, any>(viewOption);\n    } else {\n      this.popoverElm = this.overlay.openHover<any, any>(viewOption);\n    }\n\n    this.triggerEvent('shown', { success: true, elm: this.popoverElm });\n    this.popoverElm.afterClosed.subscribe((res) => {\n      this.triggerEvent('hidden', { success: true });\n      this.popoverElm = undefined;\n    });\n  }\n\n  hide() {\n    this.popoverElm?.close();\n  }\n\n  ngOnInit() {}\n\n  ngOnChanges(): void {\n    if (this.popoverEventHandlers()) {\n      console.log(this.popoverEventHandlers()!);\n      this.updateEventHandlers(this.popoverEventHandlers()!);\n    }\n  }\n\n  ngOnDestroy() {\n    this.overlay.dispose('popover');\n    this.overlay.disposeHover('popover');\n  }\n}\n","\nimport { Component, OnInit, HostListener, ElementRef, Output, EventEmitter, AfterViewInit, input, inject } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Component({\n  selector: 'file-upload',\n  template: `\n    <ng-content></ng-content>\n  `,\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: FileUploadComponent,\n      multi: true\n    }\n  ],\n  standalone: true\n})\nexport class FileUploadComponent implements OnInit {\n      private host = inject<ElementRef<HTMLInputElement>>(ElementRef<HTMLInputElement>);\n  onChange!: Function;\n  multi = input<boolean>(false);\n  file: File | FileList | null = null;\n\n  @HostListener('change', ['$event.target.files']) emitFiles(event: FileList) {\n    const file: File | FileList | null = event ? (this.multi() ? event : event.item(0)) : null;\n\n    if (this.onChange) {\n      this.onChange(file);\n    }\n    this.file = file;\n  }\n\n  ngOnInit(): void {}\n  writeValue(value: null) {\n    this.host.nativeElement.value = null as any;\n    this.file = null;\n  }\n\n  registerOnChange(fn: Function) {\n    this.onChange = fn;\n  }\n\n  registerOnTouched(fn: Function) {}\n  clearInput() {\n    this.host.nativeElement.value = '';\n    this.file = null;\n    if (this.onChange) {\n      this.onChange(null);\n    }\n  }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}