Welcome to mirror list, hosted at ThFree Co, Russian Federation.

droplab.js « droplab « javascripts « assets « app - gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: ef6e439ee84dc55ae9298e0dab29d1858177faf0 (plain)
1
!function(n){function e(i){if(t[i])return t[i].exports;var r=t[i]={i:i,l:!1,exports:{}};return n[i].call(r.exports,r,r.exports,e),r.l=!0,r.exports}var t={};e.m=n,e.c=t,e.i=function(n){return n},e.d=function(n,t,i){e.o(n,t)||Object.defineProperty(n,t,{configurable:!1,enumerable:!0,get:i})},e.n=function(n){var t=n&&n.__esModule?function(){return n.default}:function(){return n};return e.d(t,"a",t),t},e.o=function(n,e){return Object.prototype.hasOwnProperty.call(n,e)},e.p="",e(e.s=9)}([function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nvar DATA_TRIGGER = 'data-dropdown-trigger';\nvar DATA_DROPDOWN = 'data-dropdown';\nvar SELECTED_CLASS = 'droplab-item-selected';\nvar ACTIVE_CLASS = 'droplab-item-active';\n\nvar constants = {\n  DATA_TRIGGER: DATA_TRIGGER,\n  DATA_DROPDOWN: DATA_DROPDOWN,\n  SELECTED_CLASS: SELECTED_CLASS,\n  ACTIVE_CLASS: ACTIVE_CLASS\n};\n\nexports.default = constants;\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/constants.js\n// module id = 0\n// module chunks = 0\n\n//# sourceURL=webpack:///./src/constants.js?")},function(module,exports){eval("// Polyfill for creating CustomEvents on IE9/10/11\n\n// code pulled from:\n// https://github.com/d4tocchini/customevent-polyfill\n// https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent#Polyfill\n\ntry {\n    var ce = new window.CustomEvent('test');\n    ce.preventDefault();\n    if (ce.defaultPrevented !== true) {\n        // IE has problems with .preventDefault() on custom events\n        // http://stackoverflow.com/questions/23349191\n        throw new Error('Could not prevent default');\n    }\n} catch(e) {\n  var CustomEvent = function(event, params) {\n    var evt, origPrevent;\n    params = params || {\n      bubbles: false,\n      cancelable: false,\n      detail: undefined\n    };\n\n    evt = document.createEvent(\"CustomEvent\");\n    evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);\n    origPrevent = evt.preventDefault;\n    evt.preventDefault = function () {\n      origPrevent.call(this);\n      try {\n        Object.defineProperty(this, 'defaultPrevented', {\n          get: function () {\n            return true;\n          }\n        });\n      } catch(e) {\n        this.defaultPrevented = true;\n      }\n    };\n    return evt;\n  };\n\n  CustomEvent.prototype = window.Event.prototype;\n  window.CustomEvent = CustomEvent; // expose definition to window\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/custom-event-polyfill/custom-event-polyfill.js\n// module id = 1\n// module chunks = 0\n\n//# sourceURL=webpack:///./~/custom-event-polyfill/custom-event-polyfill.js?")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _dropdown = __webpack_require__(6);\n\nvar _dropdown2 = _interopRequireDefault(_dropdown);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar Hook = function Hook(trigger, list, plugins, config) {\n  this.trigger = trigger;\n  this.list = new _dropdown2.default(list);\n  this.type = 'Hook';\n  this.event = 'click';\n  this.plugins = plugins || [];\n  this.config = config || {};\n  this.id = trigger.id;\n};\n\nObject.assign(Hook.prototype, {\n\n  addEvents: function addEvents() {},\n\n  constructor: Hook\n});\n\nexports.default = Hook;\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/hook.js\n// module id = 2\n// module chunks = 0\n\n//# sourceURL=webpack:///./src/hook.js?")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _constants = __webpack_require__(0);\n\nvar _constants2 = _interopRequireDefault(_constants);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar DATA_TRIGGER = _constants2.default.DATA_TRIGGER,\n    DATA_DROPDOWN = _constants2.default.DATA_DROPDOWN;\n\n\nvar utils = {\n  toCamelCase: function toCamelCase(attr) {\n    return this.camelize(attr.split('-').slice(1).join(' '));\n  },\n  t: function t(s, d) {\n    for (var p in d) {\n      if (Object.prototype.hasOwnProperty.call(d, p)) {\n        s = s.replace(new RegExp('{{' + p + '}}', 'g'), d[p]);\n      }\n    }\n    return s;\n  },\n  camelize: function camelize(str) {\n    return str.replace(/(?:^\\w|[A-Z]|\\b\\w)/g, function (letter, index) {\n      return index === 0 ? letter.toLowerCase() : letter.toUpperCase();\n    }).replace(/\\s+/g, '');\n  },\n  closest: function closest(thisTag, stopTag) {\n    while (thisTag && thisTag.tagName !== stopTag && thisTag.tagName !== 'HTML') {\n      thisTag = thisTag.parentNode;\n    }\n    return thisTag;\n  },\n  isDropDownParts: function isDropDownParts(target) {\n    if (!target || target.tagName === 'HTML') return false;\n    return target.hasAttribute(DATA_TRIGGER) || target.hasAttribute(DATA_DROPDOWN);\n  }\n};\n\nexports.default = utils;\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/utils.js\n// module id = 3\n// module chunks = 0\n\n//# sourceURL=webpack:///./src/utils.js?")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nexports.default = function () {\n  var DropLab = function DropLab(hook, list) {\n    if (!this instanceof DropLab) return new DropLab(hook);\n\n    this.ready = false;\n    this.hooks = [];\n    this.queuedData = [];\n    this.config = {};\n\n    this.eventWrapper = {};\n\n    !hook ? this.loadStatic() : this.addHook(hook, list);\n  };\n\n  Object.assign(DropLab.prototype, {\n    loadStatic: function loadStatic() {\n      var dropdownTriggers = [].slice.apply(document.querySelectorAll('[' + DATA_TRIGGER + ']'));\n      this.addHooks(dropdownTriggers).init();\n    },\n\n    addData: function addData() {\n      var args = [].slice.apply(arguments);\n      this.applyArgs(args, '_addData');\n    },\n\n    setData: function setData() {\n      var args = [].slice.apply(arguments);\n      this.applyArgs(args, '_setData');\n    },\n\n    destroy: function destroy() {\n      this.hooks.forEach(function (hook) {\n        return hook.destroy();\n      });\n      this.hooks = [];\n      this.removeEvents();\n    },\n\n    applyArgs: function applyArgs(args, methodName) {\n      if (this.ready) return this[methodName].apply(this, args);\n\n      this.queuedData = this.queuedData || [];\n      this.queuedData.push(args);\n    },\n\n    _addData: function _addData(trigger, data) {\n      this._processData(trigger, data, 'addData');\n    },\n\n    _setData: function _setData(trigger, data) {\n      this._processData(trigger, data, 'setData');\n    },\n\n    _processData: function _processData(trigger, data, methodName) {\n      this.hooks.forEach(function (hook) {\n        if (Array.isArray(trigger)) hook.list[methodName](trigger);\n\n        if (hook.trigger.id === trigger) hook.list[methodName](data);\n      });\n    },\n\n    addEvents: function addEvents() {\n      this.eventWrapper.documentClicked = this.documentClicked.bind(this);\n      document.addEventListener('click', this.eventWrapper.documentClicked);\n    },\n\n    documentClicked: function documentClicked(e) {\n      var thisTag = e.target;\n\n      if (thisTag.tagName !== 'UL') thisTag = _utils2.default.closest(thisTag, 'UL');\n      if (_utils2.default.isDropDownParts(thisTag, this.hooks) || _utils2.default.isDropDownParts(e.target, this.hooks)) return;\n\n      this.hooks.forEach(function (hook) {\n        return hook.list.hide();\n      });\n    },\n\n    removeEvents: function removeEvents() {\n      document.removeEventListener('click', this.eventWrapper.documentClicked);\n    },\n\n    changeHookList: function changeHookList(trigger, list, plugins, config) {\n      var _this = this;\n\n      var availableTrigger = typeof trigger === 'string' ? document.getElementById(trigger) : trigger;\n\n      this.hooks.forEach(function (hook, i) {\n        hook.list.list.dataset.dataDropdownActive = false;\n\n        if (hook.trigger !== availableTrigger) return;\n\n        hook.destroy();\n        _this.hooks.splice(i, 1);\n        _this.addHook(availableTrigger, list, plugins, config);\n      });\n    },\n\n    addHook: function addHook(hook, list, plugins, config) {\n      var availableHook = typeof hook === 'string' ? document.querySelector(hook) : hook;\n      var availableList = void 0;\n\n      if (typeof list === 'string') {\n        availableList = document.querySelector(list);\n      } else if (list instanceof Element) {\n        availableList = list;\n      } else {\n        availableList = document.querySelector(hook.dataset[_utils2.default.toCamelCase(DATA_TRIGGER)]);\n      }\n\n      availableList.dataset.dataDropdownActive = true;\n\n      var HookObject = availableHook.tagName === 'INPUT' ? _hook_input2.default : _hook_button2.default;\n      this.hooks.push(new HookObject(availableHook, availableList, plugins, config));\n\n      return this;\n    },\n\n    addHooks: function addHooks(hooks, plugins, config) {\n      var _this2 = this;\n\n      hooks.forEach(function (hook) {\n        return _this2.addHook(hook, null, plugins, config);\n      });\n      return this;\n    },\n\n    setConfig: function setConfig(obj) {\n      this.config = obj;\n    },\n\n    fireReady: function fireReady() {\n      var readyEvent = new CustomEvent('ready.dl', {\n        detail: {\n          dropdown: this\n        }\n      });\n      document.dispatchEvent(readyEvent);\n\n      this.ready = true;\n    },\n\n    init: function init() {\n      var _this3 = this;\n\n      this.addEvents();\n\n      this.fireReady();\n\n      this.queuedData.forEach(function (data) {\n        return _this3.addData(data);\n      });\n      this.queuedData = [];\n\n      return this;\n    }\n  });\n\n  return DropLab;\n};\n\n__webpack_require__(1);\n\nvar _hook_button = __webpack_require__(7);\n\nvar _hook_button2 = _interopRequireDefault(_hook_button);\n\nvar _hook_input = __webpack_require__(8);\n\nvar _hook_input2 = _interopRequireDefault(_hook_input);\n\nvar _utils = __webpack_require__(3);\n\nvar _utils2 = _interopRequireDefault(_utils);\n\nvar _constants = __webpack_require__(0);\n\nvar _constants2 = _interopRequireDefault(_constants);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar DATA_TRIGGER = _constants2.default.DATA_TRIGGER;\n\n;\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/droplab.js\n// module id = 4\n// module chunks = 0\n\n//# sourceURL=webpack:///./src/droplab.js?")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nexports.default = function () {\n  var currentKey;\n  var currentFocus;\n  var isUpArrow = false;\n  var isDownArrow = false;\n  var removeHighlight = function removeHighlight(list) {\n    var itemElements = Array.prototype.slice.call(list.list.querySelectorAll('li:not(.divider)'), 0);\n    var listItems = [];\n    for (var i = 0; i < itemElements.length; i++) {\n      var listItem = itemElements[i];\n      listItem.classList.remove(_constants2.default.ACTIVE_CLASS);\n\n      if (listItem.style.display !== 'none') {\n        listItems.push(listItem);\n      }\n    }\n    return listItems;\n  };\n\n  var setMenuForArrows = function setMenuForArrows(list) {\n    var listItems = removeHighlight(list);\n    if (list.currentIndex > 0) {\n      if (!listItems[list.currentIndex - 1]) {\n        list.currentIndex = list.currentIndex - 1;\n      }\n\n      if (listItems[list.currentIndex - 1]) {\n        var el = listItems[list.currentIndex - 1];\n        var filterDropdownEl = el.closest('.filter-dropdown');\n        el.classList.add(_constants2.default.ACTIVE_CLASS);\n\n        if (filterDropdownEl) {\n          var filterDropdownBottom = filterDropdownEl.offsetHeight;\n          var elOffsetTop = el.offsetTop - 30;\n\n          if (elOffsetTop > filterDropdownBottom) {\n            filterDropdownEl.scrollTop = elOffsetTop - filterDropdownBottom;\n          }\n        }\n      }\n    }\n  };\n\n  var mousedown = function mousedown(e) {\n    var list = e.detail.hook.list;\n    removeHighlight(list);\n    list.show();\n    list.currentIndex = 0;\n    isUpArrow = false;\n    isDownArrow = false;\n  };\n  var selectItem = function selectItem(list) {\n    var listItems = removeHighlight(list);\n    var currentItem = listItems[list.currentIndex - 1];\n    var listEvent = new CustomEvent('click.dl', {\n      detail: {\n        list: list,\n        selected: currentItem,\n        data: currentItem.dataset\n      }\n    });\n    list.list.dispatchEvent(listEvent);\n    list.hide();\n  };\n\n  var keydown = function keydown(e) {\n    var typedOn = e.target;\n    var list = e.detail.hook.list;\n    var currentIndex = list.currentIndex;\n    isUpArrow = false;\n    isDownArrow = false;\n\n    if (e.detail.which) {\n      currentKey = e.detail.which;\n      if (currentKey === 13) {\n        selectItem(e.detail.hook.list);\n        return;\n      }\n      if (currentKey === 38) {\n        isUpArrow = true;\n      }\n      if (currentKey === 40) {\n        isDownArrow = true;\n      }\n    } else if (e.detail.key) {\n      currentKey = e.detail.key;\n      if (currentKey === 'Enter') {\n        selectItem(e.detail.hook.list);\n        return;\n      }\n      if (currentKey === 'ArrowUp') {\n        isUpArrow = true;\n      }\n      if (currentKey === 'ArrowDown') {\n        isDownArrow = true;\n      }\n    }\n    if (isUpArrow) {\n      currentIndex--;\n    }\n    if (isDownArrow) {\n      currentIndex++;\n    }\n    if (currentIndex < 0) {\n      currentIndex = 0;\n    }\n    list.currentIndex = currentIndex;\n    setMenuForArrows(e.detail.hook.list);\n  };\n\n  document.addEventListener('mousedown.dl', mousedown);\n  document.addEventListener('keydown.dl', keydown);\n};\n\nvar _constants = __webpack_require__(0);\n\nvar _constants2 = _interopRequireDefault(_constants);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/keyboard.js\n// module id = 5\n// module chunks = 0\n\n//# sourceURL=webpack:///./src/keyboard.js?")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _Object$assign;\n\n__webpack_require__(1);\n\nvar _utils = __webpack_require__(3);\n\nvar _utils2 = _interopRequireDefault(_utils);\n\nvar _constants = __webpack_require__(0);\n\nvar _constants2 = _interopRequireDefault(_constants);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar DropDown = function DropDown(list) {\n  this.currentIndex = 0;\n  this.hidden = true;\n  this.list = typeof list === 'string' ? document.querySelector(list) : list;\n  this.items = [];\n\n  this.eventWrapper = {};\n\n  this.getItems();\n  this.initTemplateString();\n  this.addEvents();\n\n  this.initialState = list.innerHTML;\n};\n\nObject.assign(DropDown.prototype, (_Object$assign = {\n  getItems: function getItems() {\n    this.items = [].slice.call(this.list.querySelectorAll('li'));\n    return this.items;\n  },\n\n  initTemplateString: function initTemplateString() {\n    var items = this.items || this.getItems();\n\n    var templateString = '';\n    if (items.length > 0) templateString = items[items.length - 1].outerHTML;\n    this.templateString = templateString;\n\n    return this.templateString;\n  },\n\n  clickEvent: function clickEvent(e) {\n    var selected = _utils2.default.closest(e.target, 'LI');\n    if (!selected) return;\n\n    this.addSelectedClass(selected);\n\n    e.preventDefault();\n    this.hide();\n\n    var listEvent = new CustomEvent('click.dl', {\n      detail: {\n        list: this,\n        selected: selected,\n        data: e.target.dataset\n      }\n    });\n    this.list.dispatchEvent(listEvent);\n  },\n\n  addSelectedClass: function addSelectedClass(selected) {\n    this.removeSelectedClasses();\n    selected.classList.add(_constants2.default.SELECTED_CLASS);\n  },\n\n  removeSelectedClasses: function removeSelectedClasses() {\n    var items = this.items || this.getItems();\n\n    items.forEach(function (item) {\n      item.classList.remove(_constants2.default.SELECTED_CLASS);\n    });\n  },\n\n  addEvents: function addEvents() {\n    this.eventWrapper.clickEvent = this.clickEvent.bind(this);\n    this.list.addEventListener('click', this.eventWrapper.clickEvent);\n  },\n\n  toggle: function toggle() {\n    this.hidden ? this.show() : this.hide();\n  },\n\n  setData: function setData(data) {\n    this.data = data;\n    this.render(data);\n  },\n\n  addData: function addData(data) {\n    this.data = (this.data || []).concat(data);\n    this.render(this.data);\n  },\n\n  render: function render(data) {\n    var children = data ? data.map(this.renderChildren.bind(this)) : [];\n    var renderableList = this.list.querySelector('ul[data-dynamic]') || this.list;\n\n    renderableList.innerHTML = children.join('');\n  },\n\n  renderChildren: function renderChildren(data) {\n    var html = _utils2.default.t(this.templateString, data);\n    var template = document.createElement('div');\n\n    template.innerHTML = html;\n    this.setImagesSrc(template);\n    template.firstChild.style.display = data.droplab_hidden ? 'none' : 'block';\n\n    return template.firstChild.outerHTML;\n  },\n\n  setImagesSrc: function setImagesSrc(template) {\n    var images = [].slice.call(template.querySelectorAll('img[data-src]'));\n\n    images.forEach(function (image) {\n      image.src = image.getAttribute('data-src');\n      image.removeAttribute('data-src');\n    });\n  },\n\n  show: function show() {\n    if (!this.hidden) return;\n    this.list.style.display = 'block';\n    this.currentIndex = 0;\n    this.hidden = false;\n  },\n\n  hide: function hide() {\n    if (this.hidden) return;\n    this.list.style.display = 'none';\n    this.currentIndex = 0;\n    this.hidden = true;\n  }\n\n}, _defineProperty(_Object$assign, 'toggle', function toggle() {\n  this.hidden ? this.show() : this.hide();\n}), _defineProperty(_Object$assign, 'destroy', function destroy() {\n  this.hide();\n  this.list.removeEventListener('click', this.eventWrapper.clickEvent);\n}), _Object$assign));\n\nexports.default = DropDown;\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/dropdown.js\n// module id = 6\n// module chunks = 0\n\n//# sourceURL=webpack:///./src/dropdown.js?")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\n__webpack_require__(1);\n\nvar _hook = __webpack_require__(2);\n\nvar _hook2 = _interopRequireDefault(_hook);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar HookButton = function HookButton(trigger, list, plugins, config) {\n  _hook2.default.call(this, trigger, list, plugins, config);\n\n  this.type = 'button';\n  this.event = 'click';\n\n  this.eventWrapper = {};\n\n  this.addEvents();\n  this.addPlugins();\n};\n\nHookButton.prototype = Object.create(_hook2.default.prototype);\n\nObject.assign(HookButton.prototype, {\n  addPlugins: function addPlugins() {\n    var _this = this;\n\n    this.plugins.forEach(function (plugin) {\n      return plugin.init(_this);\n    });\n  },\n\n  clicked: function clicked(e) {\n    var buttonEvent = new CustomEvent('click.dl', {\n      detail: {\n        hook: this\n      },\n      bubbles: true,\n      cancelable: true\n    });\n    e.target.dispatchEvent(buttonEvent);\n\n    this.list.toggle();\n  },\n\n  addEvents: function addEvents() {\n    this.eventWrapper.clicked = this.clicked.bind(this);\n    this.trigger.addEventListener('click', this.eventWrapper.clicked);\n  },\n\n  removeEvents: function removeEvents() {\n    this.trigger.removeEventListener('click', this.eventWrapper.clicked);\n  },\n\n  restoreInitialState: function restoreInitialState() {\n    this.list.list.innerHTML = this.list.initialState;\n  },\n\n  removePlugins: function removePlugins() {\n    this.plugins.forEach(function (plugin) {\n      return plugin.destroy();\n    });\n  },\n\n  destroy: function destroy() {\n    this.restoreInitialState();\n\n    this.removeEvents();\n    this.removePlugins();\n  },\n\n  constructor: HookButton\n});\n\nexports.default = HookButton;\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/hook_button.js\n// module id = 7\n// module chunks = 0\n\n//# sourceURL=webpack:///./src/hook_button.js?")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\n__webpack_require__(1);\n\nvar _hook = __webpack_require__(2);\n\nvar _hook2 = _interopRequireDefault(_hook);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar HookInput = function HookInput(trigger, list, plugins, config) {\n  _hook2.default.call(this, trigger, list, plugins, config);\n\n  this.type = 'input';\n  this.event = 'input';\n\n  this.eventWrapper = {};\n\n  this.addEvents();\n  this.addPlugins();\n};\n\nObject.assign(HookInput.prototype, {\n  addPlugins: function addPlugins() {\n    var _this = this;\n\n    this.plugins.forEach(function (plugin) {\n      return plugin.init(_this);\n    });\n  },\n\n  addEvents: function addEvents() {\n    this.eventWrapper.mousedown = this.mousedown.bind(this);\n    this.eventWrapper.input = this.input.bind(this);\n    this.eventWrapper.keyup = this.keyup.bind(this);\n    this.eventWrapper.keydown = this.keydown.bind(this);\n\n    this.trigger.addEventListener('mousedown', this.eventWrapper.mousedown);\n    this.trigger.addEventListener('input', this.eventWrapper.input);\n    this.trigger.addEventListener('keyup', this.eventWrapper.keyup);\n    this.trigger.addEventListener('keydown', this.eventWrapper.keydown);\n  },\n\n  removeEvents: function removeEvents() {\n    this.hasRemovedEvents = true;\n\n    this.trigger.removeEventListener('mousedown', this.eventWrapper.mousedown);\n    this.trigger.removeEventListener('input', this.eventWrapper.input);\n    this.trigger.removeEventListener('keyup', this.eventWrapper.keyup);\n    this.trigger.removeEventListener('keydown', this.eventWrapper.keydown);\n  },\n\n  input: function input(e) {\n    if (this.hasRemovedEvents) return;\n\n    this.list.show();\n\n    var inputEvent = new CustomEvent('input.dl', {\n      detail: {\n        hook: this,\n        text: e.target.value\n      },\n      bubbles: true,\n      cancelable: true\n    });\n    e.target.dispatchEvent(inputEvent);\n  },\n\n  mousedown: function mousedown(e) {\n    if (this.hasRemovedEvents) return;\n\n    var mouseEvent = new CustomEvent('mousedown.dl', {\n      detail: {\n        hook: this,\n        text: e.target.value\n      },\n      bubbles: true,\n      cancelable: true\n    });\n    e.target.dispatchEvent(mouseEvent);\n  },\n\n  keyup: function keyup(e) {\n    if (this.hasRemovedEvents) return;\n\n    this.keyEvent(e, 'keyup.dl');\n  },\n\n  keydown: function keydown(e) {\n    if (this.hasRemovedEvents) return;\n\n    this.keyEvent(e, 'keydown.dl');\n  },\n\n  keyEvent: function keyEvent(e, eventName) {\n    this.list.show();\n\n    var keyEvent = new CustomEvent(eventName, {\n      detail: {\n        hook: this,\n        text: e.target.value,\n        which: e.which,\n        key: e.key\n      },\n      bubbles: true,\n      cancelable: true\n    });\n    e.target.dispatchEvent(keyEvent);\n  },\n\n  restoreInitialState: function restoreInitialState() {\n    this.list.list.innerHTML = this.list.initialState;\n  },\n\n  removePlugins: function removePlugins() {\n    this.plugins.forEach(function (plugin) {\n      return plugin.destroy();\n    });\n  },\n\n  destroy: function destroy() {\n    this.restoreInitialState();\n\n    this.removeEvents();\n    this.removePlugins();\n\n    this.list.destroy();\n  }\n});\n\nexports.default = HookInput;\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/hook_input.js\n// module id = 8\n// module chunks = 0\n\n//# sourceURL=webpack:///./src/hook_input.js?")},function(module,exports,__webpack_require__){"use strict";eval('\n\nObject.defineProperty(exports, "__esModule", {\n  value: true\n});\n\nvar _droplab = __webpack_require__(4);\n\nvar _droplab2 = _interopRequireDefault(_droplab);\n\nvar _constants = __webpack_require__(0);\n\nvar _constants2 = _interopRequireDefault(_constants);\n\nvar _keyboard = __webpack_require__(5);\n\nvar _keyboard2 = _interopRequireDefault(_keyboard);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar DATA_TRIGGER = _constants2.default.DATA_TRIGGER;\nvar keyboard = (0, _keyboard2.default)();\n\nvar setup = function setup() {\n  window.DropLab = (0, _droplab2.default)();\n};\n\nsetup();\n\nexports.default = setup;\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/index.js\n// module id = 9\n// module chunks = 0\n\n//# sourceURL=webpack:///./src/index.js?')}]);