{"version":3,"sources":["AX6UIMask.js"],"names":["_jqmin","require","_AX6UICore2","_AX6Util","_AX6Mustache","getBodyTmpl","data","columnKeys","_AX6Mustache2","default","render","call","this","onStateChanged","opts","that","setBody","content","config","_classCallCheck","AX6UIMask","_this","_possibleConstructorReturn","__proto__","Object","getPrototypeOf","theme","target","_jqmin2","document","body","get","animateTime","extend","maskContent","status","activeConfig","init","onClick","initOnce","initialized","options","_this2","close","_cfg","$target","maskId","instanceId","$mask","css","templateName","trim","append","position","left","offset","top","width","outerWidth","height","outerHeight","addClass","window","off","on","_AX6Util2","throttle","e","zIndex","state","type","_close","remove","removeClass","self","delay","setTimeout","bind"],"mappings":"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","file":"AX6UIMask.js","sourcesContent":["import jQuery from \"jqmin\";\nimport AX6UICore from \"./AX6UICore.js\";\nimport U from \"./AX6Util\";\nimport mustache from \"./AX6Mustache.js\";\n/* ~~~~~~~~~~~~~~~~~~ end of import  ~~~~~~~~~~~~~~~~~~~~ */\n\nconst getBodyTmpl = function (data, columnKeys) {\n  const defaultMask = function (columnKeys) {\n    return `\n            <div data-ax6ui-mask=\"\" class=\"{{theme}}\" id=\"{{maskId}}\">\n                <div class=\"ax-mask-bg\"></div>\n                <div class=\"ax-mask-content\">\n                    <div class=\"ax-mask-body\">\n                    {{{body}}}\n                    </div>\n                </div>\n            </div>\n        `;\n  };\n  return mustache.render(defaultMask.call(this, columnKeys), data);\n};\nconst onStateChanged = function (opts, that) {\n  if (opts && opts.onStateChanged) {\n    opts.onStateChanged.call(that, that);\n  }\n  else if (this.onStateChanged) {\n    this.onStateChanged.call(that, that);\n  }\n\n  opts = null;\n  that = null;\n  return true;\n};\nconst setBody = function (content) {\n  this.maskContent = content;\n};\n\n/* ~~~~~~~~~~~~~~~~~~ end of private  ~~~~~~~~~~~~~~~~~~~~ */\n\n/**\n * @class\n */\nclass AX6UIMask extends AX6UICore {\n  /**\n   * @constructor\n   * @param config\n   */\n  constructor(config) {\n    super();\n\n    /**\n     * @member {JSON}\n     * @param config\n     * @param [config.theme]\n     * @param [config.target=document.body]\n     * @param [config.animateTime=250]\n     * @param [config.onStateChanged]\n     * @param [config.onClick]\n     * @param [config.content]\n     *\n     */\n    this.config = {\n      theme: '',\n      target: jQuery(document.body).get(0),\n      animateTime: 250\n    };\n    jQuery.extend(true, this.config, config);\n\n    // 멤버 변수 초기화\n    /**\n     * @member {String}\n     */\n    this.maskContent = '';\n    /**\n     * @member {String}\n     */\n    this.status = \"off\";\n    /**\n     * @member {JSON}\n     */\n    this.activeConfig = {};\n\n    if (typeof config !== \"undefined\") this.init();\n  }\n\n  /**\n   * @method\n   */\n  init() {\n    this.onStateChanged = this.config.onStateChanged;\n    delete this.config.onStateChanged;\n    this.onClick = this.config.onClick;\n    delete this.config.onClick;\n\n    setBody.call(this, this.config.content || \"\");\n\n    // init 호출 여부\n    this.initOnce();\n  }\n\n  /**\n   * @method\n   */\n  initOnce() {\n    if (this.initialized) return this;\n    this.initialized = true;\n  }\n\n  /**\n   * @method\n   * @param options\n   * @param {number} [options.zIndex] - 마스크 엘리먼트의 z-index 값을 정합니다\n   * @return {AX6UIMask}\n   * @example\n   * ```js\n   * let myMask = new Mask();\n   * myMask.setConfig({\n     *  zIndex: 1000\n     * });\n   *\n   * myMask.open();\n   * ```\n   */\n  open(options) {\n    if (this.status === \"on\") this.close();\n    setBody.call(this, (options) ? options.content || \"\" : \"\");\n\n    let _cfg         = jQuery.extend(true, this.config, options),\n        target       = _cfg.target,\n        $target      = jQuery(target),\n        maskId       = 'ax-mask-' + this.instanceId,\n        $mask,\n        css          = {},\n        that         = {},\n        templateName = _cfg.templateName,\n        body         = getBodyTmpl({\n          theme: _cfg.theme,\n          maskId: maskId,\n          body: this.maskContent,\n          templateName: templateName\n        }).trim();\n\n    jQuery(document.body).append(body);\n\n    // 마스크의 타겟이 html body 가 아니라면\n    if (target && target !== jQuery(document.body).get(0)) {\n      css = {\n        position: _cfg.position || \"absolute\",\n        left: $target.offset().left,\n        top: $target.offset().top,\n        width: $target.outerWidth(),\n        height: $target.outerHeight()\n      };\n\n      $target.addClass(\"ax-masking\");\n\n      // 마스크의 타겟이 html body가 아닌경우 window resize 이벤트를 추적하여 엘리먼트 마스크의 CSS 속성 변경\n      jQuery(window)\n        .off(\"resize.ax6ui-mask-\" + this.instanceId)\n        .on(\"resize.ax6ui-mask-\" + this.instanceId, U.throttle(function (e) {\n          this.align();\n        }, 100).bind(this));\n    }\n\n    if (typeof _cfg.zIndex !== \"undefined\") {\n      css[\"z-index\"] = _cfg.zIndex;\n    }\n\n    this.$mask = $mask = jQuery(\"#\" + maskId);\n    this.$target = $target;\n    this.status = \"on\";\n    $mask.css(css);\n\n    if (this.onClick) {\n      $mask.on(\"click\", (e) => {\n        that = {\n          self: this,\n          state: \"open\",\n          type: \"click\"\n        };\n        this.onClick.call(that, that);\n      });\n    }\n\n    onStateChanged.call(this, null, {\n      self: this,\n      state: \"open\"\n    });\n\n    // 현재 활성화된 설정 기억\n    this.activeConfig = _cfg;\n\n    options = null;\n    _cfg = null;\n    target = null;\n    $target = null;\n    maskId = null;\n    $mask = null;\n    css = null;\n    that = null;\n    templateName = null;\n    body = null;\n\n    return this;\n  }\n\n  /**\n   * @method\n   * @param delay\n   * @return {AX6UIMask}\n   */\n  close(delay) {\n    if (this.$mask) {\n\n      let _close = function () {\n        this.status = \"off\";\n        this.$mask.remove();\n        this.$target.removeClass(\"ax-masking\");\n\n        onStateChanged.call(this, null, {\n          self: this,\n          state: \"close\"\n        });\n\n        jQuery(window).off(\"resize.ax6ui-mask-\" + this.instanceId);\n      };\n\n      if (delay) {\n        setTimeout((function () {\n          _close.call(this);\n        }).bind(this), delay);\n      } else {\n        _close.call(this);\n      }\n    }\n    return this;\n  }\n\n  /**\n   * @method\n   * @return {AX6UIMask}\n   */\n  fadeOut() {\n    if (this.$mask) {\n      let _close = function () {\n        this.status = \"off\";\n        this.$mask.remove();\n        this.$target.removeClass(\"ax-masking\");\n\n        onStateChanged.call(this, null, {\n          self: this,\n          state: \"close\"\n        });\n\n        jQuery(window)\n          .off(\"resize.ax6ui-mask-\" + this.instanceId);\n      };\n\n\n      this.$mask.addClass(\"fade-out\");\n      setTimeout((function () {\n        _close.call(this);\n      }).bind(this), this.activeConfig.animateTime);\n    }\n    return this;\n  }\n\n  /**\n   * @method\n   * @return {AX6UIMask}\n   */\n  align() {\n    if (this.$mask && this.activeConfig && this.activeConfig.target && this.activeConfig.target !== jQuery(document.body).get(0)) {\n      try {\n        let css = {\n          position: this.activeConfig.position || \"absolute\",\n          left: this.$target.offset().left,\n          top: this.$target.offset().top,\n          width: this.$target.outerWidth(),\n          height: this.$target.outerHeight()\n        };\n        this.$mask.css(css);\n      }\n      catch (e) {\n\n      }\n    }\n    return this;\n  }\n\n  destory(){\n    if(this.$mask) this.$mask.remove();\n    if(this.$target) this.$target.removeClass(\"ax-masking\");\n    jQuery(window).off(\"resize.ax6ui-mask-\" + this.instanceId);\n  }\n}\n\nexport default AX6UIMask;"]}