{"version":3,"sources":["AX6UIFormatter.js"],"names":["_jqmin","require","_AX6UICore2","_AX6Util","_AX6Info","_AX6UIFormatter_formatter","formatter","setSelectionRange","input","pos","value","length","focus","createTextRange","range","collapse","moveEnd","moveStart","select","selectionStart","selectionEnd","formatterEvent","opts","optIdx","e","$input","data","val","keydown","isStop","enterableKeyCodes","metaKey","ctrlKey","shiftKey","get","beforeValue","elem","selection","document","selectionLength","createRange","text","which","elemFocusPosition","newValue","pattern","this","customFormatter","getPatternValue","call","_AX6UIFormatter_formatter2","default","trigger","blur","_force","bindFormatterTarget","removeData","tagName","$target","attr","console","log","_AX6Info2","getError","target","re","matched","match","getEnterableKeyCodes","off","on","bind","queue","keyup","unbindFormatterTarget","getQueIdx","boundID","_AX6Util2","search","id","AX6UIFormatter","config","_classCallCheck","_this","_possibleConstructorReturn","__proto__","Object","getPrototypeOf","animateTime","_jqmin2","extend","openTimer","init","initOnce","initialized","formatterConfig","getFormatter","find","each","self","_AX6UICore3","queIdx","isNumber","i","unbind","splice","assign","_formatter","ctrlKeys","numKeys"],"mappings":"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","file":"AX6UIFormatter.js","sourcesContent":["import jQuery from \"jqmin\";\nimport AX6UICore from \"./AX6UICore\";\nimport U from \"./AX6Util\";\nimport info from \"./AX6Info\";\nimport FORMATTER from \"./AX6UIFormatter/AX6UIFormatter_formatter\";\n/* ~~~~~~~~~~~~~~~~~~ end of import  ~~~~~~~~~~~~~~~~~~~~ */\n\nlet formatter = {};\n\nconst setSelectionRange = function (input, pos) {\n  if (typeof pos == \"undefined\") {\n    pos = input.value.length;\n  }\n  if (input.setSelectionRange) {\n    input.focus();\n    input.setSelectionRange(pos, pos);\n  }\n  else if (input.createTextRange) {\n    var range = input.createTextRange();\n    range.collapse(true);\n    range.moveEnd('character', pos);\n    range.moveStart('character', pos);\n    range.select();\n  }\n  else if (input.selectionStart) {\n    input.focus();\n    input.selectionStart = pos;\n    input.selectionEnd = pos;\n  }\n};\nconst formatterEvent = {\n  'focus': function (opts, optIdx, e) {\n    if (!opts.$input.data(\"__originValue__\")) opts.$input.data(\"__originValue__\", opts.$input.val());\n  },\n  /* 키 다운 이벤트에서 입력할 수 없는 키 입력을 방어 */\n  'keydown': function (opts, optIdx, e) {\n    let isStop = false;\n    if (!opts.enterableKeyCodes) {\n\n    }\n    else if (e.which && opts.enterableKeyCodes[e.which]) {\n\n    }\n    else if (!e.metaKey && !e.ctrlKey && !e.shiftKey) {\n      //console.log(e.which, opts.enterableKeyCodes);\n      isStop = true;\n    }\n    if (isStop) U.stopEvent(e);\n  },\n  /* 키 업 이벤트에서 패턴을 적용 */\n  'keyup': function (opts, optIdx, e) {\n    let elem = opts.$input.get(0),\n      elemFocusPosition,\n      beforeValue,\n      newValue,\n      selection, selectionLength;\n\n    if ('selectionStart' in elem) {\n      // Standard-compliant browsers\n      elemFocusPosition = elem.selectionStart;\n    }\n    else if (document.selection) {\n      // IE\n      //elem.focus();\n      selection = document.selection.createRange();\n      selectionLength = document.selection.createRange().text.length;\n      selection.moveStart('character', -elem.value.length);\n      elemFocusPosition = selection.text.length - selectionLength;\n    }\n\n    beforeValue = elem.value;\n    if (opts.pattern in this.customFormatter) {\n      newValue = this.customFormatter[opts.pattern].getPatternValue.call(this, opts, optIdx, e, elem.value);\n    } else if (opts.pattern in FORMATTER) {\n      newValue = FORMATTER[opts.pattern].getPatternValue.call(this, opts, optIdx, e, elem.value);\n    } else {\n      newValue = beforeValue\n    }\n\n    if (newValue != beforeValue) {\n      opts.$input.val(newValue).trigger(\"change\");\n      setSelectionRange(elem, elemFocusPosition + newValue.length - beforeValue.length);\n    }\n  },\n  'blur': function (opts, optIdx, e, _force) {\n    let elem = opts.$input.get(0),\n      beforeValue,\n      newValue\n    ;\n\n    opts.$input.removeData(\"__originValue__\");\n\n    beforeValue = elem.value;\n    if (opts.pattern in this.customFormatter) {\n      newValue = this.customFormatter[opts.pattern].getPatternValue.call(this, opts, optIdx, e, elem.value, 'blur');\n    } else if (opts.pattern in FORMATTER) {\n      newValue = FORMATTER[opts.pattern].getPatternValue.call(this, opts, optIdx, e, elem.value, 'blur');\n    } else {\n      newValue = beforeValue\n    }\n\n    if (_force) {\n      opts.$input.val(newValue);\n    } else {\n      if (newValue != beforeValue) {\n        opts.$input.val(newValue).trigger(\"change\");\n      }\n    }\n  }\n};\nconst bindFormatterTarget = function (opts, optIdx) {\n  if (!opts.pattern) {\n    if (opts.$target.get(0).tagName == \"INPUT\") {\n      opts.pattern = opts.$target\n        .attr('data-ax6formatter');\n    }\n    else {\n      opts.pattern = opts.$target\n        .find('input[type=\"text\"]')\n        .attr('data-ax6formatter');\n    }\n    if (!opts.pattern) {\n      console.log(info.getError(\"ax6formatter\", \"501\", \"bind\"));\n      console.log(opts.target);\n      return this;\n    }\n  }\n\n  let re = /[^\\(^\\))]+/gi,\n    matched = opts.pattern.match(re);\n\n  opts.pattern = matched[0];\n  opts.patternArgument = matched[1] || \"\";\n\n  // 함수타입\n  if (opts.pattern in this.customFormatter) {\n    opts.enterableKeyCodes = this.customFormatter[opts.pattern].getEnterableKeyCodes.call(this, opts, optIdx);\n  } else if (opts.pattern in FORMATTER) {\n    opts.enterableKeyCodes = FORMATTER[opts.pattern].getEnterableKeyCodes.call(this, opts, optIdx);\n  }\n\n  opts.$input\n    .off('focus.ax6formatter')\n    .on('focus.ax6formatter', formatterEvent.focus.bind(this, this.queue[optIdx], optIdx))\n    .off('keydown.ax6formatter')\n    .on('keydown.ax6formatter', formatterEvent.keydown.bind(this, this.queue[optIdx], optIdx))\n    .off('keyup.ax6formatter')\n    .on('keyup.ax6formatter', formatterEvent.keyup.bind(this, this.queue[optIdx], optIdx))\n    .off('blur.ax6formatter')\n    .on('blur.ax6formatter', formatterEvent.blur.bind(this, this.queue[optIdx], optIdx));\n\n  formatterEvent.blur.call(this, this.queue[optIdx], optIdx);\n\n  return this;\n};\nconst unbindFormatterTarget = function (opts, optIdx) {\n  opts.$input\n    .off('focus.ax6formatter')\n    .off('keydown.ax6formatter')\n    .off('keyup.ax6formatter')\n    .off('blur.ax6formatter');\n\n  return this;\n};\nconst getQueIdx = function (boundID) {\n  if (!U.isString(boundID)) {\n    boundID = jQuery(boundID).data(\"data-formatter\");\n  }\n  /*\n   if (!U.isString(boundID)) {\n   console.log(info.getError(\"ax6formatter\", \"402\", \"getQueIdx\"));\n   return;\n   }\n   */\n  return U.search(this.queue, function () {\n    return this.id == boundID;\n  });\n};\n/* ~~~~~~~~~~~~~~~~~~ end of private  ~~~~~~~~~~~~~~~~~~~~ */\n\n/**\n * @class\n */\nclass AX6UIFormatter extends AX6UICore {\n  /**\n   * @constructor\n   * @param config\n   * @param {Object} [config.formatter]\n   * @example\n   * ```js\n   * var formatter = new Formatter();\n   *\n   * // Extend formatter\n   * var myFormatter = new Formatter({\n     *  formatter: {\n     *      \"mystyle\": {\n     *          getEnterableKeyCodes: function (_opts) {\n     *              var enterableKeyCodes = {\n     *                  '189': '-' // eventKeyCode\n     *              };\n     *              return jQuery.extend(enterableKeyCodes, {});\n     *          }\n     *          getPatternValue: function (_opts, optIdx, e, val, eType) {\n     *              val = val.replace(/\\D/g, \"\");\n     *              var regExpPattern = /^([0-9]{2})\\-?([0-9]{2})?\\-?([0-9]{2})?\\-?([0-9]{2})?/;\n     *              return val.replace(regExpPattern, function (a, b) {\n     *                  var nval = [arguments[1]];\n     *                  if (arguments[2]) nval.push(arguments[2]);\n     *                  if (arguments[3]) nval.push(arguments[3]);\n     *                  if (arguments[4]) nval.push(arguments[4]);\n     *                  return nval.join(\"-\");\n     *              });\n     *          }\n     *      }\n     *  }\n     * });\n   * ```\n   */\n  constructor(config) {\n    super();\n\n    /**\n     * @member {JSON}\n     * @param config\n     * @param [config.animateTime=250]\n     */\n    this.config = {\n      animateTime: 250\n    };\n    jQuery.extend(true, this.config, config);\n\n    // 멤버 변수 초기화\n    /**\n     * @member\n     * @type {Array}\n     */\n    this.queue = [];\n    this.openTimer = null;\n    this.closeTimer = null;\n\n    this.init();\n  }\n\n  /**\n   * @method\n   */\n  init() {\n\n    // init 호출 여부\n    this.initOnce();\n  }\n\n  /**\n   * @method\n   * @return {AX6UIFormatter}\n   */\n  initOnce() {\n    if (this.initialized) return this;\n    this.initialized = true;\n  }\n\n  /**\n   * @method\n   * @param {Object} opts\n   * @param {Element} opts.target\n   * @return {AX6UIFormatter}\n   */\n  bind(opts) {\n    let formatterConfig = {}, optIdx;\n\n    // 사용자 포메터 체크\n    this.customFormatter = AX6UIFormatter.getFormatter();\n\n    jQuery.extend(true, formatterConfig, this.config);\n    if (opts) jQuery.extend(true, formatterConfig, opts);\n    opts = formatterConfig;\n\n    if (!opts.target) {\n      console.log(info.getError(\"ax6formatter\", \"401\", \"bind\"));\n      return this;\n    }\n    opts.$target = jQuery(opts.target);\n    if(!opts.$target.get(0)){\n      console.log(info.getError(\"ax6formatter\", \"401\", \"can't found target element\"));\n      return this;\n    }\n\n    if (opts.$target.get(0).tagName == \"INPUT\") {\n      opts.$input = opts.$target;\n    }\n    else {\n      opts.$input = opts.$target.find('input[type=\"text\"]');\n      if (opts.$input.length > 1) {\n        opts.$input.each(function () {\n          opts.target = this;\n          self.bind(opts);\n        });\n        return this;\n      }\n    }\n\n    opts.$input = (opts.$target.get(0).tagName == \"INPUT\") ? opts.$target : opts.$target.find('input[type=\"text\"]');\n\n    if (!opts.id) opts.id = opts.$input.data(\"ax6-formatter\");\n\n    if (!opts.id) {\n      opts.id = 'ax6-formatter-' + AX6UICore.getInstanceId();\n      opts.$input.data(\"ax6-formatter\", opts.id);\n    }\n    optIdx = U.search(this.queue, function () {\n      return this.id == opts.id;\n    });\n\n    if (optIdx === -1) {\n      this.queue.push(opts);\n      bindFormatterTarget.call(this, this.queue[this.queue.length - 1], this.queue.length - 1);\n    }\n    else {\n      this.queue[optIdx] = opts;\n      bindFormatterTarget.call(this, this.queue[optIdx], optIdx);\n    }\n\n    return this;\n  }\n\n  /**\n   * @method\n   * @return {AX6UIFormatter}\n   */\n  formatting() {\n    let queIdx = (U.isNumber(boundID)) ? boundID : getQueIdx.call(this, boundID);\n    if (queIdx === -1) {\n      let i = this.queue.length;\n      while (i--) {\n        formatterEvent.blur.call(this, this.queue[i], i, null, true);\n      }\n    } else {\n      formatterEvent.blur.call(this, this.queue[queIdx], queIdx, null, true);\n    }\n    return this;\n  }\n\n  /**\n   * @method\n   * @param opts\n   * @return {AX6UIFormatter}\n   */\n  unbind(opts) {\n    let self = this;\n    let optIdx;\n\n    if (!opts.target) {\n      console.log(info.getError(\"ax6formatter\", \"401\", \"unbind\"));\n      return this;\n    }\n    opts.$target = jQuery(opts.target);\n\n    if (opts.$target.get(0).tagName == \"INPUT\") {\n      opts.$input = opts.$target;\n    }\n    else {\n      opts.$input = opts.$target.find('input[type=\"text\"]');\n      if (opts.$input.length > 1) {\n        opts.$input.each(function () {\n          opts.target = this;\n          self.unbind(opts);\n        });\n        return this;\n      }\n    }\n\n    opts.$input = (opts.$target.get(0).tagName == \"INPUT\") ? opts.$target : opts.$target.find('input[type=\"text\"]');\n    opts.id = opts.$input.data(\"ax6-formatter\");\n\n    if (opts.id) {\n      optIdx = U.search(this.queue, function () {\n        return this.id == opts.id;\n      });\n\n      unbindFormatterTarget.call(this, this.queue[optIdx]);\n      this.queue.splice(optIdx, 1);\n    }\n\n    return this;\n  }\n\n  /**\n   * @static\n   * @param _formatter\n   */\n  static setFormatter(_formatter) {\n    return formatter = Object.assign(formatter, _formatter);\n  }\n\n  /**\n   * @static\n   * @return {{}}\n   */\n  static getFormatter() {\n    return formatter || {};\n  }\n\n  /**\n   * @static\n   * @return {{}}\n   */\n  static getCtrlKeys(){\n    return FORMATTER.ctrlKeys;\n  }\n\n  /**\n   * @static\n   * @return {{}}\n   */\n  static getNumKeys(){\n    return FORMATTER.numKeys;\n  }\n}\n\nexport default AX6UIFormatter;"]}