{"version":3,"file":"ngx-material-tools.mjs","sources":["../../../projects/ngx-material-tools/src/lib/helpers/helpers.ts","../../../projects/ngx-material-tools/src/lib/directives/mat-input-commified/mat-input-commified.directive.ts","../../../projects/ngx-material-tools/src/lib/directives/scroll-watch/scroll-watch.directive.ts","../../../projects/ngx-material-tools/src/lib/pipes/contains-scroll.pipe.ts","../../../projects/ngx-material-tools/src/lib/ngx-material-tools.module.ts","../../../projects/ngx-material-tools/src/lib/models/scroll-event.model.ts","../../../projects/ngx-material-tools/src/public-api.ts","../../../projects/ngx-material-tools/src/ngx-material-tools.ts"],"sourcesContent":["export function numberWithCommas(x) {\n  return x.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',');\n}\n","import {Directive, ElementRef, forwardRef, HostListener, Input} from '@angular/core';\nimport {MAT_INPUT_VALUE_ACCESSOR} from '@angular/material/input';\nimport {NG_VALUE_ACCESSOR, NgControl} from '@angular/forms';\nimport {numberWithCommas} from '../../helpers/helpers';\n\n@Directive({\n  selector: 'input[matInputCommified]',\n  providers: [\n    {provide: MAT_INPUT_VALUE_ACCESSOR, useExisting: MatInputCommifiedDirective},\n  ]\n})\nexport class MatInputCommifiedDirective {\n  // tslint:disable-next-line:variable-name\n  private _value: string | null;\n\n  constructor(\n    private elementRef: ElementRef<HTMLInputElement>,\n    public ngControl: NgControl\n  ) {\n    ngControl.valueAccessor = this; // Remove NG_VALUE_ACCESSOR from providers to remove cyclic dependency with NgControl\n  }\n\n\n  get value(): string | null {\n    return this._value;\n  }\n\n  @Input('value')\n  set value(value: string | null) {\n    this._value = value;\n    this.formatValue(value);\n  }\n\n  private formatValue(value: string | null) {\n    if (value !== null) {\n      this.elementRef.nativeElement.value = numberWithCommas(value);\n    } else {\n      this.elementRef.nativeElement.value = '';\n    }\n    if (this.ngControl) {\n      this.ngControl.control?.markAsTouched(); // Touch input to allow MatFormField to show errors properly\n    }\n  }\n\n  private unFormatValue() {\n    const value = this.elementRef.nativeElement.value;\n    this._value = value.replace(/[^\\d.-]/g, '');\n    if (value) {\n      this.elementRef.nativeElement.value = this._value;\n    } else {\n      this.elementRef.nativeElement.value = '';\n    }\n  }\n\n  @HostListener('input', ['$event.target.value'])\n  onInput(value) {\n    this._value = value.replace(/[^\\d.-]/g, '');\n    this._onChange(this._value);\n  }\n\n  @HostListener('blur')\n  _onBlur() {\n    this.formatValue(this._value);\n  }\n\n  @HostListener('focus')\n  onFocus() {\n    this.unFormatValue();\n  }\n\n  _onChange(value: any): void {\n  }\n\n  writeValue(value: any) {\n    this._value = value;\n    this.formatValue(this._value);\n    // this._onChange(this._value);\n  }\n\n  registerOnChange(fn: (value: any) => void) {\n    this._onChange = fn;\n  }\n\n  registerOnTouched() {\n  }\n\n\n}\n","import {Directive, ElementRef, OnDestroy, OnInit} from '@angular/core';\nimport {map, Subject, Subscription, take, timer} from 'rxjs';\nimport {ContainsScrollEvent} from '../../models/scroll-event.model';\n\n@Directive({\n  selector: '[scrollWatch]',\n  exportAs: 'scrollDetails'\n})\nexport class ScrollWatchDirective implements OnInit, OnDestroy {\n  data: ContainsScrollEvent;\n\n  observer: MutationObserver;\n  sub: Subscription;\n\n  constructor(private elementRef: ElementRef) { }\n\n  ngOnInit() {\n    const elem = this.elementRef.nativeElement;\n\n    // initial value\n    this.sub = timer(0, 500).pipe(\n      take(2), // first check may not reflect actual state (not rendered yet)\n      map(() => this.getScroll(elem))\n    ).subscribe((data: ContainsScrollEvent) => {\n      this.data = data;\n    });\n\n    // subsequent observation\n    this.observer = new MutationObserver(() => {\n      this.data = this.getScroll(elem);\n    });\n\n    this.observer.observe(elem, {attributes: true, childList: true, subtree: true});\n  }\n\n  getScroll(elem: HTMLElement) {\n    const hasHorizontalScroll = !!elem && (elem.scrollWidth > elem.clientWidth);\n    const hasVerticalScroll = !!elem && elem.scrollHeight > elem.clientHeight;\n    const verticalScrollBarWidth = elem.offsetWidth - elem.clientWidth;\n    const horizontalScrollBarWidth = elem.offsetHeight - elem.clientHeight;\n\n    return {hasHorizontalScroll, hasVerticalScroll, verticalScrollBarWidth, horizontalScrollBarWidth};\n  }\n\n  ngOnDestroy() {\n    this.observer?.disconnect();\n    this.sub?.unsubscribe();\n  }\n}\n","import {OnDestroy, Pipe, PipeTransform} from '@angular/core';\nimport {map, merge, Observable, Subject, take, timer} from 'rxjs';\nimport {ContainsScrollEvent} from '../models/scroll-event.model';\n\n@Pipe({\n  name: 'containsScroll'\n})\nexport class ContainsScrollPipe implements PipeTransform, OnDestroy {\n  emitter = new Subject<ContainsScrollEvent>();\n  observer: MutationObserver;\n\n  transform(elem: HTMLElement): Observable<ContainsScrollEvent> {\n    this.observer?.disconnect();\n\n    this.observer = new MutationObserver(() => {\n      const scrollInfo = this.getScroll(elem);\n      this.emitter.next(scrollInfo);\n    });\n\n    this.observer.observe(elem, {attributes: true, childList: true, subtree: true});\n\n    return merge(\n      this.emitter,\n      timer(0, 500).pipe(\n        take(2), // first check may not reflect actual state (not rendered yet)\n        map(() => this.getScroll(elem))\n      ));\n  }\n\n  getScroll(elem: HTMLElement) {\n    const hasHorizontalScroll = !!elem && (elem.scrollWidth > elem.clientWidth);\n    const hasVerticalScroll = !!elem && elem.scrollHeight > elem.clientHeight;\n    const verticalScrollBarWidth = elem.offsetWidth - elem.clientWidth;\n    const horizontalScrollBarWidth = elem.scrollHeight - elem.clientHeight;\n    return {hasHorizontalScroll, hasVerticalScroll, verticalScrollBarWidth, horizontalScrollBarWidth};\n  }\n\n  ngOnDestroy() {\n    this.observer?.disconnect();\n    this.emitter.complete();\n  }\n}\n\n","import {NgModule} from '@angular/core';\nimport {ContainsScrollPipe} from './pipes/contains-scroll.pipe';\nimport {MatInputCommifiedDirective} from './directives/mat-input-commified/mat-input-commified.directive';\nimport { ScrollWatchDirective } from './directives/scroll-watch/scroll-watch.directive';\n\n\n@NgModule({\n  declarations: [MatInputCommifiedDirective, ContainsScrollPipe, ScrollWatchDirective],\n  imports: [],\n  exports: [MatInputCommifiedDirective, ContainsScrollPipe, ScrollWatchDirective]\n})\nexport class NgxMaterialToolsModule {\n}\n","export interface ContainsScrollEvent {\n  hasHorizontalScroll: boolean;\n  hasVerticalScroll: boolean;\n  verticalScrollBarWidth: number;\n  horizontalScrollBarWidth: number;\n};\n","/*\n * Public API Surface of ngx-material-tools\n */\n\nexport * from './lib/directives/mat-input-commified/mat-input-commified.directive';\nexport * from './lib/directives/scroll-watch/scroll-watch.directive';\nexport * from './lib/pipes/contains-scroll.pipe';\nexport * from './lib/helpers/helpers';\nexport * from './lib/ngx-material-tools.module';\nexport * from './lib/models/scroll-event.model';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}