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"}