{"version":3,"file":"zen-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/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/zen-numeric-keyboard.ts"],"sourcesContent":["export const ZERO = '0';\nexport const ONE = '1';\nexport const TWO = '2';\nexport const THREE = '3';\nexport const FOUR = '4';\nexport const FIVE = '5';\nexport const SIX = '6';\nexport const SEVEN = '7';\nexport const EIGHT = '8';\nexport const NINE = '9';\nexport const DOT = '.';\nexport const DEL = 'del';\nexport const ENTER = 'enter';\nexport const ESC = 'esc';\nexport const BLANK = '';\nexport const DOUBLEZERO = '00';\nexport const NEGATIVE = '-/+';\n","import * as Keys from './keys';\n\nconst TelLayout: Layout = [\n  [{ key: Keys.ONE }, { key: Keys.TWO }, { key: Keys.THREE }],\n  [{ key: Keys.FOUR }, { key: Keys.FIVE }, { key: Keys.SIX }],\n  [{ key: Keys.SEVEN }, { key: Keys.EIGHT }, { key: Keys.NINE }],\n  [{ key: Keys.DEL }, { key: Keys.ZERO }, { key: Keys.ENTER }]\n];\n\nconst PhoneLayout: Layout = [\n  [{ key: Keys.ONE }, { key: Keys.TWO }, { key: Keys.THREE }, { key: Keys.DEL }],\n  [{ key: Keys.FOUR }, { key: Keys.FIVE }, { key: Keys.SIX }, { key: Keys.ENTER }],\n  [{ key: Keys.SEVEN }, { key: Keys.EIGHT }, { key: Keys.NINE }, { key: Keys.DOT }],\n  [{ key: Keys.BLANK }, { key: Keys.ZERO }, { key: Keys.BLANK }, { key: Keys.ESC }]\n];\n\n//正整数\nconst NumberLayout: Layout = [\n  [{ key: Keys.ONE }, { key: Keys.TWO }, { key: Keys.THREE }, { key: Keys.DEL, rowspan: 2 }],\n  [{ key: Keys.FOUR }, { key: Keys.FIVE }, { key: Keys.SIX }],\n  [{ key: Keys.SEVEN }, { key: Keys.EIGHT }, { key: Keys.NINE }, { key: Keys.ENTER, rowspan: 2 }],\n  [{ key: Keys.DOUBLEZERO }, { key: Keys.ZERO }, { key: Keys.BLANK }]\n];\n\n//正小数\nconst DecimalsLayout: Layout = [\n  [{ key: Keys.ONE }, { key: Keys.TWO }, { key: Keys.THREE }, { key: Keys.DEL, rowspan: 2 }],\n  [{ key: Keys.FOUR }, { key: Keys.FIVE }, { key: Keys.SIX }],\n  [{ key: Keys.SEVEN }, { key: Keys.EIGHT }, { key: Keys.NINE }, { key: Keys.ENTER, rowspan: 2 }],\n  [{ key: Keys.BLANK }, { key: Keys.ZERO }, { key: Keys.DOT }]\n];\n\n//正负整数\nconst NegativeDecimalsLayout: Layout = [\n  [{ key: Keys.ONE }, { key: Keys.TWO }, { key: Keys.THREE }, { key: Keys.DEL, rowspan: 2 }],\n  [{ key: Keys.FOUR }, { key: Keys.FIVE }, { key: Keys.SIX }],\n  [{ key: Keys.SEVEN }, { key: Keys.EIGHT }, { key: Keys.NINE }, { key: Keys.ENTER, rowspan: 2 }],\n  [{ key: Keys.NEGATIVE }, { key: Keys.ZERO }, { key: Keys.DOT }]\n];\n\n//正负小数\nconst NegativeNumberLayout: Layout = [\n  [{ key: Keys.ONE }, { key: Keys.TWO }, { key: Keys.THREE }, { key: Keys.DEL, rowspan: 2 }],\n  [{ key: Keys.FOUR }, { key: Keys.FIVE }, { key: Keys.SIX }],\n  [{ key: Keys.SEVEN }, { key: Keys.EIGHT }, { key: Keys.NINE }, { key: Keys.ENTER, rowspan: 2 }],\n  [{ key: Keys.NEGATIVE }, { key: Keys.ZERO }, { key: Keys.DOUBLEZERO }]\n];\nexport const Layouts: LayoutsType = {\n  number: NumberLayout,\n  tel: TelLayout,\n  phone: PhoneLayout,\n  decimals: DecimalsLayout,\n  negativeNumber:NegativeNumberLayout,\n  negativeDecimals:NegativeDecimalsLayout\n};\n\nexport interface LayoutItem {\n  key: string;\n  rowspan?: number;\n  colspan?: number;\n}\n\nexport type Layout = LayoutItem[][];\n\nexport interface LayoutsType {\n  number: Layout;\n  tel: Layout;\n  phone: Layout;\n  decimals: Layout;\n  negativeNumber: Layout;\n  negativeDecimals:Layout;\n}\n","import { Component, EventEmitter, Input, Output, OnInit } from '@angular/core';\nimport { ENTER, DEL, ESC } from '../utils/keys';\nimport { Layout, Layouts, LayoutsType } from '../utils/layouts';\n\n@Component({\n  selector: 'ng-numeric-keyboard',\n  templateUrl: './keyboard.component.html',\n  styleUrls: ['./keyboard.component.scss']\n})\nexport class NumericKeyboardComponent implements OnInit {\n  @Input() layout: KeyboardOptions['layout'] = 'number';\n  @Input() entertext: string = 'Enter';\n\n  @Output() press = new EventEmitter<number | string>();\n  @Output() enterpress = new EventEmitter();\n\n  public kp: KeyboardOptions;\n  public ks: { resolvedLayout: Layout };\n  public ENTER = ENTER;\n  public DEL = DEL;\n  public ESC = ESC;\n\n  ngOnInit() {\n    const options = { layout: this.layout, entertext: this.entertext };\n    this.init(options);\n  }\n\n  dispatch(event: string, payload?: number | string) {\n    switch (event) {\n      case 'press':\n        this.press.emit(payload);\n        break;\n      case 'enterpress':\n        this.enterpress.emit();\n        break;\n    }\n  }\n\n  onTouchend(key: any) {\n    this.dispatch('press', key);\n    if (key === ENTER) {\n      this.dispatch('enterpress');\n    }\n  }\n\n  private init(options: KeyboardOptions) {\n    const { layout } = options;\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\nexport interface KeyboardOptions {\n  layout: keyof LayoutsType | Layout;\n  entertext: string;\n}\n","<table class=\"numeric-keyboard\">\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      (touchend)=\"onTouchend(c.key)\"\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;\n\nexport const animate = (iterable: any, done = () => {}, frames = 60) => {\n  let running = true;\n  let frame = 0;\n\n  const closure = timestamp => {\n    if (!running) {\n      return;\n    }\n    iterable(timestamp, ++frame, frames);\n    if (frame < frames) {\n      requestAnimationFrame(closure, 0);\n    } else {\n      done();\n    }\n  };\n\n  requestAnimationFrame(closure, 0);\n\n  return () => {\n    running = false;\n  };\n};\n\nexport const coerceBooleanProperty = (value: any) => {\n  return value != null && `${value}` !== 'false';\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 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  negative: false\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  private _negative: boolean = Options.negative;//正负\"-/+\"使用的\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 { rawValue, cursorPos } = this.ks;\n\n    let otherPos = 1;//1.解决\"00\"按钮需要填充2个\"0\"进行占位 2.解决小数时候 第一个按\".\"的时候自动匹配0\n    const input = (inputKey: any) => {\n      const isAdd = typeof inputKey !== 'undefined';\n      const newRawValue = rawValue.slice();\n      if (isAdd) {\n        if (inputKey === '00') {\n          newRawValue.splice(cursorPos, 0, \"0\");\n          newRawValue.splice(cursorPos, 0, \"0\");\n          otherPos = 2;\n        } else if ((this.layout === \"decimals\" || this.layout === \"negativeDecimals\") &&//为浮点数\n          //输入的是\".\"的时候 (开头是\"-\" 长度为1) 或者长度为 0\n          ((inputKey === '.' && ((newRawValue[0] === '-' && newRawValue.length === 1) || (newRawValue.length === 0))))) {\n          newRawValue.splice(cursorPos, 0, \".\");\n          newRawValue.splice(cursorPos, 0, \"0\");\n          otherPos = 2;\n        }\n        else {\n          newRawValue.splice(cursorPos, 0, inputKey);\n        }\n      } else {\n        if ((this.layout === \"decimals\" || this.layout === \"negativeDecimals\") && //为浮点数\n          (newRawValue.length === 2 && newRawValue[0] == \"0\") ||//长度是2 第一个开头是0\n          (newRawValue.length === 3 && newRawValue[0] == \"-\" && newRawValue[1] == \"0\")) { //长度是3 开头是\"-\" 第二个是\"0\"\n          newRawValue.splice(cursorPos - 2, 2);\n          otherPos = 2;\n        } else {\n          newRawValue.splice(cursorPos - 1, 1);\n        }\n      }\n      this.verification(newRawValue, inputKey, otherPos, isAdd);\n    };\n\n    switch (key) {\n      case Keys.NEGATIVE:\n        this.changeNegative(rawValue.slice(), cursorPos);\n        break;\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      case Keys.DOUBLEZERO:\n      default:\n        input(key);\n        break;\n    }\n  }\n\n  //输入内容校验\n  verification(newRawValue, inputKey, otherPos, isAdd) {\n    const { type, maxlength } = this.kp;\n    const { cursorPos, formatFn } = this.ks;\n    let newValue = newRawValue.join('');\n    let newValueString = newRawValue.join('');//下面有用的\n    if (formatFn(newValue)) {\n      if (type === 'number') {\n        //正则表达式 解决粘贴出现奇怪的东西 (别用变量写正则 正则有缓存)\n        if (this.layout === 'number' && !/[1-9]\\d*|0/.test(newValue) && newValue) return;\n        if (this.layout === 'negativeNumber' && !/^-?(([1-9]\\d*)|0)/.test(newValue) && newValue && newValue !== '-') return;\n        if (this.layout === 'decimals' && !/^\\d*(?:\\.\\d*)?$/.test(newValue)) return;\n        if (this.layout === 'negativeDecimals' && !/^-?\\d*(?:\\.\\d*)?$/.test(newValue)) return;\n        newValue = parseFloat(newValue);\n        if (isNaN(newValue)) {\n          newValue = '';\n          this._negative = false;//空的时候默认为正数\n          this.set('cursorPos', 0);//加了可能有用 大脑短路了 \n        }\n      } else if (newValue.length > maxlength || (type === 'tel' && !RTel.test(newValue))) {\n        return;\n      }\n\n      //解决一直输出多个0在前面的输入问题 一言难尽啊!不是语言能说明白的\n      //特殊几个情况以外保留输入的数组,剩下的获取当前值的数组.newValue.toString().split(\"\")\n      //但是!!0.00之类的是获取到的是0会影响用户体验,所以要保留之前输入内容数组的\n      //解决的是0.00点后面的内容不让输入的问题.\n      let newValueArr = newValueString === \"-\" || (newValueString.indexOf(\"0.\") != -1 && newValueString.substring(0, 2) === \"0.\") || newValueString === \"-0\" || (newValueString.indexOf(\"-0.\") != -1) ||\n        inputKey === \".\" || newRawValue[newRawValue.length - 1] === \".\" ? newRawValue : newValue.toString().split(\"\");\n      //-0的问题,toString()会认为是0\n      //分别解决的错误为 0000.00显示为0 \n      // -00.00 显示为0\n      //-0.000 显示为0 \n      // debugger\n      if (newValue === 0 && (inputKey === \"0\" || inputKey === \"00\")) {//当值为0时候 你还在那咔咔输入0,你想咋滴\n        if (this._negative && cursorPos < 3) {//为负数的时候,\"-0.\" 之间加值\n          if (newValueString.indexOf(\".\") != -1) {//如果是浮点数时候\n            newRawValue.splice(cursorPos, 1);//我不会让你得逞,把你输入的内容移除\n            newValueArr = newRawValue;\n          } else {\n            if (inputKey === \"00\") otherPos = cursorPos == 1 ? 1 : 0;//如果有\"0\"输入值,这个数值不占位\n            newValueArr = [\"-\", \"0\"];//整数的时候或者整数的部分,只能保存成\"-0\"\n          }\n        } else if (!this._negative && cursorPos < 2) {//输入的位置为前俩,也就是\"0.\"或者\"0\"之间添加\n          if (newValueString.indexOf(\".\") != -1) {//如果值包括\"0.\"的时候,还在\".\"输入0,我会把输入值直接干掉!!!\n            newRawValue.splice(cursorPos, 1);\n            newValueArr = newRawValue;\n          } else {\n            if (inputKey === \"00\") otherPos = cursorPos == 0 ? 1 : 0;//如果有\"0\"输入值,这个数值不占位\n            newValueArr = ['0'];//整数开始! 输入多少个0 它还是0\n          }\n        }\n      }\n      //计算一下 如果值数组和输入内容数组插值 获取到应该改变位置大小\n      if (newValueArr.length !== newRawValue.length && otherPos !== 2 && inputKey !== \"00\") {\n        otherPos = otherPos - (newRawValue.length - newValueArr.length);\n      }\n      this.set('value', newValue);\n      this.set('rawValue', newValueArr);\n      this.set('cursorPos', isAdd ? cursorPos + otherPos : cursorPos - otherPos);\n      this.dispatch('input', newValue);\n    }\n  }\n\n  //正负数\n  changeNegative(newRawValue, cursorPos) {\n    this._negative = !this._negative; ''\n    //false 是正数 true是负数\n    if (this._negative) {\n      newRawValue.splice(0, 0, \"-\");\n    } else {\n      newRawValue.splice(0, 1);\n    }\n\n    let newValue = newRawValue.join('');\n    this.set('value', newValue);\n    this.set('rawValue', newRawValue);\n    this.set('cursorPos', this._negative ? cursorPos + 1 : cursorPos - 1);\n    this.dispatch('input', newValue);\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    this.createKeyboard(\n      elKeyboard,\n      {\n        layout: this.kp.layout || this.kp.type,\n        entertext: this.kp.entertext\n      },\n      {\n        press: this.input.bind(this)\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\nexport interface InputOptions {\n  layout: keyof LayoutsType | Layout;\n  entertext: string;\n}\n","<div class=\"numeric-input-container\">\n  <div class=\"numeric-input\" [class.readonly]=\"kp.readonly\" [class.disabled]=\"kp.disabled\" (touchend)=\"onFocus($event)\">\n    <div>\n      <div class=\"numeric-input-text\">\n        <span\n          class=\"input-text\"\n          *ngFor=\"let value of ks.rawValue; let i = index; trackBy: trackByIndex\"\n          [attr.data-index]=\"i\"\n        >\n          {{ value }}\n        </span>\n      </div>\n      <div *ngIf=\"ks.rawValue.length === 0\" class=\"numeric-input-placeholder\">\n        <span class=\"typo-placeholder\">\n          {{ kp.placeholder }}\n        </span>\n      </div>\n      <div\n        *ngIf=\"ks.cursorActive\"\n        class=\"numeric-input-cursor blinking-cursor\"\n        [style.background]=\"ks.cursorColor\"\n      ></div>\n    </div>\n  </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\n\nimport { NumericInputComponent } from './input/input.component';\nimport { NumericKeyboardComponent } from './keyboard/keyboard.component';\n\n@NgModule({\n  exports: [NumericInputComponent, NumericKeyboardComponent],\n  declarations: [NumericInputComponent, NumericKeyboardComponent],\n  imports: [CommonModule, FormsModule]\n})\nexport class NumericInputModule {}\n","import { NgModule } from '@angular/core';\nimport { NumericInputModule } from './numeric-input.module';\n\n@NgModule({\n  exports: [NumericInputModule]\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.FOUR","Keys.FIVE","Keys.SIX","Keys.SEVEN","Keys.EIGHT","Keys.NINE","Keys.DEL","Keys.ZERO","Keys.ENTER","Keys.DOT","Keys.BLANK","Keys.ESC","Keys.DOUBLEZERO","Keys.NEGATIVE"],"mappings":"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"}