7538668c5a428f6c1bd938ce4b34a260.json 392 KB
{"ast":null,"code":"/*!\n * TOAST UI Color Picker\n * @version 2.2.6\n * @author NHN FE Development Team <dl_javascript@nhn.com>\n * @license MIT\n */\n(function webpackUniversalModuleDefinition(root, factory) {\n  if (typeof exports === 'object' && typeof module === 'object') module.exports = factory();else if (typeof define === 'function' && define.amd) define([], factory);else if (typeof exports === 'object') exports[\"colorPicker\"] = factory();else root[\"tui\"] = root[\"tui\"] || {}, root[\"tui\"][\"colorPicker\"] = factory();\n})(window, function () {\n  return (\n    /******/\n    function (modules) {\n      // webpackBootstrap\n\n      /******/\n      // The module cache\n\n      /******/\n      var installedModules = {};\n      /******/\n\n      /******/\n      // The require function\n\n      /******/\n\n      function __webpack_require__(moduleId) {\n        /******/\n\n        /******/\n        // Check if module is in cache\n\n        /******/\n        if (installedModules[moduleId]) {\n          /******/\n          return installedModules[moduleId].exports;\n          /******/\n        }\n        /******/\n        // Create a new module (and put it into the cache)\n\n        /******/\n\n\n        var module = installedModules[moduleId] = {\n          /******/\n          i: moduleId,\n\n          /******/\n          l: false,\n\n          /******/\n          exports: {}\n          /******/\n\n        };\n        /******/\n\n        /******/\n        // Execute the module function\n\n        /******/\n\n        modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n        /******/\n\n        /******/\n        // Flag the module as loaded\n\n        /******/\n\n        module.l = true;\n        /******/\n\n        /******/\n        // Return the exports of the module\n\n        /******/\n\n        return module.exports;\n        /******/\n      }\n      /******/\n\n      /******/\n\n      /******/\n      // expose the modules object (__webpack_modules__)\n\n      /******/\n\n\n      __webpack_require__.m = modules;\n      /******/\n\n      /******/\n      // expose the module cache\n\n      /******/\n\n      __webpack_require__.c = installedModules;\n      /******/\n\n      /******/\n      // define getter function for harmony exports\n\n      /******/\n\n      __webpack_require__.d = function (exports, name, getter) {\n        /******/\n        if (!__webpack_require__.o(exports, name)) {\n          /******/\n          Object.defineProperty(exports, name, {\n            enumerable: true,\n            get: getter\n          });\n          /******/\n        }\n        /******/\n\n      };\n      /******/\n\n      /******/\n      // define __esModule on exports\n\n      /******/\n\n\n      __webpack_require__.r = function (exports) {\n        /******/\n        if (typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n          /******/\n          Object.defineProperty(exports, Symbol.toStringTag, {\n            value: 'Module'\n          });\n          /******/\n        }\n        /******/\n\n\n        Object.defineProperty(exports, '__esModule', {\n          value: true\n        });\n        /******/\n      };\n      /******/\n\n      /******/\n      // create a fake namespace object\n\n      /******/\n      // mode & 1: value is a module id, require it\n\n      /******/\n      // mode & 2: merge all properties of value into the ns\n\n      /******/\n      // mode & 4: return value when already ns object\n\n      /******/\n      // mode & 8|1: behave like require\n\n      /******/\n\n\n      __webpack_require__.t = function (value, mode) {\n        /******/\n        if (mode & 1) value = __webpack_require__(value);\n        /******/\n\n        if (mode & 8) return value;\n        /******/\n\n        if (mode & 4 && typeof value === 'object' && value && value.__esModule) return value;\n        /******/\n\n        var ns = Object.create(null);\n        /******/\n\n        __webpack_require__.r(ns);\n        /******/\n\n\n        Object.defineProperty(ns, 'default', {\n          enumerable: true,\n          value: value\n        });\n        /******/\n\n        if (mode & 2 && typeof value != 'string') for (var key in value) __webpack_require__.d(ns, key, function (key) {\n          return value[key];\n        }.bind(null, key));\n        /******/\n\n        return ns;\n        /******/\n      };\n      /******/\n\n      /******/\n      // getDefaultExport function for compatibility with non-harmony modules\n\n      /******/\n\n\n      __webpack_require__.n = function (module) {\n        /******/\n        var getter = module && module.__esModule ?\n        /******/\n        function getDefault() {\n          return module['default'];\n        } :\n        /******/\n        function getModuleExports() {\n          return module;\n        };\n        /******/\n\n        __webpack_require__.d(getter, 'a', getter);\n        /******/\n\n\n        return getter;\n        /******/\n      };\n      /******/\n\n      /******/\n      // Object.prototype.hasOwnProperty.call\n\n      /******/\n\n\n      __webpack_require__.o = function (object, property) {\n        return Object.prototype.hasOwnProperty.call(object, property);\n      };\n      /******/\n\n      /******/\n      // __webpack_public_path__\n\n      /******/\n\n\n      __webpack_require__.p = \"dist\";\n      /******/\n\n      /******/\n\n      /******/\n      // Load entry module and return exports\n\n      /******/\n\n      return __webpack_require__(__webpack_require__.s = 33);\n      /******/\n    }(\n    /************************************************************************/\n\n    /******/\n    [\n    /* 0 */\n\n    /***/\n    function (module, exports, __webpack_require__) {\n      \"use strict\";\n      /**\n       * @fileoverview Extend the target object from other objects.\n       * @author NHN FE Development Lab <dl_javascript@nhn.com>\n       */\n\n      /**\n       * @module object\n       */\n\n      /**\n       * Extend the target object from other objects.\n       * @param {object} target - Object that will be extended\n       * @param {...object} objects - Objects as sources\n       * @returns {object} Extended object\n       * @memberof module:object\n       */\n\n      function extend(target, objects) {\n        // eslint-disable-line no-unused-vars\n        var hasOwnProp = Object.prototype.hasOwnProperty;\n        var source, prop, i, len;\n\n        for (i = 1, len = arguments.length; i < len; i += 1) {\n          source = arguments[i];\n\n          for (prop in source) {\n            if (hasOwnProp.call(source, prop)) {\n              target[prop] = source[prop];\n            }\n          }\n        }\n\n        return target;\n      }\n\n      module.exports = extend;\n      /***/\n    },\n    /* 1 */\n\n    /***/\n    function (module, exports, __webpack_require__) {\n      \"use strict\";\n      /**\n       * @fileoverview Check whether the given variable is an instance of Array or not.\n       * @author NHN FE Development Lab <dl_javascript@nhn.com>\n       */\n\n      /**\n       * Check whether the given variable is an instance of Array or not.\n       * If the given variable is an instance of Array, return true.\n       * @param {*} obj - Target for checking\n       * @returns {boolean} Is array instance?\n       * @memberof module:type\n       */\n\n      function isArray(obj) {\n        return obj instanceof Array;\n      }\n\n      module.exports = isArray;\n      /***/\n    },\n    /* 2 */\n\n    /***/\n    function (module, exports, __webpack_require__) {\n      \"use strict\";\n      /**\n       * @fileoverview Execute the provided callback once for each property of object(or element of array) which actually exist.\n       * @author NHN FE Development Lab <dl_javascript@nhn.com>\n       */\n\n      var isArray = __webpack_require__(1);\n\n      var forEachArray = __webpack_require__(6);\n\n      var forEachOwnProperties = __webpack_require__(7);\n      /**\n       * @module collection\n       */\n\n      /**\n       * Execute the provided callback once for each property of object(or element of array) which actually exist.\n       * If the object is Array-like object(ex-arguments object), It needs to transform to Array.(see 'ex2' of example).\n       * If the callback function returns false, the loop will be stopped.\n       * Callback function(iteratee) is invoked with three arguments:\n       *  1) The value of the property(or The value of the element)\n       *  2) The name of the property(or The index of the element)\n       *  3) The object being traversed\n       * @param {Object} obj The object that will be traversed\n       * @param {function} iteratee Callback function\n       * @param {Object} [context] Context(this) of callback function\n       * @memberof module:collection\n       * @example\n       * var forEach = require('tui-code-snippet/collection/forEach'); // node, commonjs\n       *\n       * var sum = 0;\n       *\n       * forEach([1,2,3], function(value){\n       *     sum += value;\n       * });\n       * alert(sum); // 6\n       *\n       * // In case of Array-like object\n       * var array = Array.prototype.slice.call(arrayLike); // change to array\n       * forEach(array, function(value){\n       *     sum += value;\n       * });\n       */\n\n\n      function forEach(obj, iteratee, context) {\n        if (isArray(obj)) {\n          forEachArray(obj, iteratee, context);\n        } else {\n          forEachOwnProperties(obj, iteratee, context);\n        }\n      }\n\n      module.exports = forEach;\n      /***/\n    },\n    /* 3 */\n\n    /***/\n    function (module, exports, __webpack_require__) {\n      \"use strict\";\n      /**\n       * @fileoverview Check whether the given variable is undefined or not.\n       * @author NHN FE Development Lab <dl_javascript@nhn.com>\n       */\n\n      /**\n       * Check whether the given variable is undefined or not.\n       * If the given variable is undefined, returns true.\n       * @param {*} obj - Target for checking\n       * @returns {boolean} Is undefined?\n       * @memberof module:type\n       */\n\n      function isUndefined(obj) {\n        return obj === undefined; // eslint-disable-line no-undefined\n      }\n\n      module.exports = isUndefined;\n      /***/\n    },\n    /* 4 */\n\n    /***/\n    function (module, exports, __webpack_require__) {\n      \"use strict\";\n      /**\n       * @fileoverview Utils for ColorPicker component\n       * @author NHN. FE dev Lab. <dl_javascript@nhn.com>\n       */\n\n      var browser = __webpack_require__(22);\n\n      var forEach = __webpack_require__(2);\n\n      var forEachArray = __webpack_require__(6);\n\n      var forEachOwnProperties = __webpack_require__(7);\n\n      var sendHostname = __webpack_require__(37);\n\n      var currentId = 0;\n      /**\n       * Utils\n       * @namespace util\n       * @ignore\n       */\n\n      var utils = {\n        /**\n         * Get the number of properties in the object.\n         * @param {Object} obj - object\n         * @returns {number}\n         */\n        getLength: function (obj) {\n          var length = 0;\n          forEachOwnProperties(obj, function () {\n            length += 1;\n          });\n          return length;\n        },\n\n        /**\n         * Constructs a new array by executing the provided callback function.\n         * @param {Object|Array} obj - object or array to be traversed\n         * @param {function} iteratee - callback function\n         * @param {Object} context - context of callback function\n         * @returns {Array}\n         */\n        map: function (obj, iteratee, context) {\n          var result = [];\n          forEach(obj, function () {\n            result.push(iteratee.apply(context || null, arguments));\n          });\n          return result;\n        },\n\n        /**\n         * Construct a new array with elements that pass the test by the provided callback function.\n         * @param {Array|NodeList|Arguments} arr - array to be traversed\n         * @param {function} iteratee - callback function\n         * @param {Object} context - context of callback function\n         * @returns {Array}\n         */\n        filter: function (arr, iteratee, context) {\n          var result = [];\n          forEachArray(arr, function (elem) {\n            if (iteratee.apply(context || null, arguments)) {\n              result.push(elem);\n            }\n          });\n          return result;\n        },\n\n        /**\n         * Create an unique id for a color-picker instance.\n         * @returns {number}\n         */\n        generateId: function () {\n          currentId += 1;\n          return currentId;\n        },\n\n        /**\n         * True when browser is below IE8.\n         */\n        isOldBrowser: function () {\n          return browser.msie && browser.version < 9;\n        }(),\n\n        /**\n         * send host name\n         * @ignore\n         */\n        sendHostName: function () {\n          sendHostname('color-picker', 'UA-129987462-1');\n        }\n      };\n      module.exports = utils;\n      /***/\n    },\n    /* 5 */\n\n    /***/\n    function (module, exports, __webpack_require__) {\n      \"use strict\";\n      /* eslint-disable complexity */\n\n      /**\n       * @fileoverview Returns the first index at which a given element can be found in the array.\n       * @author NHN FE Development Lab <dl_javascript@nhn.com>\n       */\n\n      var isArray = __webpack_require__(1);\n      /**\n       * @module array\n       */\n\n      /**\n       * Returns the first index at which a given element can be found in the array\n       * from start index(default 0), or -1 if it is not present.\n       * It compares searchElement to elements of the Array using strict equality\n       * (the same method used by the ===, or triple-equals, operator).\n       * @param {*} searchElement Element to locate in the array\n       * @param {Array} array Array that will be traversed.\n       * @param {number} startIndex Start index in array for searching (default 0)\n       * @returns {number} the First index at which a given element, or -1 if it is not present\n       * @memberof module:array\n       * @example\n       * var inArray = require('tui-code-snippet/array/inArray'); // node, commonjs\n       *\n       * var arr = ['one', 'two', 'three', 'four'];\n       * var idx1 = inArray('one', arr, 3); // -1\n       * var idx2 = inArray('one', arr); // 0\n       */\n\n\n      function inArray(searchElement, array, startIndex) {\n        var i;\n        var length;\n        startIndex = startIndex || 0;\n\n        if (!isArray(array)) {\n          return -1;\n        }\n\n        if (Array.prototype.indexOf) {\n          return Array.prototype.indexOf.call(array, searchElement, startIndex);\n        }\n\n        length = array.length;\n\n        for (i = startIndex; startIndex >= 0 && i < length; i += 1) {\n          if (array[i] === searchElement) {\n            return i;\n          }\n        }\n\n        return -1;\n      }\n\n      module.exports = inArray;\n      /***/\n    },\n    /* 6 */\n\n    /***/\n    function (module, exports, __webpack_require__) {\n      \"use strict\";\n      /**\n       * @fileoverview Execute the provided callback once for each element present in the array(or Array-like object) in ascending order.\n       * @author NHN FE Development Lab <dl_javascript@nhn.com>\n       */\n\n      /**\n       * Execute the provided callback once for each element present\n       * in the array(or Array-like object) in ascending order.\n       * If the callback function returns false, the loop will be stopped.\n       * Callback function(iteratee) is invoked with three arguments:\n       *  1) The value of the element\n       *  2) The index of the element\n       *  3) The array(or Array-like object) being traversed\n       * @param {Array|Arguments|NodeList} arr The array(or Array-like object) that will be traversed\n       * @param {function} iteratee Callback function\n       * @param {Object} [context] Context(this) of callback function\n       * @memberof module:collection\n       * @example\n       * var forEachArray = require('tui-code-snippet/collection/forEachArray'); // node, commonjs\n       *\n       * var sum = 0;\n       *\n       * forEachArray([1,2,3], function(value){\n       *     sum += value;\n       * });\n       * alert(sum); // 6\n       */\n\n      function forEachArray(arr, iteratee, context) {\n        var index = 0;\n        var len = arr.length;\n        context = context || null;\n\n        for (; index < len; index += 1) {\n          if (iteratee.call(context, arr[index], index, arr) === false) {\n            break;\n          }\n        }\n      }\n\n      module.exports = forEachArray;\n      /***/\n    },\n    /* 7 */\n\n    /***/\n    function (module, exports, __webpack_require__) {\n      \"use strict\";\n      /**\n       * @fileoverview Execute the provided callback once for each property of object which actually exist.\n       * @author NHN FE Development Lab <dl_javascript@nhn.com>\n       */\n\n      /**\n       * Execute the provided callback once for each property of object which actually exist.\n       * If the callback function returns false, the loop will be stopped.\n       * Callback function(iteratee) is invoked with three arguments:\n       *  1) The value of the property\n       *  2) The name of the property\n       *  3) The object being traversed\n       * @param {Object} obj The object that will be traversed\n       * @param {function} iteratee  Callback function\n       * @param {Object} [context] Context(this) of callback function\n       * @memberof module:collection\n       * @example\n       * var forEachOwnProperties = require('tui-code-snippet/collection/forEachOwnProperties'); // node, commonjs\n       *\n       * var sum = 0;\n       *\n       * forEachOwnProperties({a:1,b:2,c:3}, function(value){\n       *     sum += value;\n       * });\n       * alert(sum); // 6\n       */\n\n      function forEachOwnProperties(obj, iteratee, context) {\n        var key;\n        context = context || null;\n\n        for (key in obj) {\n          if (obj.hasOwnProperty(key)) {\n            if (iteratee.call(context, obj[key], key, obj) === false) {\n              break;\n            }\n          }\n        }\n      }\n\n      module.exports = forEachOwnProperties;\n      /***/\n    },\n    /* 8 */\n\n    /***/\n    function (module, exports, __webpack_require__) {\n      \"use strict\";\n      /**\n       * @fileoverview The base class of views.\n       * @author NHN. FE Development Team <dl_javascript@nhn.com>\n       */\n\n      var addClass = __webpack_require__(39);\n\n      var isFunction = __webpack_require__(13);\n\n      var isNumber = __webpack_require__(41);\n\n      var isUndefined = __webpack_require__(3);\n\n      var domUtil = __webpack_require__(9);\n\n      var Collection = __webpack_require__(19);\n\n      var util = __webpack_require__(4);\n      /**\n       * Base class of views.\n       *\n       * All views create own container element inside supplied container element.\n       * @constructor\n       * @param {options} options The object for describe view's specs.\n       * @param {HTMLElement} container Default container element for view. you can use this element for this.container syntax.\n       * @ignore\n       */\n\n\n      function View(options, container) {\n        var id = util.generateId();\n        options = options || {};\n\n        if (isUndefined(container)) {\n          container = domUtil.appendHTMLElement('div');\n        }\n\n        addClass(container, 'tui-view-' + id);\n        /**\n         * unique id\n         * @type {number}\n         */\n\n        this.id = id;\n        /**\n         * base element of view.\n         * @type {HTMLDIVElement}\n         */\n\n        this.container = container;\n        /**\n         * child views.\n         * @type {Collection}\n         */\n\n        this.childs = new Collection(function (view) {\n          return view.id;\n        });\n        /**\n         * parent view instance.\n         * @type {View}\n         */\n\n        this.parent = null;\n      }\n      /**\n       * Add child views.\n       * @param {View} view The view instance to add.\n       * @param {function} [fn] Function for invoke before add. parent view class is supplied first arguments.\n       */\n\n\n      View.prototype.addChild = function (view, fn) {\n        if (fn) {\n          fn.call(view, this);\n        } // add parent view\n\n\n        view.parent = this;\n        this.childs.add(view);\n      };\n      /**\n       * Remove added child view.\n       * @param {(number|View)} id View id or instance itself to remove.\n       * @param {function} [fn] Function for invoke before remove. parent view class is supplied first arguments.\n       */\n\n\n      View.prototype.removeChild = function (id, fn) {\n        var view = isNumber(id) ? this.childs.items[id] : id;\n\n        if (fn) {\n          fn.call(view, this);\n        }\n\n        this.childs.remove(view.id);\n      };\n      /**\n       * Render view recursively.\n       */\n\n\n      View.prototype.render = function () {\n        this.childs.each(function (childView) {\n          childView.render();\n        });\n      };\n      /**\n       * Invoke function recursively.\n       * @param {function} fn - function to invoke child view recursively\n       * @param {boolean} [skipThis=false] - set true then skip invoke with this(root) view.\n       */\n\n\n      View.prototype.recursive = function (fn, skipThis) {\n        if (!isFunction(fn)) {\n          return;\n        }\n\n        if (!skipThis) {\n          fn(this);\n        }\n\n        this.childs.each(function (childView) {\n          childView.recursive(fn);\n        });\n      };\n      /**\n       * Resize view recursively to parent.\n       */\n\n\n      View.prototype.resize = function () {\n        var args = Array.prototype.slice.call(arguments);\n        var parent = this.parent;\n\n        while (parent) {\n          if (isFunction(parent._onResize)) {\n            parent._onResize.apply(parent, args);\n          }\n\n          parent = parent.parent;\n        }\n      };\n      /**\n       * Invoking method before destroying.\n       */\n\n\n      View.prototype._beforeDestroy = function () {};\n      /**\n       * Clear properties\n       */\n\n\n      View.prototype._destroy = function () {\n        this._beforeDestroy();\n\n        this.container.innerHTML = '';\n        this.id = this.parent = this.childs = this.container = null;\n      };\n      /**\n       * Destroy child view recursively.\n       * @param {boolean} isChildView - Whether it is the child view or not\n       */\n\n\n      View.prototype.destroy = function (isChildView) {\n        if (this.childs) {\n          this.childs.each(function (childView) {\n            childView.destroy(true);\n\n            childView._destroy();\n          });\n          this.childs.clear();\n        }\n\n        if (isChildView) {\n          return;\n        }\n\n        this._destroy();\n      };\n      /**\n       * Calculate view's container element bound.\n       * @returns {object} The bound of container element.\n       */\n\n\n      View.prototype.getViewBound = function () {\n        var bound = this.container.getBoundingClientRect();\n        return {\n          x: bound.left,\n          y: bound.top,\n          width: bound.right - bound.left,\n          height: bound.bottom - bound.top\n        };\n      };\n\n      module.exports = View;\n      /***/\n    },\n    /* 9 */\n\n    /***/\n    function (module, exports, __webpack_require__) {\n      \"use strict\";\n      /**\n       * @fileoverview Utility modules for manipulate DOM elements.\n       * @author NHN. FE Development Team <dl_javascript@nhn.com>\n       */\n\n      var domUtil = {\n        /**\n         * Create DOM element and return it.\n         * @param {string} tagName Tag name to append.\n         * @param {HTMLElement} [container] HTML element will be parent to created element.\n         * if not supplied, will use **document.body**\n         * @param {string} [className] Design class names to appling created element.\n         * @returns {HTMLElement} HTML element created.\n         */\n        appendHTMLElement: function (tagName, container, className) {\n          var el = document.createElement(tagName);\n          el.className = className || '';\n\n          if (container) {\n            container.appendChild(el);\n          } else {\n            document.body.appendChild(el);\n          }\n\n          return el;\n        }\n      };\n      module.exports = domUtil;\n      /***/\n    },\n    /* 10 */\n\n    /***/\n    function (module, exports, __webpack_require__) {\n      \"use strict\";\n      /**\n       * @fileoverview This module provides some functions for custom events. And it is implemented in the observer design pattern.\n       * @author NHN FE Development Lab <dl_javascript@nhn.com>\n       */\n\n      var extend = __webpack_require__(0);\n\n      var isExisty = __webpack_require__(20);\n\n      var isString = __webpack_require__(11);\n\n      var isObject = __webpack_require__(21);\n\n      var isArray = __webpack_require__(1);\n\n      var isFunction = __webpack_require__(13);\n\n      var forEach = __webpack_require__(2);\n\n      var R_EVENTNAME_SPLIT = /\\s+/g;\n      /**\n       * @class\n       * @example\n       * // node, commonjs\n       * var CustomEvents = require('tui-code-snippet/customEvents/customEvents');\n       */\n\n      function CustomEvents() {\n        /**\n           * @type {HandlerItem[]}\n           */\n        this.events = null;\n        /**\n           * only for checking specific context event was binded\n           * @type {object[]}\n           */\n\n        this.contexts = null;\n      }\n      /**\n       * Mixin custom events feature to specific constructor\n       * @param {function} func - constructor\n       * @example\n       * var CustomEvents = require('tui-code-snippet/customEvents/customEvents'); // node, commonjs\n       *\n       * var model;\n       * function Model() {\n       *     this.name = '';\n       * }\n       * CustomEvents.mixin(Model);\n       *\n       * model = new Model();\n       * model.on('change', function() { this.name = 'model'; }, this);\n       * model.fire('change');\n       * alert(model.name); // 'model';\n       */\n\n\n      CustomEvents.mixin = function (func) {\n        extend(func.prototype, CustomEvents.prototype);\n      };\n      /**\n       * Get HandlerItem object\n       * @param {function} handler - handler function\n       * @param {object} [context] - context for handler\n       * @returns {HandlerItem} HandlerItem object\n       * @private\n       */\n\n\n      CustomEvents.prototype._getHandlerItem = function (handler, context) {\n        var item = {\n          handler: handler\n        };\n\n        if (context) {\n          item.context = context;\n        }\n\n        return item;\n      };\n      /**\n       * Get event object safely\n       * @param {string} [eventName] - create sub event map if not exist.\n       * @returns {(object|array)} event object. if you supplied `eventName`\n       *  parameter then make new array and return it\n       * @private\n       */\n\n\n      CustomEvents.prototype._safeEvent = function (eventName) {\n        var events = this.events;\n        var byName;\n\n        if (!events) {\n          events = this.events = {};\n        }\n\n        if (eventName) {\n          byName = events[eventName];\n\n          if (!byName) {\n            byName = [];\n            events[eventName] = byName;\n          }\n\n          events = byName;\n        }\n\n        return events;\n      };\n      /**\n       * Get context array safely\n       * @returns {array} context array\n       * @private\n       */\n\n\n      CustomEvents.prototype._safeContext = function () {\n        var context = this.contexts;\n\n        if (!context) {\n          context = this.contexts = [];\n        }\n\n        return context;\n      };\n      /**\n       * Get index of context\n       * @param {object} ctx - context that used for bind custom event\n       * @returns {number} index of context\n       * @private\n       */\n\n\n      CustomEvents.prototype._indexOfContext = function (ctx) {\n        var context = this._safeContext();\n\n        var index = 0;\n\n        while (context[index]) {\n          if (ctx === context[index][0]) {\n            return index;\n          }\n\n          index += 1;\n        }\n\n        return -1;\n      };\n      /**\n       * Memorize supplied context for recognize supplied object is context or\n       *  name: handler pair object when off()\n       * @param {object} ctx - context object to memorize\n       * @private\n       */\n\n\n      CustomEvents.prototype._memorizeContext = function (ctx) {\n        var context, index;\n\n        if (!isExisty(ctx)) {\n          return;\n        }\n\n        context = this._safeContext();\n        index = this._indexOfContext(ctx);\n\n        if (index > -1) {\n          context[index][1] += 1;\n        } else {\n          context.push([ctx, 1]);\n        }\n      };\n      /**\n       * Forget supplied context object\n       * @param {object} ctx - context object to forget\n       * @private\n       */\n\n\n      CustomEvents.prototype._forgetContext = function (ctx) {\n        var context, contextIndex;\n\n        if (!isExisty(ctx)) {\n          return;\n        }\n\n        context = this._safeContext();\n        contextIndex = this._indexOfContext(ctx);\n\n        if (contextIndex > -1) {\n          context[contextIndex][1] -= 1;\n\n          if (context[contextIndex][1] <= 0) {\n            context.splice(contextIndex, 1);\n          }\n        }\n      };\n      /**\n       * Bind event handler\n       * @param {(string|{name:string, handler:function})} eventName - custom\n       *  event name or an object {eventName: handler}\n       * @param {(function|object)} [handler] - handler function or context\n       * @param {object} [context] - context for binding\n       * @private\n       */\n\n\n      CustomEvents.prototype._bindEvent = function (eventName, handler, context) {\n        var events = this._safeEvent(eventName);\n\n        this._memorizeContext(context);\n\n        events.push(this._getHandlerItem(handler, context));\n      };\n      /**\n       * Bind event handlers\n       * @param {(string|{name:string, handler:function})} eventName - custom\n       *  event name or an object {eventName: handler}\n       * @param {(function|object)} [handler] - handler function or context\n       * @param {object} [context] - context for binding\n       * //-- #1. Get Module --//\n       * var CustomEvents = require('tui-code-snippet/customEvents/customEvents'); // node, commonjs\n       *\n       * //-- #2. Use method --//\n       * // # 2.1 Basic Usage\n       * CustomEvents.on('onload', handler);\n       *\n       * // # 2.2 With context\n       * CustomEvents.on('onload', handler, myObj);\n       *\n       * // # 2.3 Bind by object that name, handler pairs\n       * CustomEvents.on({\n       *     'play': handler,\n       *     'pause': handler2\n       * });\n       *\n       * // # 2.4 Bind by object that name, handler pairs with context object\n       * CustomEvents.on({\n       *     'play': handler\n       * }, myObj);\n       */\n\n\n      CustomEvents.prototype.on = function (eventName, handler, context) {\n        var self = this;\n\n        if (isString(eventName)) {\n          // [syntax 1, 2]\n          eventName = eventName.split(R_EVENTNAME_SPLIT);\n          forEach(eventName, function (name) {\n            self._bindEvent(name, handler, context);\n          });\n        } else if (isObject(eventName)) {\n          // [syntax 3, 4]\n          context = handler;\n          forEach(eventName, function (func, name) {\n            self.on(name, func, context);\n          });\n        }\n      };\n      /**\n       * Bind one-shot event handlers\n       * @param {(string|{name:string,handler:function})} eventName - custom\n       *  event name or an object {eventName: handler}\n       * @param {function|object} [handler] - handler function or context\n       * @param {object} [context] - context for binding\n       */\n\n\n      CustomEvents.prototype.once = function (eventName, handler, context) {\n        var self = this;\n\n        if (isObject(eventName)) {\n          context = handler;\n          forEach(eventName, function (func, name) {\n            self.once(name, func, context);\n          });\n          return;\n        }\n\n        function onceHandler() {\n          // eslint-disable-line require-jsdoc\n          handler.apply(context, arguments);\n          self.off(eventName, onceHandler, context);\n        }\n\n        this.on(eventName, onceHandler, context);\n      };\n      /**\n       * Splice supplied array by callback result\n       * @param {array} arr - array to splice\n       * @param {function} predicate - function return boolean\n       * @private\n       */\n\n\n      CustomEvents.prototype._spliceMatches = function (arr, predicate) {\n        var i = 0;\n        var len;\n\n        if (!isArray(arr)) {\n          return;\n        }\n\n        for (len = arr.length; i < len; i += 1) {\n          if (predicate(arr[i]) === true) {\n            arr.splice(i, 1);\n            len -= 1;\n            i -= 1;\n          }\n        }\n      };\n      /**\n       * Get matcher for unbind specific handler events\n       * @param {function} handler - handler function\n       * @returns {function} handler matcher\n       * @private\n       */\n\n\n      CustomEvents.prototype._matchHandler = function (handler) {\n        var self = this;\n        return function (item) {\n          var needRemove = handler === item.handler;\n\n          if (needRemove) {\n            self._forgetContext(item.context);\n          }\n\n          return needRemove;\n        };\n      };\n      /**\n       * Get matcher for unbind specific context events\n       * @param {object} context - context\n       * @returns {function} object matcher\n       * @private\n       */\n\n\n      CustomEvents.prototype._matchContext = function (context) {\n        var self = this;\n        return function (item) {\n          var needRemove = context === item.context;\n\n          if (needRemove) {\n            self._forgetContext(item.context);\n          }\n\n          return needRemove;\n        };\n      };\n      /**\n       * Get matcher for unbind specific hander, context pair events\n       * @param {function} handler - handler function\n       * @param {object} context - context\n       * @returns {function} handler, context matcher\n       * @private\n       */\n\n\n      CustomEvents.prototype._matchHandlerAndContext = function (handler, context) {\n        var self = this;\n        return function (item) {\n          var matchHandler = handler === item.handler;\n          var matchContext = context === item.context;\n          var needRemove = matchHandler && matchContext;\n\n          if (needRemove) {\n            self._forgetContext(item.context);\n          }\n\n          return needRemove;\n        };\n      };\n      /**\n       * Unbind event by event name\n       * @param {string} eventName - custom event name to unbind\n       * @param {function} [handler] - handler function\n       * @private\n       */\n\n\n      CustomEvents.prototype._offByEventName = function (eventName, handler) {\n        var self = this;\n        var andByHandler = isFunction(handler);\n\n        var matchHandler = self._matchHandler(handler);\n\n        eventName = eventName.split(R_EVENTNAME_SPLIT);\n        forEach(eventName, function (name) {\n          var handlerItems = self._safeEvent(name);\n\n          if (andByHandler) {\n            self._spliceMatches(handlerItems, matchHandler);\n          } else {\n            forEach(handlerItems, function (item) {\n              self._forgetContext(item.context);\n            });\n            self.events[name] = [];\n          }\n        });\n      };\n      /**\n       * Unbind event by handler function\n       * @param {function} handler - handler function\n       * @private\n       */\n\n\n      CustomEvents.prototype._offByHandler = function (handler) {\n        var self = this;\n\n        var matchHandler = this._matchHandler(handler);\n\n        forEach(this._safeEvent(), function (handlerItems) {\n          self._spliceMatches(handlerItems, matchHandler);\n        });\n      };\n      /**\n       * Unbind event by object(name: handler pair object or context object)\n       * @param {object} obj - context or {name: handler} pair object\n       * @param {function} handler - handler function\n       * @private\n       */\n\n\n      CustomEvents.prototype._offByObject = function (obj, handler) {\n        var self = this;\n        var matchFunc;\n\n        if (this._indexOfContext(obj) < 0) {\n          forEach(obj, function (func, name) {\n            self.off(name, func);\n          });\n        } else if (isString(handler)) {\n          matchFunc = this._matchContext(obj);\n\n          self._spliceMatches(this._safeEvent(handler), matchFunc);\n        } else if (isFunction(handler)) {\n          matchFunc = this._matchHandlerAndContext(handler, obj);\n          forEach(this._safeEvent(), function (handlerItems) {\n            self._spliceMatches(handlerItems, matchFunc);\n          });\n        } else {\n          matchFunc = this._matchContext(obj);\n          forEach(this._safeEvent(), function (handlerItems) {\n            self._spliceMatches(handlerItems, matchFunc);\n          });\n        }\n      };\n      /**\n       * Unbind custom events\n       * @param {(string|object|function)} eventName - event name or context or\n       *  {name: handler} pair object or handler function\n       * @param {(function)} handler - handler function\n       * @example\n       * //-- #1. Get Module --//\n       * var CustomEvents = require('tui-code-snippet/customEvents/customEvents'); // node, commonjs\n       *\n       * //-- #2. Use method --//\n       * // # 2.1 off by event name\n       * CustomEvents.off('onload');\n       *\n       * // # 2.2 off by event name and handler\n       * CustomEvents.off('play', handler);\n       *\n       * // # 2.3 off by handler\n       * CustomEvents.off(handler);\n       *\n       * // # 2.4 off by context\n       * CustomEvents.off(myObj);\n       *\n       * // # 2.5 off by context and handler\n       * CustomEvents.off(myObj, handler);\n       *\n       * // # 2.6 off by context and event name\n       * CustomEvents.off(myObj, 'onload');\n       *\n       * // # 2.7 off by an Object.<string, function> that is {eventName: handler}\n       * CustomEvents.off({\n       *   'play': handler,\n       *   'pause': handler2\n       * });\n       *\n       * // # 2.8 off the all events\n       * CustomEvents.off();\n       */\n\n\n      CustomEvents.prototype.off = function (eventName, handler) {\n        if (isString(eventName)) {\n          // [syntax 1, 2]\n          this._offByEventName(eventName, handler);\n        } else if (!arguments.length) {\n          // [syntax 8]\n          this.events = {};\n          this.contexts = [];\n        } else if (isFunction(eventName)) {\n          // [syntax 3]\n          this._offByHandler(eventName);\n        } else if (isObject(eventName)) {\n          // [syntax 4, 5, 6]\n          this._offByObject(eventName, handler);\n        }\n      };\n      /**\n       * Fire custom event\n       * @param {string} eventName - name of custom event\n       */\n\n\n      CustomEvents.prototype.fire = function (eventName) {\n        // eslint-disable-line\n        this.invoke.apply(this, arguments);\n      };\n      /**\n       * Fire a event and returns the result of operation 'boolean AND' with all\n       *  listener's results.\n       *\n       * So, It is different from {@link CustomEvents#fire}.\n       *\n       * In service code, use this as a before event in component level usually\n       *  for notifying that the event is cancelable.\n       * @param {string} eventName - Custom event name\n       * @param {...*} data - Data for event\n       * @returns {boolean} The result of operation 'boolean AND'\n       * @example\n       * var map = new Map();\n       * map.on({\n       *     'beforeZoom': function() {\n       *         // It should cancel the 'zoom' event by some conditions.\n       *         if (that.disabled && this.getState()) {\n       *             return false;\n       *         }\n       *         return true;\n       *     }\n       * });\n       *\n       * if (this.invoke('beforeZoom')) {    // check the result of 'beforeZoom'\n       *     // if true,\n       *     // doSomething\n       * }\n       */\n\n\n      CustomEvents.prototype.invoke = function (eventName) {\n        var events, args, index, item;\n\n        if (!this.hasListener(eventName)) {\n          return true;\n        }\n\n        events = this._safeEvent(eventName);\n        args = Array.prototype.slice.call(arguments, 1);\n        index = 0;\n\n        while (events[index]) {\n          item = events[index];\n\n          if (item.handler.apply(item.context, args) === false) {\n            return false;\n          }\n\n          index += 1;\n        }\n\n        return true;\n      };\n      /**\n       * Return whether at least one of the handlers is registered in the given\n       *  event name.\n       * @param {string} eventName - Custom event name\n       * @returns {boolean} Is there at least one handler in event name?\n       */\n\n\n      CustomEvents.prototype.hasListener = function (eventName) {\n        return this.getListenerLength(eventName) > 0;\n      };\n      /**\n       * Return a count of events registered.\n       * @param {string} eventName - Custom event name\n       * @returns {number} number of event\n       */\n\n\n      CustomEvents.prototype.getListenerLength = function (eventName) {\n        var events = this._safeEvent(eventName);\n\n        return events.length;\n      };\n\n      module.exports = CustomEvents;\n      /***/\n    },\n    /* 11 */\n\n    /***/\n    function (module, exports, __webpack_require__) {\n      \"use strict\";\n      /**\n       * @fileoverview Check whether the given variable is a string or not.\n       * @author NHN FE Development Lab <dl_javascript@nhn.com>\n       */\n\n      /**\n       * Check whether the given variable is a string or not.\n       * If the given variable is a string, return true.\n       * @param {*} obj - Target for checking\n       * @returns {boolean} Is string?\n       * @memberof module:type\n       */\n\n      function isString(obj) {\n        return typeof obj === 'string' || obj instanceof String;\n      }\n\n      module.exports = isString;\n      /***/\n    },\n    /* 12 */\n\n    /***/\n    function (module, exports, __webpack_require__) {\n      \"use strict\";\n      /**\n       * @fileoverview Utility methods to manipulate colors\n       * @author NHN. FE Development Team <dl_javascript@nhn.com>\n       */\n\n      var hexRX = /(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i;\n      var colorUtil = {\n        /**\n         * pad left zero characters.\n         * @param {number} number number value to pad zero.\n         * @param {number} length pad length to want.\n         * @returns {string} padded string.\n         */\n        leadingZero: function (number, length) {\n          var zero = '';\n          var i = 0;\n\n          if ((number + '').length > length) {\n            return number + '';\n          }\n\n          for (; i < length - 1; i += 1) {\n            zero += '0';\n          }\n\n          return (zero + number).slice(length * -1);\n        },\n\n        /**\n         * Check validate of hex string value is RGB\n         * @param {string} str - rgb hex string\n         * @returns {boolean} return true when supplied str is valid RGB hex string\n         */\n        isValidRGB: function (str) {\n          return hexRX.test(str);\n        },\n        // @license RGB <-> HSV conversion utilities based off of http://www.cs.rit.edu/~ncs/color/t_convert.html\n\n        /**\n         * Convert color hex string to rgb number array\n         * @param {string} hexStr - hex string\n         * @returns {number[]} rgb numbers\n         */\n        hexToRGB: function (hexStr) {\n          var r, g, b;\n\n          if (!colorUtil.isValidRGB(hexStr)) {\n            return false;\n          }\n\n          hexStr = hexStr.substring(1);\n          r = parseInt(hexStr.substr(0, 2), 16);\n          g = parseInt(hexStr.substr(2, 2), 16);\n          b = parseInt(hexStr.substr(4, 2), 16);\n          return [r, g, b];\n        },\n\n        /**\n         * Convert rgb number to hex string\n         * @param {number} r - red\n         * @param {number} g - green\n         * @param {number} b - blue\n         * @returns {string|boolean} return false when supplied rgb number is not valid. otherwise, converted hex string\n         */\n        rgbToHEX: function (r, g, b) {\n          var hexStr = '#' + colorUtil.leadingZero(r.toString(16), 2) + colorUtil.leadingZero(g.toString(16), 2) + colorUtil.leadingZero(b.toString(16), 2);\n\n          if (colorUtil.isValidRGB(hexStr)) {\n            return hexStr;\n          }\n\n          return false;\n        },\n\n        /**\n         * Convert rgb number to HSV value\n         * @param {number} r - red\n         * @param {number} g - green\n         * @param {number} b - blue\n         * @returns {number[]} hsv value\n         */\n        rgbToHSV: function (r, g, b) {\n          var max, min, h, s, v, d;\n          r /= 255;\n          g /= 255;\n          b /= 255;\n          max = Math.max(r, g, b);\n          min = Math.min(r, g, b);\n          v = max;\n          d = max - min;\n          s = max === 0 ? 0 : d / max;\n\n          if (max === min) {\n            h = 0;\n          } else {\n            switch (max) {\n              case r:\n                h = (g - b) / d + (g < b ? 6 : 0);\n                break;\n\n              case g:\n                h = (b - r) / d + 2;\n                break;\n\n              case b:\n                h = (r - g) / d + 4;\n                break;\n              // no default\n            }\n\n            h /= 6;\n          }\n\n          return [Math.round(h * 360), Math.round(s * 100), Math.round(v * 100)];\n        },\n\n        /**\n         * Convert HSV number to RGB\n         * @param {number} h - hue\n         * @param {number} s - saturation\n         * @param {number} v - value\n         * @returns {number[]} rgb value\n         */\n        hsvToRGB: function (h, s, v) {\n          var r, g, b;\n          var i;\n          var f, p, q, t;\n          h = Math.max(0, Math.min(360, h));\n          s = Math.max(0, Math.min(100, s));\n          v = Math.max(0, Math.min(100, v));\n          s /= 100;\n          v /= 100;\n\n          if (s === 0) {\n            // Achromatic (grey)\n            r = g = b = v;\n            return [Math.round(r * 255), Math.round(g * 255), Math.round(b * 255)];\n          }\n\n          h /= 60; // sector 0 to 5\n\n          i = Math.floor(h);\n          f = h - i; // factorial part of h\n\n          p = v * (1 - s);\n          q = v * (1 - s * f);\n          t = v * (1 - s * (1 - f));\n\n          switch (i) {\n            case 0:\n              r = v;\n              g = t;\n              b = p;\n              break;\n\n            case 1:\n              r = q;\n              g = v;\n              b = p;\n              break;\n\n            case 2:\n              r = p;\n              g = v;\n              b = t;\n              break;\n\n            case 3:\n              r = p;\n              g = q;\n              b = v;\n              break;\n\n            case 4:\n              r = t;\n              g = p;\n              b = v;\n              break;\n\n            default:\n              r = v;\n              g = p;\n              b = q;\n              break;\n          }\n\n          return [Math.round(r * 255), Math.round(g * 255), Math.round(b * 255)];\n        }\n      };\n      module.exports = colorUtil;\n      /***/\n    },\n    /* 13 */\n\n    /***/\n    function (module, exports, __webpack_require__) {\n      \"use strict\";\n      /**\n       * @fileoverview Check whether the given variable is a function or not.\n       * @author NHN FE Development Lab <dl_javascript@nhn.com>\n       */\n\n      /**\n       * Check whether the given variable is a function or not.\n       * If the given variable is a function, return true.\n       * @param {*} obj - Target for checking\n       * @returns {boolean} Is function?\n       * @memberof module:type\n       */\n\n      function isFunction(obj) {\n        return obj instanceof Function;\n      }\n\n      module.exports = isFunction;\n      /***/\n    },\n    /* 14 */\n\n    /***/\n    function (module, exports, __webpack_require__) {\n      \"use strict\";\n      /**\n       * @fileoverview Bind DOM events\n       * @author NHN FE Development Lab <dl_javascript@nhn.com>\n       */\n\n      var isString = __webpack_require__(11);\n\n      var forEach = __webpack_require__(2);\n\n      var safeEvent = __webpack_require__(26);\n      /**\n       * Bind DOM events.\n       * @param {HTMLElement} element - element to bind events\n       * @param {(string|object)} types - Space splitted events names or eventName:handler object\n       * @param {(function|object)} handler - handler function or context for handler method\n       * @param {object} [context] context - context for handler method.\n       * @memberof module:domEvent\n       * @example\n       * var div = document.querySelector('div');\n       * \n       * // Bind one event to an element.\n       * on(div, 'click', toggle);\n       * \n       * // Bind multiple events with a same handler to multiple elements at once.\n       * // Use event names splitted by a space.\n       * on(div, 'mouseenter mouseleave', changeColor);\n       * \n       * // Bind multiple events with different handlers to an element at once.\n       * // Use an object which of key is an event name and value is a handler function.\n       * on(div, {\n       *   keydown: highlight,\n       *   keyup: dehighlight\n       * });\n       * \n       * // Set a context for handler method.\n       * var name = 'global';\n       * var repository = {name: 'CodeSnippet'};\n       * on(div, 'drag', function() {\n       *  console.log(this.name);\n       * }, repository);\n       * // Result when you drag a div: \"CodeSnippet\"\n       */\n\n\n      function on(element, types, handler, context) {\n        if (isString(types)) {\n          forEach(types.split(/\\s+/g), function (type) {\n            bindEvent(element, type, handler, context);\n          });\n          return;\n        }\n\n        forEach(types, function (func, type) {\n          bindEvent(element, type, func, handler);\n        });\n      }\n      /**\n       * Bind DOM events\n       * @param {HTMLElement} element - element to bind events\n       * @param {string} type - events name\n       * @param {function} handler - handler function or context for handler method\n       * @param {object} [context] context - context for handler method.\n       * @private\n       */\n\n\n      function bindEvent(element, type, handler, context) {\n        /**\n           * Event handler\n           * @param {Event} e - event object\n           */\n        function eventHandler(e) {\n          handler.call(context || element, e || window.event);\n        }\n\n        if ('addEventListener' in element) {\n          element.addEventListener(type, eventHandler);\n        } else if ('attachEvent' in element) {\n          element.attachEvent('on' + type, eventHandler);\n        }\n\n        memorizeHandler(element, type, handler, eventHandler);\n      }\n      /**\n       * Memorize DOM event handler for unbinding.\n       * @param {HTMLElement} element - element to bind events\n       * @param {string} type - events name\n       * @param {function} handler - handler function that user passed at on() use\n       * @param {function} wrappedHandler - handler function that wrapped by domevent for implementing some features\n       * @private\n       */\n\n\n      function memorizeHandler(element, type, handler, wrappedHandler) {\n        var events = safeEvent(element, type);\n        var existInEvents = false;\n        forEach(events, function (obj) {\n          if (obj.handler === handler) {\n            existInEvents = true;\n            return false;\n          }\n\n          return true;\n        });\n\n        if (!existInEvents) {\n          events.push({\n            handler: handler,\n            wrappedHandler: wrappedHandler\n          });\n        }\n      }\n\n      module.exports = on;\n      /***/\n    },\n    /* 15 */\n\n    /***/\n    function (module, exports, __webpack_require__) {\n      \"use strict\";\n      /**\n       * @fileoverview Prevent default action\n       * @author NHN FE Development Lab <dl_javascript@nhn.com>\n       */\n\n      /**\n       * Prevent default action\n       * @param {Event} e - event object\n       * @memberof module:domEvent\n       */\n\n      function preventDefault(e) {\n        if (e.preventDefault) {\n          e.preventDefault();\n          return;\n        }\n\n        e.returnValue = false;\n      }\n\n      module.exports = preventDefault;\n      /***/\n    },\n    /* 16 */\n\n    /***/\n    function (module, exports, __webpack_require__) {\n      \"use strict\";\n      /**\n       * @fileoverview Convert kebab-case\n       * @author NHN FE Development Lab <dl_javascript@nhn.com>\n       */\n\n      /**\n       * Convert kebab-case\n       * @param {string} key - string to be converted to Kebab-case\n       * @private\n       */\n\n      function convertToKebabCase(key) {\n        return key.replace(/([A-Z])/g, function (match) {\n          return '-' + match.toLowerCase();\n        });\n      }\n\n      module.exports = convertToKebabCase;\n      /***/\n    },\n    /* 17 */\n\n    /***/\n    function (module, exports, __webpack_require__) {\n      \"use strict\";\n      /**\n       * @fileoverview Unbind DOM events\n       * @author NHN FE Development Lab <dl_javascript@nhn.com>\n       */\n\n      var isString = __webpack_require__(11);\n\n      var forEach = __webpack_require__(2);\n\n      var safeEvent = __webpack_require__(26);\n      /**\n       * Unbind DOM events\n       * If a handler function is not passed, remove all events of that type.\n       * @param {HTMLElement} element - element to unbind events\n       * @param {(string|object)} types - Space splitted events names or eventName:handler object\n       * @param {function} [handler] - handler function\n       * @memberof module:domEvent\n       * @example\n       * // Following the example of domEvent#on\n       * \n       * // Unbind one event from an element.\n       * off(div, 'click', toggle);\n       * \n       * // Unbind multiple events with a same handler from multiple elements at once.\n       * // Use event names splitted by a space.\n       * off(element, 'mouseenter mouseleave', changeColor);\n       * \n       * // Unbind multiple events with different handlers from an element at once.\n       * // Use an object which of key is an event name and value is a handler function.\n       * off(div, {\n       *   keydown: highlight,\n       *   keyup: dehighlight\n       * });\n       * \n       * // Unbind events without handlers.\n       * off(div, 'drag');\n       */\n\n\n      function off(element, types, handler) {\n        if (isString(types)) {\n          forEach(types.split(/\\s+/g), function (type) {\n            unbindEvent(element, type, handler);\n          });\n          return;\n        }\n\n        forEach(types, function (func, type) {\n          unbindEvent(element, type, func);\n        });\n      }\n      /**\n       * Unbind DOM events\n       * If a handler function is not passed, remove all events of that type.\n       * @param {HTMLElement} element - element to unbind events\n       * @param {string} type - events name\n       * @param {function} [handler] - handler function\n       * @private\n       */\n\n\n      function unbindEvent(element, type, handler) {\n        var events = safeEvent(element, type);\n        var index;\n\n        if (!handler) {\n          forEach(events, function (item) {\n            removeHandler(element, type, item.wrappedHandler);\n          });\n          events.splice(0, events.length);\n        } else {\n          forEach(events, function (item, idx) {\n            if (handler === item.handler) {\n              removeHandler(element, type, item.wrappedHandler);\n              index = idx;\n              return false;\n            }\n\n            return true;\n          });\n          events.splice(index, 1);\n        }\n      }\n      /**\n       * Remove an event handler\n       * @param {HTMLElement} element - An element to remove an event\n       * @param {string} type - event type\n       * @param {function} handler - event handler\n       * @private\n       */\n\n\n      function removeHandler(element, type, handler) {\n        if ('removeEventListener' in element) {\n          element.removeEventListener(type, handler);\n        } else if ('detachEvent' in element) {\n          element.detachEvent('on' + type, handler);\n        }\n      }\n\n      module.exports = off;\n      /***/\n    },\n    /* 18 */\n\n    /***/\n    function (module, exports, __webpack_require__) {\n      \"use strict\";\n      /**\n       * @fileoverview Provide a simple inheritance in prototype-oriented.\n       * @author NHN FE Development Lab <dl_javascript@nhn.com>\n       */\n\n      var createObject = __webpack_require__(50);\n      /**\n       * Provide a simple inheritance in prototype-oriented.\n       * Caution :\n       *  Don't overwrite the prototype of child constructor.\n       *\n       * @param {function} subType Child constructor\n       * @param {function} superType Parent constructor\n       * @memberof module:inheritance\n       * @example\n       * var inherit = require('tui-code-snippet/inheritance/inherit'); // node, commonjs\n       *\n       * // Parent constructor\n       * function Animal(leg) {\n       *     this.leg = leg;\n       * }\n       * Animal.prototype.growl = function() {\n       *     // ...\n       * };\n       *\n       * // Child constructor\n       * function Person(name) {\n       *     this.name = name;\n       * }\n       *\n       * // Inheritance\n       * inherit(Person, Animal);\n       *\n       * // After this inheritance, please use only the extending of property.\n       * // Do not overwrite prototype.\n       * Person.prototype.walk = function(direction) {\n       *     // ...\n       * };\n       */\n\n\n      function inherit(subType, superType) {\n        var prototype = createObject(superType.prototype);\n        prototype.constructor = subType;\n        subType.prototype = prototype;\n      }\n\n      module.exports = inherit;\n      /***/\n    },\n    /* 19 */\n\n    /***/\n    function (module, exports, __webpack_require__) {\n      \"use strict\";\n      /**\n       * @fileoverview Common collections.\n       * @author NHN. FE Development Team <dl_javascript@nhn.com>\n       */\n\n      var forEachArray = __webpack_require__(6);\n\n      var forEachOwnProperties = __webpack_require__(7);\n\n      var extend = __webpack_require__(0);\n\n      var isArray = __webpack_require__(1);\n\n      var isExisty = __webpack_require__(20);\n\n      var isFunction = __webpack_require__(13);\n\n      var isObject = __webpack_require__(21);\n\n      var util = __webpack_require__(4);\n\n      var slice = Array.prototype.slice;\n      /**\n       * Common collection.\n       *\n       * It need function for get model's unique id.\n       *\n       * if the function is not supplied then it use default function {@link Collection#getItemID}\n       * @constructor\n       * @param {function} [getItemIDFn] function for get model's id.\n       * @ignore\n       */\n\n      function Collection(getItemIDFn) {\n        /**\n         * @type {object.<string, *>}\n         */\n        this.items = {};\n        /**\n         * @type {number}\n         */\n\n        this.length = 0;\n\n        if (isFunction(getItemIDFn)) {\n          /**\n           * @type {function}\n           */\n          this.getItemID = getItemIDFn;\n        }\n      }\n      /**********\n       * static props\n       **********/\n\n      /**\n       * Combind supplied function filters and condition.\n       * @param {...function} filters - function filters\n       * @returns {function} combined filter\n       */\n\n\n      Collection.and = function (filters) {\n        var cnt;\n        filters = slice.call(arguments);\n        cnt = filters.length;\n        return function (item) {\n          var i = 0;\n\n          for (; i < cnt; i += 1) {\n            if (!filters[i].call(null, item)) {\n              return false;\n            }\n          }\n\n          return true;\n        };\n      };\n      /**\n       * Combine multiple function filters with OR clause.\n       * @param {...function} filters - function filters\n       * @returns {function} combined filter\n       */\n\n\n      Collection.or = function (filters) {\n        var cnt;\n        filters = slice.call(arguments);\n        cnt = filters.length;\n        return function (item) {\n          var i = 1;\n          var result = filters[0].call(null, item);\n\n          for (; i < cnt; i += 1) {\n            result = result || filters[i].call(null, item);\n          }\n\n          return result;\n        };\n      };\n      /**\n       * Merge several collections.\n       *\n       * You can\\'t merge collections different _getEventID functions. Take case of use.\n       * @param {...Collection} collections collection arguments to merge\n       * @returns {Collection} merged collection.\n       */\n\n\n      Collection.merge = function (firstCollection) {\n        var newItems = {};\n        var merged = new Collection(firstCollection.getItemID);\n        forEachArray(arguments, function (col) {\n          extend(newItems, col.items);\n        });\n        merged.items = newItems;\n        merged.length = util.getLength(merged.items);\n        return merged;\n      };\n      /**********\n       * prototype props\n       **********/\n\n      /**\n       * get model's unique id.\n       * @param {object} item model instance.\n       * @returns {number} model unique id.\n       */\n\n\n      Collection.prototype.getItemID = function (item) {\n        return item._id + '';\n      };\n      /**\n       * add models.\n       * @param {...*} item models to add this collection.\n       */\n\n\n      Collection.prototype.add = function (item) {\n        var id, ownItems;\n\n        if (arguments.length > 1) {\n          forEachArray(slice.call(arguments), function (o) {\n            this.add(o);\n          }, this);\n          return;\n        }\n\n        id = this.getItemID(item);\n        ownItems = this.items;\n\n        if (!ownItems[id]) {\n          this.length += 1;\n        }\n\n        ownItems[id] = item;\n      };\n      /**\n       * remove models.\n       * @param {...(object|string|number)} id model instance or unique id to delete.\n       * @returns {array} deleted model list.\n       */\n\n\n      Collection.prototype.remove = function (id) {\n        var removed = [];\n        var ownItems, itemToRemove;\n\n        if (!this.length) {\n          return removed;\n        }\n\n        if (arguments.length > 1) {\n          removed = util.map(slice.call(arguments), function (id) {\n            return this.remove(id);\n          }, this);\n          return removed;\n        }\n\n        ownItems = this.items;\n\n        if (isObject(id)) {\n          id = this.getItemID(id);\n        }\n\n        if (!ownItems[id]) {\n          return removed;\n        }\n\n        this.length -= 1;\n        itemToRemove = ownItems[id];\n        delete ownItems[id];\n        return itemToRemove;\n      };\n      /**\n       * remove all models in collection.\n       */\n\n\n      Collection.prototype.clear = function () {\n        this.items = {};\n        this.length = 0;\n      };\n      /**\n       * check collection has specific model.\n       * @param {(object|string|number|function)} id model instance or id or filter function to check\n       * @returns {boolean} is has model?\n       */\n\n\n      Collection.prototype.has = function (id) {\n        var isFilter, has;\n\n        if (!this.length) {\n          return false;\n        }\n\n        isFilter = isFunction(id);\n        has = false;\n\n        if (isFilter) {\n          this.each(function (item) {\n            if (id(item) === true) {\n              has = true;\n              return false;\n            }\n\n            return true;\n          });\n        } else {\n          id = isObject(id) ? this.getItemID(id) : id;\n          has = isExisty(this.items[id]);\n        }\n\n        return has;\n      };\n      /**\n       * invoke callback when model exist in collection.\n       * @param {(string|number)} id model unique id.\n       * @param {function} fn the callback.\n       * @param {*} [context] callback context.\n       */\n\n\n      Collection.prototype.doWhenHas = function (id, fn, context) {\n        var item = this.items[id];\n\n        if (!isExisty(item)) {\n          return;\n        }\n\n        fn.call(context || this, item);\n      };\n      /**\n       * Search model. and return new collection.\n       * @param {function} filter filter function.\n       * @returns {Collection} new collection with filtered models.\n       * @example\n       * collection.find(function(item) {\n       *     return item.edited === true;\n       * });\n       *\n       * function filter1(item) {\n       *     return item.edited === false;\n       * }\n       *\n       * function filter2(item) {\n       *     return item.disabled === false;\n       * }\n       *\n       * collection.find(Collection.and(filter1, filter2));\n       *\n       * collection.find(Collection.or(filter1, filter2));\n       */\n\n\n      Collection.prototype.find = function (filter) {\n        var result = new Collection();\n\n        if (this.hasOwnProperty('getItemID')) {\n          result.getItemID = this.getItemID;\n        }\n\n        this.each(function (item) {\n          if (filter(item) === true) {\n            result.add(item);\n          }\n        });\n        return result;\n      };\n      /**\n       * Group element by specific key values.\n       *\n       * if key parameter is function then invoke it and use returned value.\n       * @param {(string|number|function|array)} key key property or getter function. if string[] supplied, create each collection before grouping.\n       * @param {function} [groupFunc] - function that return each group's key\n       * @returns {object.<string, Collection>} grouped object\n       * @example\n       *\n       * // pass `string`, `number`, `boolean` type value then group by property value.\n       * collection.groupBy('gender');    // group by 'gender' property value.\n       * collection.groupBy(50);          // group by '50' property value.\n       *\n       * // pass `function` then group by return value. each invocation `function` is called with `(item)`.\n       * collection.groupBy(function(item) {\n       *     if (item.score > 60) {\n       *         return 'pass';\n       *     }\n       *     return 'fail';\n       * });\n       *\n       * // pass `array` with first arguments then create each collection before grouping.\n       * collection.groupBy(['go', 'ruby', 'javascript']);\n       * // result: { 'go': empty Collection, 'ruby': empty Collection, 'javascript': empty Collection }\n       *\n       * // can pass `function` with `array` then group each elements.\n       * collection.groupBy(['go', 'ruby', 'javascript'], function(item) {\n       *     if (item.isFast) {\n       *         return 'go';\n       *     }\n       *\n       *     return item.name;\n       * });\n       */\n\n\n      Collection.prototype.groupBy = function (key, groupFunc) {\n        var result = {};\n        var keyIsFunc = isFunction(key);\n        var getItemIDFn = this.getItemID;\n        var collection, baseValue;\n\n        if (isArray(key)) {\n          forEachArray(key, function (k) {\n            result[k + ''] = new Collection(getItemIDFn);\n          });\n\n          if (!groupFunc) {\n            return result;\n          }\n\n          key = groupFunc;\n          keyIsFunc = true;\n        }\n\n        this.each(function (item) {\n          if (keyIsFunc) {\n            baseValue = key(item);\n          } else {\n            baseValue = item[key];\n\n            if (isFunction(baseValue)) {\n              baseValue = baseValue.apply(item);\n            }\n          }\n\n          collection = result[baseValue];\n\n          if (!collection) {\n            collection = result[baseValue] = new Collection(getItemIDFn);\n          }\n\n          collection.add(item);\n        });\n        return result;\n      };\n      /**\n       * Return single item in collection.\n       *\n       * Returned item is inserted in this collection firstly.\n       * @returns {object} item.\n       */\n\n\n      Collection.prototype.single = function () {\n        var result;\n        this.each(function (item) {\n          result = item;\n          return false;\n        }, this);\n        return result;\n      };\n      /**\n       * sort a basis of supplied compare function.\n       * @param {function} compareFunction compareFunction\n       * @returns {array} sorted array.\n       */\n\n\n      Collection.prototype.sort = function (compareFunction) {\n        var arr = [];\n        this.each(function (item) {\n          arr.push(item);\n        });\n\n        if (isFunction(compareFunction)) {\n          arr = arr.sort(compareFunction);\n        }\n\n        return arr;\n      };\n      /**\n       * iterate each model element.\n       *\n       * when iteratee return false then break the loop.\n       * @param {function} iteratee iteratee(item, index, items)\n       * @param {*} [context] context\n       */\n\n\n      Collection.prototype.each = function (iteratee, context) {\n        forEachOwnProperties(this.items, iteratee, context || this);\n      };\n      /**\n       * return new array with collection items.\n       * @returns {array} new array.\n       */\n\n\n      Collection.prototype.toArray = function () {\n        if (!this.length) {\n          return [];\n        }\n\n        return util.map(this.items, function (item) {\n          return item;\n        });\n      };\n\n      module.exports = Collection;\n      /***/\n    },\n    /* 20 */\n\n    /***/\n    function (module, exports, __webpack_require__) {\n      \"use strict\";\n      /**\n       * @fileoverview Check whether the given variable is existing or not.\n       * @author NHN FE Development Lab <dl_javascript@nhn.com>\n       */\n\n      var isUndefined = __webpack_require__(3);\n\n      var isNull = __webpack_require__(36);\n      /**\n       * Check whether the given variable is existing or not.\n       * If the given variable is not null and not undefined, returns true.\n       * @param {*} param - Target for checking\n       * @returns {boolean} Is existy?\n       * @memberof module:type\n       * @example\n       * var isExisty = require('tui-code-snippet/type/isExisty'); // node, commonjs\n       *\n       * isExisty(''); //true\n       * isExisty(0); //true\n       * isExisty([]); //true\n       * isExisty({}); //true\n       * isExisty(null); //false\n       * isExisty(undefined); //false\n      */\n\n\n      function isExisty(param) {\n        return !isUndefined(param) && !isNull(param);\n      }\n\n      module.exports = isExisty;\n      /***/\n    },\n    /* 21 */\n\n    /***/\n    function (module, exports, __webpack_require__) {\n      \"use strict\";\n      /**\n       * @fileoverview Check whether the given variable is an object or not.\n       * @author NHN FE Development Lab <dl_javascript@nhn.com>\n       */\n\n      /**\n       * Check whether the given variable is an object or not.\n       * If the given variable is an object, return true.\n       * @param {*} obj - Target for checking\n       * @returns {boolean} Is object?\n       * @memberof module:type\n       */\n\n      function isObject(obj) {\n        return obj === Object(obj);\n      }\n\n      module.exports = isObject;\n      /***/\n    },\n    /* 22 */\n\n    /***/\n    function (module, exports, __webpack_require__) {\n      \"use strict\";\n      /**\n       * @fileoverview This module detects the kind of well-known browser and version.\n       * @author NHN FE Development Lab <dl_javascript@nhn.com>\n       */\n\n      /**\n       * Browser module\n       * @module browser\n       */\n\n      /**\n       * This object has an information that indicate the kind of browser.\n       * The list below is a detectable browser list.\n       *  - ie8 ~ ie11\n       *  - chrome\n       *  - firefox\n       *  - safari\n       *  - edge\n       * @memberof module:browser\n       * @example\n       * var browser = require('tui-code-snippet/browser/browser'); // node, commonjs\n       *\n       * browser.chrome === true; // chrome\n       * browser.firefox === true; // firefox\n       * browser.safari === true; // safari\n       * browser.msie === true; // IE\n       * browser.edge === true; // edge\n       * browser.others === true; // other browser\n       * browser.version; // browser version\n       */\n\n      var browser = {\n        chrome: false,\n        firefox: false,\n        safari: false,\n        msie: false,\n        edge: false,\n        others: false,\n        version: 0\n      };\n\n      if (window && window.navigator) {\n        detectBrowser();\n      }\n      /**\n       * Detect the browser.\n       * @private\n       */\n\n\n      function detectBrowser() {\n        var nav = window.navigator;\n        var appName = nav.appName.replace(/\\s/g, '_');\n        var userAgent = nav.userAgent;\n        var rIE = /MSIE\\s([0-9]+[.0-9]*)/;\n        var rIE11 = /Trident.*rv:11\\./;\n        var rEdge = /Edge\\/(\\d+)\\./;\n        var versionRegex = {\n          firefox: /Firefox\\/(\\d+)\\./,\n          chrome: /Chrome\\/(\\d+)\\./,\n          safari: /Version\\/([\\d.]+).*Safari\\/(\\d+)/\n        };\n        var key, tmp;\n        var detector = {\n          Microsoft_Internet_Explorer: function () {\n            // eslint-disable-line camelcase\n            var detectedVersion = userAgent.match(rIE);\n\n            if (detectedVersion) {\n              // ie8 ~ ie10\n              browser.msie = true;\n              browser.version = parseFloat(detectedVersion[1]);\n            } else {\n              // no version information\n              browser.others = true;\n            }\n          },\n          Netscape: function () {\n            // eslint-disable-line complexity\n            var detected = false;\n\n            if (rIE11.exec(userAgent)) {\n              browser.msie = true;\n              browser.version = 11;\n              detected = true;\n            } else if (rEdge.exec(userAgent)) {\n              browser.edge = true;\n              browser.version = userAgent.match(rEdge)[1];\n              detected = true;\n            } else {\n              for (key in versionRegex) {\n                if (versionRegex.hasOwnProperty(key)) {\n                  tmp = userAgent.match(versionRegex[key]);\n\n                  if (tmp && tmp.length > 1) {\n                    // eslint-disable-line max-depth\n                    browser[key] = detected = true;\n                    browser.version = parseFloat(tmp[1] || 0);\n                    break;\n                  }\n                }\n              }\n            }\n\n            if (!detected) {\n              browser.others = true;\n            }\n          }\n        };\n        var fn = detector[appName];\n\n        if (fn) {\n          detector[appName]();\n        }\n      }\n\n      module.exports = browser;\n      /***/\n    },\n    /* 23 */\n\n    /***/\n    function (module, exports, __webpack_require__) {\n      \"use strict\";\n      /**\n       * @fileoverview Get HTML element's design classes.\n       * @author NHN FE Development Lab <dl_javascript@nhn.com>\n       */\n\n      var isUndefined = __webpack_require__(3);\n      /**\n       * Get HTML element's design classes.\n       * @param {(HTMLElement|SVGElement)} element target element\n       * @returns {string} element css class name\n       * @memberof module:domUtil\n       */\n\n\n      function getClass(element) {\n        if (!element || !element.className) {\n          return '';\n        }\n\n        if (isUndefined(element.className.baseVal)) {\n          return element.className;\n        }\n\n        return element.className.baseVal;\n      }\n\n      module.exports = getClass;\n      /***/\n    },\n    /* 24 */\n\n    /***/\n    function (module, exports, __webpack_require__) {\n      \"use strict\";\n      /* WEBPACK VAR INJECTION */\n\n      (function (global) {\n        /**\n        * @fileoverview General drag handler\n        * @author NHN. FE Development Team <dl_javascript@nhn.com>\n        */\n        var CustomEvents = __webpack_require__(10);\n\n        var disableTextSelection = __webpack_require__(42);\n\n        var enableTextSelection = __webpack_require__(44);\n\n        var getMouseButton = __webpack_require__(47);\n\n        var getTarget = __webpack_require__(28);\n\n        var off = __webpack_require__(17);\n\n        var on = __webpack_require__(14);\n\n        var preventDefault = __webpack_require__(15);\n\n        var extend = __webpack_require__(0);\n        /**\n         * @constructor\n         * @mixes CustomEvents\n         * @param {object} options - options for drag handler\n         * @param {number} [options.distance=10] - distance in pixels after mouse must move before dragging should start\n         * @param {HTMLElement} container - container element to bind drag events\n         * @ignore\n         */\n\n\n        function Drag(options, container) {\n          on(container, 'mousedown', this._onMouseDown, this);\n          this.options = extend({\n            distance: 10\n          }, options);\n          /**\n           * @type {HTMLElement}\n           */\n\n          this.container = container;\n          /**\n           * @type {boolean}\n           */\n\n          this._isMoved = false;\n          /**\n           * dragging distance in pixel between mousedown and firing dragStart events\n           * @type {number}\n           */\n\n          this._distance = 0;\n          /**\n           * @type {boolean}\n           */\n\n          this._dragStartFired = false;\n          /**\n           * @type {object}\n           */\n\n          this._dragStartEventData = null;\n        }\n        /**\n         * Destroy method.\n         */\n\n\n        Drag.prototype.destroy = function () {\n          off(this.container, 'mousedown', this._onMouseDown);\n          this.options = this.container = this._isMoved = this._distance = this._dragStartFired = this._dragStartEventData = null;\n        };\n        /**\n         * Toggle events for mouse dragging.\n         * @param {boolean} toBind - bind events related with dragging when supplied \"true\"\n         */\n\n\n        Drag.prototype._toggleDragEvent = function (toBind) {\n          var container = this.container;\n\n          if (toBind) {\n            disableTextSelection(container);\n            on(window, 'dragstart', preventDefault);\n            on(global.document, {\n              mousemove: this._onMouseMove,\n              mouseup: this._onMouseUp\n            }, this);\n          } else {\n            enableTextSelection(container);\n            off(window, 'dragstart', preventDefault);\n            off(global.document, {\n              mousemove: this._onMouseMove,\n              mouseup: this._onMouseUp\n            });\n          }\n        };\n        /**\n         * Normalize mouse event object.\n         * @param {MouseEvent} mouseEvent - mouse event object.\n         * @returns {object} normalized mouse event data.\n         */\n\n\n        Drag.prototype._getEventData = function (mouseEvent) {\n          return {\n            target: getTarget(mouseEvent),\n            originEvent: mouseEvent\n          };\n        };\n        /**\n         * MouseDown DOM event handler.\n         * @param {MouseEvent} mouseDownEvent MouseDown event object.\n         */\n\n\n        Drag.prototype._onMouseDown = function (mouseDownEvent) {\n          // only primary button can start drag.\n          if (getMouseButton(mouseDownEvent) !== 0) {\n            return;\n          }\n\n          this._distance = 0;\n          this._dragStartFired = false;\n          this._dragStartEventData = this._getEventData(mouseDownEvent);\n\n          this._toggleDragEvent(true);\n        };\n        /**\n         * MouseMove DOM event handler.\n         * @emits Drag#drag\n         * @emits Drag#dragStart\n         * @param {MouseEvent} mouseMoveEvent MouseMove event object.\n         */\n\n\n        Drag.prototype._onMouseMove = function (mouseMoveEvent) {\n          var distance = this.options.distance; // prevent automatic scrolling.\n\n          preventDefault(mouseMoveEvent);\n          this._isMoved = true;\n\n          if (this._distance < distance) {\n            this._distance += 1;\n            return;\n          }\n\n          if (!this._dragStartFired) {\n            this._dragStartFired = true;\n            /**\n             * Drag starts events. cancelable.\n             * @event Drag#dragStart\n             * @type {object}\n             * @property {HTMLElement} target - target element in this event.\n             * @property {MouseEvent} originEvent - original mouse event object.\n             */\n\n            if (!this.invoke('dragStart', this._dragStartEventData)) {\n              this._toggleDragEvent(false);\n\n              return;\n            }\n          }\n          /**\n           * Events while dragging.\n           * @event Drag#drag\n           * @type {object}\n           * @property {HTMLElement} target - target element in this event.\n           * @property {MouseEvent} originEvent - original mouse event object.\n           */\n\n\n          this.fire('drag', this._getEventData(mouseMoveEvent));\n        };\n        /**\n         * MouseUp DOM event handler.\n         * @param {MouseEvent} mouseUpEvent MouseUp event object.\n         * @emits Drag#dragEnd\n         * @emits Drag#click\n         */\n\n\n        Drag.prototype._onMouseUp = function (mouseUpEvent) {\n          this._toggleDragEvent(false); // emit \"click\" event when not emitted drag event between mousedown and mouseup.\n\n\n          if (this._isMoved) {\n            this._isMoved = false;\n            /**\n             * Drag end events.\n             * @event Drag#dragEnd\n             * @type {MouseEvent}\n             * @property {HTMLElement} target - target element in this event.\n             * @property {MouseEvent} originEvent - original mouse event object.\n             */\n\n            this.fire('dragEnd', this._getEventData(mouseUpEvent));\n            return;\n          }\n          /**\n           * Click events.\n           * @event Drag#click\n           * @type {MouseEvent}\n           * @property {HTMLElement} target - target element in this event.\n           * @property {MouseEvent} originEvent - original mouse event object.\n           */\n\n\n          this.fire('click', this._getEventData(mouseUpEvent));\n        };\n\n        CustomEvents.mixin(Drag);\n        module.exports = Drag;\n        /* WEBPACK VAR INJECTION */\n      }).call(this, __webpack_require__(25));\n      /***/\n    },\n    /* 25 */\n\n    /***/\n    function (module, exports) {\n      var g; // This works in non-strict mode\n\n      g = function () {\n        return this;\n      }();\n\n      try {\n        // This works if eval is allowed (see CSP)\n        g = g || new Function(\"return this\")();\n      } catch (e) {\n        // This works if the window reference is available\n        if (typeof window === \"object\") g = window;\n      } // g can still be undefined, but nothing to do about it...\n      // We return undefined, instead of nothing here, so it's\n      // easier to handle this case. if(!global) { ...}\n\n\n      module.exports = g;\n      /***/\n    },\n    /* 26 */\n\n    /***/\n    function (module, exports, __webpack_require__) {\n      \"use strict\";\n      /**\n       * @fileoverview Get event collection for specific HTML element\n       * @author NHN FE Development Lab <dl_javascript@nhn.com>\n       */\n\n      var EVENT_KEY = '_feEventKey';\n      /**\n       * Get event collection for specific HTML element\n       * @param {HTMLElement} element - HTML element\n       * @param {string} type - event type\n       * @returns {array}\n       * @private\n       */\n\n      function safeEvent(element, type) {\n        var events = element[EVENT_KEY];\n        var handlers;\n\n        if (!events) {\n          events = element[EVENT_KEY] = {};\n        }\n\n        handlers = events[type];\n\n        if (!handlers) {\n          handlers = events[type] = [];\n        }\n\n        return handlers;\n      }\n\n      module.exports = safeEvent;\n      /***/\n    },\n    /* 27 */\n\n    /***/\n    function (module, exports, __webpack_require__) {\n      \"use strict\";\n      /**\n       * @fileoverview Check specific CSS style is available.\n       * @author NHN FE Development Lab <dl_javascript@nhn.com>\n       */\n\n      /**\n       * Check specific CSS style is available.\n       * @param {array} props property name to testing\n       * @returns {(string|boolean)} return true when property is available\n       * @private\n       */\n\n      function testCSSProp(props) {\n        var style = document.documentElement.style;\n        var i, len;\n\n        for (i = 0, len = props.length; i < len; i += 1) {\n          if (props[i] in style) {\n            return props[i];\n          }\n        }\n\n        return false;\n      }\n\n      module.exports = testCSSProp;\n      /***/\n    },\n    /* 28 */\n\n    /***/\n    function (module, exports, __webpack_require__) {\n      \"use strict\";\n      /**\n       * @fileoverview Get a target element from an event object.\n       * @author NHN FE Development Lab <dl_javascript@nhn.com>\n       */\n\n      /**\n       * Get a target element from an event object.\n       * @param {Event} e - event object\n       * @returns {HTMLElement} - target element\n       * @memberof module:domEvent\n       */\n\n      function getTarget(e) {\n        return e.target || e.srcElement;\n      }\n\n      module.exports = getTarget;\n      /***/\n    },\n    /* 29 */\n\n    /***/\n    function (module, exports, __webpack_require__) {\n      \"use strict\";\n      /**\n       * @fileoverview Color palette view\n       * @author NHN. FE Development Team <dl_javascript@nhn.com>\n       */\n\n      var CustomEvents = __webpack_require__(10);\n\n      var getTarget = __webpack_require__(28);\n\n      var off = __webpack_require__(17);\n\n      var on = __webpack_require__(14);\n\n      var hasClass = __webpack_require__(30);\n\n      var extend = __webpack_require__(0);\n\n      var inherit = __webpack_require__(18);\n\n      var domUtil = __webpack_require__(9);\n\n      var colorUtil = __webpack_require__(12);\n\n      var View = __webpack_require__(8);\n\n      var tmpl = __webpack_require__(51);\n      /**\n       * @constructor\n       * @extends {View}\n       * @mixes CustomEvents\n       * @param {object} options - options for color palette view\n       * @param {string[]} options.preset - color list\n       * @param {HTMLDivElement} container - container element\n       * @ignore\n       */\n\n\n      function Palette(options, container) {\n        /**\n         * option object\n         * @type {object}\n         */\n        this.options = extend({\n          cssPrefix: 'tui-colorpicker-',\n          preset: ['#181818', '#282828', '#383838', '#585858', '#B8B8B8', '#D8D8D8', '#E8E8E8', '#F8F8F8', '#AB4642', '#DC9656', '#F7CA88', '#A1B56C', '#86C1B9', '#7CAFC2', '#BA8BAF', '#A16946'],\n          detailTxt: 'Detail'\n        }, options);\n        container = domUtil.appendHTMLElement('div', container, this.options.cssPrefix + 'palette-container');\n        View.call(this, options, container);\n      }\n\n      inherit(Palette, View);\n      /**\n       * Mouse click event handler\n       * @fires Palette#_selectColor\n       * @fires Palette#_toggleSlider\n       * @param {MouseEvent} clickEvent - mouse event object\n       */\n\n      Palette.prototype._onClick = function (clickEvent) {\n        var options = this.options;\n        var target = getTarget(clickEvent);\n        var eventData = {};\n\n        if (hasClass(target, options.cssPrefix + 'palette-button')) {\n          eventData.color = target.value;\n          /**\n           * @event Palette#_selectColor\n           * @type {object}\n           * @property {string} color - selected color value\n           */\n\n          this.fire('_selectColor', eventData);\n          return;\n        }\n\n        if (hasClass(target, options.cssPrefix + 'palette-toggle-slider')) {\n          /**\n           * @event Palette#_toggleSlider\n           */\n          this.fire('_toggleSlider');\n        }\n      };\n      /**\n       * Textbox change event handler\n       * @fires Palette#_selectColor\n       * @param {Event} changeEvent - change event object\n       */\n\n\n      Palette.prototype._onChange = function (changeEvent) {\n        var options = this.options;\n        var target = getTarget(changeEvent);\n        var eventData = {};\n\n        if (hasClass(target, options.cssPrefix + 'palette-hex')) {\n          eventData.color = target.value;\n          /**\n           * @event Palette#_selectColor\n           * @type {object}\n           * @property {string} color - selected color value\n           */\n\n          this.fire('_selectColor', eventData);\n        }\n      };\n      /**\n       * Invoke before destory\n       * @override\n       */\n\n\n      Palette.prototype._beforeDestroy = function () {\n        this._toggleEvent(false);\n      };\n      /**\n       * Toggle view DOM events\n       * @param {boolean} [toBind=false] - true to bind event.\n       */\n\n\n      Palette.prototype._toggleEvent = function (toBind) {\n        var options = this.options;\n        var container = this.container;\n        var handleEvent = toBind ? on : off;\n        var hexTextBox;\n        handleEvent(container, 'click', this._onClick, this);\n        hexTextBox = container.querySelector('.' + options.cssPrefix + 'palette-hex', container);\n\n        if (hexTextBox) {\n          handleEvent(hexTextBox, 'change', this._onChange, this);\n        }\n      };\n      /**\n       * Render palette\n       * @override\n       */\n\n\n      Palette.prototype.render = function (color) {\n        var options = this.options;\n        var html = '';\n\n        this._toggleEvent(false);\n\n        html = tmpl({\n          cssPrefix: options.cssPrefix,\n          preset: options.preset,\n          detailTxt: options.detailTxt,\n          color: color,\n          isValidRGB: colorUtil.isValidRGB,\n          getItemClass: function (itemColor) {\n            return !itemColor ? ' ' + options.cssPrefix + 'color-transparent' : '';\n          },\n          isSelected: function (itemColor) {\n            return itemColor === color ? ' ' + options.cssPrefix + 'selected' : '';\n          }\n        });\n        this.container.innerHTML = html;\n\n        this._toggleEvent(true);\n      };\n\n      CustomEvents.mixin(Palette);\n      module.exports = Palette;\n      /***/\n    },\n    /* 30 */\n\n    /***/\n    function (module, exports, __webpack_require__) {\n      \"use strict\";\n      /**\n       * @fileoverview Check element has specific css class\n       * @author NHN FE Development Lab <dl_javascript@nhn.com>\n       */\n\n      var inArray = __webpack_require__(5);\n\n      var getClass = __webpack_require__(23);\n      /**\n       * Check element has specific css class\n       * @param {(HTMLElement|SVGElement)} element - target element\n       * @param {string} cssClass - css class\n       * @returns {boolean}\n       * @memberof module:domUtil\n       */\n\n\n      function hasClass(element, cssClass) {\n        var origin;\n\n        if (element.classList) {\n          return element.classList.contains(cssClass);\n        }\n\n        origin = getClass(element).split(/\\s+/);\n        return inArray(cssClass, origin) > -1;\n      }\n\n      module.exports = hasClass;\n      /***/\n    },\n    /* 31 */\n\n    /***/\n    function (module, exports, __webpack_require__) {\n      \"use strict\";\n      /**\n       * @fileoverview Slider view\n       * @author NHN. FE Development Team <dl_javascript@nhn.com>\n       */\n\n      var CustomEvents = __webpack_require__(10);\n\n      var getMousePosition = __webpack_require__(53);\n\n      var closest = __webpack_require__(54);\n\n      var hasClass = __webpack_require__(30);\n\n      var extend = __webpack_require__(0);\n\n      var inherit = __webpack_require__(18);\n\n      var domUtil = __webpack_require__(9);\n\n      var svgvml = __webpack_require__(32);\n\n      var colorUtil = __webpack_require__(12);\n\n      var View = __webpack_require__(8);\n\n      var Drag = __webpack_require__(24);\n\n      var tmpl = __webpack_require__(57); // Limitation position of point element inside of colorslider and hue bar\n      // Minimum value can to be negative because that using color point of handle element is center point. not left, top point.\n\n\n      var COLORSLIDER_POS_LIMIT_RANGE = [-7, 112];\n      var HUEBAR_POS_LIMIT_RANGE = [-3, 115];\n      var HUE_WHEEL_MAX = 359.99;\n      /**\n       * @constructor\n       * @extends {View}\n       * @mixes CustomEvents\n       * @param {object} options - options for view\n       *  @param {string} options.cssPrefix - design css prefix\n       * @param {HTMLElement} container - container element\n       * @ignore\n       */\n\n      function Slider(options, container) {\n        container = domUtil.appendHTMLElement('div', container, options.cssPrefix + 'slider-container');\n        container.style.display = 'none';\n        View.call(this, options, container);\n        /**\n         * @type {object}\n         */\n\n        this.options = extend({\n          color: '#f8f8f8',\n          cssPrefix: 'tui-colorpicker-'\n        }, options);\n        /**\n         * Cache immutable data in click, drag events.\n         *\n         * (i.e. is event related with colorslider? or huebar?)\n         * @type {object}\n         * @property {boolean} isColorSlider\n         * @property {number[]} containerSize\n         */\n\n        this._dragDataCache = {};\n        /**\n         * Color slider handle element\n         * @type {SVG|VML}\n         */\n\n        this.sliderHandleElement = null;\n        /**\n         * hue bar handle element\n         * @type {SVG|VML}\n         */\n\n        this.huebarHandleElement = null;\n        /**\n         * Element that render base color in colorslider part\n         * @type {SVG|VML}\n         */\n\n        this.baseColorElement = null;\n        /**\n         * @type {Drag}\n         */\n\n        this.drag = new Drag({\n          distance: 0\n        }, container); // bind drag events\n\n        this.drag.on({\n          dragStart: this._onDragStart,\n          drag: this._onDrag,\n          dragEnd: this._onDragEnd,\n          click: this._onClick\n        }, this);\n      }\n\n      inherit(Slider, View);\n      /**\n       * @override\n       */\n\n      Slider.prototype._beforeDestroy = function () {\n        this.drag.off();\n        this.drag = this.options = this._dragDataCache = this.sliderHandleElement = this.huebarHandleElement = this.baseColorElement = null;\n      };\n      /**\n       * Toggle slider view\n       * @param {boolean} onOff - set true then reveal slider view\n       */\n\n\n      Slider.prototype.toggle = function (onOff) {\n        this.container.style.display = !!onOff ? 'block' : 'none';\n      };\n      /**\n       * Get slider display status\n       * @returns {boolean} return true when slider is visible\n       */\n\n\n      Slider.prototype.isVisible = function () {\n        return this.container.style.display === 'block';\n      };\n      /**\n       * Render slider view\n       * @override\n       * @param {string} colorStr - hex string color from parent view (Layout)\n       */\n\n\n      Slider.prototype.render = function (colorStr) {\n        var container = this.container;\n        var options = this.options;\n        var html = tmpl.layout;\n        var rgb, hsv;\n\n        if (!colorUtil.isValidRGB(colorStr)) {\n          return;\n        }\n\n        html = html.replace(/{{slider}}/, tmpl.slider);\n        html = html.replace(/{{huebar}}/, tmpl.huebar);\n        html = html.replace(/{{cssPrefix}}/g, options.cssPrefix);\n        html = html.replace(/{{id}}/g, options.id);\n        this.container.innerHTML = html;\n        this.sliderHandleElement = container.querySelector('.' + options.cssPrefix + 'slider-handle');\n        this.huebarHandleElement = container.querySelector('.' + options.cssPrefix + 'huebar-handle');\n        this.baseColorElement = container.querySelector('.' + options.cssPrefix + 'slider-basecolor');\n        rgb = colorUtil.hexToRGB(colorStr);\n        hsv = colorUtil.rgbToHSV.apply(null, rgb);\n        this.moveHue(hsv[0], true);\n        this.moveSaturationAndValue(hsv[1], hsv[2], true);\n      };\n      /**\n       * Move colorslider by newLeft(X), newTop(Y) value\n       * @private\n       * @param {number} newLeft - left pixel value to move handle\n       * @param {number} newTop - top pixel value to move handle\n       * @param {boolean} [silent=false] - set true then not fire custom event\n       */\n\n\n      Slider.prototype._moveColorSliderHandle = function (newLeft, newTop, silent) {\n        var handle = this.sliderHandleElement;\n        var handleColor; // Check position limitation.\n\n        newTop = Math.max(COLORSLIDER_POS_LIMIT_RANGE[0], newTop);\n        newTop = Math.min(COLORSLIDER_POS_LIMIT_RANGE[1], newTop);\n        newLeft = Math.max(COLORSLIDER_POS_LIMIT_RANGE[0], newLeft);\n        newLeft = Math.min(COLORSLIDER_POS_LIMIT_RANGE[1], newLeft);\n        svgvml.setTranslateXY(handle, newLeft, newTop);\n        handleColor = newTop > 50 ? 'white' : 'black';\n        svgvml.setStrokeColor(handle, handleColor);\n\n        if (!silent) {\n          this.fire('_selectColor', {\n            color: colorUtil.rgbToHEX.apply(null, this.getRGB())\n          });\n        }\n      };\n      /**\n       * Move colorslider by supplied saturation and values.\n       *\n       * The movement of color slider handle follow HSV cylinder model. {@link https://en.wikipedia.org/wiki/HSL_and_HSV}\n       * @param {number} saturation - the percent of saturation (0% ~ 100%)\n       * @param {number} value - the percent of saturation (0% ~ 100%)\n       * @param {boolean} [silent=false] - set true then not fire custom event\n       */\n\n\n      Slider.prototype.moveSaturationAndValue = function (saturation, value, silent) {\n        var absMin, maxValue, newLeft, newTop;\n        saturation = saturation || 0;\n        value = value || 0;\n        absMin = Math.abs(COLORSLIDER_POS_LIMIT_RANGE[0]);\n        maxValue = COLORSLIDER_POS_LIMIT_RANGE[1]; // subtract absMin value because current color position is not left, top of handle element.\n        // The saturation. from left 0 to right 100\n\n        newLeft = saturation * maxValue / 100 - absMin; // The Value. from top 100 to bottom 0. that why newTop subtract by maxValue.\n\n        newTop = maxValue - value * maxValue / 100 - absMin;\n\n        this._moveColorSliderHandle(newLeft, newTop, silent);\n      };\n      /**\n       * Move color slider handle to supplied position\n       *\n       * The number of X, Y must be related value from color slider container\n       * @private\n       * @param {number} x - the pixel value to move handle\n       * @param {number} y - the pixel value to move handle\n       */\n\n\n      Slider.prototype._moveColorSliderByPosition = function (x, y) {\n        var offset = COLORSLIDER_POS_LIMIT_RANGE[0];\n\n        this._moveColorSliderHandle(x + offset, y + offset);\n      };\n      /**\n       * Get saturation and value value.\n       * @returns {number[]} saturation and value\n       */\n\n\n      Slider.prototype.getSaturationAndValue = function () {\n        var absMin = Math.abs(COLORSLIDER_POS_LIMIT_RANGE[0]);\n        var maxValue = absMin + COLORSLIDER_POS_LIMIT_RANGE[1];\n        var position = svgvml.getTranslateXY(this.sliderHandleElement);\n        var saturation, value;\n        saturation = (position[1] + absMin) / maxValue * 100; // The value of HSV color model is inverted. top 100 ~ bottom 0. so subtract by 100\n\n        value = 100 - (position[0] + absMin) / maxValue * 100;\n        return [saturation, value];\n      };\n      /**\n       * Move hue handle supplied pixel value\n       * @private\n       * @param {number} newTop - pixel to move hue handle\n       * @param {boolean} [silent=false] - set true then not fire custom event\n       */\n\n\n      Slider.prototype._moveHueHandle = function (newTop, silent) {\n        var hueHandleElement = this.huebarHandleElement;\n        var baseColorElement = this.baseColorElement;\n        var newGradientColor, hexStr;\n        newTop = Math.max(HUEBAR_POS_LIMIT_RANGE[0], newTop);\n        newTop = Math.min(HUEBAR_POS_LIMIT_RANGE[1], newTop);\n        svgvml.setTranslateY(hueHandleElement, newTop);\n        newGradientColor = colorUtil.hsvToRGB(this.getHue(), 100, 100);\n        hexStr = colorUtil.rgbToHEX.apply(null, newGradientColor);\n        svgvml.setGradientColorStop(baseColorElement, hexStr);\n\n        if (!silent) {\n          this.fire('_selectColor', {\n            color: colorUtil.rgbToHEX.apply(null, this.getRGB())\n          });\n        }\n      };\n      /**\n       * Move hue bar handle by supplied degree\n       * @param {number} degree - (0 ~ 359.9 degree)\n       * @param {boolean} [silent=false] - set true then not fire custom event\n       */\n\n\n      Slider.prototype.moveHue = function (degree, silent) {\n        var newTop = 0;\n        var absMin, maxValue;\n        absMin = Math.abs(HUEBAR_POS_LIMIT_RANGE[0]);\n        maxValue = absMin + HUEBAR_POS_LIMIT_RANGE[1];\n        degree = degree || 0;\n        newTop = maxValue * degree / HUE_WHEEL_MAX - absMin;\n\n        this._moveHueHandle(newTop, silent);\n      };\n      /**\n       * Move hue bar handle by supplied percent\n       * @private\n       * @param {number} y - pixel value to move hue handle\n       */\n\n\n      Slider.prototype._moveHueByPosition = function (y) {\n        var offset = HUEBAR_POS_LIMIT_RANGE[0];\n\n        this._moveHueHandle(y + offset);\n      };\n      /**\n       * Get huebar handle position by color degree\n       * @returns {number} degree (0 ~ 359.9 degree)\n       */\n\n\n      Slider.prototype.getHue = function () {\n        var handle = this.huebarHandleElement;\n        var position = svgvml.getTranslateXY(handle);\n        var absMin, maxValue;\n        absMin = Math.abs(HUEBAR_POS_LIMIT_RANGE[0]);\n        maxValue = absMin + HUEBAR_POS_LIMIT_RANGE[1]; // maxValue : 359.99 = pos.y : x\n\n        return (position[0] + absMin) * HUE_WHEEL_MAX / maxValue;\n      };\n      /**\n       * Get HSV value from slider\n       * @returns {number[]} hsv values\n       */\n\n\n      Slider.prototype.getHSV = function () {\n        var sv = this.getSaturationAndValue();\n        var h = this.getHue();\n        return [h].concat(sv);\n      };\n      /**\n       * Get RGB value from slider\n       * @returns {number[]} RGB value\n       */\n\n\n      Slider.prototype.getRGB = function () {\n        return colorUtil.hsvToRGB.apply(null, this.getHSV());\n      };\n      /**********\n       * Drag event handler\n       **********/\n\n      /**\n       * Cache immutable data when dragging or click view\n       * @param {object} event - Click, DragStart event.\n       * @returns {object} cached data.\n       */\n\n\n      Slider.prototype._prepareColorSliderForMouseEvent = function (event) {\n        var options = this.options;\n        var sliderPart = closest(event.target, '.' + options.cssPrefix + 'slider-part');\n        var cache;\n        cache = this._dragDataCache = {\n          isColorSlider: hasClass(sliderPart, options.cssPrefix + 'slider-left'),\n          parentElement: sliderPart\n        };\n        return cache;\n      };\n      /**\n       * Click event handler\n       * @param {object} clickEvent - Click event from Drag module\n       */\n\n\n      Slider.prototype._onClick = function (clickEvent) {\n        var cache = this._prepareColorSliderForMouseEvent(clickEvent);\n\n        var mousePos = getMousePosition(clickEvent.originEvent, cache.parentElement);\n\n        if (cache.isColorSlider) {\n          this._moveColorSliderByPosition(mousePos[0], mousePos[1]);\n        } else {\n          this._moveHueByPosition(mousePos[1]);\n        }\n\n        this._dragDataCache = null;\n      };\n      /**\n       * DragStart event handler\n       * @param {object} dragStartEvent - dragStart event data from Drag#dragStart\n       */\n\n\n      Slider.prototype._onDragStart = function (dragStartEvent) {\n        this._prepareColorSliderForMouseEvent(dragStartEvent);\n      };\n      /**\n       * Drag event handler\n       * @param {Drag#drag} dragEvent - drag event data\n       */\n\n\n      Slider.prototype._onDrag = function (dragEvent) {\n        var cache = this._dragDataCache;\n        var mousePos = getMousePosition(dragEvent.originEvent, cache.parentElement);\n\n        if (cache.isColorSlider) {\n          this._moveColorSliderByPosition(mousePos[0], mousePos[1]);\n        } else {\n          this._moveHueByPosition(mousePos[1]);\n        }\n      };\n      /**\n       * Drag#dragEnd event handler\n       */\n\n\n      Slider.prototype._onDragEnd = function () {\n        this._dragDataCache = null;\n      };\n\n      CustomEvents.mixin(Slider);\n      module.exports = Slider;\n      /***/\n    },\n    /* 32 */\n\n    /***/\n    function (module, exports, __webpack_require__) {\n      \"use strict\";\n      /**\n       * @fileoverview module for manipulate SVG or VML object\n       * @author NHN. FE Development Team <dl_javascript@nhn.com>\n       */\n\n      var isOldBrowser = __webpack_require__(4).isOldBrowser;\n\n      var PARSE_TRANSLATE_NUM_REGEX = /[\\.\\-0-9]+/g;\n      var SVG_HUE_HANDLE_RIGHT_POS = -6;\n      /* istanbul ignore next */\n\n      var svgvml = {\n        /**\n         * Get translate transform value\n         * @param {SVG|VML} obj - svg or vml object that want to know translate x, y\n         * @returns {number[]} translated coordinates [x, y]\n         */\n        getTranslateXY: function (obj) {\n          var temp;\n\n          if (isOldBrowser) {\n            temp = obj.style;\n            return [parseFloat(temp.top), parseFloat(temp.left)];\n          }\n\n          temp = obj.getAttribute('transform');\n\n          if (!temp) {\n            return [0, 0];\n          }\n\n          temp = temp.match(PARSE_TRANSLATE_NUM_REGEX); // need caution for difference of VML, SVG coordinates system.\n          // translate command need X coords in first parameter. but VML is use CSS coordinate system(top, left)\n\n          return [parseFloat(temp[1]), parseFloat(temp[0])];\n        },\n\n        /**\n         * Set translate transform value\n         * @param {SVG|VML} obj - SVG or VML object to setting translate transform.\n         * @param {number} x - translate X value\n         * @param {number} y - translate Y value\n         */\n        setTranslateXY: function (obj, x, y) {\n          if (isOldBrowser) {\n            obj.style.left = x + 'px';\n            obj.style.top = y + 'px';\n          } else {\n            obj.setAttribute('transform', 'translate(' + x + ',' + y + ')');\n          }\n        },\n\n        /**\n         * Set translate only Y value\n         * @param {SVG|VML} obj - SVG or VML object to setting translate transform.\n         * @param {number} y - translate Y value\n         */\n        setTranslateY: function (obj, y) {\n          if (isOldBrowser) {\n            obj.style.top = y + 'px';\n          } else {\n            obj.setAttribute('transform', 'translate(' + SVG_HUE_HANDLE_RIGHT_POS + ',' + y + ')');\n          }\n        },\n\n        /**\n         * Set stroke color to SVG or VML object\n         * @param {SVG|VML} obj - SVG or VML object to setting stroke color\n         * @param {string} colorStr - color string\n         */\n        setStrokeColor: function (obj, colorStr) {\n          if (isOldBrowser) {\n            obj.strokecolor = colorStr;\n          } else {\n            obj.setAttribute('stroke', colorStr);\n          }\n        },\n\n        /**\n         * Set gradient stop color to SVG, VML object.\n         * @param {SVG|VML} obj - SVG, VML object to applying gradient stop color\n         * @param {string} colorStr - color string\n         */\n        setGradientColorStop: function (obj, colorStr) {\n          if (isOldBrowser) {\n            obj.color = colorStr;\n          } else {\n            obj.setAttribute('stop-color', colorStr);\n          }\n        }\n      };\n      module.exports = svgvml;\n      /***/\n    },\n    /* 33 */\n\n    /***/\n    function (module, exports, __webpack_require__) {\n      __webpack_require__(34);\n\n      module.exports = __webpack_require__(35);\n      /***/\n    },\n    /* 34 */\n\n    /***/\n    function (module, exports, __webpack_require__) {// extracted by mini-css-extract-plugin\n\n      /***/\n    },\n    /* 35 */\n\n    /***/\n    function (module, exports, __webpack_require__) {\n      \"use strict\";\n\n      var Collection = __webpack_require__(19);\n\n      var View = __webpack_require__(8);\n\n      var Drag = __webpack_require__(24);\n\n      var create = __webpack_require__(48);\n\n      var Palette = __webpack_require__(29);\n\n      var Slider = __webpack_require__(31);\n\n      var colorUtil = __webpack_require__(12);\n\n      var svgvml = __webpack_require__(32);\n\n      var colorPicker = {\n        Collection: Collection,\n        View: View,\n        Drag: Drag,\n        create: create,\n        Palette: Palette,\n        Slider: Slider,\n        colorutil: colorUtil,\n        svgvml: svgvml\n      };\n      module.exports = colorPicker;\n      /***/\n    },\n    /* 36 */\n\n    /***/\n    function (module, exports, __webpack_require__) {\n      \"use strict\";\n      /**\n       * @fileoverview Check whether the given variable is null or not.\n       * @author NHN FE Development Lab <dl_javascript@nhn.com>\n       */\n\n      /**\n       * Check whether the given variable is null or not.\n       * If the given variable(arguments[0]) is null, returns true.\n       * @param {*} obj - Target for checking\n       * @returns {boolean} Is null?\n       * @memberof module:type\n       */\n\n      function isNull(obj) {\n        return obj === null;\n      }\n\n      module.exports = isNull;\n      /***/\n    },\n    /* 37 */\n\n    /***/\n    function (module, exports, __webpack_require__) {\n      \"use strict\";\n      /**\n       * @fileoverview Send hostname on DOMContentLoaded.\n       * @author NHN FE Development Lab <dl_javascript@nhn.com>\n       */\n\n      var isUndefined = __webpack_require__(3);\n\n      var imagePing = __webpack_require__(38);\n\n      var ms7days = 7 * 24 * 60 * 60 * 1000;\n      /**\n       * Check if the date has passed 7 days\n       * @param {number} date - milliseconds\n       * @returns {boolean}\n       * @private\n       */\n\n      function isExpired(date) {\n        var now = new Date().getTime();\n        return now - date > ms7days;\n      }\n      /**\n       * Send hostname on DOMContentLoaded.\n       * To prevent hostname set tui.usageStatistics to false.\n       * @param {string} appName - application name\n       * @param {string} trackingId - GA tracking ID\n       * @ignore\n       */\n\n\n      function sendHostname(appName, trackingId) {\n        var url = 'https://www.google-analytics.com/collect';\n        var hostname = location.hostname;\n        var hitType = 'event';\n        var eventCategory = 'use';\n        var applicationKeyForStorage = 'TOAST UI ' + appName + ' for ' + hostname + ': Statistics';\n        var date = window.localStorage.getItem(applicationKeyForStorage); // skip if the flag is defined and is set to false explicitly\n\n        if (!isUndefined(window.tui) && window.tui.usageStatistics === false) {\n          return;\n        } // skip if not pass seven days old\n\n\n        if (date && !isExpired(date)) {\n          return;\n        }\n\n        window.localStorage.setItem(applicationKeyForStorage, new Date().getTime());\n        setTimeout(function () {\n          if (document.readyState === 'interactive' || document.readyState === 'complete') {\n            imagePing(url, {\n              v: 1,\n              t: hitType,\n              tid: trackingId,\n              cid: hostname,\n              dp: hostname,\n              dh: appName,\n              el: appName,\n              ec: eventCategory\n            });\n          }\n        }, 1000);\n      }\n\n      module.exports = sendHostname;\n      /***/\n    },\n    /* 38 */\n\n    /***/\n    function (module, exports, __webpack_require__) {\n      \"use strict\";\n      /**\n       * @fileoverview Request image ping.\n       * @author NHN FE Development Lab <dl_javascript@nhn.com>\n       */\n\n      var forEachOwnProperties = __webpack_require__(7);\n      /**\n       * @module request\n       */\n\n      /**\n       * Request image ping.\n       * @param {String} url url for ping request\n       * @param {Object} trackingInfo infos for make query string\n       * @returns {HTMLElement}\n       * @memberof module:request\n       * @example\n       * var imagePing = require('tui-code-snippet/request/imagePing'); // node, commonjs\n       *\n       * imagePing('https://www.google-analytics.com/collect', {\n       *     v: 1,\n       *     t: 'event',\n       *     tid: 'trackingid',\n       *     cid: 'cid',\n       *     dp: 'dp',\n       *     dh: 'dh'\n       * });\n       */\n\n\n      function imagePing(url, trackingInfo) {\n        var trackingElement = document.createElement('img');\n        var queryString = '';\n        forEachOwnProperties(trackingInfo, function (value, key) {\n          queryString += '&' + key + '=' + value;\n        });\n        queryString = queryString.substring(1);\n        trackingElement.src = url + '?' + queryString;\n        trackingElement.style.display = 'none';\n        document.body.appendChild(trackingElement);\n        document.body.removeChild(trackingElement);\n        return trackingElement;\n      }\n\n      module.exports = imagePing;\n      /***/\n    },\n    /* 39 */\n\n    /***/\n    function (module, exports, __webpack_require__) {\n      \"use strict\";\n      /**\n       * @fileoverview Add css class to element\n       * @author NHN FE Development Lab <dl_javascript@nhn.com>\n       */\n\n      var forEach = __webpack_require__(2);\n\n      var inArray = __webpack_require__(5);\n\n      var getClass = __webpack_require__(23);\n\n      var setClassName = __webpack_require__(40);\n      /**\n       * domUtil module\n       * @module domUtil\n       */\n\n      /**\n       * Add css class to element\n       * @param {(HTMLElement|SVGElement)} element - target element\n       * @param {...string} cssClass - css classes to add\n       * @memberof module:domUtil\n       */\n\n\n      function addClass(element) {\n        var cssClass = Array.prototype.slice.call(arguments, 1);\n        var classList = element.classList;\n        var newClass = [];\n        var origin;\n\n        if (classList) {\n          forEach(cssClass, function (name) {\n            element.classList.add(name);\n          });\n          return;\n        }\n\n        origin = getClass(element);\n\n        if (origin) {\n          cssClass = [].concat(origin.split(/\\s+/), cssClass);\n        }\n\n        forEach(cssClass, function (cls) {\n          if (inArray(cls, newClass) < 0) {\n            newClass.push(cls);\n          }\n        });\n        setClassName(element, newClass);\n      }\n\n      module.exports = addClass;\n      /***/\n    },\n    /* 40 */\n\n    /***/\n    function (module, exports, __webpack_require__) {\n      \"use strict\";\n      /**\n       * @fileoverview Set className value\n       * @author NHN FE Development Lab <dl_javascript@nhn.com>\n       */\n\n      var isArray = __webpack_require__(1);\n\n      var isUndefined = __webpack_require__(3);\n      /**\n       * Set className value\n       * @param {(HTMLElement|SVGElement)} element - target element\n       * @param {(string|string[])} cssClass - class names\n       * @private\n       */\n\n\n      function setClassName(element, cssClass) {\n        cssClass = isArray(cssClass) ? cssClass.join(' ') : cssClass;\n        cssClass = cssClass.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n\n        if (isUndefined(element.className.baseVal)) {\n          element.className = cssClass;\n          return;\n        }\n\n        element.className.baseVal = cssClass;\n      }\n\n      module.exports = setClassName;\n      /***/\n    },\n    /* 41 */\n\n    /***/\n    function (module, exports, __webpack_require__) {\n      \"use strict\";\n      /**\n       * @fileoverview Check whether the given variable is a number or not.\n       * @author NHN FE Development Lab <dl_javascript@nhn.com>\n       */\n\n      /**\n       * Check whether the given variable is a number or not.\n       * If the given variable is a number, return true.\n       * @param {*} obj - Target for checking\n       * @returns {boolean} Is number?\n       * @memberof module:type\n       */\n\n      function isNumber(obj) {\n        return typeof obj === 'number' || obj instanceof Number;\n      }\n\n      module.exports = isNumber;\n      /***/\n    },\n    /* 42 */\n\n    /***/\n    function (module, exports, __webpack_require__) {\n      \"use strict\";\n      /**\n       * @fileoverview Disable browser's text selection behaviors.\n       * @author NHN FE Development Lab <dl_javascript@nhn.com>\n       */\n\n      var on = __webpack_require__(14);\n\n      var preventDefault = __webpack_require__(15);\n\n      var setData = __webpack_require__(43);\n\n      var testCSSProp = __webpack_require__(27);\n\n      var SUPPORT_SELECTSTART = ('onselectstart' in document);\n      var KEY_PREVIOUS_USER_SELECT = 'prevUserSelect';\n      var userSelectProperty = testCSSProp(['userSelect', 'WebkitUserSelect', 'OUserSelect', 'MozUserSelect', 'msUserSelect']);\n      /**\n       * Disable browser's text selection behaviors.\n       * @param {HTMLElement} [el] - target element. if not supplied, use `document`\n       * @memberof module:domUtil\n       */\n\n      function disableTextSelection(el) {\n        if (!el) {\n          el = document;\n        }\n\n        if (SUPPORT_SELECTSTART) {\n          on(el, 'selectstart', preventDefault);\n        } else {\n          el = el === document ? document.documentElement : el;\n          setData(el, KEY_PREVIOUS_USER_SELECT, el.style[userSelectProperty]);\n          el.style[userSelectProperty] = 'none';\n        }\n      }\n\n      module.exports = disableTextSelection;\n      /***/\n    },\n    /* 43 */\n\n    /***/\n    function (module, exports, __webpack_require__) {\n      \"use strict\";\n      /**\n       * @fileoverview Set data attribute to target element\n       * @author NHN FE Development Lab <dl_javascript@nhn.com>\n       */\n\n      var convertToKebabCase = __webpack_require__(16);\n      /**\n       * Set data attribute to target element\n       * @param {HTMLElement} element - element to set data attribute\n       * @param {string} key - key\n       * @param {string} value - value\n       * @memberof module:domUtil\n       */\n\n\n      function setData(element, key, value) {\n        if (element.dataset) {\n          element.dataset[key] = value;\n          return;\n        }\n\n        element.setAttribute('data-' + convertToKebabCase(key), value);\n      }\n\n      module.exports = setData;\n      /***/\n    },\n    /* 44 */\n\n    /***/\n    function (module, exports, __webpack_require__) {\n      \"use strict\";\n      /**\n       * @fileoverview Transform the Array-like object to Array.\n       * @author NHN FE Development Lab <dl_javascript@nhn.com>\n       */\n\n      var off = __webpack_require__(17);\n\n      var preventDefault = __webpack_require__(15);\n\n      var getData = __webpack_require__(45);\n\n      var removeData = __webpack_require__(46);\n\n      var testCSSProp = __webpack_require__(27);\n\n      var SUPPORT_SELECTSTART = ('onselectstart' in document);\n      var KEY_PREVIOUS_USER_SELECT = 'prevUserSelect';\n      var userSelectProperty = testCSSProp(['userSelect', 'WebkitUserSelect', 'OUserSelect', 'MozUserSelect', 'msUserSelect']);\n      /**\n       * Enable browser's text selection behaviors.\n       * @param {HTMLElement} [el] - target element. if not supplied, use `document`\n       * @memberof module:domUtil\n       */\n\n      function enableTextSelection(el) {\n        if (!el) {\n          el = document;\n        }\n\n        if (SUPPORT_SELECTSTART) {\n          off(el, 'selectstart', preventDefault);\n        } else {\n          el = el === document ? document.documentElement : el;\n          el.style[userSelectProperty] = getData(el, KEY_PREVIOUS_USER_SELECT) || 'auto';\n          removeData(el, KEY_PREVIOUS_USER_SELECT);\n        }\n      }\n\n      module.exports = enableTextSelection;\n      /***/\n    },\n    /* 45 */\n\n    /***/\n    function (module, exports, __webpack_require__) {\n      \"use strict\";\n      /**\n       * @fileoverview Get data value from data-attribute\n       * @author NHN FE Development Lab <dl_javascript@nhn.com>\n       */\n\n      var convertToKebabCase = __webpack_require__(16);\n      /**\n       * Get data value from data-attribute\n       * @param {HTMLElement} element - target element\n       * @param {string} key - key\n       * @returns {string} value\n       * @memberof module:domUtil\n       */\n\n\n      function getData(element, key) {\n        if (element.dataset) {\n          return element.dataset[key];\n        }\n\n        return element.getAttribute('data-' + convertToKebabCase(key));\n      }\n\n      module.exports = getData;\n      /***/\n    },\n    /* 46 */\n\n    /***/\n    function (module, exports, __webpack_require__) {\n      \"use strict\";\n      /**\n       * @fileoverview Remove data property\n       * @author NHN FE Development Lab <dl_javascript@nhn.com>\n       */\n\n      var convertToKebabCase = __webpack_require__(16);\n      /**\n       * Remove data property\n       * @param {HTMLElement} element - target element\n       * @param {string} key - key\n       * @memberof module:domUtil\n       */\n\n\n      function removeData(element, key) {\n        if (element.dataset) {\n          delete element.dataset[key];\n          return;\n        }\n\n        element.removeAttribute('data-' + convertToKebabCase(key));\n      }\n\n      module.exports = removeData;\n      /***/\n    },\n    /* 47 */\n\n    /***/\n    function (module, exports, __webpack_require__) {\n      \"use strict\";\n      /**\n       * @fileoverview Normalize mouse event's button attributes.\n       * @author NHN FE Development Lab <dl_javascript@nhn.com>\n       */\n\n      var browser = __webpack_require__(22);\n\n      var inArray = __webpack_require__(5);\n\n      var primaryButton = ['0', '1', '3', '5', '7'];\n      var secondaryButton = ['2', '6'];\n      var wheelButton = ['4'];\n      /**\n       * @module domEvent\n       */\n\n      /**\n       * Normalize mouse event's button attributes.\n       *\n       * Can detect which button is clicked by this method.\n       *\n       * Meaning of return numbers\n       *\n       * - 0: primary mouse button\n       * - 1: wheel button or center button\n       * - 2: secondary mouse button\n       * @param {MouseEvent} mouseEvent - The mouse event object want to know.\n       * @returns {number} - The value of meaning which button is clicked?\n       * @memberof module:domEvent\n       */\n\n      function getMouseButton(mouseEvent) {\n        if (browser.msie && browser.version <= 8) {\n          return getMouseButtonIE8AndEarlier(mouseEvent);\n        }\n\n        return mouseEvent.button;\n      }\n      /**\n       * Normalize return value of mouseEvent.button\n       * Make same to standard MouseEvent's button value\n       * @param {DispCEventObj} mouseEvent - mouse event object\n       * @returns {number|null} - id indicating which mouse button is clicked\n       * @private\n       */\n\n\n      function getMouseButtonIE8AndEarlier(mouseEvent) {\n        var button = String(mouseEvent.button);\n\n        if (inArray(button, primaryButton) > -1) {\n          return 0;\n        }\n\n        if (inArray(button, secondaryButton) > -1) {\n          return 2;\n        }\n\n        if (inArray(button, wheelButton) > -1) {\n          return 1;\n        }\n\n        return null;\n      }\n\n      module.exports = getMouseButton;\n      /***/\n    },\n    /* 48 */\n\n    /***/\n    function (module, exports, __webpack_require__) {\n      \"use strict\";\n      /**\n       * @fileoverview ColorPicker factory module\n       * @author NHN. FE Development Team <dl_javascript@nhn.com>\n       */\n\n      var CustomEvents = __webpack_require__(10);\n\n      var extend = __webpack_require__(0);\n\n      var util = __webpack_require__(4);\n\n      var colorUtil = __webpack_require__(12);\n\n      var Layout = __webpack_require__(49);\n\n      var Palette = __webpack_require__(29);\n\n      var Slider = __webpack_require__(31);\n      /**\n       * Create an unique id for a color-picker instance.\n       * @private\n       */\n\n\n      var currentId = 0;\n\n      function generateId() {\n        currentId += 1;\n        return currentId;\n      }\n      /**\n       * @constructor\n       * @param {object} options - options for colorpicker component\n       *  @param {HTMLDivElement} options.container - container element\n       *  @param {string} [options.color='#ffffff'] - default selected color\n       *  @param {string[]} [options.preset] - color preset for palette (use base16 palette if not supplied)\n       *  @param {string} [options.cssPrefix='tui-colorpicker-'] - css prefix text for each child elements\n       *  @param {string} [options.detailTxt='Detail'] - text for detail button.\n       *  @param {boolean} [options.usageStatistics=true] - Let us know the hostname. If you don't want to send the hostname, please set to false.\n       * @example\n       * var colorPicker = tui.colorPicker; // or require('tui-color-picker')\n       *\n       * var instance = colorPicker.create({\n       *   container: document.getElementById('color-picker')\n       * });\n       */\n\n\n      function ColorPicker(options) {\n        var layout;\n\n        if (!(this instanceof ColorPicker)) {\n          return new ColorPicker(options);\n        }\n        /**\n         * Option object\n         * @type {object}\n         * @private\n         */\n\n\n        options = this.options = extend({\n          container: null,\n          color: '#f8f8f8',\n          preset: ['#181818', '#282828', '#383838', '#585858', '#b8b8b8', '#d8d8d8', '#e8e8e8', '#f8f8f8', '#ab4642', '#dc9656', '#f7ca88', '#a1b56c', '#86c1b9', '#7cafc2', '#ba8baf', '#a16946'],\n          cssPrefix: 'tui-colorpicker-',\n          detailTxt: 'Detail',\n          id: generateId(),\n          usageStatistics: true\n        }, options);\n\n        if (!options.container) {\n          throw new Error('ColorPicker(): need container option.');\n        }\n        /**********\n         * Create layout view\n         **********/\n\n        /**\n         * @type {Layout}\n         * @private\n         */\n\n\n        layout = this.layout = new Layout(options, options.container);\n        /**********\n         * Create palette view\n         **********/\n\n        this.palette = new Palette(options, layout.container);\n        this.palette.on({\n          _selectColor: this._onSelectColorInPalette,\n          _toggleSlider: this._onToggleSlider\n        }, this);\n        /**********\n         * Create slider view\n         **********/\n\n        this.slider = new Slider(options, layout.container);\n        this.slider.on('_selectColor', this._onSelectColorInSlider, this);\n        /**********\n         * Add child views\n         **********/\n\n        layout.addChild(this.palette);\n        layout.addChild(this.slider);\n        this.render(options.color);\n\n        if (options.usageStatistics) {\n          util.sendHostName();\n        }\n      }\n      /**\n       * Handler method for Palette#_selectColor event\n       * @private\n       * @fires ColorPicker#selectColor\n       * @param {object} selectColorEventData - event data\n       */\n\n\n      ColorPicker.prototype._onSelectColorInPalette = function (selectColorEventData) {\n        var color = selectColorEventData.color;\n        var opt = this.options;\n\n        if (!colorUtil.isValidRGB(color) && color !== '') {\n          this.render();\n          return;\n        }\n        /**\n         * @event ColorPicker#selectColor\n         * @type {object}\n         * @property {string} color - selected color (hex string)\n         * @property {string} origin - flags for represent the source of event fires.\n         */\n\n\n        this.fire('selectColor', {\n          color: color,\n          origin: 'palette'\n        });\n\n        if (opt.color === color) {\n          return;\n        }\n\n        opt.color = color;\n        this.render(color);\n      };\n      /**\n       * Handler method for Palette#_toggleSlider event\n       * @private\n       */\n\n\n      ColorPicker.prototype._onToggleSlider = function () {\n        this.slider.toggle(!this.slider.isVisible());\n      };\n      /**\n       * Handler method for Slider#_selectColor event\n       * @private\n       * @fires ColorPicker#selectColor\n       * @param {object} selectColorEventData - event data\n       */\n\n\n      ColorPicker.prototype._onSelectColorInSlider = function (selectColorEventData) {\n        var color = selectColorEventData.color;\n        var opt = this.options;\n        /**\n         * @event ColorPicker#selectColor\n         * @type {object}\n         * @property {string} color - selected color (hex string)\n         * @property {string} origin - flags for represent the source of event fires.\n         * @ignore\n         */\n\n        this.fire('selectColor', {\n          color: color,\n          origin: 'slider'\n        });\n\n        if (opt.color === color) {\n          return;\n        }\n\n        opt.color = color;\n        this.palette.render(color);\n      };\n      /**********\n       * PUBLIC API\n       **********/\n\n      /**\n       * Set color to colorpicker instance.<br>\n       * The string parameter must be hex color value\n       * @param {string} hexStr - hex formatted color string\n       * @example\n       * instance.setColor('#ffff00');\n       */\n\n\n      ColorPicker.prototype.setColor = function (hexStr) {\n        if (!colorUtil.isValidRGB(hexStr)) {\n          throw new Error('ColorPicker#setColor(): need valid hex string color value');\n        }\n\n        this.options.color = hexStr;\n        this.render(hexStr);\n      };\n      /**\n       * Get hex color string of current selected color in colorpicker instance.\n       * @returns {string} hex string formatted color\n       * @example\n       * instance.setColor('#ffff00');\n       * instance.getColor(); // '#ffff00';\n       */\n\n\n      ColorPicker.prototype.getColor = function () {\n        return this.options.color;\n      };\n      /**\n       * Toggle colorpicker element. set true then reveal colorpicker view.\n       * @param {boolean} [isShow=false] - A flag to show\n       * @example\n       * instance.toggle(false); // hide\n       * instance.toggle(); // hide\n       * instance.toggle(true); // show\n       */\n\n\n      ColorPicker.prototype.toggle = function (isShow) {\n        this.layout.container.style.display = !!isShow ? 'block' : 'none';\n      };\n      /**\n       * Render colorpicker\n       * @param {string} [color] - selected color\n       * @ignore\n       */\n\n\n      ColorPicker.prototype.render = function (color) {\n        this.layout.render(color || this.options.color);\n      };\n      /**\n       * Destroy colorpicker instance.\n       * @example\n       * instance.destroy(); // DOM-element is removed\n       */\n\n\n      ColorPicker.prototype.destroy = function () {\n        this.layout.destroy();\n        this.options.container.innerHTML = '';\n        this.layout = this.slider = this.palette = this.options = null;\n      };\n\n      CustomEvents.mixin(ColorPicker);\n      module.exports = ColorPicker;\n      /***/\n    },\n    /* 49 */\n\n    /***/\n    function (module, exports, __webpack_require__) {\n      \"use strict\";\n      /**\n       * @fileoverview ColorPicker layout module\n       * @author NHN. FE Development Team <dl_javascript@nhn.com>\n       */\n\n      var extend = __webpack_require__(0);\n\n      var inherit = __webpack_require__(18);\n\n      var domUtil = __webpack_require__(9);\n\n      var View = __webpack_require__(8);\n      /**\n       * @constructor\n       * @extends {View}\n       * @param {object} options - option object\n       *  @param {string} options.cssPrefix - css prefix for each child elements\n       * @param {HTMLDivElement} container - container\n       * @ignore\n       */\n\n\n      function Layout(options, container) {\n        /**\n         * option object\n         * @type {object}\n         */\n        this.options = extend({\n          cssPrefix: 'tui-colorpicker-'\n        }, options);\n        container = domUtil.appendHTMLElement('div', container, this.options.cssPrefix + 'container');\n        View.call(this, options, container);\n        this.render();\n      }\n\n      inherit(Layout, View);\n      /**\n       * @override\n       * @param {string} [color] - selected color\n       */\n\n      Layout.prototype.render = function (color) {\n        this.recursive(function (view) {\n          view.render(color);\n        }, true);\n      };\n\n      module.exports = Layout;\n      /***/\n    },\n    /* 50 */\n\n    /***/\n    function (module, exports, __webpack_require__) {\n      \"use strict\";\n      /**\n       * @fileoverview Create a new object with the specified prototype object and properties.\n       * @author NHN FE Development Lab <dl_javascript@nhn.com>\n       */\n\n      /**\n       * @module inheritance\n       */\n\n      /**\n       * Create a new object with the specified prototype object and properties.\n       * @param {Object} obj This object will be a prototype of the newly-created object.\n       * @returns {Object}\n       * @memberof module:inheritance\n       */\n\n      function createObject(obj) {\n        function F() {} // eslint-disable-line require-jsdoc\n\n\n        F.prototype = obj;\n        return new F();\n      }\n\n      module.exports = createObject;\n      /***/\n    },\n    /* 51 */\n\n    /***/\n    function (module, exports, __webpack_require__) {\n      \"use strict\";\n      /**\n       * @fileoverview Palette view template\n       * @author NHN. FE Development Team <dl_javascript@nhn.com>\n       */\n\n      var template = __webpack_require__(52);\n\n      module.exports = function (context) {\n        var item = ['<li><input class=\"{{cssPrefix}}palette-button{{isSelected @this}}{{getItemClass @this}}\" type=\"button\"', '{{if isValidRGB @this}}', ' style=\"background-color:{{@this}};color:{{@this}}\"', '{{/if}}', ' title=\"{{@this}}\" value=\"{{@this}}\" /></li>'].join('');\n        var layout = ['<ul class=\"{{cssPrefix}}clearfix\">', '{{each preset}}', item, '{{/each}}', '</ul>', '<div class=\"{{cssPrefix}}clearfix\" style=\"overflow:hidden\">', '<input type=\"button\" class=\"{{cssPrefix}}palette-toggle-slider\" value=\"{{detailTxt}}\" />', '<input type=\"text\" class=\"{{cssPrefix}}palette-hex\" value=\"{{color}}\" maxlength=\"7\" />', '<span class=\"{{cssPrefix}}palette-preview\" style=\"background-color:{{color}};color:{{color}}\">{{color}}</span>', '</div>'].join('\\n');\n        return template(layout, context);\n      };\n      /***/\n\n    },\n    /* 52 */\n\n    /***/\n    function (module, exports, __webpack_require__) {\n      \"use strict\";\n      /**\n       * @fileoverview Convert text by binding expressions with context.\n       * @author NHN FE Development Lab <dl_javascript@nhn.com>\n       */\n\n      var inArray = __webpack_require__(5);\n\n      var forEach = __webpack_require__(2);\n\n      var isArray = __webpack_require__(1);\n\n      var isString = __webpack_require__(11);\n\n      var extend = __webpack_require__(0); // IE8 does not support capture groups.\n\n\n      var EXPRESSION_REGEXP = /{{\\s?|\\s?}}/g;\n      var BRACKET_NOTATION_REGEXP = /^[a-zA-Z0-9_@]+\\[[a-zA-Z0-9_@\"']+\\]$/;\n      var BRACKET_REGEXP = /\\[\\s?|\\s?\\]/;\n      var DOT_NOTATION_REGEXP = /^[a-zA-Z_]+\\.[a-zA-Z_]+$/;\n      var DOT_REGEXP = /\\./;\n      var STRING_NOTATION_REGEXP = /^[\"']\\w+[\"']$/;\n      var STRING_REGEXP = /\"|'/g;\n      var NUMBER_REGEXP = /^-?\\d+\\.?\\d*$/;\n      var EXPRESSION_INTERVAL = 2;\n      var BLOCK_HELPERS = {\n        'if': handleIf,\n        'each': handleEach,\n        'with': handleWith\n      };\n      var isValidSplit = 'a'.split(/a/).length === 3;\n      /**\n       * Split by RegExp. (Polyfill for IE8)\n       * @param {string} text - text to be splitted\\\n       * @param {RegExp} regexp - regular expression\n       * @returns {Array.<string>}\n       */\n\n      var splitByRegExp = function () {\n        if (isValidSplit) {\n          return function (text, regexp) {\n            return text.split(regexp);\n          };\n        }\n\n        return function (text, regexp) {\n          var result = [];\n          var prevIndex = 0;\n          var match, index;\n\n          if (!regexp.global) {\n            regexp = new RegExp(regexp, 'g');\n          }\n\n          match = regexp.exec(text);\n\n          while (match !== null) {\n            index = match.index;\n            result.push(text.slice(prevIndex, index));\n            prevIndex = index + match[0].length;\n            match = regexp.exec(text);\n          }\n\n          result.push(text.slice(prevIndex));\n          return result;\n        };\n      }();\n      /**\n       * Find value in the context by an expression.\n       * @param {string} exp - an expression\n       * @param {object} context - context\n       * @returns {*}\n       * @private\n       */\n      // eslint-disable-next-line complexity\n\n\n      function getValueFromContext(exp, context) {\n        var splitedExps;\n        var value = context[exp];\n\n        if (exp === 'true') {\n          value = true;\n        } else if (exp === 'false') {\n          value = false;\n        } else if (STRING_NOTATION_REGEXP.test(exp)) {\n          value = exp.replace(STRING_REGEXP, '');\n        } else if (BRACKET_NOTATION_REGEXP.test(exp)) {\n          splitedExps = exp.split(BRACKET_REGEXP);\n          value = getValueFromContext(splitedExps[0], context)[getValueFromContext(splitedExps[1], context)];\n        } else if (DOT_NOTATION_REGEXP.test(exp)) {\n          splitedExps = exp.split(DOT_REGEXP);\n          value = getValueFromContext(splitedExps[0], context)[splitedExps[1]];\n        } else if (NUMBER_REGEXP.test(exp)) {\n          value = parseFloat(exp);\n        }\n\n        return value;\n      }\n      /**\n       * Extract elseif and else expressions.\n       * @param {Array.<string>} ifExps - args of if expression\n       * @param {Array.<string>} sourcesInsideBlock - sources inside if block\n       * @returns {object} - exps: expressions of if, elseif, and else / sourcesInsideIf: sources inside if, elseif, and else block.\n       * @private\n       */\n\n\n      function extractElseif(ifExps, sourcesInsideBlock) {\n        var exps = [ifExps];\n        var sourcesInsideIf = [];\n        var otherIfCount = 0;\n        var start = 0; // eslint-disable-next-line complexity\n\n        forEach(sourcesInsideBlock, function (source, index) {\n          if (source.indexOf('if') === 0) {\n            otherIfCount += 1;\n          } else if (source === '/if') {\n            otherIfCount -= 1;\n          } else if (!otherIfCount && (source.indexOf('elseif') === 0 || source === 'else')) {\n            exps.push(source === 'else' ? ['true'] : source.split(' ').slice(1));\n            sourcesInsideIf.push(sourcesInsideBlock.slice(start, index));\n            start = index + 1;\n          }\n        });\n        sourcesInsideIf.push(sourcesInsideBlock.slice(start));\n        return {\n          exps: exps,\n          sourcesInsideIf: sourcesInsideIf\n        };\n      }\n      /**\n       * Helper function for \"if\". \n       * @param {Array.<string>} exps - array of expressions split by spaces\n       * @param {Array.<string>} sourcesInsideBlock - array of sources inside the if block\n       * @param {object} context - context\n       * @returns {string}\n       * @private\n       */\n\n\n      function handleIf(exps, sourcesInsideBlock, context) {\n        var analyzed = extractElseif(exps, sourcesInsideBlock);\n        var result = false;\n        var compiledSource = '';\n        forEach(analyzed.exps, function (exp, index) {\n          result = handleExpression(exp, context);\n\n          if (result) {\n            compiledSource = compile(analyzed.sourcesInsideIf[index], context);\n          }\n\n          return !result;\n        });\n        return compiledSource;\n      }\n      /**\n       * Helper function for \"each\".\n       * @param {Array.<string>} exps - array of expressions split by spaces\n       * @param {Array.<string>} sourcesInsideBlock - array of sources inside the each block\n       * @param {object} context - context\n       * @returns {string}\n       * @private\n       */\n\n\n      function handleEach(exps, sourcesInsideBlock, context) {\n        var collection = handleExpression(exps, context);\n        var additionalKey = isArray(collection) ? '@index' : '@key';\n        var additionalContext = {};\n        var result = '';\n        forEach(collection, function (item, key) {\n          additionalContext[additionalKey] = key;\n          additionalContext['@this'] = item;\n          extend(context, additionalContext);\n          result += compile(sourcesInsideBlock.slice(), context);\n        });\n        return result;\n      }\n      /**\n       * Helper function for \"with ... as\"\n       * @param {Array.<string>} exps - array of expressions split by spaces\n       * @param {Array.<string>} sourcesInsideBlock - array of sources inside the with block\n       * @param {object} context - context\n       * @returns {string}\n       * @private\n       */\n\n\n      function handleWith(exps, sourcesInsideBlock, context) {\n        var asIndex = inArray('as', exps);\n        var alias = exps[asIndex + 1];\n        var result = handleExpression(exps.slice(0, asIndex), context);\n        var additionalContext = {};\n        additionalContext[alias] = result;\n        return compile(sourcesInsideBlock, extend(context, additionalContext)) || '';\n      }\n      /**\n       * Extract sources inside block in place.\n       * @param {Array.<string>} sources - array of sources\n       * @param {number} start - index of start block\n       * @param {number} end - index of end block\n       * @returns {Array.<string>}\n       * @private\n       */\n\n\n      function extractSourcesInsideBlock(sources, start, end) {\n        var sourcesInsideBlock = sources.splice(start + 1, end - start);\n        sourcesInsideBlock.pop();\n        return sourcesInsideBlock;\n      }\n      /**\n       * Handle block helper function\n       * @param {string} helperKeyword - helper keyword (ex. if, each, with)\n       * @param {Array.<string>} sourcesToEnd - array of sources after the starting block\n       * @param {object} context - context\n       * @returns {Array.<string>}\n       * @private\n       */\n\n\n      function handleBlockHelper(helperKeyword, sourcesToEnd, context) {\n        var executeBlockHelper = BLOCK_HELPERS[helperKeyword];\n        var helperCount = 1;\n        var startBlockIndex = 0;\n        var endBlockIndex;\n        var index = startBlockIndex + EXPRESSION_INTERVAL;\n        var expression = sourcesToEnd[index];\n\n        while (helperCount && isString(expression)) {\n          if (expression.indexOf(helperKeyword) === 0) {\n            helperCount += 1;\n          } else if (expression.indexOf('/' + helperKeyword) === 0) {\n            helperCount -= 1;\n            endBlockIndex = index;\n          }\n\n          index += EXPRESSION_INTERVAL;\n          expression = sourcesToEnd[index];\n        }\n\n        if (helperCount) {\n          throw Error(helperKeyword + ' needs {{/' + helperKeyword + '}} expression.');\n        }\n\n        sourcesToEnd[startBlockIndex] = executeBlockHelper(sourcesToEnd[startBlockIndex].split(' ').slice(1), extractSourcesInsideBlock(sourcesToEnd, startBlockIndex, endBlockIndex), context);\n        return sourcesToEnd;\n      }\n      /**\n       * Helper function for \"custom helper\".\n       * If helper is not a function, return helper itself.\n       * @param {Array.<string>} exps - array of expressions split by spaces (first element: helper)\n       * @param {object} context - context\n       * @returns {string}\n       * @private\n       */\n\n\n      function handleExpression(exps, context) {\n        var result = getValueFromContext(exps[0], context);\n\n        if (result instanceof Function) {\n          return executeFunction(result, exps.slice(1), context);\n        }\n\n        return result;\n      }\n      /**\n       * Execute a helper function.\n       * @param {Function} helper - helper function\n       * @param {Array.<string>} argExps - expressions of arguments\n       * @param {object} context - context\n       * @returns {string} - result of executing the function with arguments\n       * @private\n       */\n\n\n      function executeFunction(helper, argExps, context) {\n        var args = [];\n        forEach(argExps, function (exp) {\n          args.push(getValueFromContext(exp, context));\n        });\n        return helper.apply(null, args);\n      }\n      /**\n       * Get a result of compiling an expression with the context.\n       * @param {Array.<string>} sources - array of sources split by regexp of expression.\n       * @param {object} context - context\n       * @returns {Array.<string>} - array of sources that bind with its context\n       * @private\n       */\n\n\n      function compile(sources, context) {\n        var index = 1;\n        var expression = sources[index];\n        var exps, firstExp, result;\n\n        while (isString(expression)) {\n          exps = expression.split(' ');\n          firstExp = exps[0];\n\n          if (BLOCK_HELPERS[firstExp]) {\n            result = handleBlockHelper(firstExp, sources.splice(index, sources.length - index), context);\n            sources = sources.concat(result);\n          } else {\n            sources[index] = handleExpression(exps, context);\n          }\n\n          index += EXPRESSION_INTERVAL;\n          expression = sources[index];\n        }\n\n        return sources.join('');\n      }\n      /**\n       * Convert text by binding expressions with context.\n       * <br>\n       * If expression exists in the context, it will be replaced.\n       * ex) '{{title}}' with context {title: 'Hello!'} is converted to 'Hello!'.\n       * An array or object can be accessed using bracket and dot notation.\n       * ex) '{{odds\\[2\\]}}' with context {odds: \\[1, 3, 5\\]} is converted to '5'.\n       * ex) '{{evens\\[first\\]}}' with context {evens: \\[2, 4\\], first: 0} is converted to '2'.\n       * ex) '{{project\\[\"name\"\\]}}' and '{{project.name}}' with context {project: {name: 'CodeSnippet'}} is converted to 'CodeSnippet'.\n       * <br>\n       * If replaced expression is a function, next expressions will be arguments of the function.\n       * ex) '{{add 1 2}}' with context {add: function(a, b) {return a + b;}} is converted to '3'.\n       * <br>\n       * It has 3 predefined block helpers '{{helper ...}} ... {{/helper}}': 'if', 'each', 'with ... as ...'.\n       * 1) 'if' evaluates conditional statements. It can use with 'elseif' and 'else'.\n       * 2) 'each' iterates an array or object. It provides '@index'(array), '@key'(object), and '@this'(current element).\n       * 3) 'with ... as ...' provides an alias.\n       * @param {string} text - text with expressions\n       * @param {object} context - context\n       * @returns {string} - text that bind with its context\n       * @memberof module:domUtil\n       * @example\n       * var template = require('tui-code-snippet/domUtil/template');\n       * \n       * var source = \n       *     '<h1>'\n       *   +   '{{if isValidNumber title}}'\n       *   +     '{{title}}th'\n       *   +   '{{elseif isValidDate title}}'\n       *   +     'Date: {{title}}'\n       *   +   '{{/if}}'\n       *   + '</h1>'\n       *   + '{{each list}}'\n       *   +   '{{with addOne @index as idx}}'\n       *   +     '<p>{{idx}}: {{@this}}</p>'\n       *   +   '{{/with}}'\n       *   + '{{/each}}';\n       * \n       * var context = {\n       *   isValidDate: function(text) {\n       *     return /^\\d{4}-(0|1)\\d-(0|1|2|3)\\d$/.test(text);\n       *   },\n       *   isValidNumber: function(text) {\n       *     return /^\\d+$/.test(text);\n       *   }\n       *   title: '2019-11-25',\n       *   list: ['Clean the room', 'Wash the dishes'],\n       *   addOne: function(num) {\n       *     return num + 1;\n       *   }\n       * };\n       * \n       * var result = template(source, context);\n       * console.log(result); // <h1>Date: 2019-11-25</h1><p>1: Clean the room</p><p>2: Wash the dishes</p>\n       */\n\n\n      function template(text, context) {\n        return compile(splitByRegExp(text, EXPRESSION_REGEXP), context);\n      }\n\n      module.exports = template;\n      /***/\n    },\n    /* 53 */\n\n    /***/\n    function (module, exports, __webpack_require__) {\n      \"use strict\";\n      /**\n       * @fileoverview Get mouse position from mouse event\n       * @author NHN FE Development Lab <dl_javascript@nhn.com>\n       */\n\n      var isArray = __webpack_require__(1);\n      /**\n       * Get mouse position from mouse event\n       *\n       * If supplied relatveElement parameter then return relative position based on\n       *  element\n       * @param {(MouseEvent|object|number[])} position - mouse position object\n       * @param {HTMLElement} relativeElement HTML element that calculate relative\n       *  position\n       * @returns {number[]} mouse position\n       * @memberof module:domEvent\n       */\n\n\n      function getMousePosition(position, relativeElement) {\n        var positionArray = isArray(position);\n        var clientX = positionArray ? position[0] : position.clientX;\n        var clientY = positionArray ? position[1] : position.clientY;\n        var rect;\n\n        if (!relativeElement) {\n          return [clientX, clientY];\n        }\n\n        rect = relativeElement.getBoundingClientRect();\n        return [clientX - rect.left - relativeElement.clientLeft, clientY - rect.top - relativeElement.clientTop];\n      }\n\n      module.exports = getMousePosition;\n      /***/\n    },\n    /* 54 */\n\n    /***/\n    function (module, exports, __webpack_require__) {\n      \"use strict\";\n      /**\n       * @fileoverview Find parent element recursively\n       * @author NHN FE Development Lab <dl_javascript@nhn.com>\n       */\n\n      var matches = __webpack_require__(55);\n      /**\n       * Find parent element recursively\n       * @param {HTMLElement} element - base element to start find\n       * @param {string} selector - selector string for find\n       * @returns {HTMLElement} - element finded or null\n       * @memberof module:domUtil\n       */\n\n\n      function closest(element, selector) {\n        var parent = element.parentNode;\n\n        if (matches(element, selector)) {\n          return element;\n        }\n\n        while (parent && parent !== document) {\n          if (matches(parent, selector)) {\n            return parent;\n          }\n\n          parent = parent.parentNode;\n        }\n\n        return null;\n      }\n\n      module.exports = closest;\n      /***/\n    },\n    /* 55 */\n\n    /***/\n    function (module, exports, __webpack_require__) {\n      \"use strict\";\n      /**\n       * @fileoverview Check element match selector\n       * @author NHN FE Development Lab <dl_javascript@nhn.com>\n       */\n\n      var inArray = __webpack_require__(5);\n\n      var toArray = __webpack_require__(56);\n\n      var elProto = Element.prototype;\n\n      var matchSelector = elProto.matches || elProto.webkitMatchesSelector || elProto.mozMatchesSelector || elProto.msMatchesSelector || function (selector) {\n        var doc = this.document || this.ownerDocument;\n        return inArray(this, toArray(doc.querySelectorAll(selector))) > -1;\n      };\n      /**\n       * Check element match selector\n       * @param {HTMLElement} element - element to check\n       * @param {string} selector - selector to check\n       * @returns {boolean} is selector matched to element?\n       * @memberof module:domUtil\n       */\n\n\n      function matches(element, selector) {\n        return matchSelector.call(element, selector);\n      }\n\n      module.exports = matches;\n      /***/\n    },\n    /* 56 */\n\n    /***/\n    function (module, exports, __webpack_require__) {\n      \"use strict\";\n      /**\n       * @fileoverview Transform the Array-like object to Array.\n       * @author NHN FE Development Lab <dl_javascript@nhn.com>\n       */\n\n      var forEachArray = __webpack_require__(6);\n      /**\n       * Transform the Array-like object to Array.\n       * In low IE (below 8), Array.prototype.slice.call is not perfect. So, try-catch statement is used.\n       * @param {*} arrayLike Array-like object\n       * @returns {Array} Array\n       * @memberof module:collection\n       * @example\n       * var toArray = require('tui-code-snippet/collection/toArray'); // node, commonjs\n       *\n       * var arrayLike = {\n       *     0: 'one',\n       *     1: 'two',\n       *     2: 'three',\n       *     3: 'four',\n       *     length: 4\n       * };\n       * var result = toArray(arrayLike);\n       *\n       * alert(result instanceof Array); // true\n       * alert(result); // one,two,three,four\n       */\n\n\n      function toArray(arrayLike) {\n        var arr;\n\n        try {\n          arr = Array.prototype.slice.call(arrayLike);\n        } catch (e) {\n          arr = [];\n          forEachArray(arrayLike, function (value) {\n            arr.push(value);\n          });\n        }\n\n        return arr;\n      }\n\n      module.exports = toArray;\n      /***/\n    },\n    /* 57 */\n\n    /***/\n    function (module, exports, __webpack_require__) {\n      \"use strict\";\n      /* WEBPACK VAR INJECTION */\n\n      (function (global) {\n        /**\n        * @fileoverview Slider template\n        * @author NHN. FE Development Team <dl_javascript@nhn.com>\n        */\n        var isOldBrowser = __webpack_require__(4).isOldBrowser;\n\n        var layout = ['<div class=\"{{cssPrefix}}slider-left {{cssPrefix}}slider-part\">{{slider}}</div>', '<div class=\"{{cssPrefix}}slider-right {{cssPrefix}}slider-part\">{{huebar}}</div>'].join('\\n');\n        var SVGSlider = ['<svg class=\"{{cssPrefix}}svg {{cssPrefix}}svg-slider\">', '<defs>', '<linearGradient id=\"{{cssPrefix}}svg-fill-color-{{id}}\" x1=\"0%\" y1=\"0%\" x2=\"100%\" y2=\"0%\">', '<stop offset=\"0%\" stop-color=\"rgb(255,255,255)\" />', '<stop class=\"{{cssPrefix}}slider-basecolor\" offset=\"100%\" stop-color=\"rgb(255,0,0)\" />', '</linearGradient>', '<linearGradient id=\"{{cssPrefix}}svn-fill-black-{{id}}\" x1=\"0%\" y1=\"0%\" x2=\"0%\" y2=\"100%\">', '<stop offset=\"0%\" style=\"stop-color:rgb(0,0,0);stop-opacity:0\" />', '<stop offset=\"100%\" style=\"stop-color:rgb(0,0,0);stop-opacity:1\" />', '</linearGradient>', '</defs>', '<rect width=\"100%\" height=\"100%\" fill=\"url(#{{cssPrefix}}svg-fill-color-{{id}})\"></rect>', '<rect width=\"100%\" height=\"100%\" fill=\"url(#{{cssPrefix}}svn-fill-black-{{id}})\"></rect>', '<path transform=\"translate(0,0)\" class=\"{{cssPrefix}}slider-handle\" d=\"M0 7.5 L15 7.5 M7.5 15 L7.5 0 M2 7 a5.5 5.5 0 1 1 0 1 Z\" stroke=\"black\" stroke-width=\"0.75\" fill=\"none\" />', '</svg>'].join('\\n');\n        var VMLSlider = ['<div class=\"{{cssPrefix}}vml-slider\">', '<v:rect strokecolor=\"none\" class=\"{{cssPrefix}}vml {{cssPrefix}}vml-slider-bg\">', '<v:fill class=\"{{cssPrefix}}vml {{cssPrefix}}slider-basecolor\" type=\"gradient\" method=\"none\" color=\"#ff0000\" color2=\"#fff\" angle=\"90\" />', '</v:rect>', '<v:rect strokecolor=\"#ccc\" class=\"{{cssPrefix}}vml {{cssPrefix}}vml-slider-bg\">', '<v:fill type=\"gradient\" method=\"none\" color=\"black\" color2=\"white\" o:opacity2=\"0%\" class=\"{{cssPrefix}}vml\" />', '</v:rect>', '<v:shape class=\"{{cssPrefix}}vml {{cssPrefix}}slider-handle\" coordsize=\"1 1\" style=\"width:1px;height:1px;\"' + 'path=\"m 0,7 l 14,7 m 7,14 l 7,0 ar 12,12 2,2 z\" filled=\"false\" stroked=\"true\" />', '</div>'].join('\\n');\n        var SVGHuebar = ['<svg class=\"{{cssPrefix}}svg {{cssPrefix}}svg-huebar\">', '<defs>', '<linearGradient id=\"g-{{id}}\" x1=\"0%\" y1=\"0%\" x2=\"0%\" y2=\"100%\">', '<stop offset=\"0%\" stop-color=\"rgb(255,0,0)\" />', '<stop offset=\"16.666%\" stop-color=\"rgb(255,255,0)\" />', '<stop offset=\"33.333%\" stop-color=\"rgb(0,255,0)\" />', '<stop offset=\"50%\" stop-color=\"rgb(0,255,255)\" />', '<stop offset=\"66.666%\" stop-color=\"rgb(0,0,255)\" />', '<stop offset=\"83.333%\" stop-color=\"rgb(255,0,255)\" />', '<stop offset=\"100%\" stop-color=\"rgb(255,0,0)\" />', '</linearGradient>', '</defs>', '<rect width=\"18px\" height=\"100%\" fill=\"url(#g-{{id}})\"></rect>', '<path transform=\"translate(-6,-3)\" class=\"{{cssPrefix}}huebar-handle\" d=\"M0 0 L4 4 L0 8 L0 0 Z\" fill=\"black\" stroke=\"none\" />', '</svg>'].join('\\n');\n        var VMLHuebar = ['<div class=\"{{cssPrefix}}vml-huebar\">', '<v:rect strokecolor=\"#ccc\" class=\"{{cssPrefix}}vml {{cssPrefix}}vml-huebar-bg\">', '<v:fill type=\"gradient\" method=\"none\" colors=\"' + '0% rgb(255,0,0), 16.666% rgb(255,255,0), 33.333% rgb(0,255,0), 50% rgb(0,255,255), 66.666% rgb(0,0,255), 83.333% rgb(255,0,255), 100% rgb(255,0,0)' + '\" angle=\"180\" class=\"{{cssPrefix}}vml\" />', '</v:rect>', '<v:shape class=\"{{cssPrefix}}vml {{cssPrefix}}huebar-handle\" coordsize=\"1 1\" style=\"width:1px;height:1px;position:absolute;z-index:1;right:22px;top:-3px;\"' + 'path=\"m 0,0 l 4,4 l 0,8 l 0,0 z\" filled=\"true\" fillcolor=\"black\" stroked=\"false\" />', '</div>'].join('\\n');\n\n        if (isOldBrowser) {\n          global.document.namespaces.add('v', 'urn:schemas-microsoft-com:vml');\n        }\n\n        module.exports = {\n          layout: layout,\n          slider: isOldBrowser ? VMLSlider : SVGSlider,\n          huebar: isOldBrowser ? VMLHuebar : SVGHuebar\n        };\n        /* WEBPACK VAR INJECTION */\n      }).call(this, __webpack_require__(25));\n      /***/\n    }\n    /******/\n    ])\n  );\n});","map":{"version":3,"sources":["C:/Users/kkwan_000/Desktop/git/2017110269/minsung/node_modules/tui-color-picker/dist/tui-color-picker.js"],"names":["webpackUniversalModuleDefinition","root","factory","exports","module","define","amd","window","modules","installedModules","__webpack_require__","moduleId","i","l","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","getDefault","getModuleExports","object","property","prototype","hasOwnProperty","p","s","extend","target","objects","hasOwnProp","source","prop","len","arguments","length","isArray","obj","Array","forEachArray","forEachOwnProperties","forEach","iteratee","context","isUndefined","undefined","browser","sendHostname","currentId","utils","getLength","map","result","push","apply","filter","arr","elem","generateId","isOldBrowser","msie","version","sendHostName","inArray","searchElement","array","startIndex","indexOf","index","addClass","isFunction","isNumber","domUtil","Collection","util","View","options","container","id","appendHTMLElement","childs","view","parent","addChild","fn","add","removeChild","items","remove","render","each","childView","recursive","skipThis","resize","args","slice","_onResize","_beforeDestroy","_destroy","innerHTML","destroy","isChildView","clear","getViewBound","bound","getBoundingClientRect","x","left","y","top","width","right","height","bottom","tagName","className","el","document","createElement","appendChild","body","isExisty","isString","isObject","R_EVENTNAME_SPLIT","CustomEvents","events","contexts","mixin","func","_getHandlerItem","handler","item","_safeEvent","eventName","byName","_safeContext","_indexOfContext","ctx","_memorizeContext","_forgetContext","contextIndex","splice","_bindEvent","on","self","split","once","onceHandler","off","_spliceMatches","predicate","_matchHandler","needRemove","_matchContext","_matchHandlerAndContext","matchHandler","matchContext","_offByEventName","andByHandler","handlerItems","_offByHandler","_offByObject","matchFunc","fire","invoke","hasListener","getListenerLength","String","hexRX","colorUtil","leadingZero","number","zero","isValidRGB","str","test","hexToRGB","hexStr","g","b","substring","parseInt","substr","rgbToHEX","toString","rgbToHSV","max","min","h","v","Math","round","hsvToRGB","f","q","floor","Function","safeEvent","element","types","type","bindEvent","eventHandler","e","event","addEventListener","attachEvent","memorizeHandler","wrappedHandler","existInEvents","preventDefault","returnValue","convertToKebabCase","replace","match","toLowerCase","unbindEvent","removeHandler","idx","removeEventListener","detachEvent","createObject","inherit","subType","superType","constructor","getItemIDFn","getItemID","and","filters","cnt","or","merge","firstCollection","newItems","merged","col","_id","ownItems","removed","itemToRemove","has","isFilter","doWhenHas","find","groupBy","groupFunc","keyIsFunc","collection","baseValue","k","single","sort","compareFunction","toArray","isNull","param","chrome","firefox","safari","edge","others","navigator","detectBrowser","nav","appName","userAgent","rIE","rIE11","rEdge","versionRegex","tmp","detector","Microsoft_Internet_Explorer","detectedVersion","parseFloat","Netscape","detected","exec","getClass","baseVal","global","disableTextSelection","enableTextSelection","getMouseButton","getTarget","Drag","_onMouseDown","distance","_isMoved","_distance","_dragStartFired","_dragStartEventData","_toggleDragEvent","toBind","mousemove","_onMouseMove","mouseup","_onMouseUp","_getEventData","mouseEvent","originEvent","mouseDownEvent","mouseMoveEvent","mouseUpEvent","EVENT_KEY","handlers","testCSSProp","props","style","documentElement","srcElement","hasClass","tmpl","Palette","cssPrefix","preset","detailTxt","_onClick","clickEvent","eventData","color","_onChange","changeEvent","_toggleEvent","handleEvent","hexTextBox","querySelector","html","getItemClass","itemColor","isSelected","cssClass","origin","classList","contains","getMousePosition","closest","svgvml","COLORSLIDER_POS_LIMIT_RANGE","HUEBAR_POS_LIMIT_RANGE","HUE_WHEEL_MAX","Slider","display","_dragDataCache","sliderHandleElement","huebarHandleElement","baseColorElement","drag","dragStart","_onDragStart","_onDrag","dragEnd","_onDragEnd","click","toggle","onOff","isVisible","colorStr","layout","rgb","hsv","slider","huebar","moveHue","moveSaturationAndValue","_moveColorSliderHandle","newLeft","newTop","silent","handle","handleColor","setTranslateXY","setStrokeColor","getRGB","saturation","absMin","maxValue","abs","_moveColorSliderByPosition","offset","getSaturationAndValue","position","getTranslateXY","_moveHueHandle","hueHandleElement","newGradientColor","setTranslateY","getHue","setGradientColorStop","degree","_moveHueByPosition","getHSV","sv","concat","_prepareColorSliderForMouseEvent","sliderPart","cache","isColorSlider","parentElement","mousePos","dragStartEvent","dragEvent","PARSE_TRANSLATE_NUM_REGEX","SVG_HUE_HANDLE_RIGHT_POS","temp","getAttribute","setAttribute","strokecolor","colorPicker","colorutil","imagePing","ms7days","isExpired","date","now","Date","getTime","trackingId","url","hostname","location","hitType","eventCategory","applicationKeyForStorage","localStorage","getItem","tui","usageStatistics","setItem","setTimeout","readyState","tid","cid","dp","dh","ec","trackingInfo","trackingElement","queryString","src","setClassName","newClass","cls","join","Number","setData","SUPPORT_SELECTSTART","KEY_PREVIOUS_USER_SELECT","userSelectProperty","dataset","getData","removeData","removeAttribute","primaryButton","secondaryButton","wheelButton","getMouseButtonIE8AndEarlier","button","Layout","ColorPicker","Error","palette","_selectColor","_onSelectColorInPalette","_toggleSlider","_onToggleSlider","_onSelectColorInSlider","selectColorEventData","opt","setColor","getColor","isShow","F","template","EXPRESSION_REGEXP","BRACKET_NOTATION_REGEXP","BRACKET_REGEXP","DOT_NOTATION_REGEXP","DOT_REGEXP","STRING_NOTATION_REGEXP","STRING_REGEXP","NUMBER_REGEXP","EXPRESSION_INTERVAL","BLOCK_HELPERS","handleIf","handleEach","handleWith","isValidSplit","splitByRegExp","text","regexp","prevIndex","RegExp","getValueFromContext","exp","splitedExps","extractElseif","ifExps","sourcesInsideBlock","exps","sourcesInsideIf","otherIfCount","start","analyzed","compiledSource","handleExpression","compile","additionalKey","additionalContext","asIndex","alias","extractSourcesInsideBlock","sources","end","pop","handleBlockHelper","helperKeyword","sourcesToEnd","executeBlockHelper","helperCount","startBlockIndex","endBlockIndex","expression","executeFunction","helper","argExps","firstExp","relativeElement","positionArray","clientX","clientY","rect","clientLeft","clientTop","matches","selector","parentNode","elProto","Element","matchSelector","webkitMatchesSelector","mozMatchesSelector","msMatchesSelector","doc","ownerDocument","querySelectorAll","arrayLike","SVGSlider","VMLSlider","SVGHuebar","VMLHuebar","namespaces"],"mappings":"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","sourcesContent":["/*!\n * TOAST UI Color Picker\n * @version 2.2.6\n * @author NHN FE Development Team <dl_javascript@nhn.com>\n * @license MIT\n */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"colorPicker\"] = factory();\n\telse\n\t\troot[\"tui\"] = root[\"tui\"] || {}, root[\"tui\"][\"colorPicker\"] = factory();\n})(window, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// define __esModule on exports\n/******/ \t__webpack_require__.r = function(exports) {\n/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t}\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t};\n/******/\n/******/ \t// create a fake namespace object\n/******/ \t// mode & 1: value is a module id, require it\n/******/ \t// mode & 2: merge all properties of value into the ns\n/******/ \t// mode & 4: return value when already ns object\n/******/ \t// mode & 8|1: behave like require\n/******/ \t__webpack_require__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __webpack_require__(value);\n/******/ \t\tif(mode & 8) return value;\n/******/ \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n/******/ \t\tvar ns = Object.create(null);\n/******/ \t\t__webpack_require__.r(ns);\n/******/ \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n/******/ \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n/******/ \t\treturn ns;\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"dist\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 33);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * @fileoverview Extend the target object from other objects.\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n\n\n\n/**\n * @module object\n */\n\n/**\n * Extend the target object from other objects.\n * @param {object} target - Object that will be extended\n * @param {...object} objects - Objects as sources\n * @returns {object} Extended object\n * @memberof module:object\n */\nfunction extend(target, objects) { // eslint-disable-line no-unused-vars\n  var hasOwnProp = Object.prototype.hasOwnProperty;\n  var source, prop, i, len;\n\n  for (i = 1, len = arguments.length; i < len; i += 1) {\n    source = arguments[i];\n    for (prop in source) {\n      if (hasOwnProp.call(source, prop)) {\n        target[prop] = source[prop];\n      }\n    }\n  }\n\n  return target;\n}\n\nmodule.exports = extend;\n\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * @fileoverview Check whether the given variable is an instance of Array or not.\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n\n\n\n/**\n * Check whether the given variable is an instance of Array or not.\n * If the given variable is an instance of Array, return true.\n * @param {*} obj - Target for checking\n * @returns {boolean} Is array instance?\n * @memberof module:type\n */\nfunction isArray(obj) {\n  return obj instanceof Array;\n}\n\nmodule.exports = isArray;\n\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * @fileoverview Execute the provided callback once for each property of object(or element of array) which actually exist.\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n\n\n\nvar isArray = __webpack_require__(1);\nvar forEachArray = __webpack_require__(6);\nvar forEachOwnProperties = __webpack_require__(7);\n\n/**\n * @module collection\n */\n\n/**\n * Execute the provided callback once for each property of object(or element of array) which actually exist.\n * If the object is Array-like object(ex-arguments object), It needs to transform to Array.(see 'ex2' of example).\n * If the callback function returns false, the loop will be stopped.\n * Callback function(iteratee) is invoked with three arguments:\n *  1) The value of the property(or The value of the element)\n *  2) The name of the property(or The index of the element)\n *  3) The object being traversed\n * @param {Object} obj The object that will be traversed\n * @param {function} iteratee Callback function\n * @param {Object} [context] Context(this) of callback function\n * @memberof module:collection\n * @example\n * var forEach = require('tui-code-snippet/collection/forEach'); // node, commonjs\n *\n * var sum = 0;\n *\n * forEach([1,2,3], function(value){\n *     sum += value;\n * });\n * alert(sum); // 6\n *\n * // In case of Array-like object\n * var array = Array.prototype.slice.call(arrayLike); // change to array\n * forEach(array, function(value){\n *     sum += value;\n * });\n */\nfunction forEach(obj, iteratee, context) {\n  if (isArray(obj)) {\n    forEachArray(obj, iteratee, context);\n  } else {\n    forEachOwnProperties(obj, iteratee, context);\n  }\n}\n\nmodule.exports = forEach;\n\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * @fileoverview Check whether the given variable is undefined or not.\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n\n\n\n/**\n * Check whether the given variable is undefined or not.\n * If the given variable is undefined, returns true.\n * @param {*} obj - Target for checking\n * @returns {boolean} Is undefined?\n * @memberof module:type\n */\nfunction isUndefined(obj) {\n  return obj === undefined; // eslint-disable-line no-undefined\n}\n\nmodule.exports = isUndefined;\n\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * @fileoverview Utils for ColorPicker component\n * @author NHN. FE dev Lab. <dl_javascript@nhn.com>\n */\n\n\nvar browser = __webpack_require__(22);\n\nvar forEach = __webpack_require__(2);\n\nvar forEachArray = __webpack_require__(6);\n\nvar forEachOwnProperties = __webpack_require__(7);\n\nvar sendHostname = __webpack_require__(37);\n\nvar currentId = 0;\n/**\n * Utils\n * @namespace util\n * @ignore\n */\n\nvar utils = {\n  /**\n   * Get the number of properties in the object.\n   * @param {Object} obj - object\n   * @returns {number}\n   */\n  getLength: function (obj) {\n    var length = 0;\n    forEachOwnProperties(obj, function () {\n      length += 1;\n    });\n    return length;\n  },\n\n  /**\n   * Constructs a new array by executing the provided callback function.\n   * @param {Object|Array} obj - object or array to be traversed\n   * @param {function} iteratee - callback function\n   * @param {Object} context - context of callback function\n   * @returns {Array}\n   */\n  map: function (obj, iteratee, context) {\n    var result = [];\n    forEach(obj, function () {\n      result.push(iteratee.apply(context || null, arguments));\n    });\n    return result;\n  },\n\n  /**\n   * Construct a new array with elements that pass the test by the provided callback function.\n   * @param {Array|NodeList|Arguments} arr - array to be traversed\n   * @param {function} iteratee - callback function\n   * @param {Object} context - context of callback function\n   * @returns {Array}\n   */\n  filter: function (arr, iteratee, context) {\n    var result = [];\n    forEachArray(arr, function (elem) {\n      if (iteratee.apply(context || null, arguments)) {\n        result.push(elem);\n      }\n    });\n    return result;\n  },\n\n  /**\n   * Create an unique id for a color-picker instance.\n   * @returns {number}\n   */\n  generateId: function () {\n    currentId += 1;\n    return currentId;\n  },\n\n  /**\n   * True when browser is below IE8.\n   */\n  isOldBrowser: function () {\n    return browser.msie && browser.version < 9;\n  }(),\n\n  /**\n   * send host name\n   * @ignore\n   */\n  sendHostName: function () {\n    sendHostname('color-picker', 'UA-129987462-1');\n  }\n};\nmodule.exports = utils;\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* eslint-disable complexity */\n/**\n * @fileoverview Returns the first index at which a given element can be found in the array.\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n\n\n\nvar isArray = __webpack_require__(1);\n\n/**\n * @module array\n */\n\n/**\n * Returns the first index at which a given element can be found in the array\n * from start index(default 0), or -1 if it is not present.\n * It compares searchElement to elements of the Array using strict equality\n * (the same method used by the ===, or triple-equals, operator).\n * @param {*} searchElement Element to locate in the array\n * @param {Array} array Array that will be traversed.\n * @param {number} startIndex Start index in array for searching (default 0)\n * @returns {number} the First index at which a given element, or -1 if it is not present\n * @memberof module:array\n * @example\n * var inArray = require('tui-code-snippet/array/inArray'); // node, commonjs\n *\n * var arr = ['one', 'two', 'three', 'four'];\n * var idx1 = inArray('one', arr, 3); // -1\n * var idx2 = inArray('one', arr); // 0\n */\nfunction inArray(searchElement, array, startIndex) {\n  var i;\n  var length;\n  startIndex = startIndex || 0;\n\n  if (!isArray(array)) {\n    return -1;\n  }\n\n  if (Array.prototype.indexOf) {\n    return Array.prototype.indexOf.call(array, searchElement, startIndex);\n  }\n\n  length = array.length;\n  for (i = startIndex; startIndex >= 0 && i < length; i += 1) {\n    if (array[i] === searchElement) {\n      return i;\n    }\n  }\n\n  return -1;\n}\n\nmodule.exports = inArray;\n\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * @fileoverview Execute the provided callback once for each element present in the array(or Array-like object) in ascending order.\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n\n\n\n/**\n * Execute the provided callback once for each element present\n * in the array(or Array-like object) in ascending order.\n * If the callback function returns false, the loop will be stopped.\n * Callback function(iteratee) is invoked with three arguments:\n *  1) The value of the element\n *  2) The index of the element\n *  3) The array(or Array-like object) being traversed\n * @param {Array|Arguments|NodeList} arr The array(or Array-like object) that will be traversed\n * @param {function} iteratee Callback function\n * @param {Object} [context] Context(this) of callback function\n * @memberof module:collection\n * @example\n * var forEachArray = require('tui-code-snippet/collection/forEachArray'); // node, commonjs\n *\n * var sum = 0;\n *\n * forEachArray([1,2,3], function(value){\n *     sum += value;\n * });\n * alert(sum); // 6\n */\nfunction forEachArray(arr, iteratee, context) {\n  var index = 0;\n  var len = arr.length;\n\n  context = context || null;\n\n  for (; index < len; index += 1) {\n    if (iteratee.call(context, arr[index], index, arr) === false) {\n      break;\n    }\n  }\n}\n\nmodule.exports = forEachArray;\n\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * @fileoverview Execute the provided callback once for each property of object which actually exist.\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n\n\n\n/**\n * Execute the provided callback once for each property of object which actually exist.\n * If the callback function returns false, the loop will be stopped.\n * Callback function(iteratee) is invoked with three arguments:\n *  1) The value of the property\n *  2) The name of the property\n *  3) The object being traversed\n * @param {Object} obj The object that will be traversed\n * @param {function} iteratee  Callback function\n * @param {Object} [context] Context(this) of callback function\n * @memberof module:collection\n * @example\n * var forEachOwnProperties = require('tui-code-snippet/collection/forEachOwnProperties'); // node, commonjs\n *\n * var sum = 0;\n *\n * forEachOwnProperties({a:1,b:2,c:3}, function(value){\n *     sum += value;\n * });\n * alert(sum); // 6\n */\nfunction forEachOwnProperties(obj, iteratee, context) {\n  var key;\n\n  context = context || null;\n\n  for (key in obj) {\n    if (obj.hasOwnProperty(key)) {\n      if (iteratee.call(context, obj[key], key, obj) === false) {\n        break;\n      }\n    }\n  }\n}\n\nmodule.exports = forEachOwnProperties;\n\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * @fileoverview The base class of views.\n * @author NHN. FE Development Team <dl_javascript@nhn.com>\n */\n\n\nvar addClass = __webpack_require__(39);\n\nvar isFunction = __webpack_require__(13);\n\nvar isNumber = __webpack_require__(41);\n\nvar isUndefined = __webpack_require__(3);\n\nvar domUtil = __webpack_require__(9);\n\nvar Collection = __webpack_require__(19);\n\nvar util = __webpack_require__(4);\n/**\n * Base class of views.\n *\n * All views create own container element inside supplied container element.\n * @constructor\n * @param {options} options The object for describe view's specs.\n * @param {HTMLElement} container Default container element for view. you can use this element for this.container syntax.\n * @ignore\n */\n\n\nfunction View(options, container) {\n  var id = util.generateId();\n  options = options || {};\n\n  if (isUndefined(container)) {\n    container = domUtil.appendHTMLElement('div');\n  }\n\n  addClass(container, 'tui-view-' + id);\n  /**\n   * unique id\n   * @type {number}\n   */\n\n  this.id = id;\n  /**\n   * base element of view.\n   * @type {HTMLDIVElement}\n   */\n\n  this.container = container;\n  /**\n   * child views.\n   * @type {Collection}\n   */\n\n  this.childs = new Collection(function (view) {\n    return view.id;\n  });\n  /**\n   * parent view instance.\n   * @type {View}\n   */\n\n  this.parent = null;\n}\n/**\n * Add child views.\n * @param {View} view The view instance to add.\n * @param {function} [fn] Function for invoke before add. parent view class is supplied first arguments.\n */\n\n\nView.prototype.addChild = function (view, fn) {\n  if (fn) {\n    fn.call(view, this);\n  } // add parent view\n\n\n  view.parent = this;\n  this.childs.add(view);\n};\n/**\n * Remove added child view.\n * @param {(number|View)} id View id or instance itself to remove.\n * @param {function} [fn] Function for invoke before remove. parent view class is supplied first arguments.\n */\n\n\nView.prototype.removeChild = function (id, fn) {\n  var view = isNumber(id) ? this.childs.items[id] : id;\n\n  if (fn) {\n    fn.call(view, this);\n  }\n\n  this.childs.remove(view.id);\n};\n/**\n * Render view recursively.\n */\n\n\nView.prototype.render = function () {\n  this.childs.each(function (childView) {\n    childView.render();\n  });\n};\n/**\n * Invoke function recursively.\n * @param {function} fn - function to invoke child view recursively\n * @param {boolean} [skipThis=false] - set true then skip invoke with this(root) view.\n */\n\n\nView.prototype.recursive = function (fn, skipThis) {\n  if (!isFunction(fn)) {\n    return;\n  }\n\n  if (!skipThis) {\n    fn(this);\n  }\n\n  this.childs.each(function (childView) {\n    childView.recursive(fn);\n  });\n};\n/**\n * Resize view recursively to parent.\n */\n\n\nView.prototype.resize = function () {\n  var args = Array.prototype.slice.call(arguments);\n  var parent = this.parent;\n\n  while (parent) {\n    if (isFunction(parent._onResize)) {\n      parent._onResize.apply(parent, args);\n    }\n\n    parent = parent.parent;\n  }\n};\n/**\n * Invoking method before destroying.\n */\n\n\nView.prototype._beforeDestroy = function () {};\n/**\n * Clear properties\n */\n\n\nView.prototype._destroy = function () {\n  this._beforeDestroy();\n\n  this.container.innerHTML = '';\n  this.id = this.parent = this.childs = this.container = null;\n};\n/**\n * Destroy child view recursively.\n * @param {boolean} isChildView - Whether it is the child view or not\n */\n\n\nView.prototype.destroy = function (isChildView) {\n  if (this.childs) {\n    this.childs.each(function (childView) {\n      childView.destroy(true);\n\n      childView._destroy();\n    });\n    this.childs.clear();\n  }\n\n  if (isChildView) {\n    return;\n  }\n\n  this._destroy();\n};\n/**\n * Calculate view's container element bound.\n * @returns {object} The bound of container element.\n */\n\n\nView.prototype.getViewBound = function () {\n  var bound = this.container.getBoundingClientRect();\n  return {\n    x: bound.left,\n    y: bound.top,\n    width: bound.right - bound.left,\n    height: bound.bottom - bound.top\n  };\n};\n\nmodule.exports = View;\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * @fileoverview Utility modules for manipulate DOM elements.\n * @author NHN. FE Development Team <dl_javascript@nhn.com>\n */\n\n\nvar domUtil = {\n  /**\n   * Create DOM element and return it.\n   * @param {string} tagName Tag name to append.\n   * @param {HTMLElement} [container] HTML element will be parent to created element.\n   * if not supplied, will use **document.body**\n   * @param {string} [className] Design class names to appling created element.\n   * @returns {HTMLElement} HTML element created.\n   */\n  appendHTMLElement: function (tagName, container, className) {\n    var el = document.createElement(tagName);\n    el.className = className || '';\n\n    if (container) {\n      container.appendChild(el);\n    } else {\n      document.body.appendChild(el);\n    }\n\n    return el;\n  }\n};\nmodule.exports = domUtil;\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * @fileoverview This module provides some functions for custom events. And it is implemented in the observer design pattern.\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n\n\n\nvar extend = __webpack_require__(0);\nvar isExisty = __webpack_require__(20);\nvar isString = __webpack_require__(11);\nvar isObject = __webpack_require__(21);\nvar isArray = __webpack_require__(1);\nvar isFunction = __webpack_require__(13);\nvar forEach = __webpack_require__(2);\n\nvar R_EVENTNAME_SPLIT = /\\s+/g;\n\n/**\n * @class\n * @example\n * // node, commonjs\n * var CustomEvents = require('tui-code-snippet/customEvents/customEvents');\n */\nfunction CustomEvents() {\n  /**\n     * @type {HandlerItem[]}\n     */\n  this.events = null;\n\n  /**\n     * only for checking specific context event was binded\n     * @type {object[]}\n     */\n  this.contexts = null;\n}\n\n/**\n * Mixin custom events feature to specific constructor\n * @param {function} func - constructor\n * @example\n * var CustomEvents = require('tui-code-snippet/customEvents/customEvents'); // node, commonjs\n *\n * var model;\n * function Model() {\n *     this.name = '';\n * }\n * CustomEvents.mixin(Model);\n *\n * model = new Model();\n * model.on('change', function() { this.name = 'model'; }, this);\n * model.fire('change');\n * alert(model.name); // 'model';\n */\nCustomEvents.mixin = function(func) {\n  extend(func.prototype, CustomEvents.prototype);\n};\n\n/**\n * Get HandlerItem object\n * @param {function} handler - handler function\n * @param {object} [context] - context for handler\n * @returns {HandlerItem} HandlerItem object\n * @private\n */\nCustomEvents.prototype._getHandlerItem = function(handler, context) {\n  var item = {handler: handler};\n\n  if (context) {\n    item.context = context;\n  }\n\n  return item;\n};\n\n/**\n * Get event object safely\n * @param {string} [eventName] - create sub event map if not exist.\n * @returns {(object|array)} event object. if you supplied `eventName`\n *  parameter then make new array and return it\n * @private\n */\nCustomEvents.prototype._safeEvent = function(eventName) {\n  var events = this.events;\n  var byName;\n\n  if (!events) {\n    events = this.events = {};\n  }\n\n  if (eventName) {\n    byName = events[eventName];\n\n    if (!byName) {\n      byName = [];\n      events[eventName] = byName;\n    }\n\n    events = byName;\n  }\n\n  return events;\n};\n\n/**\n * Get context array safely\n * @returns {array} context array\n * @private\n */\nCustomEvents.prototype._safeContext = function() {\n  var context = this.contexts;\n\n  if (!context) {\n    context = this.contexts = [];\n  }\n\n  return context;\n};\n\n/**\n * Get index of context\n * @param {object} ctx - context that used for bind custom event\n * @returns {number} index of context\n * @private\n */\nCustomEvents.prototype._indexOfContext = function(ctx) {\n  var context = this._safeContext();\n  var index = 0;\n\n  while (context[index]) {\n    if (ctx === context[index][0]) {\n      return index;\n    }\n\n    index += 1;\n  }\n\n  return -1;\n};\n\n/**\n * Memorize supplied context for recognize supplied object is context or\n *  name: handler pair object when off()\n * @param {object} ctx - context object to memorize\n * @private\n */\nCustomEvents.prototype._memorizeContext = function(ctx) {\n  var context, index;\n\n  if (!isExisty(ctx)) {\n    return;\n  }\n\n  context = this._safeContext();\n  index = this._indexOfContext(ctx);\n\n  if (index > -1) {\n    context[index][1] += 1;\n  } else {\n    context.push([ctx, 1]);\n  }\n};\n\n/**\n * Forget supplied context object\n * @param {object} ctx - context object to forget\n * @private\n */\nCustomEvents.prototype._forgetContext = function(ctx) {\n  var context, contextIndex;\n\n  if (!isExisty(ctx)) {\n    return;\n  }\n\n  context = this._safeContext();\n  contextIndex = this._indexOfContext(ctx);\n\n  if (contextIndex > -1) {\n    context[contextIndex][1] -= 1;\n\n    if (context[contextIndex][1] <= 0) {\n      context.splice(contextIndex, 1);\n    }\n  }\n};\n\n/**\n * Bind event handler\n * @param {(string|{name:string, handler:function})} eventName - custom\n *  event name or an object {eventName: handler}\n * @param {(function|object)} [handler] - handler function or context\n * @param {object} [context] - context for binding\n * @private\n */\nCustomEvents.prototype._bindEvent = function(eventName, handler, context) {\n  var events = this._safeEvent(eventName);\n  this._memorizeContext(context);\n  events.push(this._getHandlerItem(handler, context));\n};\n\n/**\n * Bind event handlers\n * @param {(string|{name:string, handler:function})} eventName - custom\n *  event name or an object {eventName: handler}\n * @param {(function|object)} [handler] - handler function or context\n * @param {object} [context] - context for binding\n * //-- #1. Get Module --//\n * var CustomEvents = require('tui-code-snippet/customEvents/customEvents'); // node, commonjs\n *\n * //-- #2. Use method --//\n * // # 2.1 Basic Usage\n * CustomEvents.on('onload', handler);\n *\n * // # 2.2 With context\n * CustomEvents.on('onload', handler, myObj);\n *\n * // # 2.3 Bind by object that name, handler pairs\n * CustomEvents.on({\n *     'play': handler,\n *     'pause': handler2\n * });\n *\n * // # 2.4 Bind by object that name, handler pairs with context object\n * CustomEvents.on({\n *     'play': handler\n * }, myObj);\n */\nCustomEvents.prototype.on = function(eventName, handler, context) {\n  var self = this;\n\n  if (isString(eventName)) {\n    // [syntax 1, 2]\n    eventName = eventName.split(R_EVENTNAME_SPLIT);\n    forEach(eventName, function(name) {\n      self._bindEvent(name, handler, context);\n    });\n  } else if (isObject(eventName)) {\n    // [syntax 3, 4]\n    context = handler;\n    forEach(eventName, function(func, name) {\n      self.on(name, func, context);\n    });\n  }\n};\n\n/**\n * Bind one-shot event handlers\n * @param {(string|{name:string,handler:function})} eventName - custom\n *  event name or an object {eventName: handler}\n * @param {function|object} [handler] - handler function or context\n * @param {object} [context] - context for binding\n */\nCustomEvents.prototype.once = function(eventName, handler, context) {\n  var self = this;\n\n  if (isObject(eventName)) {\n    context = handler;\n    forEach(eventName, function(func, name) {\n      self.once(name, func, context);\n    });\n\n    return;\n  }\n\n  function onceHandler() { // eslint-disable-line require-jsdoc\n    handler.apply(context, arguments);\n    self.off(eventName, onceHandler, context);\n  }\n\n  this.on(eventName, onceHandler, context);\n};\n\n/**\n * Splice supplied array by callback result\n * @param {array} arr - array to splice\n * @param {function} predicate - function return boolean\n * @private\n */\nCustomEvents.prototype._spliceMatches = function(arr, predicate) {\n  var i = 0;\n  var len;\n\n  if (!isArray(arr)) {\n    return;\n  }\n\n  for (len = arr.length; i < len; i += 1) {\n    if (predicate(arr[i]) === true) {\n      arr.splice(i, 1);\n      len -= 1;\n      i -= 1;\n    }\n  }\n};\n\n/**\n * Get matcher for unbind specific handler events\n * @param {function} handler - handler function\n * @returns {function} handler matcher\n * @private\n */\nCustomEvents.prototype._matchHandler = function(handler) {\n  var self = this;\n\n  return function(item) {\n    var needRemove = handler === item.handler;\n\n    if (needRemove) {\n      self._forgetContext(item.context);\n    }\n\n    return needRemove;\n  };\n};\n\n/**\n * Get matcher for unbind specific context events\n * @param {object} context - context\n * @returns {function} object matcher\n * @private\n */\nCustomEvents.prototype._matchContext = function(context) {\n  var self = this;\n\n  return function(item) {\n    var needRemove = context === item.context;\n\n    if (needRemove) {\n      self._forgetContext(item.context);\n    }\n\n    return needRemove;\n  };\n};\n\n/**\n * Get matcher for unbind specific hander, context pair events\n * @param {function} handler - handler function\n * @param {object} context - context\n * @returns {function} handler, context matcher\n * @private\n */\nCustomEvents.prototype._matchHandlerAndContext = function(handler, context) {\n  var self = this;\n\n  return function(item) {\n    var matchHandler = (handler === item.handler);\n    var matchContext = (context === item.context);\n    var needRemove = (matchHandler && matchContext);\n\n    if (needRemove) {\n      self._forgetContext(item.context);\n    }\n\n    return needRemove;\n  };\n};\n\n/**\n * Unbind event by event name\n * @param {string} eventName - custom event name to unbind\n * @param {function} [handler] - handler function\n * @private\n */\nCustomEvents.prototype._offByEventName = function(eventName, handler) {\n  var self = this;\n  var andByHandler = isFunction(handler);\n  var matchHandler = self._matchHandler(handler);\n\n  eventName = eventName.split(R_EVENTNAME_SPLIT);\n\n  forEach(eventName, function(name) {\n    var handlerItems = self._safeEvent(name);\n\n    if (andByHandler) {\n      self._spliceMatches(handlerItems, matchHandler);\n    } else {\n      forEach(handlerItems, function(item) {\n        self._forgetContext(item.context);\n      });\n\n      self.events[name] = [];\n    }\n  });\n};\n\n/**\n * Unbind event by handler function\n * @param {function} handler - handler function\n * @private\n */\nCustomEvents.prototype._offByHandler = function(handler) {\n  var self = this;\n  var matchHandler = this._matchHandler(handler);\n\n  forEach(this._safeEvent(), function(handlerItems) {\n    self._spliceMatches(handlerItems, matchHandler);\n  });\n};\n\n/**\n * Unbind event by object(name: handler pair object or context object)\n * @param {object} obj - context or {name: handler} pair object\n * @param {function} handler - handler function\n * @private\n */\nCustomEvents.prototype._offByObject = function(obj, handler) {\n  var self = this;\n  var matchFunc;\n\n  if (this._indexOfContext(obj) < 0) {\n    forEach(obj, function(func, name) {\n      self.off(name, func);\n    });\n  } else if (isString(handler)) {\n    matchFunc = this._matchContext(obj);\n\n    self._spliceMatches(this._safeEvent(handler), matchFunc);\n  } else if (isFunction(handler)) {\n    matchFunc = this._matchHandlerAndContext(handler, obj);\n\n    forEach(this._safeEvent(), function(handlerItems) {\n      self._spliceMatches(handlerItems, matchFunc);\n    });\n  } else {\n    matchFunc = this._matchContext(obj);\n\n    forEach(this._safeEvent(), function(handlerItems) {\n      self._spliceMatches(handlerItems, matchFunc);\n    });\n  }\n};\n\n/**\n * Unbind custom events\n * @param {(string|object|function)} eventName - event name or context or\n *  {name: handler} pair object or handler function\n * @param {(function)} handler - handler function\n * @example\n * //-- #1. Get Module --//\n * var CustomEvents = require('tui-code-snippet/customEvents/customEvents'); // node, commonjs\n *\n * //-- #2. Use method --//\n * // # 2.1 off by event name\n * CustomEvents.off('onload');\n *\n * // # 2.2 off by event name and handler\n * CustomEvents.off('play', handler);\n *\n * // # 2.3 off by handler\n * CustomEvents.off(handler);\n *\n * // # 2.4 off by context\n * CustomEvents.off(myObj);\n *\n * // # 2.5 off by context and handler\n * CustomEvents.off(myObj, handler);\n *\n * // # 2.6 off by context and event name\n * CustomEvents.off(myObj, 'onload');\n *\n * // # 2.7 off by an Object.<string, function> that is {eventName: handler}\n * CustomEvents.off({\n *   'play': handler,\n *   'pause': handler2\n * });\n *\n * // # 2.8 off the all events\n * CustomEvents.off();\n */\nCustomEvents.prototype.off = function(eventName, handler) {\n  if (isString(eventName)) {\n    // [syntax 1, 2]\n    this._offByEventName(eventName, handler);\n  } else if (!arguments.length) {\n    // [syntax 8]\n    this.events = {};\n    this.contexts = [];\n  } else if (isFunction(eventName)) {\n    // [syntax 3]\n    this._offByHandler(eventName);\n  } else if (isObject(eventName)) {\n    // [syntax 4, 5, 6]\n    this._offByObject(eventName, handler);\n  }\n};\n\n/**\n * Fire custom event\n * @param {string} eventName - name of custom event\n */\nCustomEvents.prototype.fire = function(eventName) {  // eslint-disable-line\n  this.invoke.apply(this, arguments);\n};\n\n/**\n * Fire a event and returns the result of operation 'boolean AND' with all\n *  listener's results.\n *\n * So, It is different from {@link CustomEvents#fire}.\n *\n * In service code, use this as a before event in component level usually\n *  for notifying that the event is cancelable.\n * @param {string} eventName - Custom event name\n * @param {...*} data - Data for event\n * @returns {boolean} The result of operation 'boolean AND'\n * @example\n * var map = new Map();\n * map.on({\n *     'beforeZoom': function() {\n *         // It should cancel the 'zoom' event by some conditions.\n *         if (that.disabled && this.getState()) {\n *             return false;\n *         }\n *         return true;\n *     }\n * });\n *\n * if (this.invoke('beforeZoom')) {    // check the result of 'beforeZoom'\n *     // if true,\n *     // doSomething\n * }\n */\nCustomEvents.prototype.invoke = function(eventName) {\n  var events, args, index, item;\n\n  if (!this.hasListener(eventName)) {\n    return true;\n  }\n\n  events = this._safeEvent(eventName);\n  args = Array.prototype.slice.call(arguments, 1);\n  index = 0;\n\n  while (events[index]) {\n    item = events[index];\n\n    if (item.handler.apply(item.context, args) === false) {\n      return false;\n    }\n\n    index += 1;\n  }\n\n  return true;\n};\n\n/**\n * Return whether at least one of the handlers is registered in the given\n *  event name.\n * @param {string} eventName - Custom event name\n * @returns {boolean} Is there at least one handler in event name?\n */\nCustomEvents.prototype.hasListener = function(eventName) {\n  return this.getListenerLength(eventName) > 0;\n};\n\n/**\n * Return a count of events registered.\n * @param {string} eventName - Custom event name\n * @returns {number} number of event\n */\nCustomEvents.prototype.getListenerLength = function(eventName) {\n  var events = this._safeEvent(eventName);\n\n  return events.length;\n};\n\nmodule.exports = CustomEvents;\n\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * @fileoverview Check whether the given variable is a string or not.\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n\n\n\n/**\n * Check whether the given variable is a string or not.\n * If the given variable is a string, return true.\n * @param {*} obj - Target for checking\n * @returns {boolean} Is string?\n * @memberof module:type\n */\nfunction isString(obj) {\n  return typeof obj === 'string' || obj instanceof String;\n}\n\nmodule.exports = isString;\n\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * @fileoverview Utility methods to manipulate colors\n * @author NHN. FE Development Team <dl_javascript@nhn.com>\n */\n\n\nvar hexRX = /(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i;\nvar colorUtil = {\n  /**\n   * pad left zero characters.\n   * @param {number} number number value to pad zero.\n   * @param {number} length pad length to want.\n   * @returns {string} padded string.\n   */\n  leadingZero: function (number, length) {\n    var zero = '';\n    var i = 0;\n\n    if ((number + '').length > length) {\n      return number + '';\n    }\n\n    for (; i < length - 1; i += 1) {\n      zero += '0';\n    }\n\n    return (zero + number).slice(length * -1);\n  },\n\n  /**\n   * Check validate of hex string value is RGB\n   * @param {string} str - rgb hex string\n   * @returns {boolean} return true when supplied str is valid RGB hex string\n   */\n  isValidRGB: function (str) {\n    return hexRX.test(str);\n  },\n  // @license RGB <-> HSV conversion utilities based off of http://www.cs.rit.edu/~ncs/color/t_convert.html\n\n  /**\n   * Convert color hex string to rgb number array\n   * @param {string} hexStr - hex string\n   * @returns {number[]} rgb numbers\n   */\n  hexToRGB: function (hexStr) {\n    var r, g, b;\n\n    if (!colorUtil.isValidRGB(hexStr)) {\n      return false;\n    }\n\n    hexStr = hexStr.substring(1);\n    r = parseInt(hexStr.substr(0, 2), 16);\n    g = parseInt(hexStr.substr(2, 2), 16);\n    b = parseInt(hexStr.substr(4, 2), 16);\n    return [r, g, b];\n  },\n\n  /**\n   * Convert rgb number to hex string\n   * @param {number} r - red\n   * @param {number} g - green\n   * @param {number} b - blue\n   * @returns {string|boolean} return false when supplied rgb number is not valid. otherwise, converted hex string\n   */\n  rgbToHEX: function (r, g, b) {\n    var hexStr = '#' + colorUtil.leadingZero(r.toString(16), 2) + colorUtil.leadingZero(g.toString(16), 2) + colorUtil.leadingZero(b.toString(16), 2);\n\n    if (colorUtil.isValidRGB(hexStr)) {\n      return hexStr;\n    }\n\n    return false;\n  },\n\n  /**\n   * Convert rgb number to HSV value\n   * @param {number} r - red\n   * @param {number} g - green\n   * @param {number} b - blue\n   * @returns {number[]} hsv value\n   */\n  rgbToHSV: function (r, g, b) {\n    var max, min, h, s, v, d;\n    r /= 255;\n    g /= 255;\n    b /= 255;\n    max = Math.max(r, g, b);\n    min = Math.min(r, g, b);\n    v = max;\n    d = max - min;\n    s = max === 0 ? 0 : d / max;\n\n    if (max === min) {\n      h = 0;\n    } else {\n      switch (max) {\n        case r:\n          h = (g - b) / d + (g < b ? 6 : 0);\n          break;\n\n        case g:\n          h = (b - r) / d + 2;\n          break;\n\n        case b:\n          h = (r - g) / d + 4;\n          break;\n        // no default\n      }\n\n      h /= 6;\n    }\n\n    return [Math.round(h * 360), Math.round(s * 100), Math.round(v * 100)];\n  },\n\n  /**\n   * Convert HSV number to RGB\n   * @param {number} h - hue\n   * @param {number} s - saturation\n   * @param {number} v - value\n   * @returns {number[]} rgb value\n   */\n  hsvToRGB: function (h, s, v) {\n    var r, g, b;\n    var i;\n    var f, p, q, t;\n    h = Math.max(0, Math.min(360, h));\n    s = Math.max(0, Math.min(100, s));\n    v = Math.max(0, Math.min(100, v));\n    s /= 100;\n    v /= 100;\n\n    if (s === 0) {\n      // Achromatic (grey)\n      r = g = b = v;\n      return [Math.round(r * 255), Math.round(g * 255), Math.round(b * 255)];\n    }\n\n    h /= 60; // sector 0 to 5\n\n    i = Math.floor(h);\n    f = h - i; // factorial part of h\n\n    p = v * (1 - s);\n    q = v * (1 - s * f);\n    t = v * (1 - s * (1 - f));\n\n    switch (i) {\n      case 0:\n        r = v;\n        g = t;\n        b = p;\n        break;\n\n      case 1:\n        r = q;\n        g = v;\n        b = p;\n        break;\n\n      case 2:\n        r = p;\n        g = v;\n        b = t;\n        break;\n\n      case 3:\n        r = p;\n        g = q;\n        b = v;\n        break;\n\n      case 4:\n        r = t;\n        g = p;\n        b = v;\n        break;\n\n      default:\n        r = v;\n        g = p;\n        b = q;\n        break;\n    }\n\n    return [Math.round(r * 255), Math.round(g * 255), Math.round(b * 255)];\n  }\n};\nmodule.exports = colorUtil;\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * @fileoverview Check whether the given variable is a function or not.\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n\n\n\n/**\n * Check whether the given variable is a function or not.\n * If the given variable is a function, return true.\n * @param {*} obj - Target for checking\n * @returns {boolean} Is function?\n * @memberof module:type\n */\nfunction isFunction(obj) {\n  return obj instanceof Function;\n}\n\nmodule.exports = isFunction;\n\n\n/***/ }),\n/* 14 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * @fileoverview Bind DOM events\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n\n\n\nvar isString = __webpack_require__(11);\nvar forEach = __webpack_require__(2);\n\nvar safeEvent = __webpack_require__(26);\n\n/**\n * Bind DOM events.\n * @param {HTMLElement} element - element to bind events\n * @param {(string|object)} types - Space splitted events names or eventName:handler object\n * @param {(function|object)} handler - handler function or context for handler method\n * @param {object} [context] context - context for handler method.\n * @memberof module:domEvent\n * @example\n * var div = document.querySelector('div');\n * \n * // Bind one event to an element.\n * on(div, 'click', toggle);\n * \n * // Bind multiple events with a same handler to multiple elements at once.\n * // Use event names splitted by a space.\n * on(div, 'mouseenter mouseleave', changeColor);\n * \n * // Bind multiple events with different handlers to an element at once.\n * // Use an object which of key is an event name and value is a handler function.\n * on(div, {\n *   keydown: highlight,\n *   keyup: dehighlight\n * });\n * \n * // Set a context for handler method.\n * var name = 'global';\n * var repository = {name: 'CodeSnippet'};\n * on(div, 'drag', function() {\n *  console.log(this.name);\n * }, repository);\n * // Result when you drag a div: \"CodeSnippet\"\n */\nfunction on(element, types, handler, context) {\n  if (isString(types)) {\n    forEach(types.split(/\\s+/g), function(type) {\n      bindEvent(element, type, handler, context);\n    });\n\n    return;\n  }\n\n  forEach(types, function(func, type) {\n    bindEvent(element, type, func, handler);\n  });\n}\n\n/**\n * Bind DOM events\n * @param {HTMLElement} element - element to bind events\n * @param {string} type - events name\n * @param {function} handler - handler function or context for handler method\n * @param {object} [context] context - context for handler method.\n * @private\n */\nfunction bindEvent(element, type, handler, context) {\n  /**\n     * Event handler\n     * @param {Event} e - event object\n     */\n  function eventHandler(e) {\n    handler.call(context || element, e || window.event);\n  }\n\n  if ('addEventListener' in element) {\n    element.addEventListener(type, eventHandler);\n  } else if ('attachEvent' in element) {\n    element.attachEvent('on' + type, eventHandler);\n  }\n  memorizeHandler(element, type, handler, eventHandler);\n}\n\n/**\n * Memorize DOM event handler for unbinding.\n * @param {HTMLElement} element - element to bind events\n * @param {string} type - events name\n * @param {function} handler - handler function that user passed at on() use\n * @param {function} wrappedHandler - handler function that wrapped by domevent for implementing some features\n * @private\n */\nfunction memorizeHandler(element, type, handler, wrappedHandler) {\n  var events = safeEvent(element, type);\n  var existInEvents = false;\n\n  forEach(events, function(obj) {\n    if (obj.handler === handler) {\n      existInEvents = true;\n\n      return false;\n    }\n\n    return true;\n  });\n\n  if (!existInEvents) {\n    events.push({\n      handler: handler,\n      wrappedHandler: wrappedHandler\n    });\n  }\n}\n\nmodule.exports = on;\n\n\n/***/ }),\n/* 15 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * @fileoverview Prevent default action\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n\n\n\n/**\n * Prevent default action\n * @param {Event} e - event object\n * @memberof module:domEvent\n */\nfunction preventDefault(e) {\n  if (e.preventDefault) {\n    e.preventDefault();\n\n    return;\n  }\n\n  e.returnValue = false;\n}\n\nmodule.exports = preventDefault;\n\n\n/***/ }),\n/* 16 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * @fileoverview Convert kebab-case\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n\n\n\n/**\n * Convert kebab-case\n * @param {string} key - string to be converted to Kebab-case\n * @private\n */\nfunction convertToKebabCase(key) {\n  return key.replace(/([A-Z])/g, function(match) {\n    return '-' + match.toLowerCase();\n  });\n}\n\nmodule.exports = convertToKebabCase;\n\n\n/***/ }),\n/* 17 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * @fileoverview Unbind DOM events\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n\n\n\nvar isString = __webpack_require__(11);\nvar forEach = __webpack_require__(2);\n\nvar safeEvent = __webpack_require__(26);\n\n/**\n * Unbind DOM events\n * If a handler function is not passed, remove all events of that type.\n * @param {HTMLElement} element - element to unbind events\n * @param {(string|object)} types - Space splitted events names or eventName:handler object\n * @param {function} [handler] - handler function\n * @memberof module:domEvent\n * @example\n * // Following the example of domEvent#on\n * \n * // Unbind one event from an element.\n * off(div, 'click', toggle);\n * \n * // Unbind multiple events with a same handler from multiple elements at once.\n * // Use event names splitted by a space.\n * off(element, 'mouseenter mouseleave', changeColor);\n * \n * // Unbind multiple events with different handlers from an element at once.\n * // Use an object which of key is an event name and value is a handler function.\n * off(div, {\n *   keydown: highlight,\n *   keyup: dehighlight\n * });\n * \n * // Unbind events without handlers.\n * off(div, 'drag');\n */\nfunction off(element, types, handler) {\n  if (isString(types)) {\n    forEach(types.split(/\\s+/g), function(type) {\n      unbindEvent(element, type, handler);\n    });\n\n    return;\n  }\n\n  forEach(types, function(func, type) {\n    unbindEvent(element, type, func);\n  });\n}\n\n/**\n * Unbind DOM events\n * If a handler function is not passed, remove all events of that type.\n * @param {HTMLElement} element - element to unbind events\n * @param {string} type - events name\n * @param {function} [handler] - handler function\n * @private\n */\nfunction unbindEvent(element, type, handler) {\n  var events = safeEvent(element, type);\n  var index;\n\n  if (!handler) {\n    forEach(events, function(item) {\n      removeHandler(element, type, item.wrappedHandler);\n    });\n    events.splice(0, events.length);\n  } else {\n    forEach(events, function(item, idx) {\n      if (handler === item.handler) {\n        removeHandler(element, type, item.wrappedHandler);\n        index = idx;\n\n        return false;\n      }\n\n      return true;\n    });\n    events.splice(index, 1);\n  }\n}\n\n/**\n * Remove an event handler\n * @param {HTMLElement} element - An element to remove an event\n * @param {string} type - event type\n * @param {function} handler - event handler\n * @private\n */\nfunction removeHandler(element, type, handler) {\n  if ('removeEventListener' in element) {\n    element.removeEventListener(type, handler);\n  } else if ('detachEvent' in element) {\n    element.detachEvent('on' + type, handler);\n  }\n}\n\nmodule.exports = off;\n\n\n/***/ }),\n/* 18 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * @fileoverview Provide a simple inheritance in prototype-oriented.\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n\n\n\nvar createObject = __webpack_require__(50);\n\n/**\n * Provide a simple inheritance in prototype-oriented.\n * Caution :\n *  Don't overwrite the prototype of child constructor.\n *\n * @param {function} subType Child constructor\n * @param {function} superType Parent constructor\n * @memberof module:inheritance\n * @example\n * var inherit = require('tui-code-snippet/inheritance/inherit'); // node, commonjs\n *\n * // Parent constructor\n * function Animal(leg) {\n *     this.leg = leg;\n * }\n * Animal.prototype.growl = function() {\n *     // ...\n * };\n *\n * // Child constructor\n * function Person(name) {\n *     this.name = name;\n * }\n *\n * // Inheritance\n * inherit(Person, Animal);\n *\n * // After this inheritance, please use only the extending of property.\n * // Do not overwrite prototype.\n * Person.prototype.walk = function(direction) {\n *     // ...\n * };\n */\nfunction inherit(subType, superType) {\n  var prototype = createObject(superType.prototype);\n  prototype.constructor = subType;\n  subType.prototype = prototype;\n}\n\nmodule.exports = inherit;\n\n\n/***/ }),\n/* 19 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * @fileoverview Common collections.\n * @author NHN. FE Development Team <dl_javascript@nhn.com>\n */\n\n\nvar forEachArray = __webpack_require__(6);\n\nvar forEachOwnProperties = __webpack_require__(7);\n\nvar extend = __webpack_require__(0);\n\nvar isArray = __webpack_require__(1);\n\nvar isExisty = __webpack_require__(20);\n\nvar isFunction = __webpack_require__(13);\n\nvar isObject = __webpack_require__(21);\n\nvar util = __webpack_require__(4);\n\nvar slice = Array.prototype.slice;\n/**\n * Common collection.\n *\n * It need function for get model's unique id.\n *\n * if the function is not supplied then it use default function {@link Collection#getItemID}\n * @constructor\n * @param {function} [getItemIDFn] function for get model's id.\n * @ignore\n */\n\nfunction Collection(getItemIDFn) {\n  /**\n   * @type {object.<string, *>}\n   */\n  this.items = {};\n  /**\n   * @type {number}\n   */\n\n  this.length = 0;\n\n  if (isFunction(getItemIDFn)) {\n    /**\n     * @type {function}\n     */\n    this.getItemID = getItemIDFn;\n  }\n}\n/**********\n * static props\n **********/\n\n/**\n * Combind supplied function filters and condition.\n * @param {...function} filters - function filters\n * @returns {function} combined filter\n */\n\n\nCollection.and = function (filters) {\n  var cnt;\n  filters = slice.call(arguments);\n  cnt = filters.length;\n  return function (item) {\n    var i = 0;\n\n    for (; i < cnt; i += 1) {\n      if (!filters[i].call(null, item)) {\n        return false;\n      }\n    }\n\n    return true;\n  };\n};\n/**\n * Combine multiple function filters with OR clause.\n * @param {...function} filters - function filters\n * @returns {function} combined filter\n */\n\n\nCollection.or = function (filters) {\n  var cnt;\n  filters = slice.call(arguments);\n  cnt = filters.length;\n  return function (item) {\n    var i = 1;\n    var result = filters[0].call(null, item);\n\n    for (; i < cnt; i += 1) {\n      result = result || filters[i].call(null, item);\n    }\n\n    return result;\n  };\n};\n/**\n * Merge several collections.\n *\n * You can\\'t merge collections different _getEventID functions. Take case of use.\n * @param {...Collection} collections collection arguments to merge\n * @returns {Collection} merged collection.\n */\n\n\nCollection.merge = function (firstCollection) {\n  var newItems = {};\n  var merged = new Collection(firstCollection.getItemID);\n  forEachArray(arguments, function (col) {\n    extend(newItems, col.items);\n  });\n  merged.items = newItems;\n  merged.length = util.getLength(merged.items);\n  return merged;\n};\n/**********\n * prototype props\n **********/\n\n/**\n * get model's unique id.\n * @param {object} item model instance.\n * @returns {number} model unique id.\n */\n\n\nCollection.prototype.getItemID = function (item) {\n  return item._id + '';\n};\n/**\n * add models.\n * @param {...*} item models to add this collection.\n */\n\n\nCollection.prototype.add = function (item) {\n  var id, ownItems;\n\n  if (arguments.length > 1) {\n    forEachArray(slice.call(arguments), function (o) {\n      this.add(o);\n    }, this);\n    return;\n  }\n\n  id = this.getItemID(item);\n  ownItems = this.items;\n\n  if (!ownItems[id]) {\n    this.length += 1;\n  }\n\n  ownItems[id] = item;\n};\n/**\n * remove models.\n * @param {...(object|string|number)} id model instance or unique id to delete.\n * @returns {array} deleted model list.\n */\n\n\nCollection.prototype.remove = function (id) {\n  var removed = [];\n  var ownItems, itemToRemove;\n\n  if (!this.length) {\n    return removed;\n  }\n\n  if (arguments.length > 1) {\n    removed = util.map(slice.call(arguments), function (id) {\n      return this.remove(id);\n    }, this);\n    return removed;\n  }\n\n  ownItems = this.items;\n\n  if (isObject(id)) {\n    id = this.getItemID(id);\n  }\n\n  if (!ownItems[id]) {\n    return removed;\n  }\n\n  this.length -= 1;\n  itemToRemove = ownItems[id];\n  delete ownItems[id];\n  return itemToRemove;\n};\n/**\n * remove all models in collection.\n */\n\n\nCollection.prototype.clear = function () {\n  this.items = {};\n  this.length = 0;\n};\n/**\n * check collection has specific model.\n * @param {(object|string|number|function)} id model instance or id or filter function to check\n * @returns {boolean} is has model?\n */\n\n\nCollection.prototype.has = function (id) {\n  var isFilter, has;\n\n  if (!this.length) {\n    return false;\n  }\n\n  isFilter = isFunction(id);\n  has = false;\n\n  if (isFilter) {\n    this.each(function (item) {\n      if (id(item) === true) {\n        has = true;\n        return false;\n      }\n\n      return true;\n    });\n  } else {\n    id = isObject(id) ? this.getItemID(id) : id;\n    has = isExisty(this.items[id]);\n  }\n\n  return has;\n};\n/**\n * invoke callback when model exist in collection.\n * @param {(string|number)} id model unique id.\n * @param {function} fn the callback.\n * @param {*} [context] callback context.\n */\n\n\nCollection.prototype.doWhenHas = function (id, fn, context) {\n  var item = this.items[id];\n\n  if (!isExisty(item)) {\n    return;\n  }\n\n  fn.call(context || this, item);\n};\n/**\n * Search model. and return new collection.\n * @param {function} filter filter function.\n * @returns {Collection} new collection with filtered models.\n * @example\n * collection.find(function(item) {\n *     return item.edited === true;\n * });\n *\n * function filter1(item) {\n *     return item.edited === false;\n * }\n *\n * function filter2(item) {\n *     return item.disabled === false;\n * }\n *\n * collection.find(Collection.and(filter1, filter2));\n *\n * collection.find(Collection.or(filter1, filter2));\n */\n\n\nCollection.prototype.find = function (filter) {\n  var result = new Collection();\n\n  if (this.hasOwnProperty('getItemID')) {\n    result.getItemID = this.getItemID;\n  }\n\n  this.each(function (item) {\n    if (filter(item) === true) {\n      result.add(item);\n    }\n  });\n  return result;\n};\n/**\n * Group element by specific key values.\n *\n * if key parameter is function then invoke it and use returned value.\n * @param {(string|number|function|array)} key key property or getter function. if string[] supplied, create each collection before grouping.\n * @param {function} [groupFunc] - function that return each group's key\n * @returns {object.<string, Collection>} grouped object\n * @example\n *\n * // pass `string`, `number`, `boolean` type value then group by property value.\n * collection.groupBy('gender');    // group by 'gender' property value.\n * collection.groupBy(50);          // group by '50' property value.\n *\n * // pass `function` then group by return value. each invocation `function` is called with `(item)`.\n * collection.groupBy(function(item) {\n *     if (item.score > 60) {\n *         return 'pass';\n *     }\n *     return 'fail';\n * });\n *\n * // pass `array` with first arguments then create each collection before grouping.\n * collection.groupBy(['go', 'ruby', 'javascript']);\n * // result: { 'go': empty Collection, 'ruby': empty Collection, 'javascript': empty Collection }\n *\n * // can pass `function` with `array` then group each elements.\n * collection.groupBy(['go', 'ruby', 'javascript'], function(item) {\n *     if (item.isFast) {\n *         return 'go';\n *     }\n *\n *     return item.name;\n * });\n */\n\n\nCollection.prototype.groupBy = function (key, groupFunc) {\n  var result = {};\n  var keyIsFunc = isFunction(key);\n  var getItemIDFn = this.getItemID;\n  var collection, baseValue;\n\n  if (isArray(key)) {\n    forEachArray(key, function (k) {\n      result[k + ''] = new Collection(getItemIDFn);\n    });\n\n    if (!groupFunc) {\n      return result;\n    }\n\n    key = groupFunc;\n    keyIsFunc = true;\n  }\n\n  this.each(function (item) {\n    if (keyIsFunc) {\n      baseValue = key(item);\n    } else {\n      baseValue = item[key];\n\n      if (isFunction(baseValue)) {\n        baseValue = baseValue.apply(item);\n      }\n    }\n\n    collection = result[baseValue];\n\n    if (!collection) {\n      collection = result[baseValue] = new Collection(getItemIDFn);\n    }\n\n    collection.add(item);\n  });\n  return result;\n};\n/**\n * Return single item in collection.\n *\n * Returned item is inserted in this collection firstly.\n * @returns {object} item.\n */\n\n\nCollection.prototype.single = function () {\n  var result;\n  this.each(function (item) {\n    result = item;\n    return false;\n  }, this);\n  return result;\n};\n/**\n * sort a basis of supplied compare function.\n * @param {function} compareFunction compareFunction\n * @returns {array} sorted array.\n */\n\n\nCollection.prototype.sort = function (compareFunction) {\n  var arr = [];\n  this.each(function (item) {\n    arr.push(item);\n  });\n\n  if (isFunction(compareFunction)) {\n    arr = arr.sort(compareFunction);\n  }\n\n  return arr;\n};\n/**\n * iterate each model element.\n *\n * when iteratee return false then break the loop.\n * @param {function} iteratee iteratee(item, index, items)\n * @param {*} [context] context\n */\n\n\nCollection.prototype.each = function (iteratee, context) {\n  forEachOwnProperties(this.items, iteratee, context || this);\n};\n/**\n * return new array with collection items.\n * @returns {array} new array.\n */\n\n\nCollection.prototype.toArray = function () {\n  if (!this.length) {\n    return [];\n  }\n\n  return util.map(this.items, function (item) {\n    return item;\n  });\n};\n\nmodule.exports = Collection;\n\n/***/ }),\n/* 20 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * @fileoverview Check whether the given variable is existing or not.\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n\n\n\nvar isUndefined = __webpack_require__(3);\nvar isNull = __webpack_require__(36);\n\n/**\n * Check whether the given variable is existing or not.\n * If the given variable is not null and not undefined, returns true.\n * @param {*} param - Target for checking\n * @returns {boolean} Is existy?\n * @memberof module:type\n * @example\n * var isExisty = require('tui-code-snippet/type/isExisty'); // node, commonjs\n *\n * isExisty(''); //true\n * isExisty(0); //true\n * isExisty([]); //true\n * isExisty({}); //true\n * isExisty(null); //false\n * isExisty(undefined); //false\n*/\nfunction isExisty(param) {\n  return !isUndefined(param) && !isNull(param);\n}\n\nmodule.exports = isExisty;\n\n\n/***/ }),\n/* 21 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * @fileoverview Check whether the given variable is an object or not.\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n\n\n\n/**\n * Check whether the given variable is an object or not.\n * If the given variable is an object, return true.\n * @param {*} obj - Target for checking\n * @returns {boolean} Is object?\n * @memberof module:type\n */\nfunction isObject(obj) {\n  return obj === Object(obj);\n}\n\nmodule.exports = isObject;\n\n\n/***/ }),\n/* 22 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * @fileoverview This module detects the kind of well-known browser and version.\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n\n\n\n/**\n * Browser module\n * @module browser\n */\n\n/**\n * This object has an information that indicate the kind of browser.\n * The list below is a detectable browser list.\n *  - ie8 ~ ie11\n *  - chrome\n *  - firefox\n *  - safari\n *  - edge\n * @memberof module:browser\n * @example\n * var browser = require('tui-code-snippet/browser/browser'); // node, commonjs\n *\n * browser.chrome === true; // chrome\n * browser.firefox === true; // firefox\n * browser.safari === true; // safari\n * browser.msie === true; // IE\n * browser.edge === true; // edge\n * browser.others === true; // other browser\n * browser.version; // browser version\n */\nvar browser = {\n  chrome: false,\n  firefox: false,\n  safari: false,\n  msie: false,\n  edge: false,\n  others: false,\n  version: 0\n};\n\nif (window && window.navigator) {\n  detectBrowser();\n}\n\n/**\n * Detect the browser.\n * @private\n */\nfunction detectBrowser() {\n  var nav = window.navigator;\n  var appName = nav.appName.replace(/\\s/g, '_');\n  var userAgent = nav.userAgent;\n\n  var rIE = /MSIE\\s([0-9]+[.0-9]*)/;\n  var rIE11 = /Trident.*rv:11\\./;\n  var rEdge = /Edge\\/(\\d+)\\./;\n  var versionRegex = {\n    firefox: /Firefox\\/(\\d+)\\./,\n    chrome: /Chrome\\/(\\d+)\\./,\n    safari: /Version\\/([\\d.]+).*Safari\\/(\\d+)/\n  };\n\n  var key, tmp;\n\n  var detector = {\n    Microsoft_Internet_Explorer: function() { // eslint-disable-line camelcase\n      var detectedVersion = userAgent.match(rIE);\n\n      if (detectedVersion) { // ie8 ~ ie10\n        browser.msie = true;\n        browser.version = parseFloat(detectedVersion[1]);\n      } else { // no version information\n        browser.others = true;\n      }\n    },\n    Netscape: function() { // eslint-disable-line complexity\n      var detected = false;\n\n      if (rIE11.exec(userAgent)) {\n        browser.msie = true;\n        browser.version = 11;\n        detected = true;\n      } else if (rEdge.exec(userAgent)) {\n        browser.edge = true;\n        browser.version = userAgent.match(rEdge)[1];\n        detected = true;\n      } else {\n        for (key in versionRegex) {\n          if (versionRegex.hasOwnProperty(key)) {\n            tmp = userAgent.match(versionRegex[key]);\n            if (tmp && tmp.length > 1) { // eslint-disable-line max-depth\n              browser[key] = detected = true;\n              browser.version = parseFloat(tmp[1] || 0);\n              break;\n            }\n          }\n        }\n      }\n      if (!detected) {\n        browser.others = true;\n      }\n    }\n  };\n\n  var fn = detector[appName];\n\n  if (fn) {\n    detector[appName]();\n  }\n}\n\nmodule.exports = browser;\n\n\n/***/ }),\n/* 23 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * @fileoverview Get HTML element's design classes.\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n\n\n\nvar isUndefined = __webpack_require__(3);\n\n/**\n * Get HTML element's design classes.\n * @param {(HTMLElement|SVGElement)} element target element\n * @returns {string} element css class name\n * @memberof module:domUtil\n */\nfunction getClass(element) {\n  if (!element || !element.className) {\n    return '';\n  }\n\n  if (isUndefined(element.className.baseVal)) {\n    return element.className;\n  }\n\n  return element.className.baseVal;\n}\n\nmodule.exports = getClass;\n\n\n/***/ }),\n/* 24 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(global) {/**\n * @fileoverview General drag handler\n * @author NHN. FE Development Team <dl_javascript@nhn.com>\n */\n\n\nvar CustomEvents = __webpack_require__(10);\n\nvar disableTextSelection = __webpack_require__(42);\n\nvar enableTextSelection = __webpack_require__(44);\n\nvar getMouseButton = __webpack_require__(47);\n\nvar getTarget = __webpack_require__(28);\n\nvar off = __webpack_require__(17);\n\nvar on = __webpack_require__(14);\n\nvar preventDefault = __webpack_require__(15);\n\nvar extend = __webpack_require__(0);\n/**\n * @constructor\n * @mixes CustomEvents\n * @param {object} options - options for drag handler\n * @param {number} [options.distance=10] - distance in pixels after mouse must move before dragging should start\n * @param {HTMLElement} container - container element to bind drag events\n * @ignore\n */\n\n\nfunction Drag(options, container) {\n  on(container, 'mousedown', this._onMouseDown, this);\n  this.options = extend({\n    distance: 10\n  }, options);\n  /**\n   * @type {HTMLElement}\n   */\n\n  this.container = container;\n  /**\n   * @type {boolean}\n   */\n\n  this._isMoved = false;\n  /**\n   * dragging distance in pixel between mousedown and firing dragStart events\n   * @type {number}\n   */\n\n  this._distance = 0;\n  /**\n   * @type {boolean}\n   */\n\n  this._dragStartFired = false;\n  /**\n   * @type {object}\n   */\n\n  this._dragStartEventData = null;\n}\n/**\n * Destroy method.\n */\n\n\nDrag.prototype.destroy = function () {\n  off(this.container, 'mousedown', this._onMouseDown);\n  this.options = this.container = this._isMoved = this._distance = this._dragStartFired = this._dragStartEventData = null;\n};\n/**\n * Toggle events for mouse dragging.\n * @param {boolean} toBind - bind events related with dragging when supplied \"true\"\n */\n\n\nDrag.prototype._toggleDragEvent = function (toBind) {\n  var container = this.container;\n\n  if (toBind) {\n    disableTextSelection(container);\n    on(window, 'dragstart', preventDefault);\n    on(global.document, {\n      mousemove: this._onMouseMove,\n      mouseup: this._onMouseUp\n    }, this);\n  } else {\n    enableTextSelection(container);\n    off(window, 'dragstart', preventDefault);\n    off(global.document, {\n      mousemove: this._onMouseMove,\n      mouseup: this._onMouseUp\n    });\n  }\n};\n/**\n * Normalize mouse event object.\n * @param {MouseEvent} mouseEvent - mouse event object.\n * @returns {object} normalized mouse event data.\n */\n\n\nDrag.prototype._getEventData = function (mouseEvent) {\n  return {\n    target: getTarget(mouseEvent),\n    originEvent: mouseEvent\n  };\n};\n/**\n * MouseDown DOM event handler.\n * @param {MouseEvent} mouseDownEvent MouseDown event object.\n */\n\n\nDrag.prototype._onMouseDown = function (mouseDownEvent) {\n  // only primary button can start drag.\n  if (getMouseButton(mouseDownEvent) !== 0) {\n    return;\n  }\n\n  this._distance = 0;\n  this._dragStartFired = false;\n  this._dragStartEventData = this._getEventData(mouseDownEvent);\n\n  this._toggleDragEvent(true);\n};\n/**\n * MouseMove DOM event handler.\n * @emits Drag#drag\n * @emits Drag#dragStart\n * @param {MouseEvent} mouseMoveEvent MouseMove event object.\n */\n\n\nDrag.prototype._onMouseMove = function (mouseMoveEvent) {\n  var distance = this.options.distance; // prevent automatic scrolling.\n\n  preventDefault(mouseMoveEvent);\n  this._isMoved = true;\n\n  if (this._distance < distance) {\n    this._distance += 1;\n    return;\n  }\n\n  if (!this._dragStartFired) {\n    this._dragStartFired = true;\n    /**\n     * Drag starts events. cancelable.\n     * @event Drag#dragStart\n     * @type {object}\n     * @property {HTMLElement} target - target element in this event.\n     * @property {MouseEvent} originEvent - original mouse event object.\n     */\n\n    if (!this.invoke('dragStart', this._dragStartEventData)) {\n      this._toggleDragEvent(false);\n\n      return;\n    }\n  }\n  /**\n   * Events while dragging.\n   * @event Drag#drag\n   * @type {object}\n   * @property {HTMLElement} target - target element in this event.\n   * @property {MouseEvent} originEvent - original mouse event object.\n   */\n\n\n  this.fire('drag', this._getEventData(mouseMoveEvent));\n};\n/**\n * MouseUp DOM event handler.\n * @param {MouseEvent} mouseUpEvent MouseUp event object.\n * @emits Drag#dragEnd\n * @emits Drag#click\n */\n\n\nDrag.prototype._onMouseUp = function (mouseUpEvent) {\n  this._toggleDragEvent(false); // emit \"click\" event when not emitted drag event between mousedown and mouseup.\n\n\n  if (this._isMoved) {\n    this._isMoved = false;\n    /**\n     * Drag end events.\n     * @event Drag#dragEnd\n     * @type {MouseEvent}\n     * @property {HTMLElement} target - target element in this event.\n     * @property {MouseEvent} originEvent - original mouse event object.\n     */\n\n    this.fire('dragEnd', this._getEventData(mouseUpEvent));\n    return;\n  }\n  /**\n   * Click events.\n   * @event Drag#click\n   * @type {MouseEvent}\n   * @property {HTMLElement} target - target element in this event.\n   * @property {MouseEvent} originEvent - original mouse event object.\n   */\n\n\n  this.fire('click', this._getEventData(mouseUpEvent));\n};\n\nCustomEvents.mixin(Drag);\nmodule.exports = Drag;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(25)))\n\n/***/ }),\n/* 25 */\n/***/ (function(module, exports) {\n\nvar g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n\n\n/***/ }),\n/* 26 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * @fileoverview Get event collection for specific HTML element\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n\n\n\nvar EVENT_KEY = '_feEventKey';\n\n/**\n * Get event collection for specific HTML element\n * @param {HTMLElement} element - HTML element\n * @param {string} type - event type\n * @returns {array}\n * @private\n */\nfunction safeEvent(element, type) {\n  var events = element[EVENT_KEY];\n  var handlers;\n\n  if (!events) {\n    events = element[EVENT_KEY] = {};\n  }\n\n  handlers = events[type];\n  if (!handlers) {\n    handlers = events[type] = [];\n  }\n\n  return handlers;\n}\n\nmodule.exports = safeEvent;\n\n\n/***/ }),\n/* 27 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * @fileoverview Check specific CSS style is available.\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n\n\n\n/**\n * Check specific CSS style is available.\n * @param {array} props property name to testing\n * @returns {(string|boolean)} return true when property is available\n * @private\n */\nfunction testCSSProp(props) {\n  var style = document.documentElement.style;\n  var i, len;\n\n  for (i = 0, len = props.length; i < len; i += 1) {\n    if (props[i] in style) {\n      return props[i];\n    }\n  }\n\n  return false;\n}\n\nmodule.exports = testCSSProp;\n\n\n/***/ }),\n/* 28 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * @fileoverview Get a target element from an event object.\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n\n\n\n/**\n * Get a target element from an event object.\n * @param {Event} e - event object\n * @returns {HTMLElement} - target element\n * @memberof module:domEvent\n */\nfunction getTarget(e) {\n  return e.target || e.srcElement;\n}\n\nmodule.exports = getTarget;\n\n\n/***/ }),\n/* 29 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * @fileoverview Color palette view\n * @author NHN. FE Development Team <dl_javascript@nhn.com>\n */\n\n\nvar CustomEvents = __webpack_require__(10);\n\nvar getTarget = __webpack_require__(28);\n\nvar off = __webpack_require__(17);\n\nvar on = __webpack_require__(14);\n\nvar hasClass = __webpack_require__(30);\n\nvar extend = __webpack_require__(0);\n\nvar inherit = __webpack_require__(18);\n\nvar domUtil = __webpack_require__(9);\n\nvar colorUtil = __webpack_require__(12);\n\nvar View = __webpack_require__(8);\n\nvar tmpl = __webpack_require__(51);\n/**\n * @constructor\n * @extends {View}\n * @mixes CustomEvents\n * @param {object} options - options for color palette view\n * @param {string[]} options.preset - color list\n * @param {HTMLDivElement} container - container element\n * @ignore\n */\n\n\nfunction Palette(options, container) {\n  /**\n   * option object\n   * @type {object}\n   */\n  this.options = extend({\n    cssPrefix: 'tui-colorpicker-',\n    preset: ['#181818', '#282828', '#383838', '#585858', '#B8B8B8', '#D8D8D8', '#E8E8E8', '#F8F8F8', '#AB4642', '#DC9656', '#F7CA88', '#A1B56C', '#86C1B9', '#7CAFC2', '#BA8BAF', '#A16946'],\n    detailTxt: 'Detail'\n  }, options);\n  container = domUtil.appendHTMLElement('div', container, this.options.cssPrefix + 'palette-container');\n  View.call(this, options, container);\n}\n\ninherit(Palette, View);\n/**\n * Mouse click event handler\n * @fires Palette#_selectColor\n * @fires Palette#_toggleSlider\n * @param {MouseEvent} clickEvent - mouse event object\n */\n\nPalette.prototype._onClick = function (clickEvent) {\n  var options = this.options;\n  var target = getTarget(clickEvent);\n  var eventData = {};\n\n  if (hasClass(target, options.cssPrefix + 'palette-button')) {\n    eventData.color = target.value;\n    /**\n     * @event Palette#_selectColor\n     * @type {object}\n     * @property {string} color - selected color value\n     */\n\n    this.fire('_selectColor', eventData);\n    return;\n  }\n\n  if (hasClass(target, options.cssPrefix + 'palette-toggle-slider')) {\n    /**\n     * @event Palette#_toggleSlider\n     */\n    this.fire('_toggleSlider');\n  }\n};\n/**\n * Textbox change event handler\n * @fires Palette#_selectColor\n * @param {Event} changeEvent - change event object\n */\n\n\nPalette.prototype._onChange = function (changeEvent) {\n  var options = this.options;\n  var target = getTarget(changeEvent);\n  var eventData = {};\n\n  if (hasClass(target, options.cssPrefix + 'palette-hex')) {\n    eventData.color = target.value;\n    /**\n     * @event Palette#_selectColor\n     * @type {object}\n     * @property {string} color - selected color value\n     */\n\n    this.fire('_selectColor', eventData);\n  }\n};\n/**\n * Invoke before destory\n * @override\n */\n\n\nPalette.prototype._beforeDestroy = function () {\n  this._toggleEvent(false);\n};\n/**\n * Toggle view DOM events\n * @param {boolean} [toBind=false] - true to bind event.\n */\n\n\nPalette.prototype._toggleEvent = function (toBind) {\n  var options = this.options;\n  var container = this.container;\n  var handleEvent = toBind ? on : off;\n  var hexTextBox;\n  handleEvent(container, 'click', this._onClick, this);\n  hexTextBox = container.querySelector('.' + options.cssPrefix + 'palette-hex', container);\n\n  if (hexTextBox) {\n    handleEvent(hexTextBox, 'change', this._onChange, this);\n  }\n};\n/**\n * Render palette\n * @override\n */\n\n\nPalette.prototype.render = function (color) {\n  var options = this.options;\n  var html = '';\n\n  this._toggleEvent(false);\n\n  html = tmpl({\n    cssPrefix: options.cssPrefix,\n    preset: options.preset,\n    detailTxt: options.detailTxt,\n    color: color,\n    isValidRGB: colorUtil.isValidRGB,\n    getItemClass: function (itemColor) {\n      return !itemColor ? ' ' + options.cssPrefix + 'color-transparent' : '';\n    },\n    isSelected: function (itemColor) {\n      return itemColor === color ? ' ' + options.cssPrefix + 'selected' : '';\n    }\n  });\n  this.container.innerHTML = html;\n\n  this._toggleEvent(true);\n};\n\nCustomEvents.mixin(Palette);\nmodule.exports = Palette;\n\n/***/ }),\n/* 30 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * @fileoverview Check element has specific css class\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n\n\n\nvar inArray = __webpack_require__(5);\nvar getClass = __webpack_require__(23);\n\n/**\n * Check element has specific css class\n * @param {(HTMLElement|SVGElement)} element - target element\n * @param {string} cssClass - css class\n * @returns {boolean}\n * @memberof module:domUtil\n */\nfunction hasClass(element, cssClass) {\n  var origin;\n\n  if (element.classList) {\n    return element.classList.contains(cssClass);\n  }\n\n  origin = getClass(element).split(/\\s+/);\n\n  return inArray(cssClass, origin) > -1;\n}\n\nmodule.exports = hasClass;\n\n\n/***/ }),\n/* 31 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * @fileoverview Slider view\n * @author NHN. FE Development Team <dl_javascript@nhn.com>\n */\n\n\nvar CustomEvents = __webpack_require__(10);\n\nvar getMousePosition = __webpack_require__(53);\n\nvar closest = __webpack_require__(54);\n\nvar hasClass = __webpack_require__(30);\n\nvar extend = __webpack_require__(0);\n\nvar inherit = __webpack_require__(18);\n\nvar domUtil = __webpack_require__(9);\n\nvar svgvml = __webpack_require__(32);\n\nvar colorUtil = __webpack_require__(12);\n\nvar View = __webpack_require__(8);\n\nvar Drag = __webpack_require__(24);\n\nvar tmpl = __webpack_require__(57); // Limitation position of point element inside of colorslider and hue bar\n// Minimum value can to be negative because that using color point of handle element is center point. not left, top point.\n\n\nvar COLORSLIDER_POS_LIMIT_RANGE = [-7, 112];\nvar HUEBAR_POS_LIMIT_RANGE = [-3, 115];\nvar HUE_WHEEL_MAX = 359.99;\n/**\n * @constructor\n * @extends {View}\n * @mixes CustomEvents\n * @param {object} options - options for view\n *  @param {string} options.cssPrefix - design css prefix\n * @param {HTMLElement} container - container element\n * @ignore\n */\n\nfunction Slider(options, container) {\n  container = domUtil.appendHTMLElement('div', container, options.cssPrefix + 'slider-container');\n  container.style.display = 'none';\n  View.call(this, options, container);\n  /**\n   * @type {object}\n   */\n\n  this.options = extend({\n    color: '#f8f8f8',\n    cssPrefix: 'tui-colorpicker-'\n  }, options);\n  /**\n   * Cache immutable data in click, drag events.\n   *\n   * (i.e. is event related with colorslider? or huebar?)\n   * @type {object}\n   * @property {boolean} isColorSlider\n   * @property {number[]} containerSize\n   */\n\n  this._dragDataCache = {};\n  /**\n   * Color slider handle element\n   * @type {SVG|VML}\n   */\n\n  this.sliderHandleElement = null;\n  /**\n   * hue bar handle element\n   * @type {SVG|VML}\n   */\n\n  this.huebarHandleElement = null;\n  /**\n   * Element that render base color in colorslider part\n   * @type {SVG|VML}\n   */\n\n  this.baseColorElement = null;\n  /**\n   * @type {Drag}\n   */\n\n  this.drag = new Drag({\n    distance: 0\n  }, container); // bind drag events\n\n  this.drag.on({\n    dragStart: this._onDragStart,\n    drag: this._onDrag,\n    dragEnd: this._onDragEnd,\n    click: this._onClick\n  }, this);\n}\n\ninherit(Slider, View);\n/**\n * @override\n */\n\nSlider.prototype._beforeDestroy = function () {\n  this.drag.off();\n  this.drag = this.options = this._dragDataCache = this.sliderHandleElement = this.huebarHandleElement = this.baseColorElement = null;\n};\n/**\n * Toggle slider view\n * @param {boolean} onOff - set true then reveal slider view\n */\n\n\nSlider.prototype.toggle = function (onOff) {\n  this.container.style.display = !!onOff ? 'block' : 'none';\n};\n/**\n * Get slider display status\n * @returns {boolean} return true when slider is visible\n */\n\n\nSlider.prototype.isVisible = function () {\n  return this.container.style.display === 'block';\n};\n/**\n * Render slider view\n * @override\n * @param {string} colorStr - hex string color from parent view (Layout)\n */\n\n\nSlider.prototype.render = function (colorStr) {\n  var container = this.container;\n  var options = this.options;\n  var html = tmpl.layout;\n  var rgb, hsv;\n\n  if (!colorUtil.isValidRGB(colorStr)) {\n    return;\n  }\n\n  html = html.replace(/{{slider}}/, tmpl.slider);\n  html = html.replace(/{{huebar}}/, tmpl.huebar);\n  html = html.replace(/{{cssPrefix}}/g, options.cssPrefix);\n  html = html.replace(/{{id}}/g, options.id);\n  this.container.innerHTML = html;\n  this.sliderHandleElement = container.querySelector('.' + options.cssPrefix + 'slider-handle');\n  this.huebarHandleElement = container.querySelector('.' + options.cssPrefix + 'huebar-handle');\n  this.baseColorElement = container.querySelector('.' + options.cssPrefix + 'slider-basecolor');\n  rgb = colorUtil.hexToRGB(colorStr);\n  hsv = colorUtil.rgbToHSV.apply(null, rgb);\n  this.moveHue(hsv[0], true);\n  this.moveSaturationAndValue(hsv[1], hsv[2], true);\n};\n/**\n * Move colorslider by newLeft(X), newTop(Y) value\n * @private\n * @param {number} newLeft - left pixel value to move handle\n * @param {number} newTop - top pixel value to move handle\n * @param {boolean} [silent=false] - set true then not fire custom event\n */\n\n\nSlider.prototype._moveColorSliderHandle = function (newLeft, newTop, silent) {\n  var handle = this.sliderHandleElement;\n  var handleColor; // Check position limitation.\n\n  newTop = Math.max(COLORSLIDER_POS_LIMIT_RANGE[0], newTop);\n  newTop = Math.min(COLORSLIDER_POS_LIMIT_RANGE[1], newTop);\n  newLeft = Math.max(COLORSLIDER_POS_LIMIT_RANGE[0], newLeft);\n  newLeft = Math.min(COLORSLIDER_POS_LIMIT_RANGE[1], newLeft);\n  svgvml.setTranslateXY(handle, newLeft, newTop);\n  handleColor = newTop > 50 ? 'white' : 'black';\n  svgvml.setStrokeColor(handle, handleColor);\n\n  if (!silent) {\n    this.fire('_selectColor', {\n      color: colorUtil.rgbToHEX.apply(null, this.getRGB())\n    });\n  }\n};\n/**\n * Move colorslider by supplied saturation and values.\n *\n * The movement of color slider handle follow HSV cylinder model. {@link https://en.wikipedia.org/wiki/HSL_and_HSV}\n * @param {number} saturation - the percent of saturation (0% ~ 100%)\n * @param {number} value - the percent of saturation (0% ~ 100%)\n * @param {boolean} [silent=false] - set true then not fire custom event\n */\n\n\nSlider.prototype.moveSaturationAndValue = function (saturation, value, silent) {\n  var absMin, maxValue, newLeft, newTop;\n  saturation = saturation || 0;\n  value = value || 0;\n  absMin = Math.abs(COLORSLIDER_POS_LIMIT_RANGE[0]);\n  maxValue = COLORSLIDER_POS_LIMIT_RANGE[1]; // subtract absMin value because current color position is not left, top of handle element.\n  // The saturation. from left 0 to right 100\n\n  newLeft = saturation * maxValue / 100 - absMin; // The Value. from top 100 to bottom 0. that why newTop subtract by maxValue.\n\n  newTop = maxValue - value * maxValue / 100 - absMin;\n\n  this._moveColorSliderHandle(newLeft, newTop, silent);\n};\n/**\n * Move color slider handle to supplied position\n *\n * The number of X, Y must be related value from color slider container\n * @private\n * @param {number} x - the pixel value to move handle\n * @param {number} y - the pixel value to move handle\n */\n\n\nSlider.prototype._moveColorSliderByPosition = function (x, y) {\n  var offset = COLORSLIDER_POS_LIMIT_RANGE[0];\n\n  this._moveColorSliderHandle(x + offset, y + offset);\n};\n/**\n * Get saturation and value value.\n * @returns {number[]} saturation and value\n */\n\n\nSlider.prototype.getSaturationAndValue = function () {\n  var absMin = Math.abs(COLORSLIDER_POS_LIMIT_RANGE[0]);\n  var maxValue = absMin + COLORSLIDER_POS_LIMIT_RANGE[1];\n  var position = svgvml.getTranslateXY(this.sliderHandleElement);\n  var saturation, value;\n  saturation = (position[1] + absMin) / maxValue * 100; // The value of HSV color model is inverted. top 100 ~ bottom 0. so subtract by 100\n\n  value = 100 - (position[0] + absMin) / maxValue * 100;\n  return [saturation, value];\n};\n/**\n * Move hue handle supplied pixel value\n * @private\n * @param {number} newTop - pixel to move hue handle\n * @param {boolean} [silent=false] - set true then not fire custom event\n */\n\n\nSlider.prototype._moveHueHandle = function (newTop, silent) {\n  var hueHandleElement = this.huebarHandleElement;\n  var baseColorElement = this.baseColorElement;\n  var newGradientColor, hexStr;\n  newTop = Math.max(HUEBAR_POS_LIMIT_RANGE[0], newTop);\n  newTop = Math.min(HUEBAR_POS_LIMIT_RANGE[1], newTop);\n  svgvml.setTranslateY(hueHandleElement, newTop);\n  newGradientColor = colorUtil.hsvToRGB(this.getHue(), 100, 100);\n  hexStr = colorUtil.rgbToHEX.apply(null, newGradientColor);\n  svgvml.setGradientColorStop(baseColorElement, hexStr);\n\n  if (!silent) {\n    this.fire('_selectColor', {\n      color: colorUtil.rgbToHEX.apply(null, this.getRGB())\n    });\n  }\n};\n/**\n * Move hue bar handle by supplied degree\n * @param {number} degree - (0 ~ 359.9 degree)\n * @param {boolean} [silent=false] - set true then not fire custom event\n */\n\n\nSlider.prototype.moveHue = function (degree, silent) {\n  var newTop = 0;\n  var absMin, maxValue;\n  absMin = Math.abs(HUEBAR_POS_LIMIT_RANGE[0]);\n  maxValue = absMin + HUEBAR_POS_LIMIT_RANGE[1];\n  degree = degree || 0;\n  newTop = maxValue * degree / HUE_WHEEL_MAX - absMin;\n\n  this._moveHueHandle(newTop, silent);\n};\n/**\n * Move hue bar handle by supplied percent\n * @private\n * @param {number} y - pixel value to move hue handle\n */\n\n\nSlider.prototype._moveHueByPosition = function (y) {\n  var offset = HUEBAR_POS_LIMIT_RANGE[0];\n\n  this._moveHueHandle(y + offset);\n};\n/**\n * Get huebar handle position by color degree\n * @returns {number} degree (0 ~ 359.9 degree)\n */\n\n\nSlider.prototype.getHue = function () {\n  var handle = this.huebarHandleElement;\n  var position = svgvml.getTranslateXY(handle);\n  var absMin, maxValue;\n  absMin = Math.abs(HUEBAR_POS_LIMIT_RANGE[0]);\n  maxValue = absMin + HUEBAR_POS_LIMIT_RANGE[1]; // maxValue : 359.99 = pos.y : x\n\n  return (position[0] + absMin) * HUE_WHEEL_MAX / maxValue;\n};\n/**\n * Get HSV value from slider\n * @returns {number[]} hsv values\n */\n\n\nSlider.prototype.getHSV = function () {\n  var sv = this.getSaturationAndValue();\n  var h = this.getHue();\n  return [h].concat(sv);\n};\n/**\n * Get RGB value from slider\n * @returns {number[]} RGB value\n */\n\n\nSlider.prototype.getRGB = function () {\n  return colorUtil.hsvToRGB.apply(null, this.getHSV());\n};\n/**********\n * Drag event handler\n **********/\n\n/**\n * Cache immutable data when dragging or click view\n * @param {object} event - Click, DragStart event.\n * @returns {object} cached data.\n */\n\n\nSlider.prototype._prepareColorSliderForMouseEvent = function (event) {\n  var options = this.options;\n  var sliderPart = closest(event.target, '.' + options.cssPrefix + 'slider-part');\n  var cache;\n  cache = this._dragDataCache = {\n    isColorSlider: hasClass(sliderPart, options.cssPrefix + 'slider-left'),\n    parentElement: sliderPart\n  };\n  return cache;\n};\n/**\n * Click event handler\n * @param {object} clickEvent - Click event from Drag module\n */\n\n\nSlider.prototype._onClick = function (clickEvent) {\n  var cache = this._prepareColorSliderForMouseEvent(clickEvent);\n\n  var mousePos = getMousePosition(clickEvent.originEvent, cache.parentElement);\n\n  if (cache.isColorSlider) {\n    this._moveColorSliderByPosition(mousePos[0], mousePos[1]);\n  } else {\n    this._moveHueByPosition(mousePos[1]);\n  }\n\n  this._dragDataCache = null;\n};\n/**\n * DragStart event handler\n * @param {object} dragStartEvent - dragStart event data from Drag#dragStart\n */\n\n\nSlider.prototype._onDragStart = function (dragStartEvent) {\n  this._prepareColorSliderForMouseEvent(dragStartEvent);\n};\n/**\n * Drag event handler\n * @param {Drag#drag} dragEvent - drag event data\n */\n\n\nSlider.prototype._onDrag = function (dragEvent) {\n  var cache = this._dragDataCache;\n  var mousePos = getMousePosition(dragEvent.originEvent, cache.parentElement);\n\n  if (cache.isColorSlider) {\n    this._moveColorSliderByPosition(mousePos[0], mousePos[1]);\n  } else {\n    this._moveHueByPosition(mousePos[1]);\n  }\n};\n/**\n * Drag#dragEnd event handler\n */\n\n\nSlider.prototype._onDragEnd = function () {\n  this._dragDataCache = null;\n};\n\nCustomEvents.mixin(Slider);\nmodule.exports = Slider;\n\n/***/ }),\n/* 32 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * @fileoverview module for manipulate SVG or VML object\n * @author NHN. FE Development Team <dl_javascript@nhn.com>\n */\n\n\nvar isOldBrowser = __webpack_require__(4).isOldBrowser;\n\nvar PARSE_TRANSLATE_NUM_REGEX = /[\\.\\-0-9]+/g;\nvar SVG_HUE_HANDLE_RIGHT_POS = -6;\n/* istanbul ignore next */\n\nvar svgvml = {\n  /**\n   * Get translate transform value\n   * @param {SVG|VML} obj - svg or vml object that want to know translate x, y\n   * @returns {number[]} translated coordinates [x, y]\n   */\n  getTranslateXY: function (obj) {\n    var temp;\n\n    if (isOldBrowser) {\n      temp = obj.style;\n      return [parseFloat(temp.top), parseFloat(temp.left)];\n    }\n\n    temp = obj.getAttribute('transform');\n\n    if (!temp) {\n      return [0, 0];\n    }\n\n    temp = temp.match(PARSE_TRANSLATE_NUM_REGEX); // need caution for difference of VML, SVG coordinates system.\n    // translate command need X coords in first parameter. but VML is use CSS coordinate system(top, left)\n\n    return [parseFloat(temp[1]), parseFloat(temp[0])];\n  },\n\n  /**\n   * Set translate transform value\n   * @param {SVG|VML} obj - SVG or VML object to setting translate transform.\n   * @param {number} x - translate X value\n   * @param {number} y - translate Y value\n   */\n  setTranslateXY: function (obj, x, y) {\n    if (isOldBrowser) {\n      obj.style.left = x + 'px';\n      obj.style.top = y + 'px';\n    } else {\n      obj.setAttribute('transform', 'translate(' + x + ',' + y + ')');\n    }\n  },\n\n  /**\n   * Set translate only Y value\n   * @param {SVG|VML} obj - SVG or VML object to setting translate transform.\n   * @param {number} y - translate Y value\n   */\n  setTranslateY: function (obj, y) {\n    if (isOldBrowser) {\n      obj.style.top = y + 'px';\n    } else {\n      obj.setAttribute('transform', 'translate(' + SVG_HUE_HANDLE_RIGHT_POS + ',' + y + ')');\n    }\n  },\n\n  /**\n   * Set stroke color to SVG or VML object\n   * @param {SVG|VML} obj - SVG or VML object to setting stroke color\n   * @param {string} colorStr - color string\n   */\n  setStrokeColor: function (obj, colorStr) {\n    if (isOldBrowser) {\n      obj.strokecolor = colorStr;\n    } else {\n      obj.setAttribute('stroke', colorStr);\n    }\n  },\n\n  /**\n   * Set gradient stop color to SVG, VML object.\n   * @param {SVG|VML} obj - SVG, VML object to applying gradient stop color\n   * @param {string} colorStr - color string\n   */\n  setGradientColorStop: function (obj, colorStr) {\n    if (isOldBrowser) {\n      obj.color = colorStr;\n    } else {\n      obj.setAttribute('stop-color', colorStr);\n    }\n  }\n};\nmodule.exports = svgvml;\n\n/***/ }),\n/* 33 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(34);\nmodule.exports = __webpack_require__(35);\n\n\n/***/ }),\n/* 34 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n/* 35 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Collection = __webpack_require__(19);\n\nvar View = __webpack_require__(8);\n\nvar Drag = __webpack_require__(24);\n\nvar create = __webpack_require__(48);\n\nvar Palette = __webpack_require__(29);\n\nvar Slider = __webpack_require__(31);\n\nvar colorUtil = __webpack_require__(12);\n\nvar svgvml = __webpack_require__(32);\n\nvar colorPicker = {\n  Collection: Collection,\n  View: View,\n  Drag: Drag,\n  create: create,\n  Palette: Palette,\n  Slider: Slider,\n  colorutil: colorUtil,\n  svgvml: svgvml\n};\nmodule.exports = colorPicker;\n\n/***/ }),\n/* 36 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * @fileoverview Check whether the given variable is null or not.\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n\n\n\n/**\n * Check whether the given variable is null or not.\n * If the given variable(arguments[0]) is null, returns true.\n * @param {*} obj - Target for checking\n * @returns {boolean} Is null?\n * @memberof module:type\n */\nfunction isNull(obj) {\n  return obj === null;\n}\n\nmodule.exports = isNull;\n\n\n/***/ }),\n/* 37 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * @fileoverview Send hostname on DOMContentLoaded.\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n\n\n\nvar isUndefined = __webpack_require__(3);\nvar imagePing = __webpack_require__(38);\n\nvar ms7days = 7 * 24 * 60 * 60 * 1000;\n\n/**\n * Check if the date has passed 7 days\n * @param {number} date - milliseconds\n * @returns {boolean}\n * @private\n */\nfunction isExpired(date) {\n  var now = new Date().getTime();\n\n  return now - date > ms7days;\n}\n\n/**\n * Send hostname on DOMContentLoaded.\n * To prevent hostname set tui.usageStatistics to false.\n * @param {string} appName - application name\n * @param {string} trackingId - GA tracking ID\n * @ignore\n */\nfunction sendHostname(appName, trackingId) {\n  var url = 'https://www.google-analytics.com/collect';\n  var hostname = location.hostname;\n  var hitType = 'event';\n  var eventCategory = 'use';\n  var applicationKeyForStorage = 'TOAST UI ' + appName + ' for ' + hostname + ': Statistics';\n  var date = window.localStorage.getItem(applicationKeyForStorage);\n\n  // skip if the flag is defined and is set to false explicitly\n  if (!isUndefined(window.tui) && window.tui.usageStatistics === false) {\n    return;\n  }\n\n  // skip if not pass seven days old\n  if (date && !isExpired(date)) {\n    return;\n  }\n\n  window.localStorage.setItem(applicationKeyForStorage, new Date().getTime());\n\n  setTimeout(function() {\n    if (document.readyState === 'interactive' || document.readyState === 'complete') {\n      imagePing(url, {\n        v: 1,\n        t: hitType,\n        tid: trackingId,\n        cid: hostname,\n        dp: hostname,\n        dh: appName,\n        el: appName,\n        ec: eventCategory\n      });\n    }\n  }, 1000);\n}\n\nmodule.exports = sendHostname;\n\n\n/***/ }),\n/* 38 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * @fileoverview Request image ping.\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n\n\n\nvar forEachOwnProperties = __webpack_require__(7);\n\n/**\n * @module request\n */\n\n/**\n * Request image ping.\n * @param {String} url url for ping request\n * @param {Object} trackingInfo infos for make query string\n * @returns {HTMLElement}\n * @memberof module:request\n * @example\n * var imagePing = require('tui-code-snippet/request/imagePing'); // node, commonjs\n *\n * imagePing('https://www.google-analytics.com/collect', {\n *     v: 1,\n *     t: 'event',\n *     tid: 'trackingid',\n *     cid: 'cid',\n *     dp: 'dp',\n *     dh: 'dh'\n * });\n */\nfunction imagePing(url, trackingInfo) {\n  var trackingElement = document.createElement('img');\n  var queryString = '';\n  forEachOwnProperties(trackingInfo, function(value, key) {\n    queryString += '&' + key + '=' + value;\n  });\n  queryString = queryString.substring(1);\n\n  trackingElement.src = url + '?' + queryString;\n\n  trackingElement.style.display = 'none';\n  document.body.appendChild(trackingElement);\n  document.body.removeChild(trackingElement);\n\n  return trackingElement;\n}\n\nmodule.exports = imagePing;\n\n\n/***/ }),\n/* 39 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * @fileoverview Add css class to element\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n\n\n\nvar forEach = __webpack_require__(2);\nvar inArray = __webpack_require__(5);\nvar getClass = __webpack_require__(23);\nvar setClassName = __webpack_require__(40);\n\n/**\n * domUtil module\n * @module domUtil\n */\n\n/**\n * Add css class to element\n * @param {(HTMLElement|SVGElement)} element - target element\n * @param {...string} cssClass - css classes to add\n * @memberof module:domUtil\n */\nfunction addClass(element) {\n  var cssClass = Array.prototype.slice.call(arguments, 1);\n  var classList = element.classList;\n  var newClass = [];\n  var origin;\n\n  if (classList) {\n    forEach(cssClass, function(name) {\n      element.classList.add(name);\n    });\n\n    return;\n  }\n\n  origin = getClass(element);\n\n  if (origin) {\n    cssClass = [].concat(origin.split(/\\s+/), cssClass);\n  }\n\n  forEach(cssClass, function(cls) {\n    if (inArray(cls, newClass) < 0) {\n      newClass.push(cls);\n    }\n  });\n\n  setClassName(element, newClass);\n}\n\nmodule.exports = addClass;\n\n\n/***/ }),\n/* 40 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * @fileoverview Set className value\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n\n\n\nvar isArray = __webpack_require__(1);\nvar isUndefined = __webpack_require__(3);\n\n/**\n * Set className value\n * @param {(HTMLElement|SVGElement)} element - target element\n * @param {(string|string[])} cssClass - class names\n * @private\n */\nfunction setClassName(element, cssClass) {\n  cssClass = isArray(cssClass) ? cssClass.join(' ') : cssClass;\n\n  cssClass = cssClass.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n\n  if (isUndefined(element.className.baseVal)) {\n    element.className = cssClass;\n\n    return;\n  }\n\n  element.className.baseVal = cssClass;\n}\n\nmodule.exports = setClassName;\n\n\n/***/ }),\n/* 41 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * @fileoverview Check whether the given variable is a number or not.\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n\n\n\n/**\n * Check whether the given variable is a number or not.\n * If the given variable is a number, return true.\n * @param {*} obj - Target for checking\n * @returns {boolean} Is number?\n * @memberof module:type\n */\nfunction isNumber(obj) {\n  return typeof obj === 'number' || obj instanceof Number;\n}\n\nmodule.exports = isNumber;\n\n\n/***/ }),\n/* 42 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * @fileoverview Disable browser's text selection behaviors.\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n\n\n\nvar on = __webpack_require__(14);\nvar preventDefault = __webpack_require__(15);\nvar setData = __webpack_require__(43);\nvar testCSSProp = __webpack_require__(27);\n\nvar SUPPORT_SELECTSTART = 'onselectstart' in document;\nvar KEY_PREVIOUS_USER_SELECT = 'prevUserSelect';\nvar userSelectProperty = testCSSProp([\n  'userSelect',\n  'WebkitUserSelect',\n  'OUserSelect',\n  'MozUserSelect',\n  'msUserSelect'\n]);\n\n/**\n * Disable browser's text selection behaviors.\n * @param {HTMLElement} [el] - target element. if not supplied, use `document`\n * @memberof module:domUtil\n */\nfunction disableTextSelection(el) {\n  if (!el) {\n    el = document;\n  }\n\n  if (SUPPORT_SELECTSTART) {\n    on(el, 'selectstart', preventDefault);\n  } else {\n    el = (el === document) ? document.documentElement : el;\n    setData(el, KEY_PREVIOUS_USER_SELECT, el.style[userSelectProperty]);\n    el.style[userSelectProperty] = 'none';\n  }\n}\n\nmodule.exports = disableTextSelection;\n\n\n/***/ }),\n/* 43 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * @fileoverview Set data attribute to target element\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n\n\n\nvar convertToKebabCase = __webpack_require__(16);\n\n/**\n * Set data attribute to target element\n * @param {HTMLElement} element - element to set data attribute\n * @param {string} key - key\n * @param {string} value - value\n * @memberof module:domUtil\n */\nfunction setData(element, key, value) {\n  if (element.dataset) {\n    element.dataset[key] = value;\n\n    return;\n  }\n\n  element.setAttribute('data-' + convertToKebabCase(key), value);\n}\n\nmodule.exports = setData;\n\n\n/***/ }),\n/* 44 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * @fileoverview Transform the Array-like object to Array.\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n\n\n\nvar off = __webpack_require__(17);\nvar preventDefault = __webpack_require__(15);\nvar getData = __webpack_require__(45);\nvar removeData = __webpack_require__(46);\nvar testCSSProp = __webpack_require__(27);\n\nvar SUPPORT_SELECTSTART = 'onselectstart' in document;\nvar KEY_PREVIOUS_USER_SELECT = 'prevUserSelect';\nvar userSelectProperty = testCSSProp([\n  'userSelect',\n  'WebkitUserSelect',\n  'OUserSelect',\n  'MozUserSelect',\n  'msUserSelect'\n]);\n\n/**\n * Enable browser's text selection behaviors.\n * @param {HTMLElement} [el] - target element. if not supplied, use `document`\n * @memberof module:domUtil\n */\nfunction enableTextSelection(el) {\n  if (!el) {\n    el = document;\n  }\n\n  if (SUPPORT_SELECTSTART) {\n    off(el, 'selectstart', preventDefault);\n  } else {\n    el = (el === document) ? document.documentElement : el;\n    el.style[userSelectProperty] = getData(el, KEY_PREVIOUS_USER_SELECT) || 'auto';\n    removeData(el, KEY_PREVIOUS_USER_SELECT);\n  }\n}\n\nmodule.exports = enableTextSelection;\n\n\n/***/ }),\n/* 45 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * @fileoverview Get data value from data-attribute\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n\n\n\nvar convertToKebabCase = __webpack_require__(16);\n\n/**\n * Get data value from data-attribute\n * @param {HTMLElement} element - target element\n * @param {string} key - key\n * @returns {string} value\n * @memberof module:domUtil\n */\nfunction getData(element, key) {\n  if (element.dataset) {\n    return element.dataset[key];\n  }\n\n  return element.getAttribute('data-' + convertToKebabCase(key));\n}\n\nmodule.exports = getData;\n\n\n/***/ }),\n/* 46 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * @fileoverview Remove data property\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n\n\n\nvar convertToKebabCase = __webpack_require__(16);\n\n/**\n * Remove data property\n * @param {HTMLElement} element - target element\n * @param {string} key - key\n * @memberof module:domUtil\n */\nfunction removeData(element, key) {\n  if (element.dataset) {\n    delete element.dataset[key];\n\n    return;\n  }\n\n  element.removeAttribute('data-' + convertToKebabCase(key));\n}\n\nmodule.exports = removeData;\n\n\n/***/ }),\n/* 47 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * @fileoverview Normalize mouse event's button attributes.\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n\n\n\nvar browser = __webpack_require__(22);\nvar inArray = __webpack_require__(5);\n\nvar primaryButton = ['0', '1', '3', '5', '7'];\nvar secondaryButton = ['2', '6'];\nvar wheelButton = ['4'];\n\n/**\n * @module domEvent\n */\n\n/**\n * Normalize mouse event's button attributes.\n *\n * Can detect which button is clicked by this method.\n *\n * Meaning of return numbers\n *\n * - 0: primary mouse button\n * - 1: wheel button or center button\n * - 2: secondary mouse button\n * @param {MouseEvent} mouseEvent - The mouse event object want to know.\n * @returns {number} - The value of meaning which button is clicked?\n * @memberof module:domEvent\n */\nfunction getMouseButton(mouseEvent) {\n  if (browser.msie && browser.version <= 8) {\n    return getMouseButtonIE8AndEarlier(mouseEvent);\n  }\n\n  return mouseEvent.button;\n}\n\n/**\n * Normalize return value of mouseEvent.button\n * Make same to standard MouseEvent's button value\n * @param {DispCEventObj} mouseEvent - mouse event object\n * @returns {number|null} - id indicating which mouse button is clicked\n * @private\n */\nfunction getMouseButtonIE8AndEarlier(mouseEvent) {\n  var button = String(mouseEvent.button);\n\n  if (inArray(button, primaryButton) > -1) {\n    return 0;\n  }\n\n  if (inArray(button, secondaryButton) > -1) {\n    return 2;\n  }\n\n  if (inArray(button, wheelButton) > -1) {\n    return 1;\n  }\n\n  return null;\n}\n\nmodule.exports = getMouseButton;\n\n\n/***/ }),\n/* 48 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * @fileoverview ColorPicker factory module\n * @author NHN. FE Development Team <dl_javascript@nhn.com>\n */\n\n\nvar CustomEvents = __webpack_require__(10);\n\nvar extend = __webpack_require__(0);\n\nvar util = __webpack_require__(4);\n\nvar colorUtil = __webpack_require__(12);\n\nvar Layout = __webpack_require__(49);\n\nvar Palette = __webpack_require__(29);\n\nvar Slider = __webpack_require__(31);\n/**\n * Create an unique id for a color-picker instance.\n * @private\n */\n\n\nvar currentId = 0;\n\nfunction generateId() {\n  currentId += 1;\n  return currentId;\n}\n/**\n * @constructor\n * @param {object} options - options for colorpicker component\n *  @param {HTMLDivElement} options.container - container element\n *  @param {string} [options.color='#ffffff'] - default selected color\n *  @param {string[]} [options.preset] - color preset for palette (use base16 palette if not supplied)\n *  @param {string} [options.cssPrefix='tui-colorpicker-'] - css prefix text for each child elements\n *  @param {string} [options.detailTxt='Detail'] - text for detail button.\n *  @param {boolean} [options.usageStatistics=true] - Let us know the hostname. If you don't want to send the hostname, please set to false.\n * @example\n * var colorPicker = tui.colorPicker; // or require('tui-color-picker')\n *\n * var instance = colorPicker.create({\n *   container: document.getElementById('color-picker')\n * });\n */\n\n\nfunction ColorPicker(options) {\n  var layout;\n\n  if (!(this instanceof ColorPicker)) {\n    return new ColorPicker(options);\n  }\n  /**\n   * Option object\n   * @type {object}\n   * @private\n   */\n\n\n  options = this.options = extend({\n    container: null,\n    color: '#f8f8f8',\n    preset: ['#181818', '#282828', '#383838', '#585858', '#b8b8b8', '#d8d8d8', '#e8e8e8', '#f8f8f8', '#ab4642', '#dc9656', '#f7ca88', '#a1b56c', '#86c1b9', '#7cafc2', '#ba8baf', '#a16946'],\n    cssPrefix: 'tui-colorpicker-',\n    detailTxt: 'Detail',\n    id: generateId(),\n    usageStatistics: true\n  }, options);\n\n  if (!options.container) {\n    throw new Error('ColorPicker(): need container option.');\n  }\n  /**********\n   * Create layout view\n   **********/\n\n  /**\n   * @type {Layout}\n   * @private\n   */\n\n\n  layout = this.layout = new Layout(options, options.container);\n  /**********\n   * Create palette view\n   **********/\n\n  this.palette = new Palette(options, layout.container);\n  this.palette.on({\n    _selectColor: this._onSelectColorInPalette,\n    _toggleSlider: this._onToggleSlider\n  }, this);\n  /**********\n   * Create slider view\n   **********/\n\n  this.slider = new Slider(options, layout.container);\n  this.slider.on('_selectColor', this._onSelectColorInSlider, this);\n  /**********\n   * Add child views\n   **********/\n\n  layout.addChild(this.palette);\n  layout.addChild(this.slider);\n  this.render(options.color);\n\n  if (options.usageStatistics) {\n    util.sendHostName();\n  }\n}\n/**\n * Handler method for Palette#_selectColor event\n * @private\n * @fires ColorPicker#selectColor\n * @param {object} selectColorEventData - event data\n */\n\n\nColorPicker.prototype._onSelectColorInPalette = function (selectColorEventData) {\n  var color = selectColorEventData.color;\n  var opt = this.options;\n\n  if (!colorUtil.isValidRGB(color) && color !== '') {\n    this.render();\n    return;\n  }\n  /**\n   * @event ColorPicker#selectColor\n   * @type {object}\n   * @property {string} color - selected color (hex string)\n   * @property {string} origin - flags for represent the source of event fires.\n   */\n\n\n  this.fire('selectColor', {\n    color: color,\n    origin: 'palette'\n  });\n\n  if (opt.color === color) {\n    return;\n  }\n\n  opt.color = color;\n  this.render(color);\n};\n/**\n * Handler method for Palette#_toggleSlider event\n * @private\n */\n\n\nColorPicker.prototype._onToggleSlider = function () {\n  this.slider.toggle(!this.slider.isVisible());\n};\n/**\n * Handler method for Slider#_selectColor event\n * @private\n * @fires ColorPicker#selectColor\n * @param {object} selectColorEventData - event data\n */\n\n\nColorPicker.prototype._onSelectColorInSlider = function (selectColorEventData) {\n  var color = selectColorEventData.color;\n  var opt = this.options;\n  /**\n   * @event ColorPicker#selectColor\n   * @type {object}\n   * @property {string} color - selected color (hex string)\n   * @property {string} origin - flags for represent the source of event fires.\n   * @ignore\n   */\n\n  this.fire('selectColor', {\n    color: color,\n    origin: 'slider'\n  });\n\n  if (opt.color === color) {\n    return;\n  }\n\n  opt.color = color;\n  this.palette.render(color);\n};\n/**********\n * PUBLIC API\n **********/\n\n/**\n * Set color to colorpicker instance.<br>\n * The string parameter must be hex color value\n * @param {string} hexStr - hex formatted color string\n * @example\n * instance.setColor('#ffff00');\n */\n\n\nColorPicker.prototype.setColor = function (hexStr) {\n  if (!colorUtil.isValidRGB(hexStr)) {\n    throw new Error('ColorPicker#setColor(): need valid hex string color value');\n  }\n\n  this.options.color = hexStr;\n  this.render(hexStr);\n};\n/**\n * Get hex color string of current selected color in colorpicker instance.\n * @returns {string} hex string formatted color\n * @example\n * instance.setColor('#ffff00');\n * instance.getColor(); // '#ffff00';\n */\n\n\nColorPicker.prototype.getColor = function () {\n  return this.options.color;\n};\n/**\n * Toggle colorpicker element. set true then reveal colorpicker view.\n * @param {boolean} [isShow=false] - A flag to show\n * @example\n * instance.toggle(false); // hide\n * instance.toggle(); // hide\n * instance.toggle(true); // show\n */\n\n\nColorPicker.prototype.toggle = function (isShow) {\n  this.layout.container.style.display = !!isShow ? 'block' : 'none';\n};\n/**\n * Render colorpicker\n * @param {string} [color] - selected color\n * @ignore\n */\n\n\nColorPicker.prototype.render = function (color) {\n  this.layout.render(color || this.options.color);\n};\n/**\n * Destroy colorpicker instance.\n * @example\n * instance.destroy(); // DOM-element is removed\n */\n\n\nColorPicker.prototype.destroy = function () {\n  this.layout.destroy();\n  this.options.container.innerHTML = '';\n  this.layout = this.slider = this.palette = this.options = null;\n};\n\nCustomEvents.mixin(ColorPicker);\nmodule.exports = ColorPicker;\n\n/***/ }),\n/* 49 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * @fileoverview ColorPicker layout module\n * @author NHN. FE Development Team <dl_javascript@nhn.com>\n */\n\n\nvar extend = __webpack_require__(0);\n\nvar inherit = __webpack_require__(18);\n\nvar domUtil = __webpack_require__(9);\n\nvar View = __webpack_require__(8);\n/**\n * @constructor\n * @extends {View}\n * @param {object} options - option object\n *  @param {string} options.cssPrefix - css prefix for each child elements\n * @param {HTMLDivElement} container - container\n * @ignore\n */\n\n\nfunction Layout(options, container) {\n  /**\n   * option object\n   * @type {object}\n   */\n  this.options = extend({\n    cssPrefix: 'tui-colorpicker-'\n  }, options);\n  container = domUtil.appendHTMLElement('div', container, this.options.cssPrefix + 'container');\n  View.call(this, options, container);\n  this.render();\n}\n\ninherit(Layout, View);\n/**\n * @override\n * @param {string} [color] - selected color\n */\n\nLayout.prototype.render = function (color) {\n  this.recursive(function (view) {\n    view.render(color);\n  }, true);\n};\n\nmodule.exports = Layout;\n\n/***/ }),\n/* 50 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * @fileoverview Create a new object with the specified prototype object and properties.\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n\n\n\n/**\n * @module inheritance\n */\n\n/**\n * Create a new object with the specified prototype object and properties.\n * @param {Object} obj This object will be a prototype of the newly-created object.\n * @returns {Object}\n * @memberof module:inheritance\n */\nfunction createObject(obj) {\n  function F() {} // eslint-disable-line require-jsdoc\n  F.prototype = obj;\n\n  return new F();\n}\n\nmodule.exports = createObject;\n\n\n/***/ }),\n/* 51 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * @fileoverview Palette view template\n * @author NHN. FE Development Team <dl_javascript@nhn.com>\n */\n\n\nvar template = __webpack_require__(52);\n\nmodule.exports = function (context) {\n  var item = ['<li><input class=\"{{cssPrefix}}palette-button{{isSelected @this}}{{getItemClass @this}}\" type=\"button\"', '{{if isValidRGB @this}}', ' style=\"background-color:{{@this}};color:{{@this}}\"', '{{/if}}', ' title=\"{{@this}}\" value=\"{{@this}}\" /></li>'].join('');\n  var layout = ['<ul class=\"{{cssPrefix}}clearfix\">', '{{each preset}}', item, '{{/each}}', '</ul>', '<div class=\"{{cssPrefix}}clearfix\" style=\"overflow:hidden\">', '<input type=\"button\" class=\"{{cssPrefix}}palette-toggle-slider\" value=\"{{detailTxt}}\" />', '<input type=\"text\" class=\"{{cssPrefix}}palette-hex\" value=\"{{color}}\" maxlength=\"7\" />', '<span class=\"{{cssPrefix}}palette-preview\" style=\"background-color:{{color}};color:{{color}}\">{{color}}</span>', '</div>'].join('\\n');\n  return template(layout, context);\n};\n\n/***/ }),\n/* 52 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * @fileoverview Convert text by binding expressions with context.\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n\n\n\nvar inArray = __webpack_require__(5);\nvar forEach = __webpack_require__(2);\nvar isArray = __webpack_require__(1);\nvar isString = __webpack_require__(11);\nvar extend = __webpack_require__(0);\n\n// IE8 does not support capture groups.\nvar EXPRESSION_REGEXP = /{{\\s?|\\s?}}/g;\nvar BRACKET_NOTATION_REGEXP = /^[a-zA-Z0-9_@]+\\[[a-zA-Z0-9_@\"']+\\]$/;\nvar BRACKET_REGEXP = /\\[\\s?|\\s?\\]/;\nvar DOT_NOTATION_REGEXP = /^[a-zA-Z_]+\\.[a-zA-Z_]+$/;\nvar DOT_REGEXP = /\\./;\nvar STRING_NOTATION_REGEXP = /^[\"']\\w+[\"']$/;\nvar STRING_REGEXP = /\"|'/g;\nvar NUMBER_REGEXP = /^-?\\d+\\.?\\d*$/;\n\nvar EXPRESSION_INTERVAL = 2;\n\nvar BLOCK_HELPERS = {\n  'if': handleIf,\n  'each': handleEach,\n  'with': handleWith\n};\n\nvar isValidSplit = 'a'.split(/a/).length === 3;\n\n/**\n * Split by RegExp. (Polyfill for IE8)\n * @param {string} text - text to be splitted\\\n * @param {RegExp} regexp - regular expression\n * @returns {Array.<string>}\n */\nvar splitByRegExp = (function() {\n  if (isValidSplit) {\n    return function(text, regexp) {\n      return text.split(regexp);\n    };\n  }\n\n  return function(text, regexp) {\n    var result = [];\n    var prevIndex = 0;\n    var match, index;\n\n    if (!regexp.global) {\n      regexp = new RegExp(regexp, 'g');\n    }\n\n    match = regexp.exec(text);\n    while (match !== null) {\n      index = match.index;\n      result.push(text.slice(prevIndex, index));\n\n      prevIndex = index + match[0].length;\n      match = regexp.exec(text);\n    }\n    result.push(text.slice(prevIndex));\n\n    return result;\n  };\n})();\n\n/**\n * Find value in the context by an expression.\n * @param {string} exp - an expression\n * @param {object} context - context\n * @returns {*}\n * @private\n */\n// eslint-disable-next-line complexity\nfunction getValueFromContext(exp, context) {\n  var splitedExps;\n  var value = context[exp];\n\n  if (exp === 'true') {\n    value = true;\n  } else if (exp === 'false') {\n    value = false;\n  } else if (STRING_NOTATION_REGEXP.test(exp)) {\n    value = exp.replace(STRING_REGEXP, '');\n  } else if (BRACKET_NOTATION_REGEXP.test(exp)) {\n    splitedExps = exp.split(BRACKET_REGEXP);\n    value = getValueFromContext(splitedExps[0], context)[getValueFromContext(splitedExps[1], context)];\n  } else if (DOT_NOTATION_REGEXP.test(exp)) {\n    splitedExps = exp.split(DOT_REGEXP);\n    value = getValueFromContext(splitedExps[0], context)[splitedExps[1]];\n  } else if (NUMBER_REGEXP.test(exp)) {\n    value = parseFloat(exp);\n  }\n\n  return value;\n}\n\n/**\n * Extract elseif and else expressions.\n * @param {Array.<string>} ifExps - args of if expression\n * @param {Array.<string>} sourcesInsideBlock - sources inside if block\n * @returns {object} - exps: expressions of if, elseif, and else / sourcesInsideIf: sources inside if, elseif, and else block.\n * @private\n */\nfunction extractElseif(ifExps, sourcesInsideBlock) {\n  var exps = [ifExps];\n  var sourcesInsideIf = [];\n  var otherIfCount = 0;\n  var start = 0;\n\n  // eslint-disable-next-line complexity\n  forEach(sourcesInsideBlock, function(source, index) {\n    if (source.indexOf('if') === 0) {\n      otherIfCount += 1;\n    } else if (source === '/if') {\n      otherIfCount -= 1;\n    } else if (!otherIfCount && (source.indexOf('elseif') === 0 || source === 'else')) {\n      exps.push(source === 'else' ? ['true'] : source.split(' ').slice(1));\n      sourcesInsideIf.push(sourcesInsideBlock.slice(start, index));\n      start = index + 1;\n    }\n  });\n\n  sourcesInsideIf.push(sourcesInsideBlock.slice(start));\n\n  return {\n    exps: exps,\n    sourcesInsideIf: sourcesInsideIf\n  };\n}\n\n/**\n * Helper function for \"if\". \n * @param {Array.<string>} exps - array of expressions split by spaces\n * @param {Array.<string>} sourcesInsideBlock - array of sources inside the if block\n * @param {object} context - context\n * @returns {string}\n * @private\n */\nfunction handleIf(exps, sourcesInsideBlock, context) {\n  var analyzed = extractElseif(exps, sourcesInsideBlock);\n  var result = false;\n  var compiledSource = '';\n\n  forEach(analyzed.exps, function(exp, index) {\n    result = handleExpression(exp, context);\n    if (result) {\n      compiledSource = compile(analyzed.sourcesInsideIf[index], context);\n    }\n\n    return !result;\n  });\n\n  return compiledSource;\n}\n\n/**\n * Helper function for \"each\".\n * @param {Array.<string>} exps - array of expressions split by spaces\n * @param {Array.<string>} sourcesInsideBlock - array of sources inside the each block\n * @param {object} context - context\n * @returns {string}\n * @private\n */\nfunction handleEach(exps, sourcesInsideBlock, context) {\n  var collection = handleExpression(exps, context);\n  var additionalKey = isArray(collection) ? '@index' : '@key';\n  var additionalContext = {};\n  var result = '';\n\n  forEach(collection, function(item, key) {\n    additionalContext[additionalKey] = key;\n    additionalContext['@this'] = item;\n    extend(context, additionalContext);\n\n    result += compile(sourcesInsideBlock.slice(), context);\n  });\n\n  return result;\n}\n\n/**\n * Helper function for \"with ... as\"\n * @param {Array.<string>} exps - array of expressions split by spaces\n * @param {Array.<string>} sourcesInsideBlock - array of sources inside the with block\n * @param {object} context - context\n * @returns {string}\n * @private\n */\nfunction handleWith(exps, sourcesInsideBlock, context) {\n  var asIndex = inArray('as', exps);\n  var alias = exps[asIndex + 1];\n  var result = handleExpression(exps.slice(0, asIndex), context);\n\n  var additionalContext = {};\n  additionalContext[alias] = result;\n\n  return compile(sourcesInsideBlock, extend(context, additionalContext)) || '';\n}\n\n/**\n * Extract sources inside block in place.\n * @param {Array.<string>} sources - array of sources\n * @param {number} start - index of start block\n * @param {number} end - index of end block\n * @returns {Array.<string>}\n * @private\n */\nfunction extractSourcesInsideBlock(sources, start, end) {\n  var sourcesInsideBlock = sources.splice(start + 1, end - start);\n  sourcesInsideBlock.pop();\n\n  return sourcesInsideBlock;\n}\n\n/**\n * Handle block helper function\n * @param {string} helperKeyword - helper keyword (ex. if, each, with)\n * @param {Array.<string>} sourcesToEnd - array of sources after the starting block\n * @param {object} context - context\n * @returns {Array.<string>}\n * @private\n */\nfunction handleBlockHelper(helperKeyword, sourcesToEnd, context) {\n  var executeBlockHelper = BLOCK_HELPERS[helperKeyword];\n  var helperCount = 1;\n  var startBlockIndex = 0;\n  var endBlockIndex;\n  var index = startBlockIndex + EXPRESSION_INTERVAL;\n  var expression = sourcesToEnd[index];\n\n  while (helperCount && isString(expression)) {\n    if (expression.indexOf(helperKeyword) === 0) {\n      helperCount += 1;\n    } else if (expression.indexOf('/' + helperKeyword) === 0) {\n      helperCount -= 1;\n      endBlockIndex = index;\n    }\n\n    index += EXPRESSION_INTERVAL;\n    expression = sourcesToEnd[index];\n  }\n\n  if (helperCount) {\n    throw Error(helperKeyword + ' needs {{/' + helperKeyword + '}} expression.');\n  }\n\n  sourcesToEnd[startBlockIndex] = executeBlockHelper(\n    sourcesToEnd[startBlockIndex].split(' ').slice(1),\n    extractSourcesInsideBlock(sourcesToEnd, startBlockIndex, endBlockIndex),\n    context\n  );\n\n  return sourcesToEnd;\n}\n\n/**\n * Helper function for \"custom helper\".\n * If helper is not a function, return helper itself.\n * @param {Array.<string>} exps - array of expressions split by spaces (first element: helper)\n * @param {object} context - context\n * @returns {string}\n * @private\n */\nfunction handleExpression(exps, context) {\n  var result = getValueFromContext(exps[0], context);\n\n  if (result instanceof Function) {\n    return executeFunction(result, exps.slice(1), context);\n  }\n\n  return result;\n}\n\n/**\n * Execute a helper function.\n * @param {Function} helper - helper function\n * @param {Array.<string>} argExps - expressions of arguments\n * @param {object} context - context\n * @returns {string} - result of executing the function with arguments\n * @private\n */\nfunction executeFunction(helper, argExps, context) {\n  var args = [];\n  forEach(argExps, function(exp) {\n    args.push(getValueFromContext(exp, context));\n  });\n\n  return helper.apply(null, args);\n}\n\n/**\n * Get a result of compiling an expression with the context.\n * @param {Array.<string>} sources - array of sources split by regexp of expression.\n * @param {object} context - context\n * @returns {Array.<string>} - array of sources that bind with its context\n * @private\n */\nfunction compile(sources, context) {\n  var index = 1;\n  var expression = sources[index];\n  var exps, firstExp, result;\n\n  while (isString(expression)) {\n    exps = expression.split(' ');\n    firstExp = exps[0];\n\n    if (BLOCK_HELPERS[firstExp]) {\n      result = handleBlockHelper(firstExp, sources.splice(index, sources.length - index), context);\n      sources = sources.concat(result);\n    } else {\n      sources[index] = handleExpression(exps, context);\n    }\n\n    index += EXPRESSION_INTERVAL;\n    expression = sources[index];\n  }\n\n  return sources.join('');\n}\n\n/**\n * Convert text by binding expressions with context.\n * <br>\n * If expression exists in the context, it will be replaced.\n * ex) '{{title}}' with context {title: 'Hello!'} is converted to 'Hello!'.\n * An array or object can be accessed using bracket and dot notation.\n * ex) '{{odds\\[2\\]}}' with context {odds: \\[1, 3, 5\\]} is converted to '5'.\n * ex) '{{evens\\[first\\]}}' with context {evens: \\[2, 4\\], first: 0} is converted to '2'.\n * ex) '{{project\\[\"name\"\\]}}' and '{{project.name}}' with context {project: {name: 'CodeSnippet'}} is converted to 'CodeSnippet'.\n * <br>\n * If replaced expression is a function, next expressions will be arguments of the function.\n * ex) '{{add 1 2}}' with context {add: function(a, b) {return a + b;}} is converted to '3'.\n * <br>\n * It has 3 predefined block helpers '{{helper ...}} ... {{/helper}}': 'if', 'each', 'with ... as ...'.\n * 1) 'if' evaluates conditional statements. It can use with 'elseif' and 'else'.\n * 2) 'each' iterates an array or object. It provides '@index'(array), '@key'(object), and '@this'(current element).\n * 3) 'with ... as ...' provides an alias.\n * @param {string} text - text with expressions\n * @param {object} context - context\n * @returns {string} - text that bind with its context\n * @memberof module:domUtil\n * @example\n * var template = require('tui-code-snippet/domUtil/template');\n * \n * var source = \n *     '<h1>'\n *   +   '{{if isValidNumber title}}'\n *   +     '{{title}}th'\n *   +   '{{elseif isValidDate title}}'\n *   +     'Date: {{title}}'\n *   +   '{{/if}}'\n *   + '</h1>'\n *   + '{{each list}}'\n *   +   '{{with addOne @index as idx}}'\n *   +     '<p>{{idx}}: {{@this}}</p>'\n *   +   '{{/with}}'\n *   + '{{/each}}';\n * \n * var context = {\n *   isValidDate: function(text) {\n *     return /^\\d{4}-(0|1)\\d-(0|1|2|3)\\d$/.test(text);\n *   },\n *   isValidNumber: function(text) {\n *     return /^\\d+$/.test(text);\n *   }\n *   title: '2019-11-25',\n *   list: ['Clean the room', 'Wash the dishes'],\n *   addOne: function(num) {\n *     return num + 1;\n *   }\n * };\n * \n * var result = template(source, context);\n * console.log(result); // <h1>Date: 2019-11-25</h1><p>1: Clean the room</p><p>2: Wash the dishes</p>\n */\nfunction template(text, context) {\n  return compile(splitByRegExp(text, EXPRESSION_REGEXP), context);\n}\n\nmodule.exports = template;\n\n\n/***/ }),\n/* 53 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * @fileoverview Get mouse position from mouse event\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n\n\n\nvar isArray = __webpack_require__(1);\n\n/**\n * Get mouse position from mouse event\n *\n * If supplied relatveElement parameter then return relative position based on\n *  element\n * @param {(MouseEvent|object|number[])} position - mouse position object\n * @param {HTMLElement} relativeElement HTML element that calculate relative\n *  position\n * @returns {number[]} mouse position\n * @memberof module:domEvent\n */\nfunction getMousePosition(position, relativeElement) {\n  var positionArray = isArray(position);\n  var clientX = positionArray ? position[0] : position.clientX;\n  var clientY = positionArray ? position[1] : position.clientY;\n  var rect;\n\n  if (!relativeElement) {\n    return [clientX, clientY];\n  }\n\n  rect = relativeElement.getBoundingClientRect();\n\n  return [\n    clientX - rect.left - relativeElement.clientLeft,\n    clientY - rect.top - relativeElement.clientTop\n  ];\n}\n\nmodule.exports = getMousePosition;\n\n\n/***/ }),\n/* 54 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * @fileoverview Find parent element recursively\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n\n\n\nvar matches = __webpack_require__(55);\n\n/**\n * Find parent element recursively\n * @param {HTMLElement} element - base element to start find\n * @param {string} selector - selector string for find\n * @returns {HTMLElement} - element finded or null\n * @memberof module:domUtil\n */\nfunction closest(element, selector) {\n  var parent = element.parentNode;\n\n  if (matches(element, selector)) {\n    return element;\n  }\n\n  while (parent && parent !== document) {\n    if (matches(parent, selector)) {\n      return parent;\n    }\n\n    parent = parent.parentNode;\n  }\n\n  return null;\n}\n\nmodule.exports = closest;\n\n\n/***/ }),\n/* 55 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * @fileoverview Check element match selector\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n\n\n\nvar inArray = __webpack_require__(5);\nvar toArray = __webpack_require__(56);\n\nvar elProto = Element.prototype;\nvar matchSelector = elProto.matches ||\n    elProto.webkitMatchesSelector ||\n    elProto.mozMatchesSelector ||\n    elProto.msMatchesSelector ||\n    function(selector) {\n      var doc = this.document || this.ownerDocument;\n\n      return inArray(this, toArray(doc.querySelectorAll(selector))) > -1;\n    };\n\n/**\n * Check element match selector\n * @param {HTMLElement} element - element to check\n * @param {string} selector - selector to check\n * @returns {boolean} is selector matched to element?\n * @memberof module:domUtil\n */\nfunction matches(element, selector) {\n  return matchSelector.call(element, selector);\n}\n\nmodule.exports = matches;\n\n\n/***/ }),\n/* 56 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * @fileoverview Transform the Array-like object to Array.\n * @author NHN FE Development Lab <dl_javascript@nhn.com>\n */\n\n\n\nvar forEachArray = __webpack_require__(6);\n\n/**\n * Transform the Array-like object to Array.\n * In low IE (below 8), Array.prototype.slice.call is not perfect. So, try-catch statement is used.\n * @param {*} arrayLike Array-like object\n * @returns {Array} Array\n * @memberof module:collection\n * @example\n * var toArray = require('tui-code-snippet/collection/toArray'); // node, commonjs\n *\n * var arrayLike = {\n *     0: 'one',\n *     1: 'two',\n *     2: 'three',\n *     3: 'four',\n *     length: 4\n * };\n * var result = toArray(arrayLike);\n *\n * alert(result instanceof Array); // true\n * alert(result); // one,two,three,four\n */\nfunction toArray(arrayLike) {\n  var arr;\n  try {\n    arr = Array.prototype.slice.call(arrayLike);\n  } catch (e) {\n    arr = [];\n    forEachArray(arrayLike, function(value) {\n      arr.push(value);\n    });\n  }\n\n  return arr;\n}\n\nmodule.exports = toArray;\n\n\n/***/ }),\n/* 57 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(global) {/**\n * @fileoverview Slider template\n * @author NHN. FE Development Team <dl_javascript@nhn.com>\n */\n\n\nvar isOldBrowser = __webpack_require__(4).isOldBrowser;\n\nvar layout = ['<div class=\"{{cssPrefix}}slider-left {{cssPrefix}}slider-part\">{{slider}}</div>', '<div class=\"{{cssPrefix}}slider-right {{cssPrefix}}slider-part\">{{huebar}}</div>'].join('\\n');\nvar SVGSlider = ['<svg class=\"{{cssPrefix}}svg {{cssPrefix}}svg-slider\">', '<defs>', '<linearGradient id=\"{{cssPrefix}}svg-fill-color-{{id}}\" x1=\"0%\" y1=\"0%\" x2=\"100%\" y2=\"0%\">', '<stop offset=\"0%\" stop-color=\"rgb(255,255,255)\" />', '<stop class=\"{{cssPrefix}}slider-basecolor\" offset=\"100%\" stop-color=\"rgb(255,0,0)\" />', '</linearGradient>', '<linearGradient id=\"{{cssPrefix}}svn-fill-black-{{id}}\" x1=\"0%\" y1=\"0%\" x2=\"0%\" y2=\"100%\">', '<stop offset=\"0%\" style=\"stop-color:rgb(0,0,0);stop-opacity:0\" />', '<stop offset=\"100%\" style=\"stop-color:rgb(0,0,0);stop-opacity:1\" />', '</linearGradient>', '</defs>', '<rect width=\"100%\" height=\"100%\" fill=\"url(#{{cssPrefix}}svg-fill-color-{{id}})\"></rect>', '<rect width=\"100%\" height=\"100%\" fill=\"url(#{{cssPrefix}}svn-fill-black-{{id}})\"></rect>', '<path transform=\"translate(0,0)\" class=\"{{cssPrefix}}slider-handle\" d=\"M0 7.5 L15 7.5 M7.5 15 L7.5 0 M2 7 a5.5 5.5 0 1 1 0 1 Z\" stroke=\"black\" stroke-width=\"0.75\" fill=\"none\" />', '</svg>'].join('\\n');\nvar VMLSlider = ['<div class=\"{{cssPrefix}}vml-slider\">', '<v:rect strokecolor=\"none\" class=\"{{cssPrefix}}vml {{cssPrefix}}vml-slider-bg\">', '<v:fill class=\"{{cssPrefix}}vml {{cssPrefix}}slider-basecolor\" type=\"gradient\" method=\"none\" color=\"#ff0000\" color2=\"#fff\" angle=\"90\" />', '</v:rect>', '<v:rect strokecolor=\"#ccc\" class=\"{{cssPrefix}}vml {{cssPrefix}}vml-slider-bg\">', '<v:fill type=\"gradient\" method=\"none\" color=\"black\" color2=\"white\" o:opacity2=\"0%\" class=\"{{cssPrefix}}vml\" />', '</v:rect>', '<v:shape class=\"{{cssPrefix}}vml {{cssPrefix}}slider-handle\" coordsize=\"1 1\" style=\"width:1px;height:1px;\"' + 'path=\"m 0,7 l 14,7 m 7,14 l 7,0 ar 12,12 2,2 z\" filled=\"false\" stroked=\"true\" />', '</div>'].join('\\n');\nvar SVGHuebar = ['<svg class=\"{{cssPrefix}}svg {{cssPrefix}}svg-huebar\">', '<defs>', '<linearGradient id=\"g-{{id}}\" x1=\"0%\" y1=\"0%\" x2=\"0%\" y2=\"100%\">', '<stop offset=\"0%\" stop-color=\"rgb(255,0,0)\" />', '<stop offset=\"16.666%\" stop-color=\"rgb(255,255,0)\" />', '<stop offset=\"33.333%\" stop-color=\"rgb(0,255,0)\" />', '<stop offset=\"50%\" stop-color=\"rgb(0,255,255)\" />', '<stop offset=\"66.666%\" stop-color=\"rgb(0,0,255)\" />', '<stop offset=\"83.333%\" stop-color=\"rgb(255,0,255)\" />', '<stop offset=\"100%\" stop-color=\"rgb(255,0,0)\" />', '</linearGradient>', '</defs>', '<rect width=\"18px\" height=\"100%\" fill=\"url(#g-{{id}})\"></rect>', '<path transform=\"translate(-6,-3)\" class=\"{{cssPrefix}}huebar-handle\" d=\"M0 0 L4 4 L0 8 L0 0 Z\" fill=\"black\" stroke=\"none\" />', '</svg>'].join('\\n');\nvar VMLHuebar = ['<div class=\"{{cssPrefix}}vml-huebar\">', '<v:rect strokecolor=\"#ccc\" class=\"{{cssPrefix}}vml {{cssPrefix}}vml-huebar-bg\">', '<v:fill type=\"gradient\" method=\"none\" colors=\"' + '0% rgb(255,0,0), 16.666% rgb(255,255,0), 33.333% rgb(0,255,0), 50% rgb(0,255,255), 66.666% rgb(0,0,255), 83.333% rgb(255,0,255), 100% rgb(255,0,0)' + '\" angle=\"180\" class=\"{{cssPrefix}}vml\" />', '</v:rect>', '<v:shape class=\"{{cssPrefix}}vml {{cssPrefix}}huebar-handle\" coordsize=\"1 1\" style=\"width:1px;height:1px;position:absolute;z-index:1;right:22px;top:-3px;\"' + 'path=\"m 0,0 l 4,4 l 0,8 l 0,0 z\" filled=\"true\" fillcolor=\"black\" stroked=\"false\" />', '</div>'].join('\\n');\n\nif (isOldBrowser) {\n  global.document.namespaces.add('v', 'urn:schemas-microsoft-com:vml');\n}\n\nmodule.exports = {\n  layout: layout,\n  slider: isOldBrowser ? VMLSlider : SVGSlider,\n  huebar: isOldBrowser ? VMLHuebar : SVGHuebar\n};\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(25)))\n\n/***/ })\n/******/ ]);\n});"]},"metadata":{},"sourceType":"script"}