{"version":3,"file":"xmagic-ng-numeric-keyboard.mjs","sources":["../../../projects/ng-numeric-keyboard/src/lib/utils/keys.ts","../../../projects/ng-numeric-keyboard/src/lib/utils/layouts.ts","../../../projects/ng-numeric-keyboard/src/lib/keyboard/keyboard.component.ts","../../../projects/ng-numeric-keyboard/src/lib/keyboard/keyboard.component.html","../../../projects/ng-numeric-keyboard/src/lib/utils/utils.ts","../../../projects/ng-numeric-keyboard/src/lib/keyboard/keyboard-ref.ts","../../../projects/ng-numeric-keyboard/src/lib/keyboard/keyboard.service.ts","../../../projects/ng-numeric-keyboard/src/lib/keyboard/keyboard.directive.ts","../../../projects/ng-numeric-keyboard/src/lib/input/input.component.ts","../../../projects/ng-numeric-keyboard/src/lib/input/input.component.html","../../../projects/ng-numeric-keyboard/src/lib/numeric-input.module.ts","../../../projects/ng-numeric-keyboard/src/lib/ng-numeric-keyboard.module.ts","../../../projects/ng-numeric-keyboard/src/xmagic-ng-numeric-keyboard.ts"],"sourcesContent":["export const ZERO = '0';\r\nexport const ONE = '1';\r\nexport const TWO = '2';\r\nexport const THREE = '3';\r\nexport const FOUR = '4';\r\nexport const FIVE = '5';\r\nexport const SIX = '6';\r\nexport const SEVEN = '7';\r\nexport const EIGHT = '8';\r\nexport const NINE = '9';\r\nexport const DOT = '.';\r\nexport const DEL = 'del';\r\nexport const ENTER = 'enter';\r\nexport const ESC = 'esc';\r\nexport const BLANK = '';\r\n","import * as Keys from './keys';\r\n\r\nconst NumberLayout: Layout = [\r\n  [{ key: Keys.ONE }, { key: Keys.TWO }, { key: Keys.THREE }, { key: Keys.DEL, rowspan: 2 }],\r\n  [{ key: Keys.FOUR }, { key: Keys.FIVE }, { key: Keys.SIX }],\r\n  [{ key: Keys.SEVEN }, { key: Keys.EIGHT }, { key: Keys.NINE }, { key: Keys.ENTER, rowspan: 2 }],\r\n  [{ key: Keys.DOT }, { key: Keys.ZERO }, { key: Keys.ESC }]\r\n];\r\n\r\nconst TelLayout: Layout = [\r\n  [{ key: Keys.ONE }, { key: Keys.TWO }, { key: Keys.THREE }],\r\n  [{ key: Keys.FOUR }, { key: Keys.FIVE }, { key: Keys.SIX }],\r\n  [{ key: Keys.SEVEN }, { key: Keys.EIGHT }, { key: Keys.NINE }],\r\n  [{ key: Keys.DEL }, { key: Keys.ZERO }, { key: Keys.ENTER }]\r\n];\r\n\r\nconst PhoneLayout: Layout = [\r\n  [{ key: Keys.ONE }, { key: Keys.TWO }, { key: Keys.THREE }, { key: Keys.DEL }],\r\n  [{ key: Keys.FOUR }, { key: Keys.FIVE }, { key: Keys.SIX }, { key: Keys.ENTER }],\r\n  [{ key: Keys.SEVEN }, { key: Keys.EIGHT }, { key: Keys.NINE }, { key: Keys.DOT }],\r\n  [{ key: Keys.BLANK }, { key: Keys.ZERO }, { key: Keys.BLANK }, { key: Keys.ESC }]\r\n];\r\n\r\nexport const Layouts: LayoutsType = {\r\n  number: NumberLayout,\r\n  tel: TelLayout,\r\n  phone: PhoneLayout\r\n};\r\n\r\nexport interface LayoutItem {\r\n  key: string;\r\n  rowspan?: number;\r\n  colspan?: number;\r\n}\r\n\r\nexport type Layout = LayoutItem[][];\r\n\r\nexport interface LayoutsType {\r\n  number: Layout;\r\n  tel: Layout;\r\n  phone: Layout;\r\n}\r\n","import { Component, EventEmitter, Input, Output, OnInit, OnDestroy } from '@angular/core';\nimport { ENTER, DEL, ESC } from '../utils/keys';\nimport { Layout, LayoutItem, Layouts, LayoutsType } from '../utils/layouts';\nimport { filter, fromEvent, map, merge, of, Subject, takeUntil, timer } from 'rxjs';\n\n@Component({\n  selector: 'ng-numeric-keyboard',\n  templateUrl: './keyboard.component.html',\n  styleUrls: ['./keyboard.component.scss']\n})\nexport class NumericKeyboardComponent implements OnInit, OnDestroy {\n  @Input() layout: KeyboardOptions['layout'] = 'number';\n  @Input() entertext: string = 'Enter';\n\n  @Output() press = new EventEmitter<string>();\n  @Output() enterpress = new EventEmitter();\n  /**\n   * 长按\n   */\n  @Output() longPress = new EventEmitter<string>();\n  /**\n   * 长按\n   */\n  @Output() longEnterpress = new EventEmitter();\n\n  /**\n   * 长按结束\n   */\n  @Output() longPressEnd = new EventEmitter<string>();\n  /**\n   * 长按结束\n   */\n  @Output() longEnterpressEnd = new EventEmitter();\n\n  touchStart?: TouchEvent;\n  destroy$ = new Subject<void>();\n\n  _keyItem?: LayoutItem;\n  public kp: KeyboardOptions;\n  public ks: { resolvedLayout: Layout };\n  public ENTER = ENTER;\n  public DEL = DEL;\n  public ESC = ESC;\n\n  touchEnd$ = new Subject<LayoutItem>();\n  touchMove$ = fromEvent(document, 'touchmove').pipe(takeUntil(this.destroy$));\n\n  constructor() {}\n\n  ngOnInit() {\n    const options = { layout: this.layout, entertext: this.entertext };\n    this.init(options);\n  }\n\n  stopEvent(event: TouchEvent) {\n    event.stopPropagation();\n    event.preventDefault();\n  }\n\n  onTouchStart(event: TouchEvent, item: LayoutItem) {\n    this._keyItem = item;\n    this.touchStart = event;\n    timer(500)\n      .pipe(map(() => item))\n      .pipe(takeUntil(merge(this.touchEnd$, this.touchMove$)))\n      .subscribe(value => {\n        // 超过500ms为长按\n        this.touchStart = undefined;\n        this.longPress.emit(value.key);\n        if (value.key === ENTER) {\n          this.longEnterpress.emit();\n        }\n      });\n  }\n  onTouchEnd(event: TouchEvent, item: LayoutItem) {\n    this._keyItem = undefined;\n    this.touchEnd$.next(item);\n\n    // 长按结束\n    if (!this.touchStart) {\n      this.longPressEnd.emit(item.key);\n      if (item.key === ENTER) {\n        this.longEnterpressEnd.emit(item.key);\n      }\n    }\n\n    of(item)\n      .pipe(\n        filter(() => this.touchStart !== undefined),\n        takeUntil(this.touchMove$)\n      )\n      .subscribe(value => {\n        this.press.emit(value.key);\n        if (value.key === ENTER) {\n          this.enterpress.emit();\n        }\n      });\n  }\n\n  private init(options: KeyboardOptions) {\n    const { layout } = options;\n\n    let resolvedLayout: Layout;\n    if (typeof layout === 'string') {\n      resolvedLayout = Layouts[layout];\n      if (!Array.isArray(resolvedLayout)) {\n        throw new Error(`${layout} is not a build-in layout.`);\n      }\n    } else {\n      resolvedLayout = layout;\n      if (!Array.isArray(resolvedLayout) || !resolvedLayout.every(i => Array.isArray(i))) {\n        throw new Error(`custom layout must be a two-dimensional array.`);\n      }\n    }\n\n    this.kp = options;\n    this.ks = { resolvedLayout };\n  }\n\n  ngOnDestroy() {\n    this.destroy$.next(); // 发出一个值，通知所有订阅了 destroy$ 的可观察对象停止向下传递值\n    this.destroy$.complete(); // 停止 destroy$ 的传播，释放资源\n  }\n}\n\nexport interface KeyboardOptions {\n  layout?: keyof LayoutsType | Layout;\n  entertext?: string;\n}\n","<table\n  class=\"numeric-keyboard\"\n  (touchstart)=\"stopEvent($event)\"\n  (touchmove)=\"stopEvent($event)\"\n  (touchend)=\"stopEvent($event)\"\n>\n  <tr *ngFor=\"let r of ks.resolvedLayout\">\n    <td\n      *ngFor=\"let c of r\"\n      [attr.rowspan]=\"c.rowspan\"\n      [attr.colspan]=\"c.colspan\"\n      [attr.data-key]=\"c.key\"\n      [attr.data-icon]=\"c.key === ENTER ? kp.entertext : c.key\"\n      class=\"numeric-keyboard-key\"\n      [class.active]=\"_keyItem === c\"\n      (touchstart)=\"onTouchStart($event, c)\"\n      (touchend)=\"onTouchEnd($event, c)\"\n    >\n      <div *ngIf=\"c.key === DEL\" class=\"del-icon\" [ngClass]=\"c.rowspan === 2 ? 'half' : ''\">&nbsp;</div>\n      <div *ngIf=\"c.key === ESC\" class=\"down-icon\">&nbsp;</div>\n    </td>\n  </tr>\n</table>\n","const requestAnimationFrame: any = window.requestAnimationFrame || window.setTimeout;\r\n\r\nexport const animate = (iterable: any, done = () => {}, frames = 60) => {\r\n  let running = true;\r\n  let frame = 0;\r\n\r\n  const closure = timestamp => {\r\n    if (!running) {\r\n      return;\r\n    }\r\n    iterable(timestamp, ++frame, frames);\r\n    if (frame < frames) {\r\n      requestAnimationFrame(closure, 0);\r\n    } else {\r\n      done();\r\n    }\r\n  };\r\n\r\n  requestAnimationFrame(closure, 0);\r\n\r\n  return () => {\r\n    running = false;\r\n  };\r\n};\r\n\r\nexport const coerceBooleanProperty = (value: any) => {\r\n  return value != null && `${value}` !== 'false';\r\n};\r\n","import {\n  ApplicationRef,\n  ComponentFactoryResolver,\n  ComponentRef,\n  ElementRef,\n  EmbeddedViewRef,\n  Injector\n} from '@angular/core';\nimport { KeyboardOptions, NumericKeyboardComponent } from './keyboard.component';\nimport { fromEvent, map, Subscription, timer } from 'rxjs';\nimport { ENTER } from '../utils/keys';\nimport { animate } from '../utils/utils';\nimport * as Keys from '../utils/keys';\n\nexport class KeyboardRef {\n  private _activeInputElement!: HTMLInputElement | HTMLTextAreaElement | null;\n  private keyboardElement!: HTMLDivElement;\n  private keyboard: ComponentRef<NumericKeyboardComponent>;\n  private touchend$: Subscription | null = null;\n\n  constructor(\n    private input: InputElement,\n    private appRef: ApplicationRef,\n    private componentFactoryResolver: ComponentFactoryResolver,\n    private injector: Injector\n  ) {\n    this._activeInputElement =\n      (input as ElementRef<HTMLInputElement | HTMLTextAreaElement>).nativeElement ||\n      (input as HTMLInputElement | HTMLTextAreaElement);\n  }\n\n  /**\n   * Focus to input\n   *\n   * @private\n   */\n  private _focusActiveInput(): void {\n    this._activeInputElement?.focus();\n  }\n\n  private handleButtonClicked(button: string): void {\n    switch (button) {\n      case Keys.BLANK:\n        return;\n      case Keys.ESC:\n        this.closeKeyboard();\n        return;\n      case Keys.ENTER:\n        this.closeKeyboard();\n        return;\n      case Keys.DEL:\n        this.deleteChar(this._activeInputElement);\n        break;\n      default:\n        this.insertChar(this._activeInputElement, button);\n        break;\n    }\n  }\n\n  private insertChar(input, text: string) {\n    if (input) {\n      this._focusActiveInput();\n      const startPos = input.selectionStart;\n      const endPos = input.selectionEnd;\n      const oldValue = input.value;\n      input.value = oldValue.substring(0, startPos) + text + oldValue.substring(endPos);\n      input.setSelectionRange(startPos + 1, startPos + 1);\n    }\n  }\n\n  private deleteChar(input) {\n    this._focusActiveInput();\n    const startPos = input.selectionStart;\n    const endPos = input.selectionEnd;\n    if (startPos == endPos && startPos > 0) {\n      const oldValue = input.value;\n      input.value = oldValue.substring(0, startPos - 1) + oldValue.substring(endPos);\n      input.setSelectionRange(startPos - 1, startPos - 1);\n    } else {\n      input.value = input.value.substring(0, startPos) + input.value.substring(endPos);\n      input.setSelectionRange(startPos, startPos);\n    }\n  }\n\n  private createKeyboard(el, events?: Events, options?: KeyboardOptions): ComponentRef<NumericKeyboardComponent> {\n    const componentRef = this.componentFactoryResolver\n      .resolveComponentFactory(NumericKeyboardComponent)\n      .create(this.injector);\n\n    if (options) {\n      Object.assign(componentRef.instance, options);\n    }\n\n    componentRef.instance.ngOnInit();\n\n    for (const event in events || {}) {\n      componentRef.instance[event].subscribe(events[event].bind(this));\n    }\n\n    this.appRef.attachView(componentRef.hostView);\n    const element = (componentRef.hostView as EmbeddedViewRef<any>).rootNodes[0] as HTMLElement;\n    el.appendChild(element);\n\n    return componentRef;\n  }\n\n  openKeyboard(options?: KeyboardOptions) {\n    if (this.keyboard) {\n      return;\n    }\n\n    const elContainer = document.createElement('div');\n    const elShadow = document.createElement('div');\n    const elKeyboard = document.createElement('div');\n    elContainer.className = 'numeric-keyboard-actionsheet';\n    elContainer.appendChild(elShadow);\n    elContainer.appendChild(elKeyboard);\n    document.body.appendChild(elContainer);\n\n    this.keyboardElement = elKeyboard;\n    const inputHandler = this.handleButtonClicked.bind(this);\n    let timer$: Subscription | null = null;\n    this.keyboard = this.createKeyboard(\n      elKeyboard,\n      {\n        press: inputHandler,\n        longPress: key => {\n          if (key === ENTER) {\n            this.handleButtonClicked(key);\n            return;\n          }\n\n          timer$ = timer(0, 100)\n            .pipe(map(v => key))\n            .subscribe(inputHandler);\n        },\n        longPressEnd(key: string) {\n          if (timer$) {\n            timer$.unsubscribe();\n            timer$ = null;\n          }\n        }\n      },\n      options\n    );\n\n    animate(\n      (timestamp, frame, frames) => {\n        elKeyboard.style.position = 'fixed';\n        elKeyboard.style.bottom = '0';\n        elKeyboard.style.left = '0';\n        elKeyboard.style.transform = `translateY(${((frames - frame) / frames) * 100}%)`;\n      },\n      () => this.register(),\n      10\n    );\n  }\n\n  closeKeyboard() {\n    if (!this.keyboard) {\n      return;\n    }\n\n    const keyboard = this.keyboard;\n    const elKeyboard = this.keyboardElement;\n\n    animate(\n      (timestamp, frame, frames) => {\n        elKeyboard.style.transform = `translateY(${(frame / frames) * 100}%)`;\n      },\n      () => {\n        setTimeout(() => {\n          this.destroyKeyboard(elKeyboard, keyboard);\n          document.body.removeChild(elKeyboard.parentNode);\n        }, 50);\n      },\n      10\n    );\n\n    this.keyboard = null;\n    this.keyboardElement = null;\n  }\n\n  private destroyKeyboard(el, keyboard) {\n    keyboard.destroy();\n    this.appRef.detachView(keyboard.hostView);\n  }\n\n  private register() {\n    this.touchend$ = fromEvent(document, 'touchend').subscribe(evt => this.unregister(evt));\n  }\n\n  private unregister(e?: any) {\n    if (\n      e &&\n      this.keyboardElement &&\n      (this._activeInputElement.contains(e.target) ||\n        this.keyboardElement === e.target ||\n        this.keyboardElement.contains(e.target))\n    ) {\n      return;\n    }\n\n    if (this.touchend$) {\n      this.touchend$.unsubscribe();\n      this.touchend$ = null;\n    }\n\n    if (e) {\n      this.closeKeyboard();\n    }\n  }\n}\n\nexport interface Events {\n  enterpress?(): void;\n  press?(key: string): void;\n  longEnterpress?(): void;\n  longPress?(key: string): void;\n  longEnterpressEnd?(): void;\n  longPressEnd?(key: string): void;\n}\n\nexport type InputElement = HTMLInputElement | HTMLTextAreaElement | ElementRef<HTMLInputElement | HTMLTextAreaElement>;\n","import { ApplicationRef, ComponentFactoryResolver, ElementRef, Injectable, Injector } from '@angular/core';\nimport { fromEvent, merge } from 'rxjs';\nimport { InputElement, KeyboardRef } from './keyboard-ref';\nimport { KeyboardOptions } from './keyboard.component';\n\n@Injectable()\nexport class KeyboardService {\n  constructor(\n    private appRef: ApplicationRef,\n    private componentFactoryResolver: ComponentFactoryResolver,\n    private injector: Injector\n  ) {}\n\n  /**\n   * 注册输入框\n   * @param input\n   * @param options\n   */\n  registerInput(\n    input: InputElement,\n    options?: KeyboardOptions & {\n      /**\n       * 是否绑定事件,用来自动触发弹起键盘, false不注册事件, 需要用户自己控制\n       */\n      bindEvent?: boolean;\n    }\n  ): KeyboardRef {\n    const _activeInputElement =\n      (input as ElementRef<HTMLInputElement | HTMLTextAreaElement>).nativeElement ||\n      (input as HTMLInputElement | HTMLTextAreaElement);\n\n    const keyboardRef = new KeyboardRef(input, this.appRef, this.componentFactoryResolver, this.injector);\n\n    if (options?.bindEvent !== false) {\n      merge(fromEvent(_activeInputElement, 'focus'), fromEvent(_activeInputElement, 'touchend')).subscribe(() =>\n        keyboardRef.openKeyboard(options)\n      );\n    }\n    return keyboardRef;\n  }\n}\n","import {\n  ApplicationRef,\n  ComponentFactoryResolver,\n  Directive,\n  ElementRef,\n  HostListener,\n  Injector,\n  Input,\n  OnInit\n} from '@angular/core';\nimport { KeyboardRef } from './keyboard-ref';\nimport { Layout, LayoutsType } from '../utils/layouts';\n\n@Directive({\n  selector: 'input[ngKeyboard],textarea[ngKeyboard]'\n})\nexport class KeyboardDirective implements OnInit {\n  @Input() layout: keyof LayoutsType | Layout = 'number';\n  @Input() entertext: string = 'Enter';\n\n  private keyboardRef: KeyboardRef;\n  constructor(\n    private appRef: ApplicationRef,\n    private componentFactoryResolver: ComponentFactoryResolver,\n    private injector: Injector,\n    private elementRef: ElementRef<HTMLInputElement | HTMLTextAreaElement>\n  ) {}\n\n  ngOnInit(): void {\n    this.keyboardRef = new KeyboardRef(this.elementRef, this.appRef, this.componentFactoryResolver, this.injector);\n  }\n\n  @HostListener('focus', ['$event'])\n  handleFocus(event: MouseEvent): void {\n    this.keyboardRef.openKeyboard({ layout: this.layout, entertext: this.entertext });\n  }\n\n  @HostListener('touchend', ['$event'])\n  handleTouchend(event: MouseEvent): void {\n    this.handleFocus(event);\n  }\n}\n","import {\n  Component,\n  EventEmitter,\n  Input,\n  Output,\n  OnInit,\n  OnDestroy,\n  AfterViewInit,\n  AfterViewChecked,\n  ElementRef,\n  ApplicationRef,\n  EmbeddedViewRef,\n  forwardRef,\n  Injector,\n  ComponentFactoryResolver\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\n\nimport { NumericKeyboardComponent } from '../keyboard/keyboard.component';\n\nimport * as Keys from '../utils/keys';\nimport { coerceBooleanProperty, animate } from '../utils/utils';\nimport { Layout, LayoutsType } from '../utils/layouts';\n\nconst RNumber = /^\\d*(?:\\.\\d*)?$/;\nconst RTel = /^\\d*$/;\n\nconst KeyboardCenter = (() => {\n  let activeInput;\n\n  return {\n    register(input: any) {\n      this.unregister();\n      activeInput = input;\n      document.addEventListener('touchend', this.unregister, false);\n    },\n    unregister(e: any) {\n      if (!activeInput) {\n        return;\n      }\n      if (e && (activeInput.ks.inputElement.contains(e.target) || activeInput.ks.keyboardElement.contains(e.target))) {\n        return;\n      }\n      activeInput.closeKeyboard();\n      activeInput = null;\n      document.removeEventListener('touchend', this.unregister, false);\n    }\n  };\n})();\n\nconst Options = {\n  type: 'number',\n  value: '',\n  autofocus: false,\n  disabled: false,\n  readonly: false,\n  maxlength: 255,\n  name: '',\n  placeholder: '',\n  format: '^',\n  layout: 'number',\n  entertext: 'Enter'\n};\n\n@Component({\n  selector: 'ng-numeric-input',\n  templateUrl: './input.component.html',\n  styleUrls: ['./input.component.scss'],\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => NumericInputComponent),\n      multi: true\n    }\n  ]\n})\nexport class NumericInputComponent implements OnInit, OnDestroy, AfterViewInit, AfterViewChecked, ControlValueAccessor {\n  private _autofocus: boolean = Options.autofocus;\n  private _disabled: boolean = Options.disabled;\n  private _readonly: boolean = Options.readonly;\n  private _value: number | string = Options.value;\n\n  @Input() activeColor = '#3B3B3B';\n  public isFocus = false;\n\n  @Input()\n  get autofocus() {\n    return this._autofocus;\n  }\n  set autofocus(value: any) {\n    this._autofocus = coerceBooleanProperty(value);\n  }\n\n  @Input()\n  get disabled() {\n    return this._disabled;\n  }\n  set disabled(value: any) {\n    this._disabled = coerceBooleanProperty(value);\n  }\n\n  @Input()\n  get readonly() {\n    return this._readonly;\n  }\n  set readonly(value: any) {\n    this._readonly = coerceBooleanProperty(value);\n  }\n\n  @Input()\n  get ngModel() {\n    return this._value;\n  }\n  set ngModel(value: any) {\n    if (this.ks && this.ks.value !== value) {\n      const rawValue = value.toString().split('');\n      const cursorPos = rawValue.length;\n      this.set('rawValue', rawValue);\n      this.set('cursorPos', cursorPos);\n    }\n    this._value = value;\n  }\n\n  @Input() type: string = Options.type;\n  @Input() value: number | string = Options.value;\n  @Input() maxlength: number = Options.maxlength;\n  @Input() name: string = Options.name;\n  @Input() placeholder: string = Options.placeholder;\n  @Input() format: string | { (val: string): boolean } = Options.format;\n  @Input() layout: string | { key: number | string }[][] = Options.layout;\n  @Input() entertext: string = Options.entertext;\n\n  @Output() focus = new EventEmitter();\n  @Output() blur = new EventEmitter();\n  @Output() enterpress = new EventEmitter();\n  @Output() ngModelChange = new EventEmitter<number | string>();\n\n  public kp: any;\n  public ks: any;\n  _onChange = (_: any) => {};\n\n  constructor(\n    private element: ElementRef,\n    private appRef: ApplicationRef,\n    private componentFactoryResolver: ComponentFactoryResolver,\n    private injector: Injector\n  ) {}\n\n  ngOnInit() {\n    const resolvedOptions = {};\n    for (const key in Options) {\n      resolvedOptions[key] = this[key];\n    }\n    this.init(resolvedOptions);\n  }\n\n  ngOnDestroy() {\n    KeyboardCenter.unregister(null);\n  }\n\n  ngAfterViewInit() {\n    this.onMounted(this.element.nativeElement.querySelector('.numeric-input'));\n  }\n\n  ngAfterViewChecked() {\n    this.onUpdated();\n  }\n\n  trackByIndex(index) {\n    return index;\n  }\n\n  writeValue(value: any): void {\n    if (typeof value === undefined || value === null) {\n      this._value = '';\n    } else {\n      this._value = value;\n    }\n  }\n\n  registerOnChange(fn: (_: any) => void): void {\n    this._onChange = fn;\n  }\n\n  registerOnTouched(fn: any): void {}\n\n  onFocus(e: any) {\n    e.stopPropagation();\n    this.openKeyboard();\n    const cursorPos = +e.target.dataset.index;\n    this.set('cursorPos', isNaN(cursorPos) ? this.ks.rawValue.length : cursorPos);\n  }\n\n  dispatch(event: string, payload?: number | string) {\n    switch (event) {\n      case 'focus':\n        this.focus.emit();\n        break;\n      case 'blur':\n        this.blur.emit();\n        break;\n      case 'enterpress':\n        this.enterpress.emit();\n        break;\n      case 'input':\n        this.ngModelChange.emit(payload);\n        break;\n    }\n  }\n\n  createKeyboard(el, options, events, callback) {\n    const componentRef = this.componentFactoryResolver\n      .resolveComponentFactory(NumericKeyboardComponent)\n      .create(this.injector);\n\n    Object.assign(componentRef.instance, options);\n\n    componentRef.instance.ngOnInit();\n\n    for (const event in events) {\n      componentRef.instance[event].subscribe(events[event]);\n    }\n\n    this.appRef.attachView(componentRef.hostView);\n    const element = (componentRef.hostView as EmbeddedViewRef<any>).rootNodes[0] as HTMLElement;\n    el.appendChild(element);\n\n    callback(componentRef);\n  }\n\n  destroyKeyboard(el, keyboard) {\n    keyboard.destroy();\n    this.appRef.detachView(keyboard.hostView);\n  }\n\n  private init(options) {\n    let formatFn = options.format;\n    if (typeof formatFn === 'string') {\n      formatFn = (\n        rformat => val =>\n          rformat.test(val)\n      )(new RegExp(options.format));\n    }\n\n    const value = options.value;\n    const rawValue = value.toString().split('');\n    const cursorPos = rawValue.length;\n\n    this.kp = options;\n    this.ks = {\n      formatFn,\n      value,\n      rawValue,\n      cursorPos,\n      cursorColor: null,\n      cursorActive: false,\n      keyboard: null,\n      inputElement: null,\n      keyboardElement: null\n    };\n  }\n\n  private set(key, value) {\n    this.ks[key] = value;\n  }\n\n  onMounted(el) {\n    this.set('inputElement', el);\n    this.set('cursorColor', this.activeColor);\n\n    if (this.kp.autofocus && !this.kp.readonly && !this.kp.disabled) {\n      setTimeout(() => this.openKeyboard(), 500);\n    }\n  }\n\n  onUpdated() {\n    this.moveCursor();\n  }\n\n  input(key: any) {\n    const { type, maxlength } = this.kp;\n    const { rawValue, cursorPos, formatFn } = this.ks;\n\n    const input = (inputKey: any) => {\n      const isAdd = typeof inputKey !== 'undefined';\n      const newRawValue = rawValue.slice();\n      if (isAdd) {\n        newRawValue.splice(cursorPos, 0, inputKey);\n      } else {\n        newRawValue.splice(cursorPos - 1, 1);\n      }\n\n      let newValue = newRawValue.join('');\n\n      if (formatFn(newValue)) {\n        if (type === 'number') {\n          if (!RNumber.test(newValue)) {\n            return;\n          }\n          newValue = parseFloat(newValue);\n          if (isNaN(newValue)) {\n            newValue = '';\n          }\n        } else if (newValue.length > maxlength || (type === 'tel' && !RTel.test(newValue))) {\n          return;\n        }\n\n        this.set('value', newValue);\n        this.set('rawValue', newRawValue);\n        this.set('cursorPos', isAdd ? cursorPos + 1 : cursorPos - 1);\n        this.dispatch('input', newValue);\n      }\n    };\n\n    switch (key) {\n      case Keys.BLANK:\n        break;\n      case Keys.ESC:\n        this.closeKeyboard();\n        break;\n      case Keys.ENTER:\n        this.closeKeyboard();\n        this.dispatch('enterpress');\n        break;\n      case Keys.DEL:\n        if (cursorPos > 0) {\n          input(undefined);\n        }\n        break;\n      case Keys.DOT:\n      case Keys.ZERO:\n      case Keys.ONE:\n      case Keys.TWO:\n      case Keys.THREE:\n      case Keys.FOUR:\n      case Keys.FIVE:\n      case Keys.SIX:\n      case Keys.SEVEN:\n      case Keys.EIGHT:\n      case Keys.NINE:\n      default:\n        input(key);\n        break;\n    }\n  }\n\n  moveCursor() {\n    if (!this.ks.cursorActive) {\n      return;\n    }\n\n    const elCursor = this.ks.inputElement.querySelector('.numeric-input-cursor');\n    const elText = this.ks.inputElement.querySelector('.numeric-input-text');\n    const elCharactor = elText.querySelector(`span:nth-child(${this.ks.cursorPos})`);\n\n    if (!elCharactor) {\n      elCursor.style.transform = 'translateX(0)';\n      elText.style.transform = 'translateX(0)';\n      return;\n    }\n\n    const cursorOffset = elCharactor.offsetLeft + elCharactor.offsetWidth;\n    const maxVisibleWidth = elText.parentNode.offsetWidth;\n    elCursor.style.transform = `translateX(${Math.min(maxVisibleWidth - 1, cursorOffset)}px)`;\n    elText.style.transform = `translateX(${Math.min(0, maxVisibleWidth - cursorOffset)}px)`;\n  }\n\n  openKeyboard() {\n    if (this.ks.keyboard) {\n      return;\n    }\n\n    const elContainer = document.createElement('div');\n    const elShadow = document.createElement('div');\n    const elKeyboard = document.createElement('div');\n    elContainer.className = 'numeric-keyboard-actionsheet';\n    elContainer.appendChild(elShadow);\n    elContainer.appendChild(elKeyboard);\n    document.body.appendChild(elContainer);\n\n    const inputHandler = this.input.bind(this);\n    this.createKeyboard(\n      elKeyboard,\n      {\n        layout: this.kp.layout || this.kp.type,\n        entertext: this.kp.entertext\n      },\n      {\n        press: inputHandler,\n        longPress: inputHandler\n      },\n      keyboard => this.set('keyboard', keyboard)\n    );\n\n    animate(\n      (timestamp, frame, frames) => {\n        elKeyboard.style.position = 'fixed';\n        elKeyboard.style.bottom = '0';\n        elKeyboard.style.left = '0';\n        elKeyboard.style.transform = `translateY(${((frames - frame) / frames) * 100}%)`;\n      },\n      () => {},\n      10\n    );\n\n    this.set('keyboardElement', elKeyboard);\n    this.set('cursorActive', true);\n    this.set('cursorPos', this.ks.rawValue.length);\n\n    this.isFocus = true;\n    this.dispatch('focus');\n    KeyboardCenter.register(this);\n  }\n\n  closeKeyboard() {\n    if (!this.ks.keyboard) {\n      return;\n    }\n\n    const keyboard = this.ks.keyboard;\n    const elKeyboard = this.ks.keyboardElement;\n\n    animate(\n      (timestamp, frame, frames) => {\n        elKeyboard.style.transform = `translateY(${(frame / frames) * 100}%)`;\n      },\n      () => {\n        setTimeout(() => {\n          this.destroyKeyboard(elKeyboard, keyboard);\n          document.body.removeChild(elKeyboard.parentNode);\n        }, 50);\n      },\n      10\n    );\n\n    this.set('keyboard', null);\n    this.set('keyboardElement', null);\n    this.set('cursorActive', false);\n    this.set('cursorPos', 0);\n\n    this.isFocus = false;\n    this.dispatch('blur');\n    KeyboardCenter.unregister(null);\n  }\n}\n","<div class=\"numeric-input-container\">\r\n  <div class=\"numeric-input\" [class.readonly]=\"kp.readonly\" [class.disabled]=\"kp.disabled\" (touchend)=\"onFocus($event)\">\r\n    <div>\r\n      <div class=\"numeric-input-text\">\r\n        <span\r\n          class=\"input-text\"\r\n          *ngFor=\"let value of ks.rawValue; let i = index; trackBy: trackByIndex\"\r\n          [attr.data-index]=\"i\"\r\n        >\r\n          {{ value }}\r\n        </span>\r\n      </div>\r\n      <div *ngIf=\"ks.rawValue.length === 0\" class=\"numeric-input-placeholder\">\r\n        <span class=\"typo-placeholder\">\r\n          {{ kp.placeholder }}\r\n        </span>\r\n      </div>\r\n      <div\r\n        *ngIf=\"ks.cursorActive\"\r\n        class=\"numeric-input-cursor blinking-cursor\"\r\n        [style.background]=\"ks.cursorColor\"\r\n      ></div>\r\n    </div>\r\n  </div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { NumericInputComponent } from './input/input.component';\r\nimport { NumericKeyboardComponent } from './keyboard/keyboard.component';\r\n\r\n@NgModule({\r\n  exports: [NumericInputComponent, NumericKeyboardComponent],\r\n  declarations: [NumericInputComponent, NumericKeyboardComponent],\r\n  imports: [CommonModule, FormsModule]\r\n})\r\nexport class NumericInputModule {}\r\n","import { NgModule } from '@angular/core';\nimport { NumericInputModule } from './numeric-input.module';\nimport { KeyboardDirective } from './keyboard/keyboard.directive';\nimport { KeyboardService } from './keyboard/keyboard.service';\n\n@NgModule({\n  exports: [NumericInputModule, KeyboardDirective],\n  declarations: [KeyboardDirective],\n  providers: [KeyboardService]\n})\nexport class NgNumericKeyboardModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["Keys.ONE","Keys.TWO","Keys.THREE","Keys.DEL","Keys.FOUR","Keys.FIVE","Keys.SIX","Keys.SEVEN","Keys.EIGHT","Keys.NINE","Keys.ENTER","Keys.DOT","Keys.ZERO","Keys.ESC","Keys.BLANK"],"mappings":"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"}