{"version":3,"file":"angular-imask.mjs","sources":["../../src/default-imask-factory.ts","../../src/imask-factory-token.ts","../../src/imask.directive.ts","../../src/imask.pipe.ts","../../src/imask.module.ts","../../src/angular-imask.ts"],"sourcesContent":["import IMask, { type InputMaskElement, type FactoryArg, type InputMask } from 'imask';\nimport { Injectable } from '@angular/core';\nimport { IMaskFactory } from './imask-factory';\n\n@Injectable({ providedIn: 'root' })\nexport class DefaultImaskFactory implements IMaskFactory {\n  create<Opts extends FactoryArg>(el: InputMaskElement, opts: Opts): InputMask<Opts> {\n    return IMask(el, opts);\n  }\n}\n","import { InjectionToken, inject } from \"@angular/core\";\nimport { DefaultImaskFactory } from \"./default-imask-factory\";\n\nexport const IMASK_FACTORY = new InjectionToken('IMASK_FACTORY', {providedIn: 'root', factory: () => inject(DefaultImaskFactory)})\n","import { type InputMask, type InputMaskElement, type FactoryArg, type UpdateOpts } from 'imask';\nimport { isPlatformBrowser } from '@angular/common';\nimport {\n  Directive, ElementRef, Input, Output, forwardRef, Provider, Renderer2,\n  EventEmitter, OnDestroy, OnChanges, AfterViewInit,\n  SimpleChanges, PLATFORM_ID, inject\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor, COMPOSITION_BUFFER_MODE } from '@angular/forms';\nimport { IMASK_FACTORY } from './imask-factory-token';\n\nexport\ntype Falsy = false | 0 | \"\" | null | undefined;\n\nexport const MASKEDINPUT_VALUE_ACCESSOR: Provider = {\n  provide: NG_VALUE_ACCESSOR,\n  useExisting: forwardRef(() => IMaskDirective),\n  multi: true,\n};\n\nexport\ntype Value<Opts extends FactoryArg, Unmask extends ('typed' | boolean)> =\n  Unmask extends 'typed' ? InputMask<Opts>['typedValue'] :\n  Unmask extends Falsy ? InputMask<Opts>['value'] :\n  InputMask<Opts>['unmaskedValue']\n;\n\nexport const DEFAULT_IMASK_ELEMENT = (elementRef: any) => elementRef.nativeElement;\n@Directive({\n  selector: '[imask]',\n  standalone: true,\n  exportAs: 'imask',\n  host: {\n    '(input)': '_handleInput($event.target.value)',\n    '(blur)': 'onTouched()',\n    '(compositionstart)': '_compositionStart()',\n    '(compositionend)': '_compositionEnd($event.target.value)'\n  },\n  providers: [MASKEDINPUT_VALUE_ACCESSOR],\n})\nexport class IMaskDirective<\n  Opts extends FactoryArg,\n  Unmask extends ('typed' | boolean) = false,\n  V = Value<Opts, Unmask>,\n> implements ControlValueAccessor, AfterViewInit, OnDestroy, OnChanges {\n  maskRef?: InputMask<Opts>;\n  onTouched: any = () => {};\n  onChange: any = () => {};\n  private _viewInitialized = false;\n  private _initialValue: any;\n  private _composing = false;\n  private _writingValue: any;\n  private _writing = false;\n\n  private _elementRef = inject(ElementRef);\n  private _renderer = inject(Renderer2);\n  private _factory = inject(IMASK_FACTORY);\n  private _platformId = inject(PLATFORM_ID);\n  private _compositionMode = inject(COMPOSITION_BUFFER_MODE, {optional: true}) ?? !this._isAndroid();\n\n  @Input() imask?: Opts;\n  @Input() unmask?: Unmask;\n  @Input() imaskElement: (elementRef: ElementRef, directiveRef: any) => InputMaskElement = DEFAULT_IMASK_ELEMENT;\n  @Output() accept = new EventEmitter<V>();\n  @Output() complete = new EventEmitter<V>();\n\n  get element () {\n    return this.imaskElement(this._elementRef, this);\n  }\n\n  get maskValue (): V {\n    if (!this.maskRef) return ((this.element as any)?.value || '') as V;\n\n    if (this.unmask === 'typed') return this.maskRef.typedValue as V;\n    if (this.unmask) return this.maskRef.unmaskedValue as V;\n    return this.maskRef.value as V;\n  }\n\n  set maskValue (value: V) {\n    if (this.maskRef) {\n      if (this.unmask === 'typed') this.maskRef.typedValue = value;\n      else if (this.unmask) this.maskRef.unmaskedValue = value as string;\n      else this.maskRef.value = value as string;\n    } else {\n      this._renderer.setProperty(this.element, 'value', value);\n    }\n  }\n\n  ngAfterViewInit() {\n    if (this.imask) this.initMask();\n\n    this._viewInitialized = true;\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (changes['elementRef'] && !this.imaskElement) this.imaskElement = DEFAULT_IMASK_ELEMENT;\n\n    if (!changes['imask'] || !this._viewInitialized) return;\n\n    if (this.imask) {\n      if (this.maskRef) this.maskRef.updateOptions(this.imask as UpdateOpts<Opts>);\n      else {\n        this.initMask();\n        this.onChange(this.maskValue);\n      }\n    } else {\n      this.destroyMask();\n    }\n  }\n\n  destroyMask () {\n    if (this.maskRef) {\n      this.maskRef.destroy();\n      delete this.maskRef;\n    }\n  }\n\n  ngOnDestroy () {\n    this.destroyMask();\n    this.accept.complete();\n    this.complete.complete();\n  }\n\n  beginWrite (value: V): void {\n    this._writing = true;\n    this._writingValue = value;\n  }\n\n  endWrite (): V {\n    this._writing = false;\n    return this._writingValue;\n  }\n\n  writeValue(value: V) {\n    value = (value == null && this.unmask !== 'typed' ? '' : value) as V;\n\n    if (this.maskRef) {\n      this.beginWrite(value);\n      this.maskValue = value;\n      this.endWrite();\n    } else {\n      this._renderer.setProperty(this.element, 'value', value);\n      this._initialValue = value;\n    }\n  }\n\n  _onAccept () {\n    const value = this.maskValue;\n    // if value was not changed during writing don't fire events\n    // for details see https://github.com/uNmAnNeR/imaskjs/issues/136\n    if (this._writing && value === this.endWrite()) return;\n    this.onChange(value);\n    this.accept.emit(value);\n  }\n\n  _onComplete () {\n    this.complete.emit(this.maskValue);\n  }\n\n  private initMask () {\n    this.maskRef = this._factory.create(this.element, this.imask as Opts)\n      .on('accept', this._onAccept.bind(this))\n      .on('complete', this._onComplete.bind(this));\n\n    if (this._initialValue != null) this.writeValue(this._initialValue);\n    delete this._initialValue;\n  }\n\n  setDisabledState (isDisabled: boolean) {\n    this._renderer.setProperty(this.element, 'disabled', isDisabled)\n  }\n\n  registerOnChange(fn: (_: any) => void): void { this.onChange = fn }\n  registerOnTouched(fn: () => void): void { this.onTouched = fn }\n\n  _handleInput(value: any): void {\n    // if mask is attached all input goes throw mask\n    if (this.maskRef) return;\n\n    if (!this._compositionMode || (this._compositionMode && !this._composing)) {\n      this.onChange(value);\n    }\n  }\n\n  _compositionStart(): void { this._composing = true; }\n\n  _compositionEnd(value: any): void {\n    this._composing = false;\n    this._compositionMode && this._handleInput(value);\n  }\n\n  private _isAndroid(): boolean {\n    return isPlatformBrowser(this._platformId) && /android (\\d+)/.test(navigator.userAgent.toLowerCase());\n  }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\nimport { pipe, type FactoryArg } from 'imask';\nexport { PIPE_TYPE, pipe } from 'imask';\n\n\n/*\n * Transforms value through mask\n * Takes mask and optionally `from` and `to` pipe types.\n * Usage:\n *   value | imask:MASK_OR_MASKED:opt_from:opt_to\n * Example:\n *   {{ 2 | imask:mask }}\n*/\n@Pipe({name: 'imask', standalone: true})\nexport class IMaskPipe implements PipeTransform {\n  transform<Opts extends FactoryArg> (...args: Parameters<typeof pipe<Opts>>): ReturnType<typeof pipe<Opts>> {\n    return pipe(...args);\n  }\n}\n","import { NgModule } from '@angular/core';\n\nimport { IMaskPipe } from './imask.pipe';\nimport { IMaskDirective } from './imask.directive';\n\n@NgModule({\n  imports: [IMaskDirective, IMaskPipe],\n  exports: [IMaskDirective, IMaskPipe]\n})\nexport class IMaskModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}