diff --git a/.babelrc b/.babelrc index ee4c391da30..2bae7ca9fbf 100644 --- a/.babelrc +++ b/.babelrc @@ -8,7 +8,6 @@ "plugins": [ ["istanbul", { "exclude": [ - "app/assets/javascripts/droplab/**/*", "spec/javascripts/**/*" ] }], diff --git a/.eslintignore b/.eslintignore index fe0766d8a44..c742b08c005 100644 --- a/.eslintignore +++ b/.eslintignore @@ -5,6 +5,5 @@ /public/ /tmp/ /vendor/ -/app/assets/javascripts/droplab karma.config.js webpack.config.js diff --git a/app/assets/javascripts/droplab/droplab.js b/app/assets/javascripts/droplab/droplab.js deleted file mode 100644 index d1d8447d165..00000000000 --- a/app/assets/javascripts/droplab/droplab.js +++ /dev/null @@ -1,953 +0,0 @@ -/******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) -/******/ return installedModules[moduleId].exports; -/******/ -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ i: moduleId, -/******/ l: false, -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.l = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; -/******/ -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; -/******/ -/******/ // identity function for calling harmony imports with the correct context -/******/ __webpack_require__.i = function(value) { return value; }; -/******/ -/******/ // define getter function for harmony exports -/******/ __webpack_require__.d = function(exports, name, getter) { -/******/ if(!__webpack_require__.o(exports, name)) { -/******/ Object.defineProperty(exports, name, { -/******/ configurable: false, -/******/ enumerable: true, -/******/ get: getter -/******/ }); -/******/ } -/******/ }; -/******/ -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __webpack_require__.n = function(module) { -/******/ var getter = module && module.__esModule ? -/******/ function getDefault() { return module['default']; } : -/******/ function getModuleExports() { return module; }; -/******/ __webpack_require__.d(getter, 'a', getter); -/******/ return getter; -/******/ }; -/******/ -/******/ // Object.prototype.hasOwnProperty.call -/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; -/******/ -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = ""; -/******/ -/******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = 14); -/******/ }) -/************************************************************************/ -/******/ ([ -/* 0 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -var DATA_TRIGGER = 'data-dropdown-trigger'; -var DATA_DROPDOWN = 'data-dropdown'; -var SELECTED_CLASS = 'droplab-item-selected'; -var ACTIVE_CLASS = 'droplab-item-active'; - -exports.DATA_TRIGGER = DATA_TRIGGER; -exports.DATA_DROPDOWN = DATA_DROPDOWN; -exports.SELECTED_CLASS = SELECTED_CLASS; -exports.ACTIVE_CLASS = ACTIVE_CLASS; - -/***/ }), -/* 1 */ -/***/ (function(module, exports) { - -// Polyfill for creating CustomEvents on IE9/10/11 - -// code pulled from: -// https://github.com/d4tocchini/customevent-polyfill -// https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent#Polyfill - -try { - var ce = new window.CustomEvent('test'); - ce.preventDefault(); - if (ce.defaultPrevented !== true) { - // IE has problems with .preventDefault() on custom events - // http://stackoverflow.com/questions/23349191 - throw new Error('Could not prevent default'); - } -} catch(e) { - var CustomEvent = function(event, params) { - var evt, origPrevent; - params = params || { - bubbles: false, - cancelable: false, - detail: undefined - }; - - evt = document.createEvent("CustomEvent"); - evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail); - origPrevent = evt.preventDefault; - evt.preventDefault = function () { - origPrevent.call(this); - try { - Object.defineProperty(this, 'defaultPrevented', { - get: function () { - return true; - } - }); - } catch(e) { - this.defaultPrevented = true; - } - }; - return evt; - }; - - CustomEvent.prototype = window.Event.prototype; - window.CustomEvent = CustomEvent; // expose definition to window -} - - -/***/ }), -/* 2 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _dropdown = __webpack_require__(9); - -var _dropdown2 = _interopRequireDefault(_dropdown); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -var Hook = function Hook(trigger, list, plugins, config) { - this.trigger = trigger; - this.list = new _dropdown2.default(list); - this.type = 'Hook'; - this.event = 'click'; - this.plugins = plugins || []; - this.config = config || {}; - this.id = trigger.id; -}; - -Object.assign(Hook.prototype, { - - addEvents: function addEvents() {}, - - constructor: Hook -}); - -exports.default = Hook; - -/***/ }), -/* 3 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _constants = __webpack_require__(0); - -var utils = { - toCamelCase: function toCamelCase(attr) { - return this.camelize(attr.split('-').slice(1).join(' ')); - }, - t: function t(s, d) { - for (var p in d) { - if (Object.prototype.hasOwnProperty.call(d, p)) { - s = s.replace(new RegExp('{{' + p + '}}', 'g'), d[p]); - } - } - return s; - }, - camelize: function camelize(str) { - return str.replace(/(?:^\w|[A-Z]|\b\w)/g, function (letter, index) { - return index === 0 ? letter.toLowerCase() : letter.toUpperCase(); - }).replace(/\s+/g, ''); - }, - closest: function closest(thisTag, stopTag) { - while (thisTag && thisTag.tagName !== stopTag && thisTag.tagName !== 'HTML') { - thisTag = thisTag.parentNode; - } - return thisTag; - }, - isDropDownParts: function isDropDownParts(target) { - if (!target || target.tagName === 'HTML') return false; - return target.hasAttribute(_constants.DATA_TRIGGER) || target.hasAttribute(_constants.DATA_DROPDOWN); - } -}; - -exports.default = utils; - -/***/ }), -/* 4 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -__webpack_require__(1); - -var _hook_button = __webpack_require__(10); - -var _hook_button2 = _interopRequireDefault(_hook_button); - -var _hook_input = __webpack_require__(11); - -var _hook_input2 = _interopRequireDefault(_hook_input); - -var _utils = __webpack_require__(3); - -var _utils2 = _interopRequireDefault(_utils); - -var _keyboard = __webpack_require__(12); - -var _keyboard2 = _interopRequireDefault(_keyboard); - -var _constants = __webpack_require__(0); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -var DropLab = function DropLab() { - this.ready = false; - this.hooks = []; - this.queuedData = []; - this.config = {}; - - this.eventWrapper = {}; -}; - -Object.assign(DropLab.prototype, { - loadStatic: function loadStatic() { - var dropdownTriggers = [].slice.apply(document.querySelectorAll('[' + _constants.DATA_TRIGGER + ']')); - this.addHooks(dropdownTriggers); - }, - - addData: function addData() { - var args = [].slice.apply(arguments); - this.applyArgs(args, '_addData'); - }, - - setData: function setData() { - var args = [].slice.apply(arguments); - this.applyArgs(args, '_setData'); - }, - - destroy: function destroy() { - this.hooks.forEach(function (hook) { - return hook.destroy(); - }); - this.hooks = []; - this.removeEvents(); - }, - - applyArgs: function applyArgs(args, methodName) { - if (this.ready) return this[methodName].apply(this, args); - - this.queuedData = this.queuedData || []; - this.queuedData.push(args); - }, - - _addData: function _addData(trigger, data) { - this._processData(trigger, data, 'addData'); - }, - - _setData: function _setData(trigger, data) { - this._processData(trigger, data, 'setData'); - }, - - _processData: function _processData(trigger, data, methodName) { - this.hooks.forEach(function (hook) { - if (Array.isArray(trigger)) hook.list[methodName](trigger); - - if (hook.trigger.id === trigger) hook.list[methodName](data); - }); - }, - - addEvents: function addEvents() { - this.eventWrapper.documentClicked = this.documentClicked.bind(this); - document.addEventListener('click', this.eventWrapper.documentClicked); - }, - - documentClicked: function documentClicked(e) { - var thisTag = e.target; - - if (thisTag.tagName !== 'UL') thisTag = _utils2.default.closest(thisTag, 'UL'); - if (_utils2.default.isDropDownParts(thisTag, this.hooks) || _utils2.default.isDropDownParts(e.target, this.hooks)) return; - - this.hooks.forEach(function (hook) { - return hook.list.hide(); - }); - }, - - removeEvents: function removeEvents() { - document.removeEventListener('click', this.eventWrapper.documentClicked); - }, - - changeHookList: function changeHookList(trigger, list, plugins, config) { - var _this = this; - - var availableTrigger = typeof trigger === 'string' ? document.getElementById(trigger) : trigger; - - this.hooks.forEach(function (hook, i) { - hook.list.list.dataset.dropdownActive = false; - - if (hook.trigger !== availableTrigger) return; - - hook.destroy(); - _this.hooks.splice(i, 1); - _this.addHook(availableTrigger, list, plugins, config); - }); - }, - - addHook: function addHook(hook, list, plugins, config) { - var availableHook = typeof hook === 'string' ? document.querySelector(hook) : hook; - var availableList = void 0; - - if (typeof list === 'string') { - availableList = document.querySelector(list); - } else if (list instanceof Element) { - availableList = list; - } else { - availableList = document.querySelector(hook.dataset[_utils2.default.toCamelCase(_constants.DATA_TRIGGER)]); - } - - availableList.dataset.dropdownActive = true; - - var HookObject = availableHook.tagName === 'INPUT' ? _hook_input2.default : _hook_button2.default; - this.hooks.push(new HookObject(availableHook, availableList, plugins, config)); - - return this; - }, - - addHooks: function addHooks(hooks, plugins, config) { - var _this2 = this; - - hooks.forEach(function (hook) { - return _this2.addHook(hook, null, plugins, config); - }); - return this; - }, - - setConfig: function setConfig(obj) { - this.config = obj; - }, - - fireReady: function fireReady() { - var readyEvent = new CustomEvent('ready.dl', { - detail: { - dropdown: this - } - }); - document.dispatchEvent(readyEvent); - - this.ready = true; - }, - - init: function init(hook, list, plugins, config) { - var _this3 = this; - - hook ? this.addHook(hook, list, plugins, config) : this.loadStatic(); - - this.addEvents(); - - (0, _keyboard2.default)(); - - this.fireReady(); - - this.queuedData.forEach(function (data) { - return _this3.addData(data); - }); - this.queuedData = []; - - return this; - } -}); - -exports.default = DropLab; - -/***/ }), -/* 5 */, -/* 6 */, -/* 7 */, -/* 8 */, -/* 9 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _Object$assign; - -__webpack_require__(1); - -var _utils = __webpack_require__(3); - -var _utils2 = _interopRequireDefault(_utils); - -var _constants = __webpack_require__(0); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _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; } - -var DropDown = function DropDown(list) { - this.currentIndex = 0; - this.hidden = true; - this.list = typeof list === 'string' ? document.querySelector(list) : list; - this.items = []; - - this.eventWrapper = {}; - - this.getItems(); - this.initTemplateString(); - this.addEvents(); - - this.initialState = list.innerHTML; -}; - -Object.assign(DropDown.prototype, (_Object$assign = { - getItems: function getItems() { - this.items = [].slice.call(this.list.querySelectorAll('li')); - return this.items; - }, - - initTemplateString: function initTemplateString() { - var items = this.items || this.getItems(); - - var templateString = ''; - if (items.length > 0) templateString = items[items.length - 1].outerHTML; - this.templateString = templateString; - - return this.templateString; - }, - - clickEvent: function clickEvent(e) { - var selected = _utils2.default.closest(e.target, 'LI'); - if (!selected) return; - - this.addSelectedClass(selected); - - e.preventDefault(); - this.hide(); - - var listEvent = new CustomEvent('click.dl', { - detail: { - list: this, - selected: selected, - data: e.target.dataset - } - }); - this.list.dispatchEvent(listEvent); - }, - - addSelectedClass: function addSelectedClass(selected) { - this.removeSelectedClasses(); - selected.classList.add(_constants.SELECTED_CLASS); - }, - - removeSelectedClasses: function removeSelectedClasses() { - var items = this.items || this.getItems(); - - items.forEach(function (item) { - return item.classList.remove(_constants.SELECTED_CLASS); - }); - }, - - addEvents: function addEvents() { - this.eventWrapper.clickEvent = this.clickEvent.bind(this); - this.list.addEventListener('click', this.eventWrapper.clickEvent); - }, - - toggle: function toggle() { - this.hidden ? this.show() : this.hide(); - }, - - setData: function setData(data) { - this.data = data; - this.render(data); - }, - - addData: function addData(data) { - this.data = (this.data || []).concat(data); - this.render(this.data); - }, - - render: function render(data) { - var children = data ? data.map(this.renderChildren.bind(this)) : []; - var renderableList = this.list.querySelector('ul[data-dynamic]') || this.list; - - renderableList.innerHTML = children.join(''); - }, - - renderChildren: function renderChildren(data) { - var html = _utils2.default.t(this.templateString, data); - var template = document.createElement('div'); - - template.innerHTML = html; - this.setImagesSrc(template); - template.firstChild.style.display = data.droplab_hidden ? 'none' : 'block'; - - return template.firstChild.outerHTML; - }, - - setImagesSrc: function setImagesSrc(template) { - var images = [].slice.call(template.querySelectorAll('img[data-src]')); - - images.forEach(function (image) { - image.src = image.getAttribute('data-src'); - image.removeAttribute('data-src'); - }); - }, - - show: function show() { - if (!this.hidden) return; - this.list.style.display = 'block'; - this.currentIndex = 0; - this.hidden = false; - }, - - hide: function hide() { - if (this.hidden) return; - this.list.style.display = 'none'; - this.currentIndex = 0; - this.hidden = true; - } - -}, _defineProperty(_Object$assign, 'toggle', function toggle() { - this.hidden ? this.show() : this.hide(); -}), _defineProperty(_Object$assign, 'destroy', function destroy() { - this.hide(); - this.list.removeEventListener('click', this.eventWrapper.clickEvent); -}), _Object$assign)); - -exports.default = DropDown; - -/***/ }), -/* 10 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -__webpack_require__(1); - -var _hook = __webpack_require__(2); - -var _hook2 = _interopRequireDefault(_hook); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -var HookButton = function HookButton(trigger, list, plugins, config) { - _hook2.default.call(this, trigger, list, plugins, config); - - this.type = 'button'; - this.event = 'click'; - - this.eventWrapper = {}; - - this.addEvents(); - this.addPlugins(); -}; - -HookButton.prototype = Object.create(_hook2.default.prototype); - -Object.assign(HookButton.prototype, { - addPlugins: function addPlugins() { - var _this = this; - - this.plugins.forEach(function (plugin) { - return plugin.init(_this); - }); - }, - - clicked: function clicked(e) { - var buttonEvent = new CustomEvent('click.dl', { - detail: { - hook: this - }, - bubbles: true, - cancelable: true - }); - e.target.dispatchEvent(buttonEvent); - - this.list.toggle(); - }, - - addEvents: function addEvents() { - this.eventWrapper.clicked = this.clicked.bind(this); - this.trigger.addEventListener('click', this.eventWrapper.clicked); - }, - - removeEvents: function removeEvents() { - this.trigger.removeEventListener('click', this.eventWrapper.clicked); - }, - - restoreInitialState: function restoreInitialState() { - this.list.list.innerHTML = this.list.initialState; - }, - - removePlugins: function removePlugins() { - this.plugins.forEach(function (plugin) { - return plugin.destroy(); - }); - }, - - destroy: function destroy() { - this.restoreInitialState(); - - this.removeEvents(); - this.removePlugins(); - }, - - constructor: HookButton -}); - -exports.default = HookButton; - -/***/ }), -/* 11 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -__webpack_require__(1); - -var _hook = __webpack_require__(2); - -var _hook2 = _interopRequireDefault(_hook); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -var HookInput = function HookInput(trigger, list, plugins, config) { - _hook2.default.call(this, trigger, list, plugins, config); - - this.type = 'input'; - this.event = 'input'; - - this.eventWrapper = {}; - - this.addEvents(); - this.addPlugins(); -}; - -Object.assign(HookInput.prototype, { - addPlugins: function addPlugins() { - var _this = this; - - this.plugins.forEach(function (plugin) { - return plugin.init(_this); - }); - }, - - addEvents: function addEvents() { - this.eventWrapper.mousedown = this.mousedown.bind(this); - this.eventWrapper.input = this.input.bind(this); - this.eventWrapper.keyup = this.keyup.bind(this); - this.eventWrapper.keydown = this.keydown.bind(this); - - this.trigger.addEventListener('mousedown', this.eventWrapper.mousedown); - this.trigger.addEventListener('input', this.eventWrapper.input); - this.trigger.addEventListener('keyup', this.eventWrapper.keyup); - this.trigger.addEventListener('keydown', this.eventWrapper.keydown); - }, - - removeEvents: function removeEvents() { - this.hasRemovedEvents = true; - - this.trigger.removeEventListener('mousedown', this.eventWrapper.mousedown); - this.trigger.removeEventListener('input', this.eventWrapper.input); - this.trigger.removeEventListener('keyup', this.eventWrapper.keyup); - this.trigger.removeEventListener('keydown', this.eventWrapper.keydown); - }, - - input: function input(e) { - if (this.hasRemovedEvents) return; - - this.list.show(); - - var inputEvent = new CustomEvent('input.dl', { - detail: { - hook: this, - text: e.target.value - }, - bubbles: true, - cancelable: true - }); - e.target.dispatchEvent(inputEvent); - }, - - mousedown: function mousedown(e) { - if (this.hasRemovedEvents) return; - - var mouseEvent = new CustomEvent('mousedown.dl', { - detail: { - hook: this, - text: e.target.value - }, - bubbles: true, - cancelable: true - }); - e.target.dispatchEvent(mouseEvent); - }, - - keyup: function keyup(e) { - if (this.hasRemovedEvents) return; - - this.keyEvent(e, 'keyup.dl'); - }, - - keydown: function keydown(e) { - if (this.hasRemovedEvents) return; - - this.keyEvent(e, 'keydown.dl'); - }, - - keyEvent: function keyEvent(e, eventName) { - this.list.show(); - - var keyEvent = new CustomEvent(eventName, { - detail: { - hook: this, - text: e.target.value, - which: e.which, - key: e.key - }, - bubbles: true, - cancelable: true - }); - e.target.dispatchEvent(keyEvent); - }, - - restoreInitialState: function restoreInitialState() { - this.list.list.innerHTML = this.list.initialState; - }, - - removePlugins: function removePlugins() { - this.plugins.forEach(function (plugin) { - return plugin.destroy(); - }); - }, - - destroy: function destroy() { - this.restoreInitialState(); - - this.removeEvents(); - this.removePlugins(); - - this.list.destroy(); - } -}); - -exports.default = HookInput; - -/***/ }), -/* 12 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _constants = __webpack_require__(0); - -var Keyboard = function Keyboard() { - var currentKey; - var currentFocus; - var isUpArrow = false; - var isDownArrow = false; - var removeHighlight = function removeHighlight(list) { - var itemElements = Array.prototype.slice.call(list.list.querySelectorAll('li:not(.divider)'), 0); - var listItems = []; - for (var i = 0; i < itemElements.length; i++) { - var listItem = itemElements[i]; - listItem.classList.remove(_constants.ACTIVE_CLASS); - - if (listItem.style.display !== 'none') { - listItems.push(listItem); - } - } - return listItems; - }; - - var setMenuForArrows = function setMenuForArrows(list) { - var listItems = removeHighlight(list); - if (list.currentIndex > 0) { - if (!listItems[list.currentIndex - 1]) { - list.currentIndex = list.currentIndex - 1; - } - - if (listItems[list.currentIndex - 1]) { - var el = listItems[list.currentIndex - 1]; - var filterDropdownEl = el.closest('.filter-dropdown'); - el.classList.add(_constants.ACTIVE_CLASS); - - if (filterDropdownEl) { - var filterDropdownBottom = filterDropdownEl.offsetHeight; - var elOffsetTop = el.offsetTop - 30; - - if (elOffsetTop > filterDropdownBottom) { - filterDropdownEl.scrollTop = elOffsetTop - filterDropdownBottom; - } - } - } - } - }; - - var mousedown = function mousedown(e) { - var list = e.detail.hook.list; - removeHighlight(list); - list.show(); - list.currentIndex = 0; - isUpArrow = false; - isDownArrow = false; - }; - var selectItem = function selectItem(list) { - var listItems = removeHighlight(list); - var currentItem = listItems[list.currentIndex - 1]; - var listEvent = new CustomEvent('click.dl', { - detail: { - list: list, - selected: currentItem, - data: currentItem.dataset - } - }); - list.list.dispatchEvent(listEvent); - list.hide(); - }; - - var keydown = function keydown(e) { - var typedOn = e.target; - var list = e.detail.hook.list; - var currentIndex = list.currentIndex; - isUpArrow = false; - isDownArrow = false; - - if (e.detail.which) { - currentKey = e.detail.which; - if (currentKey === 13) { - selectItem(e.detail.hook.list); - return; - } - if (currentKey === 38) { - isUpArrow = true; - } - if (currentKey === 40) { - isDownArrow = true; - } - } else if (e.detail.key) { - currentKey = e.detail.key; - if (currentKey === 'Enter') { - selectItem(e.detail.hook.list); - return; - } - if (currentKey === 'ArrowUp') { - isUpArrow = true; - } - if (currentKey === 'ArrowDown') { - isDownArrow = true; - } - } - if (isUpArrow) { - currentIndex--; - } - if (isDownArrow) { - currentIndex++; - } - if (currentIndex < 0) { - currentIndex = 0; - } - list.currentIndex = currentIndex; - setMenuForArrows(e.detail.hook.list); - }; - - document.addEventListener('mousedown.dl', mousedown); - document.addEventListener('keydown.dl', keydown); -}; - -exports.default = Keyboard; - -/***/ }), -/* 13 */, -/* 14 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _droplab = __webpack_require__(4); - -Object.keys(_droplab).forEach(function (key) { - if (key === "default" || key === "__esModule") return; - Object.defineProperty(exports, key, { - enumerable: true, - get: function get() { - return _droplab[key]; - } - }); -}); - -/***/ }) -/******/ ]); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAgOTMzZmY3ZDVlZDM5M2RjNjNiY2EiLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbnN0YW50cy5qcyIsIndlYnBhY2s6Ly8vLi9+L2N1c3RvbS1ldmVudC1wb2x5ZmlsbC9jdXN0b20tZXZlbnQtcG9seWZpbGwuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2hvb2suanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3V0aWxzLmpzIiwid2VicGFjazovLy8uL3NyYy9kcm9wbGFiLmpzIiwid2VicGFjazovLy8uL3NyYy9kcm9wZG93bi5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvaG9va19idXR0b24uanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2hvb2tfaW5wdXQuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2tleWJvYXJkLmpzIiwid2VicGFjazovLy8uL3NyYy9pbmRleC5qcyJdLCJuYW1lcyI6WyJEQVRBX1RSSUdHRVIiLCJEQVRBX0RST1BET1dOIiwiU0VMRUNURURfQ0xBU1MiLCJBQ1RJVkVfQ0xBU1MiLCJIb29rIiwidHJpZ2dlciIsImxpc3QiLCJwbHVnaW5zIiwiY29uZmlnIiwidHlwZSIsImV2ZW50IiwiaWQiLCJPYmplY3QiLCJhc3NpZ24iLCJwcm90b3R5cGUiLCJhZGRFdmVudHMiLCJjb25zdHJ1Y3RvciIsInV0aWxzIiwidG9DYW1lbENhc2UiLCJhdHRyIiwiY2FtZWxpemUiLCJzcGxpdCIsInNsaWNlIiwiam9pbiIsInQiLCJzIiwiZCIsInAiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJyZXBsYWNlIiwiUmVnRXhwIiwic3RyIiwibGV0dGVyIiwiaW5kZXgiLCJ0b0xvd2VyQ2FzZSIsInRvVXBwZXJDYXNlIiwiY2xvc2VzdCIsInRoaXNUYWciLCJzdG9wVGFnIiwidGFnTmFtZSIsInBhcmVudE5vZGUiLCJpc0Ryb3BEb3duUGFydHMiLCJ0YXJnZXQiLCJoYXNBdHRyaWJ1dGUiLCJEcm9wTGFiIiwicmVhZHkiLCJob29rcyIsInF1ZXVlZERhdGEiLCJldmVudFdyYXBwZXIiLCJsb2FkU3RhdGljIiwiZHJvcGRvd25UcmlnZ2VycyIsImFwcGx5IiwiZG9jdW1lbnQiLCJxdWVyeVNlbGVjdG9yQWxsIiwiYWRkSG9va3MiLCJhZGREYXRhIiwiYXJncyIsImFyZ3VtZW50cyIsImFwcGx5QXJncyIsInNldERhdGEiLCJkZXN0cm95IiwiZm9yRWFjaCIsImhvb2siLCJyZW1vdmVFdmVudHMiLCJtZXRob2ROYW1lIiwicHVzaCIsIl9hZGREYXRhIiwiZGF0YSIsIl9wcm9jZXNzRGF0YSIsIl9zZXREYXRhIiwiQXJyYXkiLCJpc0FycmF5IiwiZG9jdW1lbnRDbGlja2VkIiwiYmluZCIsImFkZEV2ZW50TGlzdGVuZXIiLCJlIiwiaGlkZSIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJjaGFuZ2VIb29rTGlzdCIsImF2YWlsYWJsZVRyaWdnZXIiLCJnZXRFbGVtZW50QnlJZCIsImkiLCJkYXRhc2V0IiwiZHJvcGRvd25BY3RpdmUiLCJzcGxpY2UiLCJhZGRIb29rIiwiYXZhaWxhYmxlSG9vayIsInF1ZXJ5U2VsZWN0b3IiLCJhdmFpbGFibGVMaXN0IiwiRWxlbWVudCIsIkhvb2tPYmplY3QiLCJzZXRDb25maWciLCJvYmoiLCJmaXJlUmVhZHkiLCJyZWFkeUV2ZW50IiwiQ3VzdG9tRXZlbnQiLCJkZXRhaWwiLCJkcm9wZG93biIsImRpc3BhdGNoRXZlbnQiLCJpbml0IiwiRHJvcERvd24iLCJjdXJyZW50SW5kZXgiLCJoaWRkZW4iLCJpdGVtcyIsImdldEl0ZW1zIiwiaW5pdFRlbXBsYXRlU3RyaW5nIiwiaW5pdGlhbFN0YXRlIiwiaW5uZXJIVE1MIiwidGVtcGxhdGVTdHJpbmciLCJsZW5ndGgiLCJvdXRlckhUTUwiLCJjbGlja0V2ZW50Iiwic2VsZWN0ZWQiLCJhZGRTZWxlY3RlZENsYXNzIiwicHJldmVudERlZmF1bHQiLCJsaXN0RXZlbnQiLCJyZW1vdmVTZWxlY3RlZENsYXNzZXMiLCJjbGFzc0xpc3QiLCJhZGQiLCJpdGVtIiwicmVtb3ZlIiwidG9nZ2xlIiwic2hvdyIsInJlbmRlciIsImNvbmNhdCIsImNoaWxkcmVuIiwibWFwIiwicmVuZGVyQ2hpbGRyZW4iLCJyZW5kZXJhYmxlTGlzdCIsImh0bWwiLCJ0ZW1wbGF0ZSIsImNyZWF0ZUVsZW1lbnQiLCJzZXRJbWFnZXNTcmMiLCJmaXJzdENoaWxkIiwic3R5bGUiLCJkaXNwbGF5IiwiZHJvcGxhYl9oaWRkZW4iLCJpbWFnZXMiLCJpbWFnZSIsInNyYyIsImdldEF0dHJpYnV0ZSIsInJlbW92ZUF0dHJpYnV0ZSIsIkhvb2tCdXR0b24iLCJhZGRQbHVnaW5zIiwiY3JlYXRlIiwicGx1Z2luIiwiY2xpY2tlZCIsImJ1dHRvbkV2ZW50IiwiYnViYmxlcyIsImNhbmNlbGFibGUiLCJyZXN0b3JlSW5pdGlhbFN0YXRlIiwicmVtb3ZlUGx1Z2lucyIsIkhvb2tJbnB1dCIsIm1vdXNlZG93biIsImlucHV0Iiwia2V5dXAiLCJrZXlkb3duIiwiaGFzUmVtb3ZlZEV2ZW50cyIsImlucHV0RXZlbnQiLCJ0ZXh0IiwidmFsdWUiLCJtb3VzZUV2ZW50Iiwia2V5RXZlbnQiLCJldmVudE5hbWUiLCJ3aGljaCIsImtleSIsIktleWJvYXJkIiwiY3VycmVudEtleSIsImN1cnJlbnRGb2N1cyIsImlzVXBBcnJvdyIsImlzRG93bkFycm93IiwicmVtb3ZlSGlnaGxpZ2h0IiwiaXRlbUVsZW1lbnRzIiwibGlzdEl0ZW1zIiwibGlzdEl0ZW0iLCJzZXRNZW51Rm9yQXJyb3dzIiwiZWwiLCJmaWx0ZXJEcm9wZG93bkVsIiwiZmlsdGVyRHJvcGRvd25Cb3R0b20iLCJvZmZzZXRIZWlnaHQiLCJlbE9mZnNldFRvcCIsIm9mZnNldFRvcCIsInNjcm9sbFRvcCIsInNlbGVjdEl0ZW0iLCJjdXJyZW50SXRlbSIsInR5cGVkT24iXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7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RXFCLE1BQUYsQ0FBU2xDLElBQVQsQ0FBY3pELElBQS9CO0FBQ0QsR0FyQ0Q7O0FBdUNBK0MsV0FBU3NCLGdCQUFULENBQTBCLGNBQTFCLEVBQTBDK0UsU0FBMUM7QUFDQXJHLFdBQVNzQixnQkFBVCxDQUEwQixZQUExQixFQUF3Q2tGLE9BQXhDO0FBQ0QsQ0ExR0Q7O2tCQTRHZVUsUTs7Ozs7Ozs7Ozs7Ozs7OztBQzlHZjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRyIsImZpbGUiOiIuL2Rpc3QvZHJvcGxhYi5qcyIsInNvdXJjZXNDb250ZW50IjpbIiBcdC8vIFRoZSBtb2R1bGUgY2FjaGVcbiBcdHZhciBpbnN0YWxsZWRNb2R1bGVzID0ge307XG5cbiBcdC8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG4gXHRmdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cbiBcdFx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG4gXHRcdGlmKGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdKVxuIFx0XHRcdHJldHVybiBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXS5leHBvcnRzO1xuXG4gXHRcdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG4gXHRcdHZhciBtb2R1bGUgPSBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSA9IHtcbiBcdFx0XHRpOiBtb2R1bGVJZCxcbiBcdFx0XHRsOiBmYWxzZSxcbiBcdFx0XHRleHBvcnRzOiB7fVxuIFx0XHR9O1xuXG4gXHRcdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuIFx0XHRtb2R1bGVzW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuIFx0XHQvLyBGbGFnIHRoZSBtb2R1bGUgYXMgbG9hZGVkXG4gXHRcdG1vZHVsZS5sID0gdHJ1ZTtcblxuIFx0XHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuIFx0XHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG4gXHR9XG5cblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubSA9IG1vZHVsZXM7XG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlIGNhY2hlXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmMgPSBpbnN0YWxsZWRNb2R1bGVzO1xuXG4gXHQvLyBpZGVudGl0eSBmdW5jdGlvbiBmb3IgY2FsbGluZyBoYXJtb255IGltcG9ydHMgd2l0aCB0aGUgY29ycmVjdCBjb250ZXh0XG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmkgPSBmdW5jdGlvbih2YWx1ZSkgeyByZXR1cm4gdmFsdWU7IH07XG5cbiBcdC8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb24gZm9yIGhhcm1vbnkgZXhwb3J0c1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kID0gZnVuY3Rpb24oZXhwb3J0cywgbmFtZSwgZ2V0dGVyKSB7XG4gXHRcdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywgbmFtZSkpIHtcbiBcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwge1xuIFx0XHRcdFx0Y29uZmlndXJhYmxlOiBmYWxzZSxcbiBcdFx0XHRcdGVudW1lcmFibGU6IHRydWUsXG4gXHRcdFx0XHRnZXQ6IGdldHRlclxuIFx0XHRcdH0pO1xuIFx0XHR9XG4gXHR9O1xuXG4gXHQvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5uID0gZnVuY3Rpb24obW9kdWxlKSB7XG4gXHRcdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuIFx0XHRcdGZ1bmN0aW9uIGdldERlZmF1bHQoKSB7IHJldHVybiBtb2R1bGVbJ2RlZmF1bHQnXTsgfSA6XG4gXHRcdFx0ZnVuY3Rpb24gZ2V0TW9kdWxlRXhwb3J0cygpIHsgcmV0dXJuIG1vZHVsZTsgfTtcbiBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgJ2EnLCBnZXR0ZXIpO1xuIFx0XHRyZXR1cm4gZ2V0dGVyO1xuIFx0fTtcblxuIFx0Ly8gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSBmdW5jdGlvbihvYmplY3QsIHByb3BlcnR5KSB7IHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBwcm9wZXJ0eSk7IH07XG5cbiBcdC8vIF9fd2VicGFja19wdWJsaWNfcGF0aF9fXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSBcIlwiO1xuXG4gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbiBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IDE0KTtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyB3ZWJwYWNrL2Jvb3RzdHJhcCA5MzNmZjdkNWVkMzkzZGM2M2JjYSIsImNvbnN0IERBVEFfVFJJR0dFUiA9ICdkYXRhLWRyb3Bkb3duLXRyaWdnZXInO1xuY29uc3QgREFUQV9EUk9QRE9XTiA9ICdkYXRhLWRyb3Bkb3duJztcbmNvbnN0IFNFTEVDVEVEX0NMQVNTID0gJ2Ryb3BsYWItaXRlbS1zZWxlY3RlZCc7XG5jb25zdCBBQ1RJVkVfQ0xBU1MgPSAnZHJvcGxhYi1pdGVtLWFjdGl2ZSc7XG5cbmV4cG9ydCB7XG4gIERBVEFfVFJJR0dFUixcbiAgREFUQV9EUk9QRE9XTixcbiAgU0VMRUNURURfQ0xBU1MsXG4gIEFDVElWRV9DTEFTUyxcbn07XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvY29uc3RhbnRzLmpzIiwiLy8gUG9seWZpbGwgZm9yIGNyZWF0aW5nIEN1c3RvbUV2ZW50cyBvbiBJRTkvMTAvMTFcblxuLy8gY29kZSBwdWxsZWQgZnJvbTpcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9kNHRvY2NoaW5pL2N1c3RvbWV2ZW50LXBvbHlmaWxsXG4vLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvQ3VzdG9tRXZlbnQjUG9seWZpbGxcblxudHJ5IHtcbiAgICB2YXIgY2UgPSBuZXcgd2luZG93LkN1c3RvbUV2ZW50KCd0ZXN0Jyk7XG4gICAgY2UucHJldmVudERlZmF1bHQoKTtcbiAgICBpZiAoY2UuZGVmYXVsdFByZXZlbnRlZCAhPT0gdHJ1ZSkge1xuICAgICAgICAvLyBJRSBoYXMgcHJvYmxlbXMgd2l0aCAucHJldmVudERlZmF1bHQoKSBvbiBjdXN0b20gZXZlbnRzXG4gICAgICAgIC8vIGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMjMzNDkxOTFcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDb3VsZCBub3QgcHJldmVudCBkZWZhdWx0Jyk7XG4gICAgfVxufSBjYXRjaChlKSB7XG4gIHZhciBDdXN0b21FdmVudCA9IGZ1bmN0aW9uKGV2ZW50LCBwYXJhbXMpIHtcbiAgICB2YXIgZXZ0LCBvcmlnUHJldmVudDtcbiAgICBwYXJhbXMgPSBwYXJhbXMgfHwge1xuICAgICAgYnViYmxlczogZmFsc2UsXG4gICAgICBjYW5jZWxhYmxlOiBmYWxzZSxcbiAgICAgIGRldGFpbDogdW5kZWZpbmVkXG4gICAgfTtcblxuICAgIGV2dCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KFwiQ3VzdG9tRXZlbnRcIik7XG4gICAgZXZ0LmluaXRDdXN0b21FdmVudChldmVudCwgcGFyYW1zLmJ1YmJsZXMsIHBhcmFtcy5jYW5jZWxhYmxlLCBwYXJhbXMuZGV0YWlsKTtcbiAgICBvcmlnUHJldmVudCA9IGV2dC5wcmV2ZW50RGVmYXVsdDtcbiAgICBldnQucHJldmVudERlZmF1bHQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBvcmlnUHJldmVudC5jYWxsKHRoaXMpO1xuICAgICAgdHJ5IHtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsICdkZWZhdWx0UHJldmVudGVkJywge1xuICAgICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0gY2F0Y2goZSkge1xuICAgICAgICB0aGlzLmRlZmF1bHRQcmV2ZW50ZWQgPSB0cnVlO1xuICAgICAgfVxuICAgIH07XG4gICAgcmV0dXJuIGV2dDtcbiAgfTtcblxuICBDdXN0b21FdmVudC5wcm90b3R5cGUgPSB3aW5kb3cuRXZlbnQucHJvdG90eXBlO1xuICB3aW5kb3cuQ3VzdG9tRXZlbnQgPSBDdXN0b21FdmVudDsgLy8gZXhwb3NlIGRlZmluaXRpb24gdG8gd2luZG93XG59XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL34vY3VzdG9tLWV2ZW50LXBvbHlmaWxsL2N1c3RvbS1ldmVudC1wb2x5ZmlsbC5qc1xuLy8gbW9kdWxlIGlkID0gMVxuLy8gbW9kdWxlIGNodW5rcyA9IDAgMSIsImltcG9ydCBEcm9wRG93biBmcm9tICcuL2Ryb3Bkb3duJztcblxudmFyIEhvb2sgPSBmdW5jdGlvbih0cmlnZ2VyLCBsaXN0LCBwbHVnaW5zLCBjb25maWcpe1xuICB0aGlzLnRyaWdnZXIgPSB0cmlnZ2VyO1xuICB0aGlzLmxpc3QgPSBuZXcgRHJvcERvd24obGlzdCk7XG4gIHRoaXMudHlwZSA9ICdIb29rJztcbiAgdGhpcy5ldmVudCA9ICdjbGljayc7XG4gIHRoaXMucGx1Z2lucyA9IHBsdWdpbnMgfHwgW107XG4gIHRoaXMuY29uZmlnID0gY29uZmlnIHx8IHt9O1xuICB0aGlzLmlkID0gdHJpZ2dlci5pZDtcbn07XG5cbk9iamVjdC5hc3NpZ24oSG9vay5wcm90b3R5cGUsIHtcblxuICBhZGRFdmVudHM6IGZ1bmN0aW9uKCl7fSxcblxuICBjb25zdHJ1Y3RvcjogSG9vayxcbn0pO1xuXG5leHBvcnQgZGVmYXVsdCBIb29rO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vc3JjL2hvb2suanMiLCJpbXBvcnQgeyBEQVRBX1RSSUdHRVIsIERBVEFfRFJPUERPV04gfSBmcm9tICcuL2NvbnN0YW50cyc7XG5cbmNvbnN0IHV0aWxzID0ge1xuICB0b0NhbWVsQ2FzZShhdHRyKSB7XG4gICAgcmV0dXJuIHRoaXMuY2FtZWxpemUoYXR0ci5zcGxpdCgnLScpLnNsaWNlKDEpLmpvaW4oJyAnKSk7XG4gIH0sXG5cbiAgdChzLCBkKSB7XG4gICAgZm9yIChjb25zdCBwIGluIGQpIHtcbiAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZCwgcCkpIHtcbiAgICAgICAgcyA9IHMucmVwbGFjZShuZXcgUmVnRXhwKGB7eyR7cH19fWAsICdnJyksIGRbcF0pO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcztcbiAgfSxcblxuICBjYW1lbGl6ZShzdHIpIHtcbiAgICByZXR1cm4gc3RyLnJlcGxhY2UoLyg/Ol5cXHd8W0EtWl18XFxiXFx3KS9nLCAobGV0dGVyLCBpbmRleCkgPT4ge1xuICAgICAgcmV0dXJuIGluZGV4ID09PSAwID8gbGV0dGVyLnRvTG93ZXJDYXNlKCkgOiBsZXR0ZXIudG9VcHBlckNhc2UoKTtcbiAgICB9KS5yZXBsYWNlKC9cXHMrL2csICcnKTtcbiAgfSxcblxuICBjbG9zZXN0KHRoaXNUYWcsIHN0b3BUYWcpIHtcbiAgICB3aGlsZSAodGhpc1RhZyAmJiB0aGlzVGFnLnRhZ05hbWUgIT09IHN0b3BUYWcgJiYgdGhpc1RhZy50YWdOYW1lICE9PSAnSFRNTCcpIHtcbiAgICAgIHRoaXNUYWcgPSB0aGlzVGFnLnBhcmVudE5vZGU7XG4gICAgfVxuICAgIHJldHVybiB0aGlzVGFnO1xuICB9LFxuXG4gIGlzRHJvcERvd25QYXJ0cyh0YXJnZXQpIHtcbiAgICBpZiAoIXRhcmdldCB8fCB0YXJnZXQudGFnTmFtZSA9PT0gJ0hUTUwnKSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIHRhcmdldC5oYXNBdHRyaWJ1dGUoREFUQV9UUklHR0VSKSB8fCB0YXJnZXQuaGFzQXR0cmlidXRlKERBVEFfRFJPUERPV04pO1xuICB9LFxufTtcblxuXG5leHBvcnQgZGVmYXVsdCB1dGlscztcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3NyYy91dGlscy5qcyIsImltcG9ydCAnY3VzdG9tLWV2ZW50LXBvbHlmaWxsJztcbmltcG9ydCBIb29rQnV0dG9uIGZyb20gJy4vaG9va19idXR0b24nO1xuaW1wb3J0IEhvb2tJbnB1dCBmcm9tICcuL2hvb2tfaW5wdXQnO1xuaW1wb3J0IHV0aWxzIGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IEtleWJvYXJkIGZyb20gJy4va2V5Ym9hcmQnO1xuaW1wb3J0IHsgREFUQV9UUklHR0VSIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuXG52YXIgRHJvcExhYiA9IGZ1bmN0aW9uKCkge1xuICB0aGlzLnJlYWR5ID0gZmFsc2U7XG4gIHRoaXMuaG9va3MgPSBbXTtcbiAgdGhpcy5xdWV1ZWREYXRhID0gW107XG4gIHRoaXMuY29uZmlnID0ge307XG5cbiAgdGhpcy5ldmVudFdyYXBwZXIgPSB7fTtcbn07XG5cbk9iamVjdC5hc3NpZ24oRHJvcExhYi5wcm90b3R5cGUsIHtcbiAgbG9hZFN0YXRpYzogZnVuY3Rpb24oKXtcbiAgICB2YXIgZHJvcGRvd25UcmlnZ2VycyA9IFtdLnNsaWNlLmFwcGx5KGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoYFske0RBVEFfVFJJR0dFUn1dYCkpO1xuICAgIHRoaXMuYWRkSG9va3MoZHJvcGRvd25UcmlnZ2Vycyk7XG4gIH0sXG5cbiAgYWRkRGF0YTogZnVuY3Rpb24gKCkge1xuICAgIHZhciBhcmdzID0gW10uc2xpY2UuYXBwbHkoYXJndW1lbnRzKTtcbiAgICB0aGlzLmFwcGx5QXJncyhhcmdzLCAnX2FkZERhdGEnKTtcbiAgfSxcblxuICBzZXREYXRhOiBmdW5jdGlvbigpIHtcbiAgICB2YXIgYXJncyA9IFtdLnNsaWNlLmFwcGx5KGFyZ3VtZW50cyk7XG4gICAgdGhpcy5hcHBseUFyZ3MoYXJncywgJ19zZXREYXRhJyk7XG4gIH0sXG5cbiAgZGVzdHJveTogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5ob29rcy5mb3JFYWNoKGhvb2sgPT4gaG9vay5kZXN0cm95KCkpO1xuICAgIHRoaXMuaG9va3MgPSBbXTtcbiAgICB0aGlzLnJlbW92ZUV2ZW50cygpO1xuICB9LFxuXG4gIGFwcGx5QXJnczogZnVuY3Rpb24oYXJncywgbWV0aG9kTmFtZSkge1xuICAgIGlmICh0aGlzLnJlYWR5KSByZXR1cm4gdGhpc1ttZXRob2ROYW1lXS5hcHBseSh0aGlzLCBhcmdzKTtcblxuICAgIHRoaXMucXVldWVkRGF0YSA9IHRoaXMucXVldWVkRGF0YSB8fCBbXTtcbiAgICB0aGlzLnF1ZXVlZERhdGEucHVzaChhcmdzKTtcbiAgfSxcblxuICBfYWRkRGF0YTogZnVuY3Rpb24odHJpZ2dlciwgZGF0YSkge1xuICAgIHRoaXMuX3Byb2Nlc3NEYXRhKHRyaWdnZXIsIGRhdGEsICdhZGREYXRhJyk7XG4gIH0sXG5cbiAgX3NldERhdGE6IGZ1bmN0aW9uKHRyaWdnZXIsIGRhdGEpIHtcbiAgICB0aGlzLl9wcm9jZXNzRGF0YSh0cmlnZ2VyLCBkYXRhLCAnc2V0RGF0YScpO1xuICB9LFxuXG4gIF9wcm9jZXNzRGF0YTogZnVuY3Rpb24odHJpZ2dlciwgZGF0YSwgbWV0aG9kTmFtZSkge1xuICAgIHRoaXMuaG9va3MuZm9yRWFjaCgoaG9vaykgPT4ge1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkodHJpZ2dlcikpIGhvb2subGlzdFttZXRob2ROYW1lXSh0cmlnZ2VyKTtcblxuICAgICAgaWYgKGhvb2sudHJpZ2dlci5pZCA9PT0gdHJpZ2dlcikgaG9vay5saXN0W21ldGhvZE5hbWVdKGRhdGEpO1xuICAgIH0pO1xuICB9LFxuXG4gIGFkZEV2ZW50czogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5ldmVudFdyYXBwZXIuZG9jdW1lbnRDbGlja2VkID0gdGhpcy5kb2N1bWVudENsaWNrZWQuYmluZCh0aGlzKVxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy5ldmVudFdyYXBwZXIuZG9jdW1lbnRDbGlja2VkKTtcbiAgfSxcblxuICBkb2N1bWVudENsaWNrZWQ6IGZ1bmN0aW9uKGUpIHtcbiAgICBsZXQgdGhpc1RhZyA9IGUudGFyZ2V0O1xuXG4gICAgaWYgKHRoaXNUYWcudGFnTmFtZSAhPT0gJ1VMJykgdGhpc1RhZyA9IHV0aWxzLmNsb3Nlc3QodGhpc1RhZywgJ1VMJyk7XG4gICAgaWYgKHV0aWxzLmlzRHJvcERvd25QYXJ0cyh0aGlzVGFnLCB0aGlzLmhvb2tzKSB8fCB1dGlscy5pc0Ryb3BEb3duUGFydHMoZS50YXJnZXQsIHRoaXMuaG9va3MpKSByZXR1cm47XG5cbiAgICB0aGlzLmhvb2tzLmZvckVhY2goaG9vayA9PiBob29rLmxpc3QuaGlkZSgpKTtcbiAgfSxcblxuICByZW1vdmVFdmVudHM6IGZ1bmN0aW9uKCl7XG4gICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0aGlzLmV2ZW50V3JhcHBlci5kb2N1bWVudENsaWNrZWQpO1xuICB9LFxuXG4gIGNoYW5nZUhvb2tMaXN0OiBmdW5jdGlvbih0cmlnZ2VyLCBsaXN0LCBwbHVnaW5zLCBjb25maWcpIHtcbiAgICBjb25zdCBhdmFpbGFibGVUcmlnZ2VyID0gIHR5cGVvZiB0cmlnZ2VyID09PSAnc3RyaW5nJyA/IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRyaWdnZXIpIDogdHJpZ2dlcjtcblxuXG4gICAgdGhpcy5ob29rcy5mb3JFYWNoKChob29rLCBpKSA9PiB7XG4gICAgICBob29rLmxpc3QubGlzdC5kYXRhc2V0LmRyb3Bkb3duQWN0aXZlID0gZmFsc2U7XG5cbiAgICAgIGlmIChob29rLnRyaWdnZXIgIT09IGF2YWlsYWJsZVRyaWdnZXIpIHJldHVybjtcblxuICAgICAgaG9vay5kZXN0cm95KCk7XG4gICAgICB0aGlzLmhvb2tzLnNwbGljZShpLCAxKTtcbiAgICAgIHRoaXMuYWRkSG9vayhhdmFpbGFibGVUcmlnZ2VyLCBsaXN0LCBwbHVnaW5zLCBjb25maWcpO1xuICAgIH0pO1xuICB9LFxuXG4gIGFkZEhvb2s6IGZ1bmN0aW9uKGhvb2ssIGxpc3QsIHBsdWdpbnMsIGNvbmZpZykge1xuICAgIGNvbnN0IGF2YWlsYWJsZUhvb2sgPSB0eXBlb2YgaG9vayA9PT0gJ3N0cmluZycgPyBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGhvb2spIDogaG9vaztcbiAgICBsZXQgYXZhaWxhYmxlTGlzdDtcblxuICAgIGlmICh0eXBlb2YgbGlzdCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGF2YWlsYWJsZUxpc3QgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGxpc3QpO1xuICAgIH0gZWxzZSBpZiAobGlzdCBpbnN0YW5jZW9mIEVsZW1lbnQpIHtcbiAgICAgIGF2YWlsYWJsZUxpc3QgPSBsaXN0O1xuICAgIH0gZWxzZSB7XG4gICAgICBhdmFpbGFibGVMaXN0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcihob29rLmRhdGFzZXRbdXRpbHMudG9DYW1lbENhc2UoREFUQV9UUklHR0VSKV0pO1xuICAgIH1cblxuICAgIGF2YWlsYWJsZUxpc3QuZGF0YXNldC5kcm9wZG93bkFjdGl2ZSA9IHRydWU7XG5cbiAgICBjb25zdCBIb29rT2JqZWN0ID0gYXZhaWxhYmxlSG9vay50YWdOYW1lID09PSAnSU5QVVQnID8gSG9va0lucHV0IDogSG9va0J1dHRvbjtcbiAgICB0aGlzLmhvb2tzLnB1c2gobmV3IEhvb2tPYmplY3QoYXZhaWxhYmxlSG9vaywgYXZhaWxhYmxlTGlzdCwgcGx1Z2lucywgY29uZmlnKSk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfSxcblxuICBhZGRIb29rczogZnVuY3Rpb24oaG9va3MsIHBsdWdpbnMsIGNvbmZpZykge1xuICAgIGhvb2tzLmZvckVhY2goaG9vayA9PiB0aGlzLmFkZEhvb2soaG9vaywgbnVsbCwgcGx1Z2lucywgY29uZmlnKSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH0sXG5cbiAgc2V0Q29uZmlnOiBmdW5jdGlvbihvYmope1xuICAgIHRoaXMuY29uZmlnID0gb2JqO1xuICB9LFxuXG4gIGZpcmVSZWFkeTogZnVuY3Rpb24oKSB7XG4gICAgY29uc3QgcmVhZHlFdmVudCA9IG5ldyBDdXN0b21FdmVudCgncmVhZHkuZGwnLCB7XG4gICAgICBkZXRhaWw6IHtcbiAgICAgICAgZHJvcGRvd246IHRoaXMsXG4gICAgICB9LFxuICAgIH0pO1xuICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQocmVhZHlFdmVudCk7XG5cbiAgICB0aGlzLnJlYWR5ID0gdHJ1ZTtcbiAgfSxcblxuICBpbml0OiBmdW5jdGlvbiAoaG9vaywgbGlzdCwgcGx1Z2lucywgY29uZmlnKSB7XG4gICAgaG9vayA/IHRoaXMuYWRkSG9vayhob29rLCBsaXN0LCBwbHVnaW5zLCBjb25maWcpIDogdGhpcy5sb2FkU3RhdGljKCk7XG5cbiAgICB0aGlzLmFkZEV2ZW50cygpO1xuXG4gICAgS2V5Ym9hcmQoKTtcblxuICAgIHRoaXMuZmlyZVJlYWR5KCk7XG5cbiAgICB0aGlzLnF1ZXVlZERhdGEuZm9yRWFjaChkYXRhID0+IHRoaXMuYWRkRGF0YShkYXRhKSk7XG4gICAgdGhpcy5xdWV1ZWREYXRhID0gW107XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfSxcbn0pO1xuXG5leHBvcnQgZGVmYXVsdCBEcm9wTGFiO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vc3JjL2Ryb3BsYWIuanMiLCJpbXBvcnQgJ2N1c3RvbS1ldmVudC1wb2x5ZmlsbCc7XG5pbXBvcnQgdXRpbHMgZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBTRUxFQ1RFRF9DTEFTUyB9IGZyb20gJy4uL3NyYy9jb25zdGFudHMnO1xuXG52YXIgRHJvcERvd24gPSBmdW5jdGlvbihsaXN0KSB7XG4gIHRoaXMuY3VycmVudEluZGV4ID0gMDtcbiAgdGhpcy5oaWRkZW4gPSB0cnVlO1xuICB0aGlzLmxpc3QgPSB0eXBlb2YgbGlzdCA9PT0gJ3N0cmluZycgPyBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGxpc3QpIDogbGlzdDtcbiAgdGhpcy5pdGVtcyA9IFtdO1xuXG4gIHRoaXMuZXZlbnRXcmFwcGVyID0ge307XG5cbiAgdGhpcy5nZXRJdGVtcygpO1xuICB0aGlzLmluaXRUZW1wbGF0ZVN0cmluZygpO1xuICB0aGlzLmFkZEV2ZW50cygpO1xuXG4gIHRoaXMuaW5pdGlhbFN0YXRlID0gbGlzdC5pbm5lckhUTUw7XG59O1xuXG5PYmplY3QuYXNzaWduKERyb3BEb3duLnByb3RvdHlwZSwge1xuICBnZXRJdGVtczogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5pdGVtcyA9IFtdLnNsaWNlLmNhbGwodGhpcy5saXN0LnF1ZXJ5U2VsZWN0b3JBbGwoJ2xpJykpO1xuICAgIHJldHVybiB0aGlzLml0ZW1zO1xuICB9LFxuXG4gIGluaXRUZW1wbGF0ZVN0cmluZzogZnVuY3Rpb24oKSB7XG4gICAgdmFyIGl0ZW1zID0gdGhpcy5pdGVtcyB8fCB0aGlzLmdldEl0ZW1zKCk7XG5cbiAgICB2YXIgdGVtcGxhdGVTdHJpbmcgPSAnJztcbiAgICBpZiAoaXRlbXMubGVuZ3RoID4gMCkgdGVtcGxhdGVTdHJpbmcgPSBpdGVtc1tpdGVtcy5sZW5ndGggLSAxXS5vdXRlckhUTUw7XG4gICAgdGhpcy50ZW1wbGF0ZVN0cmluZyA9IHRlbXBsYXRlU3RyaW5nO1xuXG4gICAgcmV0dXJuIHRoaXMudGVtcGxhdGVTdHJpbmc7XG4gIH0sXG5cbiAgY2xpY2tFdmVudDogZnVuY3Rpb24oZSkge1xuICAgIHZhciBzZWxlY3RlZCA9IHV0aWxzLmNsb3Nlc3QoZS50YXJnZXQsICdMSScpO1xuICAgIGlmICghc2VsZWN0ZWQpIHJldHVybjtcblxuICAgIHRoaXMuYWRkU2VsZWN0ZWRDbGFzcyhzZWxlY3RlZCk7XG5cbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgdGhpcy5oaWRlKCk7XG5cbiAgICB2YXIgbGlzdEV2ZW50ID0gbmV3IEN1c3RvbUV2ZW50KCdjbGljay5kbCcsIHtcbiAgICAgIGRldGFpbDoge1xuICAgICAgICBsaXN0OiB0aGlzLFxuICAgICAgICBzZWxlY3RlZDogc2VsZWN0ZWQsXG4gICAgICAgIGRhdGE6IGUudGFyZ2V0LmRhdGFzZXQsXG4gICAgICB9LFxuICAgIH0pO1xuICAgIHRoaXMubGlzdC5kaXNwYXRjaEV2ZW50KGxpc3RFdmVudCk7XG4gIH0sXG5cbiAgYWRkU2VsZWN0ZWRDbGFzczogZnVuY3Rpb24gKHNlbGVjdGVkKSB7XG4gICAgdGhpcy5yZW1vdmVTZWxlY3RlZENsYXNzZXMoKTtcbiAgICBzZWxlY3RlZC5jbGFzc0xpc3QuYWRkKFNFTEVDVEVEX0NMQVNTKTtcbiAgfSxcblxuICByZW1vdmVTZWxlY3RlZENsYXNzZXM6IGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBpdGVtcyA9IHRoaXMuaXRlbXMgfHwgdGhpcy5nZXRJdGVtcygpO1xuXG4gICAgaXRlbXMuZm9yRWFjaChpdGVtID0+IGl0ZW0uY2xhc3NMaXN0LnJlbW92ZShTRUxFQ1RFRF9DTEFTUykpO1xuICB9LFxuXG4gIGFkZEV2ZW50czogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5ldmVudFdyYXBwZXIuY2xpY2tFdmVudCA9IHRoaXMuY2xpY2tFdmVudC5iaW5kKHRoaXMpXG4gICAgdGhpcy5saXN0LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy5ldmVudFdyYXBwZXIuY2xpY2tFdmVudCk7XG4gIH0sXG5cbiAgdG9nZ2xlOiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLmhpZGRlbiA/IHRoaXMuc2hvdygpIDogdGhpcy5oaWRlKCk7XG4gIH0sXG5cbiAgc2V0RGF0YTogZnVuY3Rpb24oZGF0YSkge1xuICAgIHRoaXMuZGF0YSA9IGRhdGE7XG4gICAgdGhpcy5yZW5kZXIoZGF0YSk7XG4gIH0sXG5cbiAgYWRkRGF0YTogZnVuY3Rpb24oZGF0YSkge1xuICAgIHRoaXMuZGF0YSA9ICh0aGlzLmRhdGEgfHwgW10pLmNvbmNhdChkYXRhKTtcbiAgICB0aGlzLnJlbmRlcih0aGlzLmRhdGEpO1xuICB9LFxuXG4gIHJlbmRlcjogZnVuY3Rpb24oZGF0YSkge1xuICAgIGNvbnN0IGNoaWxkcmVuID0gZGF0YSA/IGRhdGEubWFwKHRoaXMucmVuZGVyQ2hpbGRyZW4uYmluZCh0aGlzKSkgOiBbXTtcbiAgICBjb25zdCByZW5kZXJhYmxlTGlzdCA9IHRoaXMubGlzdC5xdWVyeVNlbGVjdG9yKCd1bFtkYXRhLWR5bmFtaWNdJykgfHwgdGhpcy5saXN0O1xuXG4gICAgcmVuZGVyYWJsZUxpc3QuaW5uZXJIVE1MID0gY2hpbGRyZW4uam9pbignJyk7XG4gIH0sXG5cbiAgcmVuZGVyQ2hpbGRyZW46IGZ1bmN0aW9uKGRhdGEpIHtcbiAgICB2YXIgaHRtbCA9IHV0aWxzLnQodGhpcy50ZW1wbGF0ZVN0cmluZywgZGF0YSk7XG4gICAgdmFyIHRlbXBsYXRlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG5cbiAgICB0ZW1wbGF0ZS5pbm5lckhUTUwgPSBodG1sO1xuICAgIHRoaXMuc2V0SW1hZ2VzU3JjKHRlbXBsYXRlKTtcbiAgICB0ZW1wbGF0ZS5maXJzdENoaWxkLnN0eWxlLmRpc3BsYXkgPSBkYXRhLmRyb3BsYWJfaGlkZGVuID8gJ25vbmUnIDogJ2Jsb2NrJztcblxuICAgIHJldHVybiB0ZW1wbGF0ZS5maXJzdENoaWxkLm91dGVySFRNTDtcbiAgfSxcblxuICBzZXRJbWFnZXNTcmM6IGZ1bmN0aW9uKHRlbXBsYXRlKSB7XG4gICAgY29uc3QgaW1hZ2VzID0gW10uc2xpY2UuY2FsbCh0ZW1wbGF0ZS5xdWVyeVNlbGVjdG9yQWxsKCdpbWdbZGF0YS1zcmNdJykpO1xuXG4gICAgaW1hZ2VzLmZvckVhY2goKGltYWdlKSA9PiB7XG4gICAgICBpbWFnZS5zcmMgPSBpbWFnZS5nZXRBdHRyaWJ1dGUoJ2RhdGEtc3JjJyk7XG4gICAgICBpbWFnZS5yZW1vdmVBdHRyaWJ1dGUoJ2RhdGEtc3JjJyk7XG4gICAgfSk7XG4gIH0sXG5cbiAgc2hvdzogZnVuY3Rpb24oKSB7XG4gICAgaWYgKCF0aGlzLmhpZGRlbikgcmV0dXJuO1xuICAgIHRoaXMubGlzdC5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJztcbiAgICB0aGlzLmN1cnJlbnRJbmRleCA9IDA7XG4gICAgdGhpcy5oaWRkZW4gPSBmYWxzZTtcbiAgfSxcblxuICBoaWRlOiBmdW5jdGlvbigpIHtcbiAgICBpZiAodGhpcy5oaWRkZW4pIHJldHVybjtcbiAgICB0aGlzLmxpc3Quc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgICB0aGlzLmN1cnJlbnRJbmRleCA9IDA7XG4gICAgdGhpcy5oaWRkZW4gPSB0cnVlO1xuICB9LFxuXG4gIHRvZ2dsZTogZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuaGlkZGVuID8gdGhpcy5zaG93KCkgOiB0aGlzLmhpZGUoKTtcbiAgfSxcblxuICBkZXN0cm95OiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLmhpZGUoKTtcbiAgICB0aGlzLmxpc3QucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0aGlzLmV2ZW50V3JhcHBlci5jbGlja0V2ZW50KTtcbiAgfVxufSk7XG5cbmV4cG9ydCBkZWZhdWx0IERyb3BEb3duO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vc3JjL2Ryb3Bkb3duLmpzIiwiaW1wb3J0ICdjdXN0b20tZXZlbnQtcG9seWZpbGwnO1xuaW1wb3J0IEhvb2sgZnJvbSAnLi9ob29rJztcblxudmFyIEhvb2tCdXR0b24gPSBmdW5jdGlvbih0cmlnZ2VyLCBsaXN0LCBwbHVnaW5zLCBjb25maWcpIHtcbiAgSG9vay5jYWxsKHRoaXMsIHRyaWdnZXIsIGxpc3QsIHBsdWdpbnMsIGNvbmZpZyk7XG5cbiAgdGhpcy50eXBlID0gJ2J1dHRvbic7XG4gIHRoaXMuZXZlbnQgPSAnY2xpY2snO1xuXG4gIHRoaXMuZXZlbnRXcmFwcGVyID0ge307XG5cbiAgdGhpcy5hZGRFdmVudHMoKTtcbiAgdGhpcy5hZGRQbHVnaW5zKCk7XG59O1xuXG5Ib29rQnV0dG9uLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoSG9vay5wcm90b3R5cGUpO1xuXG5PYmplY3QuYXNzaWduKEhvb2tCdXR0b24ucHJvdG90eXBlLCB7XG4gIGFkZFBsdWdpbnM6IGZ1bmN0aW9uKCkge1xuICAgIHRoaXMucGx1Z2lucy5mb3JFYWNoKHBsdWdpbiA9PiBwbHVnaW4uaW5pdCh0aGlzKSk7XG4gIH0sXG5cbiAgY2xpY2tlZDogZnVuY3Rpb24oZSl7XG4gICAgdmFyIGJ1dHRvbkV2ZW50ID0gbmV3IEN1c3RvbUV2ZW50KCdjbGljay5kbCcsIHtcbiAgICAgIGRldGFpbDoge1xuICAgICAgICBob29rOiB0aGlzLFxuICAgICAgfSxcbiAgICAgIGJ1YmJsZXM6IHRydWUsXG4gICAgICBjYW5jZWxhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgZS50YXJnZXQuZGlzcGF0Y2hFdmVudChidXR0b25FdmVudCk7XG5cbiAgICB0aGlzLmxpc3QudG9nZ2xlKCk7XG4gIH0sXG5cbiAgYWRkRXZlbnRzOiBmdW5jdGlvbigpe1xuICAgIHRoaXMuZXZlbnRXcmFwcGVyLmNsaWNrZWQgPSB0aGlzLmNsaWNrZWQuYmluZCh0aGlzKTtcbiAgICB0aGlzLnRyaWdnZXIuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0aGlzLmV2ZW50V3JhcHBlci5jbGlja2VkKTtcbiAgfSxcblxuICByZW1vdmVFdmVudHM6IGZ1bmN0aW9uKCl7XG4gICAgdGhpcy50cmlnZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy5ldmVudFdyYXBwZXIuY2xpY2tlZCk7XG4gIH0sXG5cbiAgcmVzdG9yZUluaXRpYWxTdGF0ZTogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5saXN0Lmxpc3QuaW5uZXJIVE1MID0gdGhpcy5saXN0LmluaXRpYWxTdGF0ZTtcbiAgfSxcblxuICByZW1vdmVQbHVnaW5zOiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLnBsdWdpbnMuZm9yRWFjaChwbHVnaW4gPT4gcGx1Z2luLmRlc3Ryb3koKSk7XG4gIH0sXG5cbiAgZGVzdHJveTogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5yZXN0b3JlSW5pdGlhbFN0YXRlKCk7XG5cbiAgICB0aGlzLnJlbW92ZUV2ZW50cygpO1xuICAgIHRoaXMucmVtb3ZlUGx1Z2lucygpO1xuICB9LFxuXG4gIGNvbnN0cnVjdG9yOiBIb29rQnV0dG9uLFxufSk7XG5cblxuZXhwb3J0IGRlZmF1bHQgSG9va0J1dHRvbjtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3NyYy9ob29rX2J1dHRvbi5qcyIsImltcG9ydCAnY3VzdG9tLWV2ZW50LXBvbHlmaWxsJztcbmltcG9ydCBIb29rIGZyb20gJy4vaG9vayc7XG5cbnZhciBIb29rSW5wdXQgPSBmdW5jdGlvbih0cmlnZ2VyLCBsaXN0LCBwbHVnaW5zLCBjb25maWcpIHtcbiAgSG9vay5jYWxsKHRoaXMsIHRyaWdnZXIsIGxpc3QsIHBsdWdpbnMsIGNvbmZpZyk7XG5cbiAgdGhpcy50eXBlID0gJ2lucHV0JztcbiAgdGhpcy5ldmVudCA9ICdpbnB1dCc7XG5cbiAgdGhpcy5ldmVudFdyYXBwZXIgPSB7fTtcblxuICB0aGlzLmFkZEV2ZW50cygpO1xuICB0aGlzLmFkZFBsdWdpbnMoKTtcbn07XG5cbk9iamVjdC5hc3NpZ24oSG9va0lucHV0LnByb3RvdHlwZSwge1xuICBhZGRQbHVnaW5zOiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLnBsdWdpbnMuZm9yRWFjaChwbHVnaW4gPT4gcGx1Z2luLmluaXQodGhpcykpO1xuICB9LFxuXG4gIGFkZEV2ZW50czogZnVuY3Rpb24oKXtcbiAgICB0aGlzLmV2ZW50V3JhcHBlci5tb3VzZWRvd24gPSB0aGlzLm1vdXNlZG93bi5iaW5kKHRoaXMpO1xuICAgIHRoaXMuZXZlbnRXcmFwcGVyLmlucHV0ID0gdGhpcy5pbnB1dC5iaW5kKHRoaXMpO1xuICAgIHRoaXMuZXZlbnRXcmFwcGVyLmtleXVwID0gdGhpcy5rZXl1cC5iaW5kKHRoaXMpO1xuICAgIHRoaXMuZXZlbnRXcmFwcGVyLmtleWRvd24gPSB0aGlzLmtleWRvd24uYmluZCh0aGlzKTtcblxuICAgIHRoaXMudHJpZ2dlci5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCB0aGlzLmV2ZW50V3JhcHBlci5tb3VzZWRvd24pO1xuICAgIHRoaXMudHJpZ2dlci5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsIHRoaXMuZXZlbnRXcmFwcGVyLmlucHV0KTtcbiAgICB0aGlzLnRyaWdnZXIuYWRkRXZlbnRMaXN0ZW5lcigna2V5dXAnLCB0aGlzLmV2ZW50V3JhcHBlci5rZXl1cCk7XG4gICAgdGhpcy50cmlnZ2VyLmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCB0aGlzLmV2ZW50V3JhcHBlci5rZXlkb3duKTtcbiAgfSxcblxuICByZW1vdmVFdmVudHM6IGZ1bmN0aW9uKCkge1xuICAgIHRoaXMuaGFzUmVtb3ZlZEV2ZW50cyA9IHRydWU7XG5cbiAgICB0aGlzLnRyaWdnZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgdGhpcy5ldmVudFdyYXBwZXIubW91c2Vkb3duKTtcbiAgICB0aGlzLnRyaWdnZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcignaW5wdXQnLCB0aGlzLmV2ZW50V3JhcHBlci5pbnB1dCk7XG4gICAgdGhpcy50cmlnZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2tleXVwJywgdGhpcy5ldmVudFdyYXBwZXIua2V5dXApO1xuICAgIHRoaXMudHJpZ2dlci5yZW1vdmVFdmVudExpc3RlbmVyKCdrZXlkb3duJywgdGhpcy5ldmVudFdyYXBwZXIua2V5ZG93bik7XG4gIH0sXG5cbiAgaW5wdXQ6IGZ1bmN0aW9uKGUpIHtcbiAgICBpZih0aGlzLmhhc1JlbW92ZWRFdmVudHMpIHJldHVybjtcblxuICAgIHRoaXMubGlzdC5zaG93KCk7XG5cbiAgICBjb25zdCBpbnB1dEV2ZW50ID0gbmV3IEN1c3RvbUV2ZW50KCdpbnB1dC5kbCcsIHtcbiAgICAgIGRldGFpbDoge1xuICAgICAgICBob29rOiB0aGlzLFxuICAgICAgICB0ZXh0OiBlLnRhcmdldC52YWx1ZSxcbiAgICAgIH0sXG4gICAgICBidWJibGVzOiB0cnVlLFxuICAgICAgY2FuY2VsYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIGUudGFyZ2V0LmRpc3BhdGNoRXZlbnQoaW5wdXRFdmVudCk7XG4gIH0sXG5cbiAgbW91c2Vkb3duOiBmdW5jdGlvbihlKSB7XG4gICAgaWYgKHRoaXMuaGFzUmVtb3ZlZEV2ZW50cykgcmV0dXJuO1xuXG4gICAgY29uc3QgbW91c2VFdmVudCA9IG5ldyBDdXN0b21FdmVudCgnbW91c2Vkb3duLmRsJywge1xuICAgICAgZGV0YWlsOiB7XG4gICAgICAgIGhvb2s6IHRoaXMsXG4gICAgICAgIHRleHQ6IGUudGFyZ2V0LnZhbHVlLFxuICAgICAgfSxcbiAgICAgIGJ1YmJsZXM6IHRydWUsXG4gICAgICBjYW5jZWxhYmxlOiB0cnVlLFxuICAgIH0pO1xuICAgIGUudGFyZ2V0LmRpc3BhdGNoRXZlbnQobW91c2VFdmVudCk7XG4gIH0sXG5cbiAga2V5dXA6IGZ1bmN0aW9uKGUpIHtcbiAgICBpZiAodGhpcy5oYXNSZW1vdmVkRXZlbnRzKSByZXR1cm47XG5cbiAgICB0aGlzLmtleUV2ZW50KGUsICdrZXl1cC5kbCcpO1xuICB9LFxuXG4gIGtleWRvd246IGZ1bmN0aW9uKGUpIHtcbiAgICBpZiAodGhpcy5oYXNSZW1vdmVkRXZlbnRzKSByZXR1cm47XG5cbiAgICB0aGlzLmtleUV2ZW50KGUsICdrZXlkb3duLmRsJyk7XG4gIH0sXG5cbiAga2V5RXZlbnQ6IGZ1bmN0aW9uKGUsIGV2ZW50TmFtZSkge1xuICAgIHRoaXMubGlzdC5zaG93KCk7XG5cbiAgICBjb25zdCBrZXlFdmVudCA9IG5ldyBDdXN0b21FdmVudChldmVudE5hbWUsIHtcbiAgICAgIGRldGFpbDoge1xuICAgICAgICBob29rOiB0aGlzLFxuICAgICAgICB0ZXh0OiBlLnRhcmdldC52YWx1ZSxcbiAgICAgICAgd2hpY2g6IGUud2hpY2gsXG4gICAgICAgIGtleTogZS5rZXksXG4gICAgICB9LFxuICAgICAgYnViYmxlczogdHJ1ZSxcbiAgICAgIGNhbmNlbGFibGU6IHRydWUsXG4gICAgfSk7XG4gICAgZS50YXJnZXQuZGlzcGF0Y2hFdmVudChrZXlFdmVudCk7XG4gIH0sXG5cbiAgcmVzdG9yZUluaXRpYWxTdGF0ZTogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5saXN0Lmxpc3QuaW5uZXJIVE1MID0gdGhpcy5saXN0LmluaXRpYWxTdGF0ZTtcbiAgfSxcblxuICByZW1vdmVQbHVnaW5zOiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLnBsdWdpbnMuZm9yRWFjaChwbHVnaW4gPT4gcGx1Z2luLmRlc3Ryb3koKSk7XG4gIH0sXG5cbiAgZGVzdHJveTogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5yZXN0b3JlSW5pdGlhbFN0YXRlKCk7XG5cbiAgICB0aGlzLnJlbW92ZUV2ZW50cygpO1xuICAgIHRoaXMucmVtb3ZlUGx1Z2lucygpO1xuXG4gICAgdGhpcy5saXN0LmRlc3Ryb3koKTtcbiAgfVxufSk7XG5cbmV4cG9ydCBkZWZhdWx0IEhvb2tJbnB1dDtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3NyYy9ob29rX2lucHV0LmpzIiwiaW1wb3J0IHsgQUNUSVZFX0NMQVNTIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuXG5jb25zdCBLZXlib2FyZCA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIGN1cnJlbnRLZXk7XG4gIHZhciBjdXJyZW50Rm9jdXM7XG4gIHZhciBpc1VwQXJyb3cgPSBmYWxzZTtcbiAgdmFyIGlzRG93bkFycm93ID0gZmFsc2U7XG4gIHZhciByZW1vdmVIaWdobGlnaHQgPSBmdW5jdGlvbiByZW1vdmVIaWdobGlnaHQobGlzdCkge1xuICAgIHZhciBpdGVtRWxlbWVudHMgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChsaXN0Lmxpc3QucXVlcnlTZWxlY3RvckFsbCgnbGk6bm90KC5kaXZpZGVyKScpLCAwKTtcbiAgICB2YXIgbGlzdEl0ZW1zID0gW107XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGl0ZW1FbGVtZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGxpc3RJdGVtID0gaXRlbUVsZW1lbnRzW2ldO1xuICAgICAgbGlzdEl0ZW0uY2xhc3NMaXN0LnJlbW92ZShBQ1RJVkVfQ0xBU1MpO1xuXG4gICAgICBpZiAobGlzdEl0ZW0uc3R5bGUuZGlzcGxheSAhPT0gJ25vbmUnKSB7XG4gICAgICAgIGxpc3RJdGVtcy5wdXNoKGxpc3RJdGVtKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGxpc3RJdGVtcztcbiAgfTtcblxuICB2YXIgc2V0TWVudUZvckFycm93cyA9IGZ1bmN0aW9uIHNldE1lbnVGb3JBcnJvd3MobGlzdCkge1xuICAgIHZhciBsaXN0SXRlbXMgPSByZW1vdmVIaWdobGlnaHQobGlzdCk7XG4gICAgaWYobGlzdC5jdXJyZW50SW5kZXg+MCl7XG4gICAgICBpZighbGlzdEl0ZW1zW2xpc3QuY3VycmVudEluZGV4LTFdKXtcbiAgICAgICAgbGlzdC5jdXJyZW50SW5kZXggPSBsaXN0LmN1cnJlbnRJbmRleC0xO1xuICAgICAgfVxuXG4gICAgICBpZiAobGlzdEl0ZW1zW2xpc3QuY3VycmVudEluZGV4LTFdKSB7XG4gICAgICAgIHZhciBlbCA9IGxpc3RJdGVtc1tsaXN0LmN1cnJlbnRJbmRleC0xXTtcbiAgICAgICAgdmFyIGZpbHRlckRyb3Bkb3duRWwgPSBlbC5jbG9zZXN0KCcuZmlsdGVyLWRyb3Bkb3duJyk7XG4gICAgICAgIGVsLmNsYXNzTGlzdC5hZGQoQUNUSVZFX0NMQVNTKTtcblxuICAgICAgICBpZiAoZmlsdGVyRHJvcGRvd25FbCkge1xuICAgICAgICAgIHZhciBmaWx0ZXJEcm9wZG93bkJvdHRvbSA9IGZpbHRlckRyb3Bkb3duRWwub2Zmc2V0SGVpZ2h0O1xuICAgICAgICAgIHZhciBlbE9mZnNldFRvcCA9IGVsLm9mZnNldFRvcCAtIDMwO1xuXG4gICAgICAgICAgaWYgKGVsT2Zmc2V0VG9wID4gZmlsdGVyRHJvcGRvd25Cb3R0b20pIHtcbiAgICAgICAgICAgIGZpbHRlckRyb3Bkb3duRWwuc2Nyb2xsVG9wID0gZWxPZmZzZXRUb3AgLSBmaWx0ZXJEcm9wZG93bkJvdHRvbTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgdmFyIG1vdXNlZG93biA9IGZ1bmN0aW9uIG1vdXNlZG93bihlKSB7XG4gICAgdmFyIGxpc3QgPSBlLmRldGFpbC5ob29rLmxpc3Q7XG4gICAgcmVtb3ZlSGlnaGxpZ2h0KGxpc3QpO1xuICAgIGxpc3Quc2hvdygpO1xuICAgIGxpc3QuY3VycmVudEluZGV4ID0gMDtcbiAgICBpc1VwQXJyb3cgPSBmYWxzZTtcbiAgICBpc0Rvd25BcnJvdyA9IGZhbHNlO1xuICB9O1xuICB2YXIgc2VsZWN0SXRlbSA9IGZ1bmN0aW9uIHNlbGVjdEl0ZW0obGlzdCkge1xuICAgIHZhciBsaXN0SXRlbXMgPSByZW1vdmVIaWdobGlnaHQobGlzdCk7XG4gICAgdmFyIGN1cnJlbnRJdGVtID0gbGlzdEl0ZW1zW2xpc3QuY3VycmVudEluZGV4LTFdO1xuICAgIHZhciBsaXN0RXZlbnQgPSBuZXcgQ3VzdG9tRXZlbnQoJ2NsaWNrLmRsJywge1xuICAgICAgZGV0YWlsOiB7XG4gICAgICAgIGxpc3Q6IGxpc3QsXG4gICAgICAgIHNlbGVjdGVkOiBjdXJyZW50SXRlbSxcbiAgICAgICAgZGF0YTogY3VycmVudEl0ZW0uZGF0YXNldCxcbiAgICAgIH0sXG4gICAgfSk7XG4gICAgbGlzdC5saXN0LmRpc3BhdGNoRXZlbnQobGlzdEV2ZW50KTtcbiAgICBsaXN0LmhpZGUoKTtcbiAgfVxuXG4gIHZhciBrZXlkb3duID0gZnVuY3Rpb24ga2V5ZG93bihlKXtcbiAgICB2YXIgdHlwZWRPbiA9IGUudGFyZ2V0O1xuICAgIHZhciBsaXN0ID0gZS5kZXRhaWwuaG9vay5saXN0O1xuICAgIHZhciBjdXJyZW50SW5kZXggPSBsaXN0LmN1cnJlbnRJbmRleDtcbiAgICBpc1VwQXJyb3cgPSBmYWxzZTtcbiAgICBpc0Rvd25BcnJvdyA9IGZhbHNlO1xuXG4gICAgaWYoZS5kZXRhaWwud2hpY2gpe1xuICAgICAgY3VycmVudEtleSA9IGUuZGV0YWlsLndoaWNoO1xuICAgICAgaWYoY3VycmVudEtleSA9PT0gMTMpe1xuICAgICAgICBzZWxlY3RJdGVtKGUuZGV0YWlsLmhvb2subGlzdCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmKGN1cnJlbnRLZXkgPT09IDM4KSB7XG4gICAgICAgIGlzVXBBcnJvdyA9IHRydWU7XG4gICAgICB9XG4gICAgICBpZihjdXJyZW50S2V5ID09PSA0MCkge1xuICAgICAgICBpc0Rvd25BcnJvdyA9IHRydWU7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmKGUuZGV0YWlsLmtleSkge1xuICAgICAgY3VycmVudEtleSA9IGUuZGV0YWlsLmtleTtcbiAgICAgIGlmKGN1cnJlbnRLZXkgPT09ICdFbnRlcicpe1xuICAgICAgICBzZWxlY3RJdGVtKGUuZGV0YWlsLmhvb2subGlzdCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmKGN1cnJlbnRLZXkgPT09ICdBcnJvd1VwJykge1xuICAgICAgICBpc1VwQXJyb3cgPSB0cnVlO1xuICAgICAgfVxuICAgICAgaWYoY3VycmVudEtleSA9PT0gJ0Fycm93RG93bicpIHtcbiAgICAgICAgaXNEb3duQXJyb3cgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICBpZihpc1VwQXJyb3cpeyBjdXJyZW50SW5kZXgtLTsgfVxuICAgIGlmKGlzRG93bkFycm93KXsgY3VycmVudEluZGV4Kys7IH1cbiAgICBpZihjdXJyZW50SW5kZXggPCAwKXsgY3VycmVudEluZGV4ID0gMDsgfVxuICAgIGxpc3QuY3VycmVudEluZGV4ID0gY3VycmVudEluZGV4O1xuICAgIHNldE1lbnVGb3JBcnJvd3MoZS5kZXRhaWwuaG9vay5saXN0KTtcbiAgfTtcblxuICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWRvd24uZGwnLCBtb3VzZWRvd24pO1xuICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duLmRsJywga2V5ZG93bik7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBLZXlib2FyZDtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3NyYy9rZXlib2FyZC5qcyIsImV4cG9ydCAqIGZyb20gJy4vZHJvcGxhYic7XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvaW5kZXguanMiXSwic291cmNlUm9vdCI6IiJ9 \ No newline at end of file diff --git a/app/assets/javascripts/droplab/plugins/ajax.js b/app/assets/javascripts/droplab/plugins/ajax.js deleted file mode 100644 index afc423b7f0e..00000000000 --- a/app/assets/javascripts/droplab/plugins/ajax.js +++ /dev/null @@ -1,157 +0,0 @@ -/******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) -/******/ return installedModules[moduleId].exports; -/******/ -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ i: moduleId, -/******/ l: false, -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.l = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; -/******/ -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; -/******/ -/******/ // identity function for calling harmony imports with the correct context -/******/ __webpack_require__.i = function(value) { return value; }; -/******/ -/******/ // define getter function for harmony exports -/******/ __webpack_require__.d = function(exports, name, getter) { -/******/ if(!__webpack_require__.o(exports, name)) { -/******/ Object.defineProperty(exports, name, { -/******/ configurable: false, -/******/ enumerable: true, -/******/ get: getter -/******/ }); -/******/ } -/******/ }; -/******/ -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __webpack_require__.n = function(module) { -/******/ var getter = module && module.__esModule ? -/******/ function getDefault() { return module['default']; } : -/******/ function getModuleExports() { return module; }; -/******/ __webpack_require__.d(getter, 'a', getter); -/******/ return getter; -/******/ }; -/******/ -/******/ // Object.prototype.hasOwnProperty.call -/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; -/******/ -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = ""; -/******/ -/******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = 5); -/******/ }) -/************************************************************************/ -/******/ ({ - -/***/ 5: -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -function droplabAjaxException(message) { - this.message = message; -} - -var droplabAjax = { - _loadUrlData: function _loadUrlData(url) { - var self = this; - return new Promise(function (resolve, reject) { - var xhr = new XMLHttpRequest(); - xhr.open('GET', url, true); - xhr.onreadystatechange = function () { - if (xhr.readyState === XMLHttpRequest.DONE) { - if (xhr.status === 200) { - var data = JSON.parse(xhr.responseText); - self.cache[url] = data; - return resolve(data); - } else { - return reject([xhr.responseText, xhr.status]); - } - } - }; - xhr.send(); - }); - }, - _loadData: function _loadData(data, config, self) { - if (config.loadingTemplate) { - var dataLoadingTemplate = self.hook.list.list.querySelector('[data-loading-template]'); - if (dataLoadingTemplate) dataLoadingTemplate.outerHTML = self.listTemplate; - } - - if (!self.destroyed) self.hook.list[config.method].call(self.hook.list, data); - }, - init: function init(hook) { - var self = this; - self.destroyed = false; - self.cache = self.cache || {}; - var config = hook.config.droplabAjax; - this.hook = hook; - if (!config || !config.endpoint || !config.method) { - return; - } - if (config.method !== 'setData' && config.method !== 'addData') { - return; - } - if (config.loadingTemplate) { - var dynamicList = hook.list.list.querySelector('[data-dynamic]'); - var loadingTemplate = document.createElement('div'); - loadingTemplate.innerHTML = config.loadingTemplate; - loadingTemplate.setAttribute('data-loading-template', ''); - this.listTemplate = dynamicList.outerHTML; - dynamicList.outerHTML = loadingTemplate.outerHTML; - } - if (self.cache[config.endpoint]) { - self._loadData(self.cache[config.endpoint], config, self); - } else { - this._loadUrlData(config.endpoint).then(function (d) { - self._loadData(d, config, self); - }).catch(function (e) { - throw new droplabAjaxException(e.message || e); - }); - } - }, - destroy: function destroy() { - this.destroyed = true; - - var dynamicList = this.hook.list.list.querySelector('[data-dynamic]'); - if (this.listTemplate && dynamicList) { - dynamicList.outerHTML = this.listTemplate; - } - } -}; - -exports.default = droplabAjax; - -/***/ }) - -/******/ }); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAgOTMzZmY3ZDVlZDM5M2RjNjNiY2E/MGFiZioqKioqKioqIiwid2VicGFjazovLy8uL3NyYy9wbHVnaW5zL2FqYXgvYWpheC5qcz8yMTc4Il0sIm5hbWVzIjpbImRyb3BsYWJBamF4RXhjZXB0aW9uIiwibWVzc2FnZSIsImRyb3BsYWJBamF4IiwiX2xvYWRVcmxEYXRhIiwidXJsIiwic2VsZiIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0IiwieGhyIiwiWE1MSHR0cFJlcXVlc3QiLCJvcGVuIiwib25yZWFkeXN0YXRlY2hhbmdlIiwicmVhZHlTdGF0ZSIsIkRPTkUiLCJzdGF0dXMiLCJkYXRhIiwiSlNPTiIsInBhcnNlIiwicmVzcG9uc2VUZXh0IiwiY2FjaGUiLCJzZW5kIiwiX2xvYWREYXRhIiwiY29uZmlnIiwibG9hZGluZ1RlbXBsYXRlIiwiZGF0YUxvYWRpbmdUZW1wbGF0ZSIsImhvb2siLCJsaXN0IiwicXVlcnlTZWxlY3RvciIsIm91dGVySFRNTCIsImxpc3RUZW1wbGF0ZSIsImRlc3Ryb3llZCIsIm1ldGhvZCIsImNhbGwiLCJpbml0IiwiZW5kcG9pbnQiLCJkeW5hbWljTGlzdCIsImRvY3VtZW50IiwiY3JlYXRlRWxlbWVudCIsImlubmVySFRNTCIsInNldEF0dHJpYnV0ZSIsInRoZW4iLCJkIiwiY2F0Y2giLCJlIiwiZGVzdHJveSJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLG1EQUEyQyxjQUFjOztBQUV6RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLG1DQUEyQiwwQkFB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WUFBTCxHQUFvQk0sWUFBWVAsU0FBaEM7QUFDQU8sa0JBQVlQLFNBQVosR0FBd0JMLGdCQUFnQkssU0FBeEM7QUFDRDtBQUNELFFBQUl4QixLQUFLZSxLQUFMLENBQVdHLE9BQU9ZLFFBQWxCLENBQUosRUFBaUM7QUFDL0I5QixXQUFLaUIsU0FBTCxDQUFlakIsS0FBS2UsS0FBTCxDQUFXRyxPQUFPWSxRQUFsQixDQUFmLEVBQTRDWixNQUE1QyxFQUFvRGxCLElBQXBEO0FBQ0QsS0FGRCxNQUVPO0FBQ0wsV0FBS0YsWUFBTCxDQUFrQm9CLE9BQU9ZLFFBQXpCLEVBQ0dNLElBREgsQ0FDUSxVQUFTQyxDQUFULEVBQVk7QUFDaEJyQyxhQUFLaUIsU0FBTCxDQUFlb0IsQ0FBZixFQUFrQm5CLE1BQWxCLEVBQTBCbEIsSUFBMUI7QUFDRCxPQUhILEVBR0tzQyxLQUhMLENBR1csVUFBU0MsQ0FBVCxFQUFZO0FBQ25CLGNBQU0sSUFBSTVDLG9CQUFKLENBQXlCNEMsRUFBRTNDLE9BQUYsSUFBYTJDLENBQXRDLENBQU47QUFDRCxPQUxIO0FBTUQ7QUFDRixHQTFEaUI7QUEyRGxCQyxXQUFTLG1CQUFXO0FBQ2xCLFNBQUtkLFNBQUwsR0FBaUIsSUFBakI7O0FBRUEsUUFBSUssY0FBYyxLQUFLVixJQUFMLENBQVVDLElBQVYsQ0FBZUEsSUFBZixDQUFvQkMsYUFBcEIsQ0FBa0MsZ0JBQWxDLENBQWxCO0FBQ0EsUUFBSSxLQUFLRSxZQUFMLElBQXFCTSxXQUF6QixFQUFzQztBQUNwQ0Esa0JBQVlQLFNBQVosR0FBd0IsS0FBS0MsWUFBN0I7QUFDRDtBQUNGO0FBbEVpQixDQUFwQjs7a0JBcUVlNUIsVyIsImZpbGUiOiIuL2Rpc3QvcGx1Z2lucy9hamF4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbiBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pXG4gXHRcdFx0cmV0dXJuIGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdLmV4cG9ydHM7XG5cbiBcdFx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcbiBcdFx0dmFyIG1vZHVsZSA9IGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdID0ge1xuIFx0XHRcdGk6IG1vZHVsZUlkLFxuIFx0XHRcdGw6IGZhbHNlLFxuIFx0XHRcdGV4cG9ydHM6IHt9XG4gXHRcdH07XG5cbiBcdFx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG4gXHRcdG1vZHVsZXNbbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG4gXHRcdC8vIEZsYWcgdGhlIG1vZHVsZSBhcyBsb2FkZWRcbiBcdFx0bW9kdWxlLmwgPSB0cnVlO1xuXG4gXHRcdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG4gXHRcdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbiBcdH1cblxuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZXMgb2JqZWN0IChfX3dlYnBhY2tfbW9kdWxlc19fKVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5tID0gbW9kdWxlcztcblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGUgY2FjaGVcbiBcdF9fd2VicGFja19yZXF1aXJlX18uYyA9IGluc3RhbGxlZE1vZHVsZXM7XG5cbiBcdC8vIGlkZW50aXR5IGZ1bmN0aW9uIGZvciBjYWxsaW5nIGhhcm1vbnkgaW1wb3J0cyB3aXRoIHRoZSBjb3JyZWN0IGNvbnRleHRcbiBcdF9fd2VicGFja19yZXF1aXJlX18uaSA9IGZ1bmN0aW9uKHZhbHVlKSB7IHJldHVybiB2YWx1ZTsgfTtcblxuIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbiBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7XG4gXHRcdFx0XHRjb25maWd1cmFibGU6IGZhbHNlLFxuIFx0XHRcdFx0ZW51bWVyYWJsZTogdHJ1ZSxcbiBcdFx0XHRcdGdldDogZ2V0dGVyXG4gXHRcdFx0fSk7XG4gXHRcdH1cbiBcdH07XG5cbiBcdC8vIGdldERlZmF1bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm4gPSBmdW5jdGlvbihtb2R1bGUpIHtcbiBcdFx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG4gXHRcdFx0ZnVuY3Rpb24gZ2V0RGVmYXVsdCgpIHsgcmV0dXJuIG1vZHVsZVsnZGVmYXVsdCddOyB9IDpcbiBcdFx0XHRmdW5jdGlvbiBnZXRNb2R1bGVFeHBvcnRzKCkgeyByZXR1cm4gbW9kdWxlOyB9O1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCAnYScsIGdldHRlcik7XG4gXHRcdHJldHVybiBnZXR0ZXI7XG4gXHR9O1xuXG4gXHQvLyBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGxcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubyA9IGZ1bmN0aW9uKG9iamVjdCwgcHJvcGVydHkpIHsgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIHByb3BlcnR5KTsgfTtcblxuIFx0Ly8gX193ZWJwYWNrX3B1YmxpY19wYXRoX19cbiBcdF9fd2VicGFja19yZXF1aXJlX18ucCA9IFwiXCI7XG5cbiBcdC8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuIFx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oX193ZWJwYWNrX3JlcXVpcmVfXy5zID0gNSk7XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gd2VicGFjay9ib290c3RyYXAgOTMzZmY3ZDVlZDM5M2RjNjNiY2EiLCJmdW5jdGlvbiBkcm9wbGFiQWpheEV4Y2VwdGlvbihtZXNzYWdlKSB7XG4gIHRoaXMubWVzc2FnZSA9IG1lc3NhZ2U7XG59XG5cbmNvbnN0IGRyb3BsYWJBamF4ID0ge1xuICBfbG9hZFVybERhdGE6IGZ1bmN0aW9uIF9sb2FkVXJsRGF0YSh1cmwpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgdmFyIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdDtcbiAgICAgIHhoci5vcGVuKCdHRVQnLCB1cmwsIHRydWUpO1xuICAgICAgeGhyLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYoeGhyLnJlYWR5U3RhdGUgPT09IFhNTEh0dHBSZXF1ZXN0LkRPTkUpIHtcbiAgICAgICAgICBpZiAoeGhyLnN0YXR1cyA9PT0gMjAwKSB7XG4gICAgICAgICAgICB2YXIgZGF0YSA9IEpTT04ucGFyc2UoeGhyLnJlc3BvbnNlVGV4dCk7XG4gICAgICAgICAgICBzZWxmLmNhY2hlW3VybF0gPSBkYXRhO1xuICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUoZGF0YSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiByZWplY3QoW3hoci5yZXNwb25zZVRleHQsIHhoci5zdGF0dXNdKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICB4aHIuc2VuZCgpO1xuICAgIH0pO1xuICB9LFxuICBfbG9hZERhdGE6IGZ1bmN0aW9uIF9sb2FkRGF0YShkYXRhLCBjb25maWcsIHNlbGYpIHtcbiAgICBpZiAoY29uZmlnLmxvYWRpbmdUZW1wbGF0ZSkge1xuICAgICAgdmFyIGRhdGFMb2FkaW5nVGVtcGxhdGUgPSBzZWxmLmhvb2subGlzdC5saXN0LnF1ZXJ5U2VsZWN0b3IoJ1tkYXRhLWxvYWRpbmctdGVtcGxhdGVdJyk7XG4gICAgICBpZiAoZGF0YUxvYWRpbmdUZW1wbGF0ZSkgZGF0YUxvYWRpbmdUZW1wbGF0ZS5vdXRlckhUTUwgPSBzZWxmLmxpc3RUZW1wbGF0ZTtcbiAgICB9XG5cbiAgICBpZiAoIXNlbGYuZGVzdHJveWVkKSBzZWxmLmhvb2subGlzdFtjb25maWcubWV0aG9kXS5jYWxsKHNlbGYuaG9vay5saXN0LCBkYXRhKTtcbiAgfSxcbiAgaW5pdDogZnVuY3Rpb24gaW5pdChob29rKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHNlbGYuZGVzdHJveWVkID0gZmFsc2U7XG4gICAgc2VsZi5jYWNoZSA9IHNlbGYuY2FjaGUgfHwge307XG4gICAgdmFyIGNvbmZpZyA9IGhvb2suY29uZmlnLmRyb3BsYWJBamF4O1xuICAgIHRoaXMuaG9vayA9IGhvb2s7XG4gICAgaWYgKCFjb25maWcgfHwgIWNvbmZpZy5lbmRwb2ludCB8fCAhY29uZmlnLm1ldGhvZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoY29uZmlnLm1ldGhvZCAhPT0gJ3NldERhdGEnICYmIGNvbmZpZy5tZXRob2QgIT09ICdhZGREYXRhJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoY29uZmlnLmxvYWRpbmdUZW1wbGF0ZSkge1xuICAgICAgdmFyIGR5bmFtaWNMaXN0ID0gaG9vay5saXN0Lmxpc3QucXVlcnlTZWxlY3RvcignW2RhdGEtZHluYW1pY10nKTtcbiAgICAgIHZhciBsb2FkaW5nVGVtcGxhdGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgIGxvYWRpbmdUZW1wbGF0ZS5pbm5lckhUTUwgPSBjb25maWcubG9hZGluZ1RlbXBsYXRlO1xuICAgICAgbG9hZGluZ1RlbXBsYXRlLnNldEF0dHJpYnV0ZSgnZGF0YS1sb2FkaW5nLXRlbXBsYXRlJywgJycpO1xuICAgICAgdGhpcy5saXN0VGVtcGxhdGUgPSBkeW5hbWljTGlzdC5vdXRlckhUTUw7XG4gICAgICBkeW5hbWljTGlzdC5vdXRlckhUTUwgPSBsb2FkaW5nVGVtcGxhdGUub3V0ZXJIVE1MO1xuICAgIH1cbiAgICBpZiAoc2VsZi5jYWNoZVtjb25maWcuZW5kcG9pbnRdKSB7XG4gICAgICBzZWxmLl9sb2FkRGF0YShzZWxmLmNhY2hlW2NvbmZpZy5lbmRwb2ludF0sIGNvbmZpZywgc2VsZik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2xvYWRVcmxEYXRhKGNvbmZpZy5lbmRwb2ludClcbiAgICAgICAgLnRoZW4oZnVuY3Rpb24oZCkge1xuICAgICAgICAgIHNlbGYuX2xvYWREYXRhKGQsIGNvbmZpZywgc2VsZik7XG4gICAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgZHJvcGxhYkFqYXhFeGNlcHRpb24oZS5tZXNzYWdlIHx8IGUpO1xuICAgICAgICB9KTtcbiAgICB9XG4gIH0sXG4gIGRlc3Ryb3k6IGZ1bmN0aW9uKCkge1xuICAgIHRoaXMuZGVzdHJveWVkID0gdHJ1ZTtcblxuICAgIHZhciBkeW5hbWljTGlzdCA9IHRoaXMuaG9vay5saXN0Lmxpc3QucXVlcnlTZWxlY3RvcignW2RhdGEtZHluYW1pY10nKTtcbiAgICBpZiAodGhpcy5saXN0VGVtcGxhdGUgJiYgZHluYW1pY0xpc3QpIHtcbiAgICAgIGR5bmFtaWNMaXN0Lm91dGVySFRNTCA9IHRoaXMubGlzdFRlbXBsYXRlO1xuICAgIH1cbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgZHJvcGxhYkFqYXg7XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvcGx1Z2lucy9hamF4L2FqYXguanMiXSwic291cmNlUm9vdCI6IiJ9 \ No newline at end of file diff --git a/app/assets/javascripts/droplab/plugins/ajax_filter.js b/app/assets/javascripts/droplab/plugins/ajax_filter.js deleted file mode 100644 index 3e6532c7709..00000000000 --- a/app/assets/javascripts/droplab/plugins/ajax_filter.js +++ /dev/null @@ -1,214 +0,0 @@ -/******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) -/******/ return installedModules[moduleId].exports; -/******/ -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ i: moduleId, -/******/ l: false, -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.l = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; -/******/ -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; -/******/ -/******/ // identity function for calling harmony imports with the correct context -/******/ __webpack_require__.i = function(value) { return value; }; -/******/ -/******/ // define getter function for harmony exports -/******/ __webpack_require__.d = function(exports, name, getter) { -/******/ if(!__webpack_require__.o(exports, name)) { -/******/ Object.defineProperty(exports, name, { -/******/ configurable: false, -/******/ enumerable: true, -/******/ get: getter -/******/ }); -/******/ } -/******/ }; -/******/ -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __webpack_require__.n = function(module) { -/******/ var getter = module && module.__esModule ? -/******/ function getDefault() { return module['default']; } : -/******/ function getModuleExports() { return module; }; -/******/ __webpack_require__.d(getter, 'a', getter); -/******/ return getter; -/******/ }; -/******/ -/******/ // Object.prototype.hasOwnProperty.call -/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; -/******/ -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = ""; -/******/ -/******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = 6); -/******/ }) -/************************************************************************/ -/******/ ({ - -/***/ 6: -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -var droplabAjaxFilter = { - init: function init(hook) { - this.destroyed = false; - this.hook = hook; - this.notLoading(); - - this.eventWrapper = {}; - this.eventWrapper.debounceTrigger = this.debounceTrigger.bind(this); - this.hook.trigger.addEventListener('keydown.dl', this.eventWrapper.debounceTrigger); - this.hook.trigger.addEventListener('focus', this.eventWrapper.debounceTrigger); - - this.trigger(true); - }, - - notLoading: function notLoading() { - this.loading = false; - }, - - debounceTrigger: function debounceTrigger(e) { - var NON_CHARACTER_KEYS = [16, 17, 18, 20, 37, 38, 39, 40, 91, 93]; - var invalidKeyPressed = NON_CHARACTER_KEYS.indexOf(e.detail.which || e.detail.keyCode) > -1; - var focusEvent = e.type === 'focus'; - if (invalidKeyPressed || this.loading) { - return; - } - if (this.timeout) { - clearTimeout(this.timeout); - } - this.timeout = setTimeout(this.trigger.bind(this, focusEvent), 200); - }, - - trigger: function trigger(getEntireList) { - var config = this.hook.config.droplabAjaxFilter; - var searchValue = this.trigger.value; - if (!config || !config.endpoint || !config.searchKey) { - return; - } - if (config.searchValueFunction) { - searchValue = config.searchValueFunction(); - } - if (config.loadingTemplate && this.hook.list.data === undefined || this.hook.list.data.length === 0) { - var dynamicList = this.hook.list.list.querySelector('[data-dynamic]'); - var loadingTemplate = document.createElement('div'); - loadingTemplate.innerHTML = config.loadingTemplate; - loadingTemplate.setAttribute('data-loading-template', true); - this.listTemplate = dynamicList.outerHTML; - dynamicList.outerHTML = loadingTemplate.outerHTML; - } - if (getEntireList) { - searchValue = ''; - } - if (config.searchKey === searchValue) { - return this.list.show(); - } - this.loading = true; - var params = config.params || {}; - params[config.searchKey] = searchValue; - var self = this; - self.cache = self.cache || {}; - var url = config.endpoint + this.buildParams(params); - var urlCachedData = self.cache[url]; - if (urlCachedData) { - self._loadData(urlCachedData, config, self); - } else { - this._loadUrlData(url).then(function (data) { - self._loadData(data, config, self); - }); - } - }, - - _loadUrlData: function _loadUrlData(url) { - var self = this; - return new Promise(function (resolve, reject) { - var xhr = new XMLHttpRequest(); - xhr.open('GET', url, true); - xhr.onreadystatechange = function () { - if (xhr.readyState === XMLHttpRequest.DONE) { - if (xhr.status === 200) { - var data = JSON.parse(xhr.responseText); - self.cache[url] = data; - return resolve(data); - } else { - return reject([xhr.responseText, xhr.status]); - } - } - }; - xhr.send(); - }); - }, - - _loadData: function _loadData(data, config, self) { - var list = self.hook.list; - if (config.loadingTemplate && list.data === undefined || list.data.length === 0) { - var dataLoadingTemplate = list.list.querySelector('[data-loading-template]'); - if (dataLoadingTemplate) { - dataLoadingTemplate.outerHTML = self.listTemplate; - } - } - if (!self.destroyed) { - var hookListChildren = list.list.children; - var onlyDynamicList = hookListChildren.length === 1 && hookListChildren[0].hasAttribute('data-dynamic'); - if (onlyDynamicList && data.length === 0) { - list.hide(); - } - list.setData.call(list, data); - } - self.notLoading(); - list.currentIndex = 0; - }, - - buildParams: function buildParams(params) { - if (!params) return ''; - var paramsArray = Object.keys(params).map(function (param) { - return param + '=' + (params[param] || ''); - }); - return '?' + paramsArray.join('&'); - }, - - destroy: function destroy() { - if (this.timeout) { - clearTimeout(this.timeout); - } - - this.destroyed = true; - this.hook.trigger.removeEventListener('keydown.dl', this.eventWrapper.debounceTrigger); - this.hook.trigger.removeEventListener('focus', this.eventWrapper.debounceTrigger); - } -}; - -exports.default = droplabAjaxFilter; - -/***/ }) - -/******/ }); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAgOTMzZmY3ZDVlZDM5M2RjNjNiY2E/MGFiZioqKioqKioiLCJ3ZWJwYWNrOi8vLy4vc3JjL3BsdWdpbnMvYWpheF9maWx0ZXIvYWpheF9maWx0ZXIuanM/YzNlNSJdLCJuYW1lcyI6WyJkcm9wbGFiQWpheEZpbHRlciIsImluaXQiLCJob29rIiwiZGVzdHJveWVkIiwibm90TG9hZGluZyIsImV2ZW50V3JhcHBlciIsImRlYm91bmNlVHJpZ2dlciIsImJpbmQiLCJ0cmlnZ2VyIiwiYWRkRXZlbnRMaXN0ZW5lciIsImxvYWRpbmciLCJlIiwiTk9OX0NIQVJBQ1RFUl9LRVlTIiwiaW52YWxpZEtleVByZXNzZWQiLCJpbmRleE9mIiwiZGV0YWlsIiwid2hpY2giLCJrZXlDb2RlIiwiZm9jdXNFdmVudCIsInR5cGUiLCJ0aW1lb3V0IiwiY2xlYXJUaW1lb3V0Iiwic2V0VGltZW91dCIsImdldEVudGlyZUxpc3QiLCJjb25maWciLCJzZWFyY2hWYWx1ZSIsInZhbHVlIiwiZW5kcG9pbnQiLCJzZWFyY2hLZXkiLCJzZWFyY2hWYWx1ZUZ1bmN0aW9uIiwibG9hZGluZ1RlbXBsYXRlIiwibGlzdCIsImRhdGEiLCJ1bmRlZmluZWQiLCJsZW5ndGgiLCJkeW5hbWljTGlzdCIsInF1ZXJ5U2VsZWN0b3IiLCJkb2N1bWVudCIsImNyZWF0ZUVsZW1lbnQiLCJpbm5lckhUTUwiLCJzZXRBdHRyaWJ1dGUiLCJsaXN0VGVtcGxhdGUiLCJvdXRlckhUTUwiLCJzaG93IiwicGFyYW1zIiwic2VsZiIsImNhY2hlIiwidXJsIiwiYnVpbGRQYXJhbXMiLCJ1cmxDYWNoZWREYXRhIiwiX2xvYWREYXRhIiwiX2xvYWRVcmxEYXRhIiwidGhlbiIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0IiwieGhyIiwiWE1MSHR0cFJlcXVlc3QiLCJvcGVuIiwib25yZWFkeXN0YXRlY2hhbmdlIiwicmVhZHlTdGF0ZSIsIkRPTkUiLCJzdGF0dXMiLCJKU09OIiwicGFyc2UiLCJyZXNwb25zZVRleHQiLCJzZW5kIiwiZGF0YUxvYWRpbmdUZW1wbGF0ZSIsImhvb2tMaXN0Q2hpbGRyZW4iLCJjaGlsZHJlbiIsIm9ubHlEeW5hbWljTGlzdCIsImhhc0F0dHJpYnV0ZSIsImhpZGUiLCJzZXREYXRhIiwiY2FsbCIsImN1cnJlbnRJbmRleCIsInBhcmFtc0FycmF5IiwiT2JqZWN0Iiwia2V5cyIsIm1hcCIsInBhcmFtIiwiam9pbiIsImRlc3Ryb3kiLCJyZW1vdmVFdmVudExpc3RlbmVyIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsbURBQTJDLGNBQWM7O0FBRXpEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsbUNBQTJCLDBCQUEwQixFQUFFO0FBQ3ZELHlDQUFpQyxlQUFlO0FBQ2hEO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDhEQUFzRCwrREFBK0Q7O0FBRXJIO0FBQ0E7O0FBRUE7QUFDQTs7Ozs7Ozs7Ozs7Ozs7QUNoRUEsSUFBTUEsb0JBQW9CO0FBQ3hCQyxRQUFNLGNBQVNDLElBQVQsRUFBZTtBQUNuQixTQUFLQyxTQUFMLEdBQWlCLEtBQWpCO0FBQ0EsU0FBS0QsSUFBTCxHQUFZQSxJQUFaO0FBQ0EsU0FBS0UsVUFBTDs7QUFFQSxTQUFLQyxZQUFMLEdBQW9CLEVBQXBCO0FBQ0EsU0FBS0EsWUFBTCxDQUFrQkMsZUFBbEIsR0FBb0MsS0FBS0EsZUFBTCxDQUFxQkMsSUFBckIsQ0FBMEIsSUFBMUIsQ0FBcEM7QUFDQSxTQUFLTCxJQUFMLENBQVVNLE9BQVYsQ0FBa0JDLGdCQUFsQixDQUFtQyxZQUFuQyxFQUFpRCxLQUFLSixZQUFMLENB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QUFnQjtBQUN4RCxhQUFPQSxRQUFRLEdBQVIsSUFBZXBDLE9BQU9vQyxLQUFQLEtBQWlCLEVBQWhDLENBQVA7QUFDRCxLQUZpQixDQUFsQjtBQUdBLFdBQU8sTUFBTUosWUFBWUssSUFBWixDQUFpQixHQUFqQixDQUFiO0FBQ0QsR0F2SHVCOztBQXlIeEJDLFdBQVMsU0FBU0EsT0FBVCxHQUFtQjtBQUMxQixRQUFJLEtBQUs5RCxPQUFULEVBQWtCO0FBQ2hCQyxtQkFBYSxLQUFLRCxPQUFsQjtBQUNEOztBQUVELFNBQUtqQixTQUFMLEdBQWlCLElBQWpCO0FBQ0EsU0FBS0QsSUFBTCxDQUFVTSxPQUFWLENBQWtCMkUsbUJBQWxCLENBQXNDLFlBQXRDLEVBQW9ELEtBQUs5RSxZQUFMLENBQWtCQyxlQUF0RTtBQUNBLFNBQUtKLElBQUwsQ0FBVU0sT0FBVixDQUFrQjJFLG1CQUFsQixDQUFzQyxPQUF0QyxFQUErQyxLQUFLOUUsWUFBTCxDQUFrQkMsZUFBakU7QUFDRDtBQWpJdUIsQ0FBMUI7O2tCQW9JZU4saUIiLCJmaWxlIjoiLi9kaXN0L3BsdWdpbnMvYWpheF9maWx0ZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyIgXHQvLyBUaGUgbW9kdWxlIGNhY2hlXG4gXHR2YXIgaW5zdGFsbGVkTW9kdWxlcyA9IHt9O1xuXG4gXHQvLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuIFx0ZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXG4gXHRcdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuIFx0XHRpZihpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSlcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcblxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0aTogbW9kdWxlSWQsXG4gXHRcdFx0bDogZmFsc2UsXG4gXHRcdFx0ZXhwb3J0czoge31cbiBcdFx0fTtcblxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubCA9IHRydWU7XG5cbiBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbiBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuIFx0fVxuXG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcblxuIFx0Ly8gaWRlbnRpdHkgZnVuY3Rpb24gZm9yIGNhbGxpbmcgaGFybW9ueSBpbXBvcnRzIHdpdGggdGhlIGNvcnJlY3QgY29udGV4dFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5pID0gZnVuY3Rpb24odmFsdWUpIHsgcmV0dXJuIHZhbHVlOyB9O1xuXG4gXHQvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9uIGZvciBoYXJtb255IGV4cG9ydHNcbiBcdF9fd2VicGFja19yZXF1aXJlX18uZCA9IGZ1bmN0aW9uKGV4cG9ydHMsIG5hbWUsIGdldHRlcikge1xuIFx0XHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIG5hbWUpKSB7XG4gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIG5hbWUsIHtcbiBcdFx0XHRcdGNvbmZpZ3VyYWJsZTogZmFsc2UsXG4gXHRcdFx0XHRlbnVtZXJhYmxlOiB0cnVlLFxuIFx0XHRcdFx0Z2V0OiBnZXR0ZXJcbiBcdFx0XHR9KTtcbiBcdFx0fVxuIFx0fTtcblxuIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbiBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbiBcdFx0cmV0dXJuIGdldHRlcjtcbiBcdH07XG5cbiBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcblxuIFx0Ly8gTG9hZCBlbnRyeSBtb2R1bGUgYW5kIHJldHVybiBleHBvcnRzXG4gXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhfX3dlYnBhY2tfcmVxdWlyZV9fLnMgPSA2KTtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyB3ZWJwYWNrL2Jvb3RzdHJhcCA5MzNmZjdkNWVkMzkzZGM2M2JjYSIsImNvbnN0IGRyb3BsYWJBamF4RmlsdGVyID0ge1xuICBpbml0OiBmdW5jdGlvbihob29rKSB7XG4gICAgdGhpcy5kZXN0cm95ZWQgPSBmYWxzZTtcbiAgICB0aGlzLmhvb2sgPSBob29rO1xuICAgIHRoaXMubm90TG9hZGluZygpO1xuXG4gICAgdGhpcy5ldmVudFdyYXBwZXIgPSB7fTtcbiAgICB0aGlzLmV2ZW50V3JhcHBlci5kZWJvdW5jZVRyaWdnZXIgPSB0aGlzLmRlYm91bmNlVHJpZ2dlci5iaW5kKHRoaXMpO1xuICAgIHRoaXMuaG9vay50cmlnZ2VyLmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24uZGwnLCB0aGlzLmV2ZW50V3JhcHBlci5kZWJvdW5jZVRyaWdnZXIpO1xuICAgIHRoaXMuaG9vay50cmlnZ2VyLmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgdGhpcy5ldmVudFdyYXBwZXIuZGVib3VuY2VUcmlnZ2VyKTtcblxuICAgIHRoaXMudHJpZ2dlcih0cnVlKTtcbiAgfSxcblxuICBub3RMb2FkaW5nOiBmdW5jdGlvbiBub3RMb2FkaW5nKCkge1xuICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICB9LFxuXG4gIGRlYm91bmNlVHJpZ2dlcjogZnVuY3Rpb24gZGVib3VuY2VUcmlnZ2VyKGUpIHtcbiAgICB2YXIgTk9OX0NIQVJBQ1RFUl9LRVlTID0gWzE2LCAxNywgMTgsIDIwLCAzNywgMzgsIDM5LCA0MCwgOTEsIDkzXTtcbiAgICB2YXIgaW52YWxpZEtleVByZXNzZWQgPSBOT05fQ0hBUkFDVEVSX0tFWVMuaW5kZXhPZihlLmRldGFpbC53aGljaCB8fCBlLmRldGFpbC5rZXlDb2RlKSA+IC0xO1xuICAgIHZhciBmb2N1c0V2ZW50ID0gZS50eXBlID09PSAnZm9jdXMnO1xuICAgIGlmIChpbnZhbGlkS2V5UHJlc3NlZCB8fCB0aGlzLmxvYWRpbmcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMudGltZW91dCkge1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMudGltZW91dCk7XG4gICAgfVxuICAgIHRoaXMudGltZW91dCA9IHNldFRpbWVvdXQodGhpcy50cmlnZ2VyLmJpbmQodGhpcywgZm9jdXNFdmVudCksIDIwMCk7XG4gIH0sXG5cbiAgdHJpZ2dlcjogZnVuY3Rpb24gdHJpZ2dlcihnZXRFbnRpcmVMaXN0KSB7XG4gICAgdmFyIGNvbmZpZyA9IHRoaXMuaG9vay5jb25maWcuZHJvcGxhYkFqYXhGaWx0ZXI7XG4gICAgdmFyIHNlYXJjaFZhbHVlID0gdGhpcy50cmlnZ2VyLnZhbHVlO1xuICAgIGlmICghY29uZmlnIHx8ICFjb25maWcuZW5kcG9pbnQgfHwgIWNvbmZpZy5zZWFyY2hLZXkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGNvbmZpZy5zZWFyY2hWYWx1ZUZ1bmN0aW9uKSB7XG4gICAgICBzZWFyY2hWYWx1ZSA9IGNvbmZpZy5zZWFyY2hWYWx1ZUZ1bmN0aW9uKCk7XG4gICAgfVxuICAgIGlmIChjb25maWcubG9hZGluZ1RlbXBsYXRlICYmIHRoaXMuaG9vay5saXN0LmRhdGEgPT09IHVuZGVmaW5lZCB8fFxuICAgICAgdGhpcy5ob29rLmxpc3QuZGF0YS5sZW5ndGggPT09IDApIHtcbiAgICAgIHZhciBkeW5hbWljTGlzdCA9IHRoaXMuaG9vay5saXN0Lmxpc3QucXVlcnlTZWxlY3RvcignW2RhdGEtZHluYW1pY10nKTtcbiAgICAgIHZhciBsb2FkaW5nVGVtcGxhdGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgIGxvYWRpbmdUZW1wbGF0ZS5pbm5lckhUTUwgPSBjb25maWcubG9hZGluZ1RlbXBsYXRlO1xuICAgICAgbG9hZGluZ1RlbXBsYXRlLnNldEF0dHJpYnV0ZSgnZGF0YS1sb2FkaW5nLXRlbXBsYXRlJywgdHJ1ZSk7XG4gICAgICB0aGlzLmxpc3RUZW1wbGF0ZSA9IGR5bmFtaWNMaXN0Lm91dGVySFRNTDtcbiAgICAgIGR5bmFtaWNMaXN0Lm91dGVySFRNTCA9IGxvYWRpbmdUZW1wbGF0ZS5vdXRlckhUTUw7XG4gICAgfVxuICAgIGlmIChnZXRFbnRpcmVMaXN0KSB7XG4gICAgICBzZWFyY2hWYWx1ZSA9ICcnO1xuICAgIH1cbiAgICBpZiAoY29uZmlnLnNlYXJjaEtleSA9PT0gc2VhcmNoVmFsdWUpIHtcbiAgICAgIHJldHVybiB0aGlzLmxpc3Quc2hvdygpO1xuICAgIH1cbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgIHZhciBwYXJhbXMgPSBjb25maWcucGFyYW1zIHx8IHt9O1xuICAgIHBhcmFtc1tjb25maWcuc2VhcmNoS2V5XSA9IHNlYXJjaFZhbHVlO1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICBzZWxmLmNhY2hlID0gc2VsZi5jYWNoZSB8fCB7fTtcbiAgICB2YXIgdXJsID0gY29uZmlnLmVuZHBvaW50ICsgdGhpcy5idWlsZFBhcmFtcyhwYXJhbXMpO1xuICAgIHZhciB1cmxDYWNoZWREYXRhID0gc2VsZi5jYWNoZVt1cmxdO1xuICAgIGlmICh1cmxDYWNoZWREYXRhKSB7XG4gICAgICBzZWxmLl9sb2FkRGF0YSh1cmxDYWNoZWREYXRhLCBjb25maWcsIHNlbGYpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9sb2FkVXJsRGF0YSh1cmwpXG4gICAgICAgIC50aGVuKGZ1bmN0aW9uKGRhdGEpIHtcbiAgICAgICAgICBzZWxmLl9sb2FkRGF0YShkYXRhLCBjb25maWcsIHNlbGYpO1xuICAgICAgICB9KTtcbiAgICB9XG4gIH0sXG5cbiAgX2xvYWRVcmxEYXRhOiBmdW5jdGlvbiBfbG9hZFVybERhdGEodXJsKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3Q7XG4gICAgICB4aHIub3BlbignR0VUJywgdXJsLCB0cnVlKTtcbiAgICAgIHhoci5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmKHhoci5yZWFkeVN0YXRlID09PSBYTUxIdHRwUmVxdWVzdC5ET05FKSB7XG4gICAgICAgICAgaWYgKHhoci5zdGF0dXMgPT09IDIwMCkge1xuICAgICAgICAgICAgdmFyIGRhdGEgPSBKU09OLnBhcnNlKHhoci5yZXNwb25zZVRleHQpO1xuICAgICAgICAgICAgc2VsZi5jYWNoZVt1cmxdID0gZGF0YTtcbiAgICAgICAgICAgIHJldHVybiByZXNvbHZlKGRhdGEpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gcmVqZWN0KFt4aHIucmVzcG9uc2VUZXh0LCB4aHIuc3RhdHVzXSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9O1xuICAgICAgeGhyLnNlbmQoKTtcbiAgICB9KTtcbiAgfSxcblxuICBfbG9hZERhdGE6IGZ1bmN0aW9uIF9sb2FkRGF0YShkYXRhLCBjb25maWcsIHNlbGYpIHtcbiAgICBjb25zdCBsaXN0ID0gc2VsZi5ob29rLmxpc3Q7XG4gICAgaWYgKGNvbmZpZy5sb2FkaW5nVGVtcGxhdGUgJiYgbGlzdC5kYXRhID09PSB1bmRlZmluZWQgfHxcbiAgICAgIGxpc3QuZGF0YS5sZW5ndGggPT09IDApIHtcbiAgICAgIGNvbnN0IGRhdGFMb2FkaW5nVGVtcGxhdGUgPSBsaXN0Lmxpc3QucXVlcnlTZWxlY3RvcignW2RhdGEtbG9hZGluZy10ZW1wbGF0ZV0nKTtcbiAgICAgIGlmIChkYXRhTG9hZGluZ1RlbXBsYXRlKSB7XG4gICAgICAgIGRhdGFMb2FkaW5nVGVtcGxhdGUub3V0ZXJIVE1MID0gc2VsZi5saXN0VGVtcGxhdGU7XG4gICAgICB9XG4gICAgfVxuICAgIGlmICghc2VsZi5kZXN0cm95ZWQpIHtcbiAgICAgIHZhciBob29rTGlzdENoaWxkcmVuID0gbGlzdC5saXN0LmNoaWxkcmVuO1xuICAgICAgdmFyIG9ubHlEeW5hbWljTGlzdCA9IGhvb2tMaXN0Q2hpbGRyZW4ubGVuZ3RoID09PSAxICYmIGhvb2tMaXN0Q2hpbGRyZW5bMF0uaGFzQXR0cmlidXRlKCdkYXRhLWR5bmFtaWMnKTtcbiAgICAgIGlmIChvbmx5RHluYW1pY0xpc3QgJiYgZGF0YS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgbGlzdC5oaWRlKCk7XG4gICAgICB9XG4gICAgICBsaXN0LnNldERhdGEuY2FsbChsaXN0LCBkYXRhKTtcbiAgICB9XG4gICAgc2VsZi5ub3RMb2FkaW5nKCk7XG4gICAgbGlzdC5jdXJyZW50SW5kZXggPSAwO1xuICB9LFxuXG4gIGJ1aWxkUGFyYW1zOiBmdW5jdGlvbihwYXJhbXMpIHtcbiAgICBpZiAoIXBhcmFtcykgcmV0dXJuICcnO1xuICAgIHZhciBwYXJhbXNBcnJheSA9IE9iamVjdC5rZXlzKHBhcmFtcykubWFwKGZ1bmN0aW9uKHBhcmFtKSB7XG4gICAgICByZXR1cm4gcGFyYW0gKyAnPScgKyAocGFyYW1zW3BhcmFtXSB8fCAnJyk7XG4gICAgfSk7XG4gICAgcmV0dXJuICc/JyArIHBhcmFtc0FycmF5LmpvaW4oJyYnKTtcbiAgfSxcblxuICBkZXN0cm95OiBmdW5jdGlvbiBkZXN0cm95KCkge1xuICAgIGlmICh0aGlzLnRpbWVvdXQpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLnRpbWVvdXQpO1xuICAgIH1cblxuICAgIHRoaXMuZGVzdHJveWVkID0gdHJ1ZTtcbiAgICB0aGlzLmhvb2sudHJpZ2dlci5yZW1vdmVFdmVudExpc3RlbmVyKCdrZXlkb3duLmRsJywgdGhpcy5ldmVudFdyYXBwZXIuZGVib3VuY2VUcmlnZ2VyKTtcbiAgICB0aGlzLmhvb2sudHJpZ2dlci5yZW1vdmVFdmVudExpc3RlbmVyKCdmb2N1cycsIHRoaXMuZXZlbnRXcmFwcGVyLmRlYm91bmNlVHJpZ2dlcik7XG4gIH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IGRyb3BsYWJBamF4RmlsdGVyO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vc3JjL3BsdWdpbnMvYWpheF9maWx0ZXIvYWpheF9maWx0ZXIuanMiXSwic291cmNlUm9vdCI6IiJ9 \ No newline at end of file diff --git a/app/assets/javascripts/droplab/plugins/filter.js b/app/assets/javascripts/droplab/plugins/filter.js deleted file mode 100644 index 3d81fbd7d2f..00000000000 --- a/app/assets/javascripts/droplab/plugins/filter.js +++ /dev/null @@ -1,172 +0,0 @@ -/******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) -/******/ return installedModules[moduleId].exports; -/******/ -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ i: moduleId, -/******/ l: false, -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.l = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; -/******/ -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; -/******/ -/******/ // identity function for calling harmony imports with the correct context -/******/ __webpack_require__.i = function(value) { return value; }; -/******/ -/******/ // define getter function for harmony exports -/******/ __webpack_require__.d = function(exports, name, getter) { -/******/ if(!__webpack_require__.o(exports, name)) { -/******/ Object.defineProperty(exports, name, { -/******/ configurable: false, -/******/ enumerable: true, -/******/ get: getter -/******/ }); -/******/ } -/******/ }; -/******/ -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __webpack_require__.n = function(module) { -/******/ var getter = module && module.__esModule ? -/******/ function getDefault() { return module['default']; } : -/******/ function getModuleExports() { return module; }; -/******/ __webpack_require__.d(getter, 'a', getter); -/******/ return getter; -/******/ }; -/******/ -/******/ // Object.prototype.hasOwnProperty.call -/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; -/******/ -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = ""; -/******/ -/******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = 7); -/******/ }) -/************************************************************************/ -/******/ ({ - -/***/ 7: -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -var droplabFilter = { - keydown: function keydown(e) { - var hiddenCount = 0; - var dataHiddenCount = 0; - - var list = e.detail.hook.list; - var data = list.data; - var value = e.detail.hook.trigger.value.toLowerCase(); - var config = e.detail.hook.config.droplabFilter; - var matches = []; - var filterFunction; - // will only work on dynamically set data - if (!data) { - return; - } - - if (config && config.filterFunction && typeof config.filterFunction === 'function') { - filterFunction = config.filterFunction; - } else { - filterFunction = function filterFunction(o) { - // cheap string search - o.droplab_hidden = o[config.template].toLowerCase().indexOf(value) === -1; - return o; - }; - } - - dataHiddenCount = data.filter(function (o) { - return !o.droplab_hidden; - }).length; - - matches = data.map(function (o) { - return filterFunction(o, value); - }); - - hiddenCount = matches.filter(function (o) { - return !o.droplab_hidden; - }).length; - - if (dataHiddenCount !== hiddenCount) { - list.render(matches); - list.currentIndex = 0; - } - }, - - debounceKeydown: function debounceKeydown(e) { - if ([13, // enter - 16, // shift - 17, // ctrl - 18, // alt - 20, // caps lock - 37, // left arrow - 38, // up arrow - 39, // right arrow - 40, // down arrow - 91, // left window - 92, // right window - 93].indexOf(e.detail.which || e.detail.keyCode) > -1) return; - - if (this.timeout) clearTimeout(this.timeout); - this.timeout = setTimeout(this.keydown.bind(this, e), 200); - }, - - init: function init(hook) { - var config = hook.config.droplabFilter; - - if (!config || !config.template) return; - - this.hook = hook; - - this.eventWrapper = {}; - this.eventWrapper.debounceKeydown = this.debounceKeydown.bind(this); - - this.hook.trigger.addEventListener('keydown.dl', this.eventWrapper.debounceKeydown); - this.hook.trigger.addEventListener('mousedown.dl', this.eventWrapper.debounceKeydown); - }, - - destroy: function destroy() { - this.hook.trigger.removeEventListener('keydown.dl', this.eventWrapper.debounceKeydown); - this.hook.trigger.removeEventListener('mousedown.dl', this.eventWrapper.debounceKeydown); - - var dynamicList = this.hook.list.list.querySelector('[data-dynamic]'); - if (this.listTemplate && dynamicList) { - dynamicList.outerHTML = this.listTemplate; - } - } -}; - -exports.default = droplabFilter; - -/***/ }) - -/******/ }); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAgOTMzZmY3ZDVlZDM5M2RjNjNiY2E/MGFiZioqKioqKiIsIndlYnBhY2s6Ly8vLi9zcmMvcGx1Z2lucy9maWx0ZXIvZmlsdGVyLmpzP2Y0MWEiXSwibmFtZXMiOlsiZHJvcGxhYkZpbHRlciIsImtleWRvd24iLCJlIiwiaGlkZGVuQ291bnQiLCJkYXRhSGlkZGVuQ291bnQiLCJsaXN0IiwiZGV0YWlsIiwiaG9vayIsImRhdGEiLCJ2YWx1ZSIsInRyaWdnZXIiLCJ0b0xvd2VyQ2FzZSIsImNvbmZpZyIsIm1hdGNoZXMiLCJmaWx0ZXJGdW5jdGlvbiIsIm8iLCJkcm9wbGFiX2hpZGRlbiIsInRlbXBsYXRlIiwiaW5kZXhPZiIsImZpbHRlciIsImxlbmd0aCIsIm1hcCIsInJlbmRlciIsImN1cnJlbnRJbmRleCIsImRlYm91bmNlS2V5ZG93biIsIndoaWNoIiwia2V5Q29kZSIsInRpbWVvdXQiLCJjbGVhclRpbWVvdXQiLCJzZXRUaW1lb3V0IiwiYmluZCIsImluaXQiLCJldmVudFdyYXBwZXIiLCJhZGRFdmVudExpc3RlbmVyIiwiZGVzdHJveSIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJkeW5hbWljTGlzdCIsInF1ZXJ5U2VsZWN0b3IiLCJsaXN0VGVtcGxhdGUiLCJvdXRlckhUTUwiXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOzs7QUFHQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxtREFBMkMsY0FBYzs7QUFFekQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxtQ0FBMkIsMEJBQTBCLEVBQUU7QUFDdkQseUNBQWlDLGVBQWU7QUFDaEQ7QUFDQTtB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RUEsU0FBS3lCLFlBQUwsR0FBb0IsRUFBcEI7QUFDQSxTQUFLQSxZQUFMLENBQWtCUixlQUFsQixHQUFvQyxLQUFLQSxlQUFMLENBQXFCTSxJQUFyQixDQUEwQixJQUExQixDQUFwQzs7QUFFQSxTQUFLdkIsSUFBTCxDQUFVRyxPQUFWLENBQWtCdUIsZ0JBQWxCLENBQW1DLFlBQW5DLEVBQWlELEtBQUtELFlBQUwsQ0FBa0JSLGVBQW5FO0FBQ0EsU0FBS2pCLElBQUwsQ0FBVUcsT0FBVixDQUFrQnVCLGdCQUFsQixDQUFtQyxjQUFuQyxFQUFtRCxLQUFLRCxZQUFMLENBQWtCUixlQUFyRTtBQUNELEdBNUVtQjs7QUE4RXBCVSxXQUFTLFNBQVNBLE9BQVQsR0FBbUI7QUFDMUIsU0FBSzNCLElBQUwsQ0FBVUcsT0FBVixDQUFrQnlCLG1CQUFsQixDQUFzQyxZQUF0QyxFQUFvRCxLQUFLSCxZQUFMLENBQWtCUixlQUF0RTtBQUNBLFNBQUtqQixJQUFMLENBQVVHLE9BQVYsQ0FBa0J5QixtQkFBbEIsQ0FBc0MsY0FBdEMsRUFBc0QsS0FBS0gsWUFBTCxDQUFrQlIsZUFBeEU7O0FBRUEsUUFBSVksY0FBYyxLQUFLN0IsSUFBTCxDQUFVRixJQUFWLENBQWVBLElBQWYsQ0FBb0JnQyxhQUFwQixDQUFrQyxnQkFBbEMsQ0FBbEI7QUFDQSxRQUFJLEtBQUtDLFlBQUwsSUFBcUJGLFdBQXpCLEVBQXNDO0FBQ3BDQSxrQkFBWUcsU0FBWixHQUF3QixLQUFLRCxZQUE3QjtBQUNEO0FBQ0Y7QUF0Rm1CLENBQXRCOztrQkF5RmV0QyxhIiwiZmlsZSI6Ii4vZGlzdC9wbHVnaW5zL2ZpbHRlci5qcyIsInNvdXJjZXNDb250ZW50IjpbIiBcdC8vIFRoZSBtb2R1bGUgY2FjaGVcbiBcdHZhciBpbnN0YWxsZWRNb2R1bGVzID0ge307XG5cbiBcdC8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG4gXHRmdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cbiBcdFx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG4gXHRcdGlmKGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdKVxuIFx0XHRcdHJldHVybiBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXS5leHBvcnRzO1xuXG4gXHRcdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG4gXHRcdHZhciBtb2R1bGUgPSBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSA9IHtcbiBcdFx0XHRpOiBtb2R1bGVJZCxcbiBcdFx0XHRsOiBmYWxzZSxcbiBcdFx0XHRleHBvcnRzOiB7fVxuIFx0XHR9O1xuXG4gXHRcdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuIFx0XHRtb2R1bGVzW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuIFx0XHQvLyBGbGFnIHRoZSBtb2R1bGUgYXMgbG9hZGVkXG4gXHRcdG1vZHVsZS5sID0gdHJ1ZTtcblxuIFx0XHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuIFx0XHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG4gXHR9XG5cblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubSA9IG1vZHVsZXM7XG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlIGNhY2hlXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmMgPSBpbnN0YWxsZWRNb2R1bGVzO1xuXG4gXHQvLyBpZGVudGl0eSBmdW5jdGlvbiBmb3IgY2FsbGluZyBoYXJtb255IGltcG9ydHMgd2l0aCB0aGUgY29ycmVjdCBjb250ZXh0XG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmkgPSBmdW5jdGlvbih2YWx1ZSkgeyByZXR1cm4gdmFsdWU7IH07XG5cbiBcdC8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb24gZm9yIGhhcm1vbnkgZXhwb3J0c1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kID0gZnVuY3Rpb24oZXhwb3J0cywgbmFtZSwgZ2V0dGVyKSB7XG4gXHRcdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywgbmFtZSkpIHtcbiBcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwge1xuIFx0XHRcdFx0Y29uZmlndXJhYmxlOiBmYWxzZSxcbiBcdFx0XHRcdGVudW1lcmFibGU6IHRydWUsXG4gXHRcdFx0XHRnZXQ6IGdldHRlclxuIFx0XHRcdH0pO1xuIFx0XHR9XG4gXHR9O1xuXG4gXHQvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5uID0gZnVuY3Rpb24obW9kdWxlKSB7XG4gXHRcdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuIFx0XHRcdGZ1bmN0aW9uIGdldERlZmF1bHQoKSB7IHJldHVybiBtb2R1bGVbJ2RlZmF1bHQnXTsgfSA6XG4gXHRcdFx0ZnVuY3Rpb24gZ2V0TW9kdWxlRXhwb3J0cygpIHsgcmV0dXJuIG1vZHVsZTsgfTtcbiBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgJ2EnLCBnZXR0ZXIpO1xuIFx0XHRyZXR1cm4gZ2V0dGVyO1xuIFx0fTtcblxuIFx0Ly8gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSBmdW5jdGlvbihvYmplY3QsIHByb3BlcnR5KSB7IHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBwcm9wZXJ0eSk7IH07XG5cbiBcdC8vIF9fd2VicGFja19wdWJsaWNfcGF0aF9fXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSBcIlwiO1xuXG4gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbiBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IDcpO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIHdlYnBhY2svYm9vdHN0cmFwIDkzM2ZmN2Q1ZWQzOTNkYzYzYmNhIiwiY29uc3QgZHJvcGxhYkZpbHRlciA9IHtcbiAga2V5ZG93bjogZnVuY3Rpb24oZSl7XG4gICAgdmFyIGhpZGRlbkNvdW50ID0gMDtcbiAgICB2YXIgZGF0YUhpZGRlbkNvdW50ID0gMDtcblxuICAgIHZhciBsaXN0ID0gZS5kZXRhaWwuaG9vay5saXN0O1xuICAgIHZhciBkYXRhID0gbGlzdC5kYXRhO1xuICAgIHZhciB2YWx1ZSA9IGUuZGV0YWlsLmhvb2sudHJpZ2dlci52YWx1ZS50b0xvd2VyQ2FzZSgpO1xuICAgIHZhciBjb25maWcgPSBlLmRldGFpbC5ob29rLmNvbmZpZy5kcm9wbGFiRmlsdGVyO1xuICAgIHZhciBtYXRjaGVzID0gW107XG4gICAgdmFyIGZpbHRlckZ1bmN0aW9uO1xuICAgIC8vIHdpbGwgb25seSB3b3JrIG9uIGR5bmFtaWNhbGx5IHNldCBkYXRhXG4gICAgaWYoIWRhdGEpe1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChjb25maWcgJiYgY29uZmlnLmZpbHRlckZ1bmN0aW9uICYmIHR5cGVvZiBjb25maWcuZmlsdGVyRnVuY3Rpb24gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGZpbHRlckZ1bmN0aW9uID0gY29uZmlnLmZpbHRlckZ1bmN0aW9uO1xuICAgIH0gZWxzZSB7XG4gICAgICBmaWx0ZXJGdW5jdGlvbiA9IGZ1bmN0aW9uKG8pe1xuICAgICAgICAvLyBjaGVhcCBzdHJpbmcgc2VhcmNoXG4gICAgICAgIG8uZHJvcGxhYl9oaWRkZW4gPSBvW2NvbmZpZy50ZW1wbGF0ZV0udG9Mb3dlckNhc2UoKS5pbmRleE9mKHZhbHVlKSA9PT0gLTE7XG4gICAgICAgIHJldHVybiBvO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICBkYXRhSGlkZGVuQ291bnQgPSBkYXRhLmZpbHRlcihmdW5jdGlvbihvKSB7XG4gICAgICByZXR1cm4gIW8uZHJvcGxhYl9oaWRkZW47XG4gICAgfSkubGVuZ3RoO1xuXG4gICAgbWF0Y2hlcyA9IGRhdGEubWFwKGZ1bmN0aW9uKG8pIHtcbiAgICAgIHJldHVybiBmaWx0ZXJGdW5jdGlvbihvLCB2YWx1ZSk7XG4gICAgfSk7XG5cbiAgICBoaWRkZW5Db3VudCA9IG1hdGNoZXMuZmlsdGVyKGZ1bmN0aW9uKG8pIHtcbiAgICAgIHJldHVybiAhby5kcm9wbGFiX2hpZGRlbjtcbiAgICB9KS5sZW5ndGg7XG5cbiAgICBpZiAoZGF0YUhpZGRlbkNvdW50ICE9PSBoaWRkZW5Db3VudCkge1xuICAgICAgbGlzdC5yZW5kZXIobWF0Y2hlcyk7XG4gICAgICBsaXN0LmN1cnJlbnRJbmRleCA9IDA7XG4gICAgfVxuICB9LFxuXG4gIGRlYm91bmNlS2V5ZG93bjogZnVuY3Rpb24gZGVib3VuY2VLZXlkb3duKGUpIHtcbiAgICBpZiAoW1xuICAgICAgMTMsIC8vIGVudGVyXG4gICAgICAxNiwgLy8gc2hpZnRcbiAgICAgIDE3LCAvLyBjdHJsXG4gICAgICAxOCwgLy8gYWx0XG4gICAgICAyMCwgLy8gY2FwcyBsb2NrXG4gICAgICAzNywgLy8gbGVmdCBhcnJvd1xuICAgICAgMzgsIC8vIHVwIGFycm93XG4gICAgICAzOSwgLy8gcmlnaHQgYXJyb3dcbiAgICAgIDQwLCAvLyBkb3duIGFycm93XG4gICAgICA5MSwgLy8gbGVmdCB3aW5kb3dcbiAgICAgIDkyLCAvLyByaWdodCB3aW5kb3dcbiAgICAgIDkzLCAvLyBzZWxlY3RcbiAgICBdLmluZGV4T2YoZS5kZXRhaWwud2hpY2ggfHwgZS5kZXRhaWwua2V5Q29kZSkgPiAtMSkgcmV0dXJuO1xuXG4gICAgaWYgKHRoaXMudGltZW91dCkgY2xlYXJUaW1lb3V0KHRoaXMudGltZW91dCk7XG4gICAgdGhpcy50aW1lb3V0ID0gc2V0VGltZW91dCh0aGlzLmtleWRvd24uYmluZCh0aGlzLCBlKSwgMjAwKTtcbiAgfSxcblxuICBpbml0OiBmdW5jdGlvbiBpbml0KGhvb2spIHtcbiAgICB2YXIgY29uZmlnID0gaG9vay5jb25maWcuZHJvcGxhYkZpbHRlcjtcblxuICAgIGlmICghY29uZmlnIHx8ICFjb25maWcudGVtcGxhdGUpIHJldHVybjtcblxuICAgIHRoaXMuaG9vayA9IGhvb2s7XG5cbiAgICB0aGlzLmV2ZW50V3JhcHBlciA9IHt9O1xuICAgIHRoaXMuZXZlbnRXcmFwcGVyLmRlYm91bmNlS2V5ZG93biA9IHRoaXMuZGVib3VuY2VLZXlkb3duLmJpbmQodGhpcyk7XG5cbiAgICB0aGlzLmhvb2sudHJpZ2dlci5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duLmRsJywgdGhpcy5ldmVudFdyYXBwZXIuZGVib3VuY2VLZXlkb3duKTtcbiAgICB0aGlzLmhvb2sudHJpZ2dlci5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWRvd24uZGwnLCB0aGlzLmV2ZW50V3JhcHBlci5kZWJvdW5jZUtleWRvd24pO1xuICB9LFxuXG4gIGRlc3Ryb3k6IGZ1bmN0aW9uIGRlc3Ryb3koKSB7XG4gICAgdGhpcy5ob29rLnRyaWdnZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcigna2V5ZG93bi5kbCcsIHRoaXMuZXZlbnRXcmFwcGVyLmRlYm91bmNlS2V5ZG93bik7XG4gICAgdGhpcy5ob29rLnRyaWdnZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duLmRsJywgdGhpcy5ldmVudFdyYXBwZXIuZGVib3VuY2VLZXlkb3duKTtcblxuICAgIHZhciBkeW5hbWljTGlzdCA9IHRoaXMuaG9vay5saXN0Lmxpc3QucXVlcnlTZWxlY3RvcignW2RhdGEtZHluYW1pY10nKTtcbiAgICBpZiAodGhpcy5saXN0VGVtcGxhdGUgJiYgZHluYW1pY0xpc3QpIHtcbiAgICAgIGR5bmFtaWNMaXN0Lm91dGVySFRNTCA9IHRoaXMubGlzdFRlbXBsYXRlO1xuICAgIH1cbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgZHJvcGxhYkZpbHRlcjtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3NyYy9wbHVnaW5zL2ZpbHRlci9maWx0ZXIuanMiXSwic291cmNlUm9vdCI6IiJ9 \ No newline at end of file diff --git a/app/assets/javascripts/droplab/plugins/input_setter.js b/app/assets/javascripts/droplab/plugins/input_setter.js deleted file mode 100644 index 2ee9a796634..00000000000 --- a/app/assets/javascripts/droplab/plugins/input_setter.js +++ /dev/null @@ -1,127 +0,0 @@ -/******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) -/******/ return installedModules[moduleId].exports; -/******/ -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ i: moduleId, -/******/ l: false, -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.l = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; -/******/ -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; -/******/ -/******/ // identity function for calling harmony imports with the correct context -/******/ __webpack_require__.i = function(value) { return value; }; -/******/ -/******/ // define getter function for harmony exports -/******/ __webpack_require__.d = function(exports, name, getter) { -/******/ if(!__webpack_require__.o(exports, name)) { -/******/ Object.defineProperty(exports, name, { -/******/ configurable: false, -/******/ enumerable: true, -/******/ get: getter -/******/ }); -/******/ } -/******/ }; -/******/ -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __webpack_require__.n = function(module) { -/******/ var getter = module && module.__esModule ? -/******/ function getDefault() { return module['default']; } : -/******/ function getModuleExports() { return module; }; -/******/ __webpack_require__.d(getter, 'a', getter); -/******/ return getter; -/******/ }; -/******/ -/******/ // Object.prototype.hasOwnProperty.call -/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; -/******/ -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = ""; -/******/ -/******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = 8); -/******/ }) -/************************************************************************/ -/******/ ({ - -/***/ 8: -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -var droplabInputSetter = { - init: function init(hook) { - this.hook = hook; - this.config = hook.config.droplabInputSetter || (this.hook.config.droplabInputSetter = {}); - - this.eventWrapper = {}; - - this.addEvents(); - }, - addEvents: function addEvents() { - this.eventWrapper.setInputs = this.setInputs.bind(this); - this.hook.list.list.addEventListener('click.dl', this.eventWrapper.setInputs); - }, - removeEvents: function removeEvents() { - this.hook.list.list.removeEventListener('click.dl', this.eventWrapper.setInputs); - }, - setInputs: function setInputs(e) { - var _this = this; - - var selectedItem = e.detail.selected; - - if (!Array.isArray(this.config)) this.config = [this.config]; - - this.config.forEach(function (config) { - return _this.setInput(config, selectedItem); - }); - }, - setInput: function setInput(config, selectedItem) { - var input = config.input || this.hook.trigger; - var newValue = selectedItem.getAttribute(config.valueAttribute); - - if (input.tagName === 'INPUT') { - input.value = newValue; - } else { - input.textContent = newValue; - } - }, - destroy: function destroy() { - this.removeEvents(); - } -}; - -exports.default = droplabInputSetter; - -/***/ }) - -/******/ }); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAgOTMzZmY3ZDVlZDM5M2RjNjNiY2E/MGFiZioqKioqIiwid2VicGFjazovLy8uL3NyYy9wbHVnaW5zL2lucHV0X3NldHRlci9pbnB1dF9zZXR0ZXIuanM/NTY5NyJdLCJuYW1lcyI6WyJkcm9wbGFiSW5wdXRTZXR0ZXIiLCJpbml0IiwiaG9vayIsImNvbmZpZyIsImV2ZW50V3JhcHBlciIsImFkZEV2ZW50cyIsInNldElucHV0cyIsImJpbmQiLCJsaXN0IiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlbW92ZUV2ZW50cyIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJlIiwic2VsZWN0ZWRJdGVtIiwiZGV0YWlsIiwic2VsZWN0ZWQiLCJBcnJheSIsImlzQXJyYXkiLCJmb3JFYWNoIiwic2V0SW5wdXQiLCJpbnB1dCIsInRyaWdnZXIiLCJuZXdWYWx1ZSIsImdldEF0dHJpYnV0ZSIsInZhbHVlQXR0cmlidXRlIiwidGFnTmFtZSIsInZhbHVlIiwidGV4dENvbnRlbnQiLCJkZXN0cm95Il0sIm1hcHBpbmdzIjoiO0FBQUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsbURBQTJDLGNBQWM7O0FBRXpEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsbUNBQTJCLDBCQUEwQixFQUFFO0FBQ3ZELHlDQUFpQyxlQUFlO0FBQ2hEO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDhEQUFzRCwrREFBK0Q7O0FBRXJIO0FBQ0E7O0FBRUE7QUFDQTs7Ozs7Ozs7Ozs7Ozs7QUNoRUEsSUFBTUEscUJBQXFCO0FBQ3pCQyxNQUR5QixnQkFDcEJDLElBRG9CLEVBQ2Q7QUFDVCxTQUFLQSxJQUFMLEdBQVlBLElBQVo7QUFDQSxTQUFLQyxNQUFMLEdBQWNELEtBQUtDLE1BQUwsQ0FBWUgsa0JBQVosS0FBbUMsS0FBS0UsSUFBTCxDQUFVQyxNQUFWLENBQWlCSCxrQkFBakIsR0FBc0MsRUFBekUsQ0FBZDs7QUFFQSxTQUFLSSxZQUFMLEdBQW9CLEVBQXBCOztBQUVBLFNBQUtDLFNBQUw7QUFDRCxHQVJ3QjtBQVV6QkEsV0FWeUIsdUJBVWI7QUFDVixTQUFLRCxZQUFMLENBQWtCRSxTQUFsQixHQUE4QixLQUFLQSxTQUFMLENBQWVDLElBQWYsQ0FBb0IsSUFBcEIsQ0FBOUI7QUFDQSxTQUFLTCxJQUFMLENBQVVNLElBQVYsQ0FBZUEsSUFBZixDQUFvQkMsZ0JBQXBCLENBQXFDLFVBQXJDLEVBQWlELEtBQUtMLFlBQUwsQ0FBa0JFLFNBQW5FO0FBQ0QsR0Fid0I7QUFlekJJLGNBZnlCLDBCQWVWO0FBQ2IsU0FBS1IsSUFBTCxDQUFVTSxJQUFWLENBQWVBLElBQWYsQ0FBb0JHLG1CQUFwQixDQUF3QyxVQUF4QyxFQUFvRCxLQUFLUCxZQUFMLENBQWtCRSxTQUF0RTtBQUNELEdBakJ3QjtBQW1CekJBLFdBbkJ5QixxQkFtQmZNLENBbkJlLEVBbUJaO0FBQUE7O0FBQ1gsUUFBTUMsZUFBZUQsRUFBRUUsTUFBRixDQUFTQyxRQUE5Qjs7QUFFQSxRQUFJLENBQUNDLE1BQU1DLE9BQU4sQ0FBYyxLQUFLZCxNQUFuQixDQUFMLEVBQWlDLEtBQUtBLE1BQUwsR0FBYyxDQUFDLEtBQUtBLE1BQU4sQ0FBZDs7QUFFakMsU0FBS0EsTUFBTCxDQUFZZSxPQUFaLENBQW9CO0FBQUEsYUFBVSxNQUFLQyxRQUFMLENBQWNoQixNQUFkLEVBQXNCVSxZQUF0QixDQUFWO0FBQUEsS0FBcEI7QUFDRCxHQXpCd0I7QUEyQnpCTSxVQTNCeUIsb0JBMkJoQmhCLE1BM0JnQixFQTJCUlUsWUEzQlEsRUEyQk07QUFDN0IsUUFBTU8sUUFBUWpCLE9BQU9pQixLQUFQLElBQWdCLEtBQUtsQixJQUFMLENBQVVtQixPQUF4QztBQUNBLFFBQU1DLFdBQVdULGFBQWFVLFlBQWIsQ0FBMEJwQixPQUFPcUIsY0FBakMsQ0FBakI7O0FBRUEsUUFBSUosTUFBTUssT0FBTixLQUFrQixPQUF0QixFQUErQjtBQUM3QkwsWUFBTU0sS0FBTixHQUFjSixRQUFkO0FBQ0QsS0FGRCxNQUVPO0FBQ0xGLFlBQU1PLFdBQU4sR0FBb0JMLFFBQXBCO0FBQ0Q7QUFDRixHQXBDd0I7QUFzQ3pCTSxTQXRDeUIscUJBc0NmO0FBQ1IsU0FBS2xCLFlBQUw7QUFDRDtBQXhDd0IsQ0FBM0I7O2tCQTJDZVYsa0IiLCJmaWxlIjoiLi9kaXN0L3BsdWdpbnMvaW5wdXRfc2V0dGVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbiBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pXG4gXHRcdFx0cmV0dXJuIGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdLmV4cG9ydHM7XG5cbiBcdFx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcbiBcdFx0dmFyIG1vZHVsZSA9IGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdID0ge1xuIFx0XHRcdGk6IG1vZHVsZUlkLFxuIFx0XHRcdGw6IGZhbHNlLFxuIFx0XHRcdGV4cG9ydHM6IHt9XG4gXHRcdH07XG5cbiBcdFx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG4gXHRcdG1vZHVsZXNbbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG4gXHRcdC8vIEZsYWcgdGhlIG1vZHVsZSBhcyBsb2FkZWRcbiBcdFx0bW9kdWxlLmwgPSB0cnVlO1xuXG4gXHRcdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG4gXHRcdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbiBcdH1cblxuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZXMgb2JqZWN0IChfX3dlYnBhY2tfbW9kdWxlc19fKVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5tID0gbW9kdWxlcztcblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGUgY2FjaGVcbiBcdF9fd2VicGFja19yZXF1aXJlX18uYyA9IGluc3RhbGxlZE1vZHVsZXM7XG5cbiBcdC8vIGlkZW50aXR5IGZ1bmN0aW9uIGZvciBjYWxsaW5nIGhhcm1vbnkgaW1wb3J0cyB3aXRoIHRoZSBjb3JyZWN0IGNvbnRleHRcbiBcdF9fd2VicGFja19yZXF1aXJlX18uaSA9IGZ1bmN0aW9uKHZhbHVlKSB7IHJldHVybiB2YWx1ZTsgfTtcblxuIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbiBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7XG4gXHRcdFx0XHRjb25maWd1cmFibGU6IGZhbHNlLFxuIFx0XHRcdFx0ZW51bWVyYWJsZTogdHJ1ZSxcbiBcdFx0XHRcdGdldDogZ2V0dGVyXG4gXHRcdFx0fSk7XG4gXHRcdH1cbiBcdH07XG5cbiBcdC8vIGdldERlZmF1bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm4gPSBmdW5jdGlvbihtb2R1bGUpIHtcbiBcdFx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG4gXHRcdFx0ZnVuY3Rpb24gZ2V0RGVmYXVsdCgpIHsgcmV0dXJuIG1vZHVsZVsnZGVmYXVsdCddOyB9IDpcbiBcdFx0XHRmdW5jdGlvbiBnZXRNb2R1bGVFeHBvcnRzKCkgeyByZXR1cm4gbW9kdWxlOyB9O1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCAnYScsIGdldHRlcik7XG4gXHRcdHJldHVybiBnZXR0ZXI7XG4gXHR9O1xuXG4gXHQvLyBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGxcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubyA9IGZ1bmN0aW9uKG9iamVjdCwgcHJvcGVydHkpIHsgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIHByb3BlcnR5KTsgfTtcblxuIFx0Ly8gX193ZWJwYWNrX3B1YmxpY19wYXRoX19cbiBcdF9fd2VicGFja19yZXF1aXJlX18ucCA9IFwiXCI7XG5cbiBcdC8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuIFx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oX193ZWJwYWNrX3JlcXVpcmVfXy5zID0gOCk7XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gd2VicGFjay9ib290c3RyYXAgOTMzZmY3ZDVlZDM5M2RjNjNiY2EiLCJjb25zdCBkcm9wbGFiSW5wdXRTZXR0ZXIgPSB7XG4gIGluaXQoaG9vaykge1xuICAgIHRoaXMuaG9vayA9IGhvb2s7XG4gICAgdGhpcy5jb25maWcgPSBob29rLmNvbmZpZy5kcm9wbGFiSW5wdXRTZXR0ZXIgfHwgKHRoaXMuaG9vay5jb25maWcuZHJvcGxhYklucHV0U2V0dGVyID0ge30pO1xuXG4gICAgdGhpcy5ldmVudFdyYXBwZXIgPSB7fTtcblxuICAgIHRoaXMuYWRkRXZlbnRzKCk7XG4gIH0sXG5cbiAgYWRkRXZlbnRzKCkge1xuICAgIHRoaXMuZXZlbnRXcmFwcGVyLnNldElucHV0cyA9IHRoaXMuc2V0SW5wdXRzLmJpbmQodGhpcyk7XG4gICAgdGhpcy5ob29rLmxpc3QubGlzdC5hZGRFdmVudExpc3RlbmVyKCdjbGljay5kbCcsIHRoaXMuZXZlbnRXcmFwcGVyLnNldElucHV0cyk7XG4gIH0sXG5cbiAgcmVtb3ZlRXZlbnRzKCkge1xuICAgIHRoaXMuaG9vay5saXN0Lmxpc3QucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2suZGwnLCB0aGlzLmV2ZW50V3JhcHBlci5zZXRJbnB1dHMpO1xuICB9LFxuXG4gIHNldElucHV0cyhlKSB7XG4gICAgY29uc3Qgc2VsZWN0ZWRJdGVtID0gZS5kZXRhaWwuc2VsZWN0ZWQ7XG5cbiAgICBpZiAoIUFycmF5LmlzQXJyYXkodGhpcy5jb25maWcpKSB0aGlzLmNvbmZpZyA9IFt0aGlzLmNvbmZpZ107XG5cbiAgICB0aGlzLmNvbmZpZy5mb3JFYWNoKGNvbmZpZyA9PiB0aGlzLnNldElucHV0KGNvbmZpZywgc2VsZWN0ZWRJdGVtKSk7XG4gIH0sXG5cbiAgc2V0SW5wdXQoY29uZmlnLCBzZWxlY3RlZEl0ZW0pIHtcbiAgICBjb25zdCBpbnB1dCA9IGNvbmZpZy5pbnB1dCB8fCB0aGlzLmhvb2sudHJpZ2dlcjtcbiAgICBjb25zdCBuZXdWYWx1ZSA9IHNlbGVjdGVkSXRlbS5nZXRBdHRyaWJ1dGUoY29uZmlnLnZhbHVlQXR0cmlidXRlKTtcblxuICAgIGlmIChpbnB1dC50YWdOYW1lID09PSAnSU5QVVQnKSB7XG4gICAgICBpbnB1dC52YWx1ZSA9IG5ld1ZhbHVlO1xuICAgIH0gZWxzZSB7XG4gICAgICBpbnB1dC50ZXh0Q29udGVudCA9IG5ld1ZhbHVlO1xuICAgIH1cbiAgfSxcblxuICBkZXN0cm95KCkge1xuICAgIHRoaXMucmVtb3ZlRXZlbnRzKCk7XG4gIH0sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBkcm9wbGFiSW5wdXRTZXR0ZXI7XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvcGx1Z2lucy9pbnB1dF9zZXR0ZXIvaW5wdXRfc2V0dGVyLmpzIl0sInNvdXJjZVJvb3QiOiIifQ== \ No newline at end of file diff --git a/app/assets/javascripts/filtered_search/dropdown_hint.js b/app/assets/javascripts/filtered_search/dropdown_hint.js index d3401dd0838..527037c08eb 100644 --- a/app/assets/javascripts/filtered_search/dropdown_hint.js +++ b/app/assets/javascripts/filtered_search/dropdown_hint.js @@ -1,4 +1,4 @@ -import droplabFilter from '../droplab/plugins/filter'; +import Filter from '@gitlab-org/droplab/dist/plugins/Filter'; require('./filtered_search_dropdown'); @@ -7,7 +7,7 @@ require('./filtered_search_dropdown'); constructor(droplab, dropdown, input, filter) { super(droplab, dropdown, input, filter); this.config = { - droplabFilter: { + Filter: { template: 'hint', filterFunction: gl.DropdownUtils.filterHint.bind(null, input), }, @@ -68,12 +68,12 @@ require('./filtered_search_dropdown'); } }); - this.droplab.changeHookList(this.hookId, this.dropdown, [droplabFilter], this.config); + this.droplab.changeHookList(this.hookId, this.dropdown, [Filter], this.config); this.droplab.setData(this.hookId, dropdownData); } init() { - this.droplab.addHook(this.input, this.dropdown, [droplabFilter], this.config).init(); + this.droplab.addHook(this.input, this.dropdown, [Filter], this.config).init(); } } diff --git a/app/assets/javascripts/filtered_search/dropdown_non_user.js b/app/assets/javascripts/filtered_search/dropdown_non_user.js index c30e673f8ba..48c2135aca3 100644 --- a/app/assets/javascripts/filtered_search/dropdown_non_user.js +++ b/app/assets/javascripts/filtered_search/dropdown_non_user.js @@ -1,5 +1,5 @@ -import droplabAjax from '../droplab/plugins/ajax'; -import droplabFilter from '../droplab/plugins/filter'; +import Ajax from '@gitlab-org/droplab/dist/plugins/Ajax'; +import Filter from '@gitlab-org/droplab/dist/plugins/Filter'; require('./filtered_search_dropdown'); @@ -9,12 +9,12 @@ require('./filtered_search_dropdown'); super(droplab, dropdown, input, filter); this.symbol = symbol; this.config = { - droplabAjax: { + Ajax: { endpoint, method: 'setData', loadingTemplate: this.loadingTemplate, }, - droplabFilter: { + Filter: { filterFunction: gl.DropdownUtils.filterWithSymbol.bind(null, this.symbol, input), template: 'title', }, @@ -30,13 +30,13 @@ require('./filtered_search_dropdown'); renderContent(forceShowList = false) { this.droplab - .changeHookList(this.hookId, this.dropdown, [droplabAjax, droplabFilter], this.config); + .changeHookList(this.hookId, this.dropdown, [Ajax, Filter], this.config); super.renderContent(forceShowList); } init() { this.droplab - .addHook(this.input, this.dropdown, [droplabAjax, droplabFilter], this.config).init(); + .addHook(this.input, this.dropdown, [Ajax, Filter], this.config).init(); } } diff --git a/app/assets/javascripts/filtered_search/dropdown_user.js b/app/assets/javascripts/filtered_search/dropdown_user.js index fe95ccb41f8..1661a4c5da2 100644 --- a/app/assets/javascripts/filtered_search/dropdown_user.js +++ b/app/assets/javascripts/filtered_search/dropdown_user.js @@ -1,4 +1,4 @@ -import droplabAjaxFilter from '../droplab/plugins/ajax_filter'; +import AjaxFilter from '@gitlab-org/droplab/dist/plugins/AjaxFilter'; require('./filtered_search_dropdown'); @@ -7,7 +7,7 @@ require('./filtered_search_dropdown'); constructor(droplab, dropdown, input, filter) { super(droplab, dropdown, input, filter); this.config = { - droplabAjaxFilter: { + AjaxFilter: { endpoint: `${gon.relative_url_root || ''}/autocomplete/users.json`, searchKey: 'search', params: { @@ -28,7 +28,7 @@ require('./filtered_search_dropdown'); } renderContent(forceShowList = false) { - this.droplab.changeHookList(this.hookId, this.dropdown, [droplabAjaxFilter], this.config); + this.droplab.changeHookList(this.hookId, this.dropdown, [AjaxFilter], this.config); super.renderContent(forceShowList); } @@ -56,7 +56,7 @@ require('./filtered_search_dropdown'); } init() { - this.droplab.addHook(this.input, this.dropdown, [droplabAjaxFilter], this.config).init(); + this.droplab.addHook(this.input, this.dropdown, [AjaxFilter], this.config).init(); } } diff --git a/app/assets/javascripts/filtered_search/filtered_search_dropdown_manager.js b/app/assets/javascripts/filtered_search/filtered_search_dropdown_manager.js index 29aa4c1bb44..f5d6a85a4da 100644 --- a/app/assets/javascripts/filtered_search/filtered_search_dropdown_manager.js +++ b/app/assets/javascripts/filtered_search/filtered_search_dropdown_manager.js @@ -1,4 +1,4 @@ -import DropLab from '../droplab/droplab'; +import DropLab from '@gitlab-org/droplab'; import FilteredSearchContainer from './container'; (() => { diff --git a/yarn.lock b/yarn.lock index f254668646c..b6f818dabca 100644 --- a/yarn.lock +++ b/yarn.lock @@ -14,8 +14,8 @@ accepts@1.3.3, accepts@~1.3.3: negotiator "0.6.1" acorn-dynamic-import@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/acorn-dynamic-import/-/acorn-dynamic-import-2.0.1.tgz#23f671eb6e650dab277fef477c321b1178a8cca2" + version "2.0.2" + resolved "https://registry.yarnpkg.com/acorn-dynamic-import/-/acorn-dynamic-import-2.0.2.tgz#c752bd210bef679501b6c6cb7fc84f8f47158cc4" dependencies: acorn "^4.0.3" @@ -25,7 +25,7 @@ acorn-jsx@^3.0.0: dependencies: acorn "^3.0.4" -acorn@4.0.4, acorn@^4.0.4: +acorn@4.0.4: version "4.0.4" resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.4.tgz#17a8d6a7a6c4ef538b814ec9abac2779293bf30a" @@ -33,7 +33,7 @@ acorn@^3.0.4: version "3.3.0" resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a" -acorn@^4.0.11, acorn@^4.0.3: +acorn@^4.0.11, acorn@^4.0.3, acorn@^4.0.4: version "4.0.11" resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.11.tgz#edcda3bd937e7556410d42ed5860f67399c794c0" @@ -45,9 +45,9 @@ ajv-keywords@^1.0.0, ajv-keywords@^1.1.1: version "1.5.1" resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-1.5.1.tgz#314dd0a4b3368fad3dfcdc54ede6171b886daf3c" -ajv@^4.7.0: - version "4.11.2" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.2.tgz#f166c3c11cbc6cb9dcc102a5bcfe5b72c95287e6" +ajv@^4.7.0, ajv@^4.9.1: + version "4.11.5" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.5.tgz#b6ee74657b993a01dce44b7944d56f485828d5bd" dependencies: co "^4.6.0" json-stable-stringify "^1.0.1" @@ -94,8 +94,8 @@ append-transform@^0.4.0: default-require-extensions "^1.0.0" aproba@^1.0.3: - version "1.1.0" - resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.1.0.tgz#4d8f047a318604e18e3c06a0e52230d3d19f147b" + version "1.1.1" + resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.1.1.tgz#95d3600f07710aa0e9298c726ad5ecf2eacbabab" are-we-there-yet@~1.1.2: version "1.1.2" @@ -166,14 +166,14 @@ asn1@~0.2.3: version "0.2.3" resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86" +assert-plus@1.0.0, assert-plus@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" + assert-plus@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234" -assert-plus@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" - assert@^1.1.1: version "1.4.1" resolved "https://registry.yarnpkg.com/assert/-/assert-1.4.1.tgz#99912d591836b5a6f5b345c0f07eefc08fc65d91" @@ -184,7 +184,7 @@ async-each@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" -async@0.2.x, async@~0.2.6: +async@0.2.x: version "0.2.10" resolved "https://registry.yarnpkg.com/async/-/async-0.2.10.tgz#b6bbe0b0674b9d719708ca38de8c237cb526c3d1" @@ -193,8 +193,8 @@ async@1.x, async@^1.4.0, async@^1.4.2, async@^1.5.2: resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" async@^2.1.2, async@^2.1.4: - version "2.1.4" - resolved "https://registry.yarnpkg.com/async/-/async-2.1.4.tgz#2d2160c7788032e4dd6cbe2502f1f9a2c8f6cde4" + version "2.2.0" + resolved "https://registry.yarnpkg.com/async/-/async-2.2.0.tgz#c324eba010a237e4fbd55a12dee86367d5c0ef32" dependencies: lodash "^4.14.0" @@ -222,15 +222,15 @@ babel-code-frame@^6.16.0, babel-code-frame@^6.22.0: esutils "^2.0.2" js-tokens "^3.0.0" -babel-core@^6.22.1, babel-core@^6.23.0: - version "6.23.1" - resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.23.1.tgz#c143cb621bb2f621710c220c5d579d15b8a442df" +babel-core@^6.22.1, babel-core@^6.24.0: + version "6.24.0" + resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.24.0.tgz#8f36a0a77f5c155aed6f920b844d23ba56742a02" dependencies: babel-code-frame "^6.22.0" - babel-generator "^6.23.0" + babel-generator "^6.24.0" babel-helpers "^6.23.0" babel-messages "^6.23.0" - babel-register "^6.23.0" + babel-register "^6.24.0" babel-runtime "^6.22.0" babel-template "^6.23.0" babel-traverse "^6.23.1" @@ -246,9 +246,9 @@ babel-core@^6.22.1, babel-core@^6.23.0: slash "^1.0.0" source-map "^0.5.0" -babel-generator@^6.18.0, babel-generator@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.23.0.tgz#6b8edab956ef3116f79d8c84c5a3c05f32a74bc5" +babel-generator@^6.18.0, babel-generator@^6.24.0: + version "6.24.0" + resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.24.0.tgz#eba270a8cc4ce6e09a61be43465d7c62c1f87c56" dependencies: babel-messages "^6.23.0" babel-runtime "^6.22.0" @@ -378,11 +378,11 @@ babel-helpers@^6.23.0: babel-template "^6.23.0" babel-loader@^6.2.10: - version "6.2.10" - resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-6.2.10.tgz#adefc2b242320cd5d15e65b31cea0e8b1b02d4b0" + version "6.4.1" + resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-6.4.1.tgz#0b34112d5b0748a8dcdbf51acf6f9bd42d50b8ca" dependencies: find-cache-dir "^0.1.1" - loader-utils "^0.2.11" + loader-utils "^0.2.16" mkdirp "^0.5.1" object-assign "^4.0.1" @@ -399,12 +399,12 @@ babel-plugin-check-es2015-constants@^6.22.0: babel-runtime "^6.22.0" babel-plugin-istanbul@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-4.0.0.tgz#36bde8fbef4837e5ff0366531a2beabd7b1ffa10" + version "4.1.1" + resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.1.tgz#c12de0fc6fe42adfb16be56f1ad11e4a9782eca9" dependencies: find-up "^2.1.0" - istanbul-lib-instrument "^1.4.2" - test-exclude "^4.0.0" + istanbul-lib-instrument "^1.6.2" + test-exclude "^4.0.3" babel-plugin-syntax-async-functions@^6.8.0: version "6.13.0" @@ -745,11 +745,11 @@ babel-preset-stage-3@^6.22.0: babel-plugin-transform-exponentiation-operator "^6.22.0" babel-plugin-transform-object-rest-spread "^6.22.0" -babel-register@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.23.0.tgz#c9aa3d4cca94b51da34826c4a0f9e08145d74ff3" +babel-register@^6.24.0: + version "6.24.0" + resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.24.0.tgz#5e89f8463ba9970356d02eb07dabe3308b080cfd" dependencies: - babel-core "^6.23.0" + babel-core "^6.24.0" babel-runtime "^6.22.0" core-js "^2.4.0" home-or-tmp "^2.0.0" @@ -758,8 +758,8 @@ babel-register@^6.23.0: source-map-support "^0.4.2" babel-runtime@^6.18.0, babel-runtime@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.22.0.tgz#1cf8b4ac67c77a4ddb0db2ae1f74de52ac4ca611" + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.23.0.tgz#0a9489f144de70efb3ce4300accdb329e2fc543b" dependencies: core-js "^2.4.0" regenerator-runtime "^0.10.0" @@ -798,8 +798,8 @@ babel-types@^6.18.0, babel-types@^6.19.0, babel-types@^6.22.0, babel-types@^6.23 to-fast-properties "^1.0.1" babylon@^6.11.0, babylon@^6.13.0, babylon@^6.15.0: - version "6.15.0" - resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.15.0.tgz#ba65cfa1a80e1759b0e89fb562e27dccae70348e" + version "6.16.1" + resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.16.1.tgz#30c5a22f481978a9e7f8cdfdf496b11d94b404d3" backo2@1.0.2: version "1.0.2" @@ -856,25 +856,25 @@ block-stream@*: inherits "~2.0.0" bluebird@^3.3.0: - version "3.4.7" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.4.7.tgz#f72d760be09b7f76d08ed8fae98b289a8d05fab3" + version "3.5.0" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.0.tgz#791420d7f551eea2897453a8a77653f96606d67c" bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0: version "4.11.6" resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.6.tgz#53344adb14617a13f6e8dd2ce28905d1c0ba3215" -body-parser@^1.12.4: - version "1.16.0" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.16.0.tgz#924a5e472c6229fb9d69b85a20d5f2532dec788b" +body-parser@^1.16.1: + version "1.17.1" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.17.1.tgz#75b3bc98ddd6e7e0d8ffe750dfaca5c66993fa47" dependencies: bytes "2.4.0" content-type "~1.0.2" - debug "2.6.0" + debug "2.6.1" depd "~1.1.0" - http-errors "~1.5.1" + http-errors "~1.6.1" iconv-lite "0.4.15" on-finished "~2.3.0" - qs "6.2.1" + qs "6.4.0" raw-body "~2.2.0" type-is "~1.6.14" @@ -885,8 +885,8 @@ boom@2.x.x: hoek "2.x.x" bootstrap-sass@^3.3.6: - version "3.3.6" - resolved "https://registry.yarnpkg.com/bootstrap-sass/-/bootstrap-sass-3.3.6.tgz#363b0d300e868d3e70134c1a742bb17288444fd1" + version "3.3.7" + resolved "https://registry.yarnpkg.com/bootstrap-sass/-/bootstrap-sass-3.3.7.tgz#6596c7ab40f6637393323ab0bc80d064fc630498" brace-expansion@^1.0.0: version "1.1.6" @@ -910,8 +910,8 @@ braces@^1.8.2: repeat-element "^1.1.2" brorand@^1.0.1: - version "1.0.7" - resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.0.7.tgz#6677fa5e4901bdbf9c9ec2a748e28dca407a9bfc" + version "1.1.0" + resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" browserify-aes@^1.0.0, browserify-aes@^1.0.4: version "1.0.6" @@ -1022,6 +1022,10 @@ caseless@~0.11.0: version "0.11.0" resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.11.0.tgz#715b96ea9841593cc33067923f5ec60ebda4f7d7" +caseless@~0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" + center-align@^0.1.1: version "0.1.3" resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad" @@ -1145,10 +1149,10 @@ component-inherit@0.0.3: resolved "https://registry.yarnpkg.com/component-inherit/-/component-inherit-0.0.3.tgz#645fc4adf58b72b649d5cae65135619db26ff143" compressible@~2.0.8: - version "2.0.9" - resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.9.tgz#6daab4e2b599c2770dd9e21e7a891b1c5a755425" + version "2.0.10" + resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.10.tgz#feda1c7f7617912732b29bf8cf26252a20b9eecd" dependencies: - mime-db ">= 1.24.0 < 2" + mime-db ">= 1.27.0 < 2" compression-webpack-plugin@^0.3.2: version "0.3.2" @@ -1182,7 +1186,7 @@ concat-stream@1.5.0: readable-stream "~2.0.0" typedarray "~0.0.5" -concat-stream@^1.4.6: +concat-stream@^1.5.2: version "1.6.0" resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.0.tgz#0aac662fd52be78964d5532f694784e70110acf7" dependencies: @@ -1194,12 +1198,12 @@ connect-history-api-fallback@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.3.0.tgz#e51d17f8f0ef0db90a64fdb47de3051556e9f169" -connect@^3.3.5: - version "3.5.0" - resolved "https://registry.yarnpkg.com/connect/-/connect-3.5.0.tgz#b357525a0b4c1f50599cd983e1d9efeea9677198" +connect@^3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/connect/-/connect-3.6.0.tgz#f09a4f7dcd17324b663b725c815bdb1c4158a46e" dependencies: - debug "~2.2.0" - finalhandler "0.5.0" + debug "2.6.1" + finalhandler "1.0.0" parseurl "~1.3.1" utils-merge "1.0.0" @@ -1230,8 +1234,8 @@ content-type@~1.0.2: resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.2.tgz#b7d113aee7a8dd27bd21133c4dc2529df1721eed" convert-source-map@^1.1.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.3.0.tgz#e9f3e9c6e2728efc2676696a70eb382f73106a67" + version "1.4.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.4.0.tgz#e3dad195bf61bfe13a7a3c73e9876ec14a0268f3" cookie-signature@1.0.6: version "1.0.6" @@ -1293,19 +1297,23 @@ crypto-browserify@^3.11.0: public-encrypt "^4.0.0" randombytes "^2.0.0" +custom-event-polyfill@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/custom-event-polyfill/-/custom-event-polyfill-0.3.0.tgz#99807839be62edb446b645832e0d80ead6fa1888" + custom-event@~1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/custom-event/-/custom-event-1.0.1.tgz#5d02a46850adf1b4a317946a3928fccb5bfd0425" d3@^3.5.11: - version "3.5.11" - resolved "https://registry.yarnpkg.com/d3/-/d3-3.5.11.tgz#d130750eed0554db70e8432102f920a12407b69c" + version "3.5.17" + resolved "https://registry.yarnpkg.com/d3/-/d3-3.5.17.tgz#bc46748004378b21a360c9fc7cf5231790762fb8" -d@^0.1.1, d@~0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/d/-/d-0.1.1.tgz#da184c535d18d8ee7ba2aa229b914009fae11309" +d@1: + version "1.0.0" + resolved "https://registry.yarnpkg.com/d/-/d-1.0.0.tgz#754bb5bfe55451da69a58b94d45f4c5b0462d58f" dependencies: - es5-ext "~0.10.2" + es5-ext "^0.10.9" dashdash@^1.12.0: version "1.14.1" @@ -1333,9 +1341,15 @@ debug@2.3.3: dependencies: ms "0.7.2" -debug@2.6.0, debug@^2.1.1, debug@^2.2.0: - version "2.6.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.0.tgz#bc596bcabe7617f11d9fa15361eded5608b8499b" +debug@2.6.1: + version "2.6.1" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.1.tgz#79855090ba2c4e3115cc7d8769491d58f0491351" + dependencies: + ms "0.7.2" + +debug@2.6.3, debug@^2.1.1, debug@^2.2.0: + version "2.6.3" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.3.tgz#0f7eb8c30965ec08c72accfa0130c8b79984141d" dependencies: ms "0.7.2" @@ -1383,7 +1397,7 @@ delegates@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" -depd@~1.1.0: +depd@1.1.0, depd@~1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.0.tgz#e1bd82c6aab6ced965b97b88b17ed3e528ca18c3" @@ -1416,16 +1430,23 @@ diffie-hellman@^5.0.0: miller-rabin "^4.0.0" randombytes "^2.0.0" -doctrine@1.5.0, doctrine@^1.2.2: +doctrine@1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa" dependencies: esutils "^2.0.2" isarray "^1.0.0" +doctrine@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.0.0.tgz#c73d8d2909d22291e1a007a395804da8b665fe63" + dependencies: + esutils "^2.0.2" + isarray "^1.0.0" + document-register-element@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/document-register-element/-/document-register-element-1.3.0.tgz#fb3babb523c74662be47be19c6bc33e71990d940" + version "1.4.1" + resolved "https://registry.yarnpkg.com/document-register-element/-/document-register-element-1.4.1.tgz#22b41e96fb86cccab2fa30f7d2a8d62ac7be8c57" dom-serialize@^2.2.0: version "2.2.1" @@ -1440,9 +1461,14 @@ domain-browser@^1.1.1: version "1.1.7" resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.1.7.tgz#867aa4b093faa05f1de08c06f4d7b21fdf8698bc" +"droplab@file:../../../DropLab": + version "0.1.1" + dependencies: + custom-event-polyfill "^0.3.0" + dropzone@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/dropzone/-/dropzone-4.2.0.tgz#fbe7acbb9918e0706489072ef663effeef8a79f3" + version "4.3.0" + resolved "https://registry.yarnpkg.com/dropzone/-/dropzone-4.3.0.tgz#48b0b8f2ad092872e4b535b672a7c3f1a1d67c91" duplexer@^0.1.1: version "0.1.1" @@ -1463,13 +1489,16 @@ ejs@^2.5.5: resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.5.6.tgz#479636bfa3fe3b1debd52087f0acb204b4f19c88" elliptic@^6.0.0: - version "6.3.3" - resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.3.3.tgz#5482d9646d54bcb89fd7d994fc9e2e9568876e3f" + version "6.4.0" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.4.0.tgz#cac9af8762c85836187003c8dfe193e5e2eae5df" dependencies: bn.js "^4.4.0" brorand "^1.0.1" hash.js "^1.0.0" + hmac-drbg "^1.0.0" inherits "^2.0.1" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.0" emoji-unicode-version@^0.2.1: version "0.2.1" @@ -1483,9 +1512,9 @@ encodeurl@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.1.tgz#79e3d58655346909fe6f0f45a5de68103b294d20" -engine.io-client@1.8.2: - version "1.8.2" - resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-1.8.2.tgz#c38767547f2a7d184f5752f6f0ad501006703766" +engine.io-client@1.8.3: + version "1.8.3" + resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-1.8.3.tgz#1798ed93451246453d4c6f635d7a201fe940d5ab" dependencies: component-emitter "1.2.1" component-inherit "0.0.3" @@ -1496,7 +1525,7 @@ engine.io-client@1.8.2: parsejson "0.0.3" parseqs "0.0.5" parseuri "0.0.5" - ws "1.1.1" + ws "1.1.2" xmlhttprequest-ssl "1.5.3" yeast "0.1.2" @@ -1511,16 +1540,16 @@ engine.io-parser@1.3.2: has-binary "0.1.7" wtf-8 "1.0.0" -engine.io@1.8.2: - version "1.8.2" - resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-1.8.2.tgz#6b59be730b348c0125b0a4589de1c355abcf7a7e" +engine.io@1.8.3: + version "1.8.3" + resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-1.8.3.tgz#8de7f97895d20d39b85f88eeee777b2bd42b13d4" dependencies: accepts "1.3.3" base64id "1.0.0" cookie "0.3.1" debug "2.3.3" engine.io-parser "1.3.2" - ws "1.1.1" + ws "1.1.2" enhanced-resolve@^3.0.0: version "3.1.0" @@ -1550,66 +1579,66 @@ errno@^0.1.3: prr "~0.0.0" error-ex@^1.2.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.0.tgz#e67b43f3e82c96ea3a584ffee0b9fc3325d802d9" + version "1.3.1" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.1.tgz#f855a86ce61adc4e8621c3cda21e7a7612c3a8dc" dependencies: is-arrayish "^0.2.1" -es5-ext@^0.10.7, es5-ext@^0.10.8, es5-ext@~0.10.11, es5-ext@~0.10.2, es5-ext@~0.10.7: - version "0.10.12" - resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.12.tgz#aa84641d4db76b62abba5e45fd805ecbab140047" +es5-ext@^0.10.14, es5-ext@^0.10.9, es5-ext@~0.10.14: + version "0.10.15" + resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.15.tgz#c330a5934c1ee21284a7c081a86e5fd937c91ea6" dependencies: es6-iterator "2" es6-symbol "~3.1" -es6-iterator@2: - version "2.0.0" - resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.0.tgz#bd968567d61635e33c0b80727613c9cb4b096bac" +es6-iterator@2, es6-iterator@^2.0.1, es6-iterator@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.1.tgz#8e319c9f0453bf575d374940a655920e59ca5512" dependencies: - d "^0.1.1" - es5-ext "^0.10.7" - es6-symbol "3" + d "1" + es5-ext "^0.10.14" + es6-symbol "^3.1" es6-map@^0.1.3: - version "0.1.4" - resolved "https://registry.yarnpkg.com/es6-map/-/es6-map-0.1.4.tgz#a34b147be224773a4d7da8072794cefa3632b897" + version "0.1.5" + resolved "https://registry.yarnpkg.com/es6-map/-/es6-map-0.1.5.tgz#9136e0503dcc06a301690f0bb14ff4e364e949f0" dependencies: - d "~0.1.1" - es5-ext "~0.10.11" - es6-iterator "2" - es6-set "~0.1.3" - es6-symbol "~3.1.0" - event-emitter "~0.3.4" + d "1" + es5-ext "~0.10.14" + es6-iterator "~2.0.1" + es6-set "~0.1.5" + es6-symbol "~3.1.1" + event-emitter "~0.3.5" es6-promise@~4.0.3: version "4.0.5" resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.0.5.tgz#7882f30adde5b240ccfa7f7d78c548330951ae42" -es6-set@~0.1.3: - version "0.1.4" - resolved "https://registry.yarnpkg.com/es6-set/-/es6-set-0.1.4.tgz#9516b6761c2964b92ff479456233a247dc707ce8" +es6-set@~0.1.5: + version "0.1.5" + resolved "https://registry.yarnpkg.com/es6-set/-/es6-set-0.1.5.tgz#d2b3ec5d4d800ced818db538d28974db0a73ccb1" dependencies: - d "~0.1.1" - es5-ext "~0.10.11" - es6-iterator "2" - es6-symbol "3" - event-emitter "~0.3.4" + d "1" + es5-ext "~0.10.14" + es6-iterator "~2.0.1" + es6-symbol "3.1.1" + event-emitter "~0.3.5" -es6-symbol@3, es6-symbol@~3.1, es6-symbol@~3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.0.tgz#94481c655e7a7cad82eba832d97d5433496d7ffa" +es6-symbol@3.1.1, es6-symbol@^3.1, es6-symbol@^3.1.1, es6-symbol@~3.1, es6-symbol@~3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.1.tgz#bf00ef4fdab6ba1b46ecb7b629b4c7ed5715cc77" dependencies: - d "~0.1.1" - es5-ext "~0.10.11" + d "1" + es5-ext "~0.10.14" es6-weak-map@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.1.tgz#0d2bbd8827eb5fb4ba8f97fbfea50d43db21ea81" + version "2.0.2" + resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.2.tgz#5e3ab32251ffd1538a1f8e5ffa1357772f92d96f" dependencies: - d "^0.1.1" - es5-ext "^0.10.8" - es6-iterator "2" - es6-symbol "3" + d "1" + es5-ext "^0.10.14" + es6-iterator "^2.0.1" + es6-symbol "^3.1.1" escape-html@~1.0.3: version "1.0.3" @@ -1702,16 +1731,17 @@ eslint-plugin-jasmine@^2.1.0: resolved "https://registry.yarnpkg.com/eslint-plugin-jasmine/-/eslint-plugin-jasmine-2.2.0.tgz#7135879383c39a667c721d302b9f20f0389543de" eslint@^3.10.1: - version "3.15.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-3.15.0.tgz#bdcc6a6c5ffe08160e7b93c066695362a91e30f2" + version "3.18.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-3.18.0.tgz#647e985c4ae71502d20ac62c109f66d5104c8a4b" dependencies: babel-code-frame "^6.16.0" chalk "^1.1.3" - concat-stream "^1.4.6" + concat-stream "^1.5.2" debug "^2.1.1" - doctrine "^1.2.2" + doctrine "^2.0.0" escope "^3.6.0" espree "^3.4.0" + esquery "^1.0.0" estraverse "^4.2.0" esutils "^2.0.2" file-entry-cache "^2.0.0" @@ -1755,6 +1785,12 @@ esprima@^3.1.1: version "3.1.3" resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" +esquery@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.0.tgz#cfba8b57d7fba93f17298a8a006a04cda13d80fa" + dependencies: + estraverse "^4.0.0" + esrecurse@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.1.0.tgz#4713b6536adf7f2ac4f327d559e7756bff648220" @@ -1766,7 +1802,7 @@ estraverse@^1.9.1: version "1.9.3" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-1.9.3.tgz#af67f2dc922582415950926091a4005d29c9bb44" -estraverse@^4.1.1, estraverse@^4.2.0: +estraverse@^4.0.0, estraverse@^4.1.1, estraverse@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" @@ -1778,20 +1814,20 @@ esutils@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" -etag@~1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/etag/-/etag-1.7.0.tgz#03d30b5f67dd6e632d2945d30d6652731a34d5d8" +etag@~1.8.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.0.tgz#6f631aef336d6c46362b51764044ce216be3c051" eve-raphael@0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/eve-raphael/-/eve-raphael-0.5.0.tgz#17c754b792beef3fa6684d79cf5a47c63c4cda30" -event-emitter@~0.3.4: - version "0.3.4" - resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.4.tgz#8d63ddfb4cfe1fae3b32ca265c4c720222080bb5" +event-emitter@~0.3.5: + version "0.3.5" + resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39" dependencies: - d "~0.1.1" - es5-ext "~0.10.7" + d "1" + es5-ext "~0.10.14" eventemitter3@1.x.x: version "1.2.0" @@ -1801,7 +1837,7 @@ events@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924" -eventsource@~0.1.6: +eventsource@0.1.6: version "0.1.6" resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-0.1.6.tgz#0acede849ed7dd1ccc32c811bb11b944d4f29232" dependencies: @@ -1845,8 +1881,8 @@ expand-range@^1.8.1: fill-range "^2.1.0" express@^4.13.3, express@^4.14.1: - version "4.14.1" - resolved "https://registry.yarnpkg.com/express/-/express-4.14.1.tgz#646c237f766f148c2120aff073817b9e4d7e0d33" + version "4.15.2" + resolved "https://registry.yarnpkg.com/express/-/express-4.15.2.tgz#af107fc148504457f2dca9a6f2571d7129b97b35" dependencies: accepts "~1.3.3" array-flatten "1.1.1" @@ -1854,23 +1890,25 @@ express@^4.13.3, express@^4.14.1: content-type "~1.0.2" cookie "0.3.1" cookie-signature "1.0.6" - debug "~2.2.0" + debug "2.6.1" depd "~1.1.0" encodeurl "~1.0.1" escape-html "~1.0.3" - etag "~1.7.0" - finalhandler "0.5.1" - fresh "0.3.0" + etag "~1.8.0" + finalhandler "~1.0.0" + fresh "0.5.0" merge-descriptors "1.0.1" methods "~1.1.2" on-finished "~2.3.0" parseurl "~1.3.1" path-to-regexp "0.1.7" proxy-addr "~1.1.3" - qs "6.2.0" + qs "6.4.0" range-parser "~1.2.0" - send "0.14.2" - serve-static "~1.11.2" + send "0.15.1" + serve-static "1.12.1" + setprototypeof "1.0.3" + statuses "~1.3.1" type-is "~1.6.14" utils-merge "1.0.0" vary "~1.1.0" @@ -1946,8 +1984,8 @@ fileset@^2.0.2: minimatch "^3.0.3" filesize@^3.5.4: - version "3.5.4" - resolved "https://registry.yarnpkg.com/filesize/-/filesize-3.5.4.tgz#742fc7fb6aef4ee3878682600c22f840731e1fda" + version "3.5.6" + resolved "https://registry.yarnpkg.com/filesize/-/filesize-3.5.6.tgz#5fd98f3eac94ec9516ef8ed5782fad84a01a0a1a" fill-range@^2.1.0: version "2.2.3" @@ -1959,23 +1997,27 @@ fill-range@^2.1.0: repeat-element "^1.1.2" repeat-string "^1.5.2" -finalhandler@0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-0.5.0.tgz#e9508abece9b6dba871a6942a1d7911b91911ac7" +finalhandler@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.0.0.tgz#b5691c2c0912092f18ac23e9416bde5cd7dc6755" dependencies: - debug "~2.2.0" + debug "2.6.1" + encodeurl "~1.0.1" escape-html "~1.0.3" on-finished "~2.3.0" - statuses "~1.3.0" + parseurl "~1.3.1" + statuses "~1.3.1" unpipe "~1.0.0" -finalhandler@0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-0.5.1.tgz#2c400d8d4530935bc232549c5fa385ec07de6fcd" +finalhandler@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.0.1.tgz#bcd15d1689c0e5ed729b6f7f541a6df984117db8" dependencies: - debug "~2.2.0" + debug "2.6.3" + encodeurl "~1.0.1" escape-html "~1.0.3" on-finished "~2.3.0" + parseurl "~1.3.1" statuses "~1.3.1" unpipe "~1.0.0" @@ -2013,15 +2055,15 @@ flat-cache@^1.2.1: graceful-fs "^4.1.2" write "^0.2.1" -for-in@^0.1.5: - version "0.1.6" - resolved "https://registry.yarnpkg.com/for-in/-/for-in-0.1.6.tgz#c9f96e89bfad18a545af5ec3ed352a1d9e5b4dc8" +for-in@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" for-own@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.4.tgz#0149b41a39088c7515f51ebe1c1386d45f935072" + version "0.1.5" + resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" dependencies: - for-in "^0.1.5" + for-in "^1.0.1" forever-agent@~0.6.1: version "0.6.1" @@ -2039,9 +2081,9 @@ forwarded@~0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.0.tgz#19ef9874c4ae1c297bcf078fde63a09b66a84363" -fresh@0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.3.0.tgz#651f838e22424e7566de161d8358caa199f83d4f" +fresh@0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.0.tgz#f474ca5e6a9246d6fd8e0953cfa9b9c805afa78e" fs-extra@~1.0.0: version "1.0.0" @@ -2056,13 +2098,13 @@ fs.realpath@^1.0.0: resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" fsevents@^1.0.0: - version "1.0.17" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.0.17.tgz#8537f3f12272678765b4fd6528c0f1f66f8f4558" + version "1.1.1" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.1.1.tgz#f19fd28f43eeaf761680e519a203c4d0b3d31aff" dependencies: nan "^2.3.0" node-pre-gyp "^0.6.29" -fstream-ignore@~1.0.5: +fstream-ignore@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/fstream-ignore/-/fstream-ignore-1.0.5.tgz#9c31dae34767018fe1d249b24dada67d092da105" dependencies: @@ -2070,9 +2112,9 @@ fstream-ignore@~1.0.5: inherits "2" minimatch "^3.0.0" -fstream@^1.0.0, fstream@^1.0.2, fstream@~1.0.10: - version "1.0.10" - resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.10.tgz#604e8a92fe26ffd9f6fae30399d4984e1ab22822" +fstream@^1.0.0, fstream@^1.0.10, fstream@^1.0.2: + version "1.0.11" + resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.11.tgz#5c1fb1f117477114f0632a0eb4b71b3cb0fd3171" dependencies: graceful-fs "^4.1.2" inherits "~2.0.0" @@ -2084,8 +2126,8 @@ function-bind@^1.0.2: resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.0.tgz#16176714c801798e4e8f2cf7f7529467bb4a5771" gauge@~2.7.1: - version "2.7.2" - resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.2.tgz#15cecc31b02d05345a5d6b0e171cdb3ad2307774" + version "2.7.3" + resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.3.tgz#1c23855f962f17b3ad3d0dc7443f304542edfe09" dependencies: aproba "^1.0.3" console-control-strings "^1.0.0" @@ -2094,7 +2136,6 @@ gauge@~2.7.1: signal-exit "^3.0.0" string-width "^1.0.1" strip-ansi "^3.0.1" - supports-color "^0.2.0" wide-align "^1.1.0" generate-function@^2.0.0: @@ -2152,8 +2193,8 @@ glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.1: path-is-absolute "^1.0.0" globals@^9.0.0, globals@^9.14.0: - version "9.14.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-9.14.0.tgz#8859936af0038741263053b39d0e76ca241e4034" + version "9.17.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-9.17.0.tgz#0c0ca696d9b9bb694d2e5470bd37777caad50286" globby@^5.0.0: version "5.0.0" @@ -2194,6 +2235,10 @@ handlebars@^4.0.1, handlebars@^4.0.3: optionalDependencies: uglify-js "^2.6" +har-schema@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-1.0.5.tgz#d263135f43307c02c602afc8fe95970c0151369e" + har-validator@~2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-2.0.6.tgz#cdcbc08188265ad119b6a5a7c8ab70eecfb5d27d" @@ -2203,6 +2248,13 @@ har-validator@~2.0.6: is-my-json-valid "^2.12.4" pinkie-promise "^2.0.0" +har-validator@~4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-4.2.1.tgz#33481d0f1bbff600dd203d75812a6a5fba002e2a" + dependencies: + ajv "^4.9.1" + har-schema "^1.0.5" + has-ansi@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" @@ -2233,7 +2285,7 @@ has@^1.0.1: dependencies: function-bind "^1.0.2" -hash.js@^1.0.0: +hash.js@^1.0.0, hash.js@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.0.3.tgz#1332ff00156c0a0ffdd8236013d07b77a0451573" dependencies: @@ -2255,6 +2307,14 @@ hawk@~3.1.3: hoek "2.x.x" sntp "1.x.x" +hmac-drbg@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.0.tgz#3db471f45aae4a994a0688322171f51b8b91bee5" + dependencies: + hash.js "^1.0.3" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.1" + hoek@2.x.x: version "2.16.3" resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed" @@ -2267,8 +2327,8 @@ home-or-tmp@^2.0.0: os-tmpdir "^1.0.1" hosted-git-info@^2.1.4: - version "2.2.0" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.2.0.tgz#7a0d097863d886c0fabbdcd37bf1758d8becf8a5" + version "2.4.1" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.4.1.tgz#4b0445e41c004a8bd1337773a4ff790ca40318c8" hpack.js@^2.1.6: version "2.1.6" @@ -2287,7 +2347,7 @@ http-deceiver@^1.2.4: version "1.2.7" resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" -http-errors@~1.5.0, http-errors@~1.5.1: +http-errors@~1.5.0: version "1.5.1" resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.5.1.tgz#788c0d2c1de2c81b9e6e8c01843b6b97eb920750" dependencies: @@ -2295,9 +2355,18 @@ http-errors@~1.5.0, http-errors@~1.5.1: setprototypeof "1.0.2" statuses ">= 1.3.1 < 2" -http-proxy-middleware@~0.17.1: - version "0.17.3" - resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.17.3.tgz#940382147149b856084f5534752d5b5a8168cd1d" +http-errors@~1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.1.tgz#5f8b8ed98aca545656bf572997387f904a722257" + dependencies: + depd "1.1.0" + inherits "2.0.3" + setprototypeof "1.0.3" + statuses ">= 1.3.1 < 2" + +http-proxy-middleware@~0.17.4: + version "0.17.4" + resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.17.4.tgz#642e8848851d66f09d4f124912846dbaeb41b833" dependencies: http-proxy "^1.16.2" is-glob "^3.1.0" @@ -2332,8 +2401,8 @@ ieee754@^1.1.4: resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.8.tgz#be33d40ac10ef1926701f6f08a2d86fbfd1ad3e4" ignore@^3.2.0: - version "3.2.2" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.2.2.tgz#1c51e1ef53bab6ddc15db4d9ac4ec139eceb3410" + version "3.2.6" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.2.6.tgz#26e8da0644be0bb4cb39516f6c79f0e0f4ffe48c" imurmurhash@^0.1.4: version "0.1.4" @@ -2394,9 +2463,9 @@ invert-kv@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" -ipaddr.js@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.2.0.tgz#8aba49c9192799585bdd643e0ccb50e8ae777ba4" +ipaddr.js@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.3.0.tgz#1e03a52fdad83a8bbb2b25cbf4998b4cffcd3dec" is-absolute@^0.2.3: version "0.2.6" @@ -2416,8 +2485,8 @@ is-binary-path@^1.0.0: binary-extensions "^1.0.0" is-buffer@^1.0.2: - version "1.1.4" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.4.tgz#cfc86ccd5dc5a52fa80489111c6920c457e2d98b" + version "1.1.5" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.5.tgz#1f3b26ef613b214b88cbca23cc6c01d87961eecc" is-builtin-module@^1.0.0: version "1.0.0" @@ -2476,8 +2545,8 @@ is-glob@^3.1.0: is-extglob "^2.1.0" is-my-json-valid@^2.10.0, is-my-json-valid@^2.12.4: - version "2.15.0" - resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.15.0.tgz#936edda3ca3c211fd98f3b2d3e08da43f7b2915b" + version "2.16.0" + resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.16.0.tgz#f079dd9bfdae65ee2038aae8acbc86ab109e3693" dependencies: generate-function "^2.0.0" generate-object-property "^1.1.0" @@ -2568,9 +2637,9 @@ isbinaryfile@^3.0.0: version "3.0.2" resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-3.0.2.tgz#4a3e974ec0cba9004d3fc6cde7209ea69368a621" -isexe@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-1.1.2.tgz#36f3e22e60750920f5e7241a476a8c6a42275ad0" +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" isobject@^2.0.0: version "2.1.0" @@ -2583,14 +2652,14 @@ isstream@~0.1.2: resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" istanbul-api@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/istanbul-api/-/istanbul-api-1.1.1.tgz#d36e2f1560d1a43ce304c4ff7338182de61c8f73" + version "1.1.6" + resolved "https://registry.yarnpkg.com/istanbul-api/-/istanbul-api-1.1.6.tgz#23aa5b5b9b1b3bdbb786f039160e91acbe495433" dependencies: async "^2.1.4" fileset "^2.0.2" istanbul-lib-coverage "^1.0.0" - istanbul-lib-hook "^1.0.0" - istanbul-lib-instrument "^1.3.0" + istanbul-lib-hook "^1.0.4" + istanbul-lib-instrument "^1.6.2" istanbul-lib-report "^1.0.0-alpha.3" istanbul-lib-source-maps "^1.1.0" istanbul-reports "^1.0.0" @@ -2602,15 +2671,15 @@ istanbul-lib-coverage@^1.0.0, istanbul-lib-coverage@^1.0.0-alpha, istanbul-lib-c version "1.0.1" resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-1.0.1.tgz#f263efb519c051c5f1f3343034fc40e7b43ff212" -istanbul-lib-hook@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-1.0.0.tgz#fc5367ee27f59268e8f060b0c7aaf051d9c425c5" +istanbul-lib-hook@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-1.0.4.tgz#1919debbc195807880041971caf9c7e2be2144d6" dependencies: append-transform "^0.4.0" -istanbul-lib-instrument@^1.3.0, istanbul-lib-instrument@^1.4.2: - version "1.4.2" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-1.4.2.tgz#0e2fdfac93c1dabf2e31578637dc78a19089f43e" +istanbul-lib-instrument@^1.6.2: + version "1.6.2" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-1.6.2.tgz#dac644f358f51efd6113536d7070959a0111f73b" dependencies: babel-generator "^6.18.0" babel-template "^6.16.0" @@ -2680,14 +2749,14 @@ jodid25519@^1.0.0: jsbn "~0.1.0" jquery-ujs@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/jquery-ujs/-/jquery-ujs-1.2.1.tgz#6ee75b1ef4e9ac95e7124f8d71f7d351f5548e92" + version "1.2.2" + resolved "https://registry.yarnpkg.com/jquery-ujs/-/jquery-ujs-1.2.2.tgz#6a8ef1020e6b6dda385b90a4bddc128c21c56397" dependencies: jquery ">=1.8.0" jquery@>=1.8.0, jquery@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/jquery/-/jquery-2.2.1.tgz#3c3e16854ad3d2ac44ac65021b17426d22ad803f" + version "2.2.4" + resolved "https://registry.yarnpkg.com/jquery/-/jquery-2.2.4.tgz#2c89d6889b5eac522a7eea32c14521559c6cbf02" js-cookie@^2.1.3: version "2.1.3" @@ -2698,15 +2767,15 @@ js-tokens@^3.0.0: resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.1.tgz#08e9f132484a2c45a30907e9dc4d5567b7f114d7" js-yaml@3.x, js-yaml@^3.5.1, js-yaml@^3.7.0: - version "3.8.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.8.1.tgz#782ba50200be7b9e5a8537001b7804db3ad02628" + version "3.8.2" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.8.2.tgz#02d3e2c0f6beab20248d412c352203827d786721" dependencies: argparse "^1.0.7" esprima "^3.1.1" jsbn@~0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.0.tgz#650987da0dd74f4ebf5a11377a2aa2d273e97dfd" + version "0.1.1" + resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" jsesc@^1.3.0: version "1.3.0" @@ -2757,16 +2826,17 @@ jsonpointer@^4.0.0: resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-4.0.1.tgz#4fd92cb34e0e9db3c89c8622ecf51f9b978c6cb9" jsprim@^1.2.2: - version "1.3.1" - resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.3.1.tgz#2a7256f70412a29ee3670aaca625994c4dcff252" + version "1.4.0" + resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.0.tgz#a3b87e40298d8c380552d8cc7628a0bb95a22918" dependencies: + assert-plus "1.0.0" extsprintf "1.0.2" json-schema "0.2.3" verror "1.3.6" karma-coverage-istanbul-reporter@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/karma-coverage-istanbul-reporter/-/karma-coverage-istanbul-reporter-0.2.0.tgz#5766263338adeb0026f7e4ac7a89a5f056c5642c" + version "0.2.3" + resolved "https://registry.yarnpkg.com/karma-coverage-istanbul-reporter/-/karma-coverage-istanbul-reporter-0.2.3.tgz#11f1be9cfa93755a77bac39ab16e315a7100b5c5" dependencies: istanbul-api "^1.1.1" @@ -2775,14 +2845,14 @@ karma-jasmine@^1.1.0: resolved "https://registry.yarnpkg.com/karma-jasmine/-/karma-jasmine-1.1.0.tgz#22e4c06bf9a182e5294d1f705e3733811b810acf" karma-mocha-reporter@^2.2.2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/karma-mocha-reporter/-/karma-mocha-reporter-2.2.2.tgz#876de9a287244e54a608591732a98e66611f6abe" + version "2.2.3" + resolved "https://registry.yarnpkg.com/karma-mocha-reporter/-/karma-mocha-reporter-2.2.3.tgz#04fdda45a1d9697a73871c7472223c581701ab20" dependencies: chalk "1.1.3" karma-phantomjs-launcher@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/karma-phantomjs-launcher/-/karma-phantomjs-launcher-1.0.2.tgz#19e1041498fd75563ed86730a22c1fe579fa8fb1" + version "1.0.4" + resolved "https://registry.yarnpkg.com/karma-phantomjs-launcher/-/karma-phantomjs-launcher-1.0.4.tgz#d23ca34801bda9863ad318e3bb4bd4062b13acd2" dependencies: lodash "^4.0.1" phantomjs-prebuilt "^2.1.7" @@ -2794,8 +2864,8 @@ karma-sourcemap-loader@^0.3.7: graceful-fs "^4.1.2" karma-webpack@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/karma-webpack/-/karma-webpack-2.0.2.tgz#bd38350af5645c9644090770939ebe7ce726f864" + version "2.0.3" + resolved "https://registry.yarnpkg.com/karma-webpack/-/karma-webpack-2.0.3.tgz#39cebf5ca2580139b27f9ae69b78816b9c82fae6" dependencies: async "~0.9.0" loader-utils "^0.2.5" @@ -2804,15 +2874,15 @@ karma-webpack@^2.0.2: webpack-dev-middleware "^1.0.11" karma@^1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/karma/-/karma-1.4.1.tgz#41981a71d54237606b0a3ea8c58c90773f41650e" + version "1.5.0" + resolved "https://registry.yarnpkg.com/karma/-/karma-1.5.0.tgz#9c4c14f0400bef2c04c8e8e6bff59371025cc009" dependencies: bluebird "^3.3.0" - body-parser "^1.12.4" + body-parser "^1.16.1" chokidar "^1.4.1" colors "^1.1.0" combine-lists "^1.0.0" - connect "^3.3.5" + connect "^3.6.0" core-js "^2.2.0" di "^0.0.1" dom-serialize "^2.2.0" @@ -2828,12 +2898,12 @@ karma@^1.4.1: optimist "^0.6.1" qjobs "^1.1.4" range-parser "^1.2.0" - rimraf "^2.3.3" + rimraf "^2.6.0" safe-buffer "^5.0.1" - socket.io "1.7.2" + socket.io "1.7.3" source-map "^0.5.3" - tmp "0.0.28" - useragent "^2.1.10" + tmp "0.0.31" + useragent "^2.1.12" kew@~0.7.0: version "0.7.0" @@ -2882,9 +2952,9 @@ loader-runner@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.3.0.tgz#f482aea82d543e07921700d5a46ef26fdac6b8a2" -loader-utils@^0.2.11, loader-utils@^0.2.16, loader-utils@^0.2.5: - version "0.2.16" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-0.2.16.tgz#f08632066ed8282835dff88dfb52704765adee6d" +loader-utils@^0.2.16, loader-utils@^0.2.5: + version "0.2.17" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-0.2.17.tgz#f86e6374d43205a6e6c60e9196f17c0299bfb348" dependencies: big.js "^3.1.3" emojis-list "^2.0.0" @@ -3038,15 +3108,15 @@ miller-rabin@^4.0.0: bn.js "^4.0.0" brorand "^1.0.1" -"mime-db@>= 1.24.0 < 2", mime-db@~1.26.0: - version "1.26.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.26.0.tgz#eaffcd0e4fc6935cf8134da246e2e6c35305adff" +"mime-db@>= 1.27.0 < 2", mime-db@~1.27.0: + version "1.27.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.27.0.tgz#820f572296bbd20ec25ed55e5b5de869e5436eb1" mime-types@^2.1.12, mime-types@~2.1.11, mime-types@~2.1.13, mime-types@~2.1.7: - version "2.1.14" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.14.tgz#f7ef7d97583fcaf3b7d282b6f8b5679dab1e94ee" + version "2.1.15" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.15.tgz#a4ebf5064094569237b8cf70046776d09fc92aed" dependencies: - mime-db "~1.26.0" + mime-db "~1.27.0" mime@1.3.4, mime@^1.3.4: version "1.3.4" @@ -3056,6 +3126,10 @@ minimalistic-assert@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz#702be2dda6b37f4836bcb3f5db56641b64a1d3d3" +minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" + "minimatch@2 || 3", minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.3.tgz#2a4e4090b96b2db06a9d7df01055a62a77c9b774" @@ -3076,19 +3150,19 @@ mkdirp@0.5.0: dependencies: minimist "0.0.8" -mkdirp@0.5.x, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@~0.5.1: +mkdirp@0.5.x, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0: version "0.5.1" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" dependencies: minimist "0.0.8" moment@2.x: - version "2.17.1" - resolved "https://registry.yarnpkg.com/moment/-/moment-2.17.1.tgz#fed9506063f36b10f066c8b59a144d7faebe1d82" + version "2.18.1" + resolved "https://registry.yarnpkg.com/moment/-/moment-2.18.1.tgz#c36193dd3ce1c2eed2adb7c802dbbc77a81b1c0f" mousetrap@^1.4.6: - version "1.4.6" - resolved "https://registry.yarnpkg.com/mousetrap/-/mousetrap-1.4.6.tgz#eaca72e22e56d5b769b7555873b688c3332e390a" + version "1.6.0" + resolved "https://registry.yarnpkg.com/mousetrap/-/mousetrap-1.6.0.tgz#0168fcabb11d07669e87490324c981208121ac4d" ms@0.7.1: version "0.7.1" @@ -3171,18 +3245,18 @@ node-libs-browser@^2.0.0: vm-browserify "0.0.4" node-pre-gyp@^0.6.29, node-pre-gyp@^0.6.4: - version "0.6.33" - resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.33.tgz#640ac55198f6a925972e0c16c4ac26a034d5ecc9" + version "0.6.34" + resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.34.tgz#94ad1c798a11d7fc67381b50d47f8cc18d9799f7" dependencies: - mkdirp "~0.5.1" - nopt "~3.0.6" - npmlog "^4.0.1" - rc "~1.1.6" - request "^2.79.0" - rimraf "~2.5.4" - semver "~5.3.0" - tar "~2.2.1" - tar-pack "~3.3.0" + mkdirp "^0.5.1" + nopt "^4.0.1" + npmlog "^4.0.2" + rc "^1.1.7" + request "^2.81.0" + rimraf "^2.6.1" + semver "^5.3.0" + tar "^2.2.1" + tar-pack "^3.4.0" node-zopfli@^2.0.0: version "2.0.2" @@ -3193,15 +3267,22 @@ node-zopfli@^2.0.0: nan "^2.0.0" node-pre-gyp "^0.6.4" -nopt@3.x, nopt@~3.0.6: +nopt@3.x: version "3.0.6" resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" dependencies: abbrev "1" +nopt@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" + dependencies: + abbrev "1" + osenv "^0.1.4" + normalize-package-data@^2.3.2: - version "2.3.5" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.3.5.tgz#8d924f142960e1777e7ffe170543631cc7cb02df" + version "2.3.6" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.3.6.tgz#498fa420c96401f787402ba21e600def9f981fff" dependencies: hosted-git-info "^2.1.4" is-builtin-module "^1.0.0" @@ -3212,7 +3293,7 @@ normalize-path@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.0.1.tgz#47886ac1662760d4261b7d979d241709d3ce3f7a" -npmlog@^4.0.1: +npmlog@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.0.2.tgz#d03950e0e78ce1527ba26d2a7592e9348ac3e75f" dependencies: @@ -3262,18 +3343,12 @@ on-headers@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.1.tgz#928f5d0f470d49342651ea6794b0857c100693f7" -once@1.x, once@^1.3.0, once@^1.4.0: +once@1.x, once@^1.3.0, once@^1.3.3, once@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" dependencies: wrappy "1" -once@~1.3.3: - version "1.3.3" - resolved "https://registry.yarnpkg.com/once/-/once-1.3.3.tgz#b2e261557ce4c314ec8304f3fa82663e4297ca20" - dependencies: - wrappy "1" - onetime@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/onetime/-/onetime-1.1.0.tgz#a1f7838f8314c516f05ecefcbc4ccfe04b4ed789" @@ -3331,10 +3406,17 @@ os-locale@^1.4.0: dependencies: lcid "^1.0.0" -os-tmpdir@^1.0.1, os-tmpdir@~1.0.1: +os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" +osenv@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.4.tgz#42fe6d5953df06c8064be6f176c3d05aaaa34644" + dependencies: + os-homedir "^1.0.0" + os-tmpdir "^1.0.0" + p-limit@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.1.0.tgz#b07ff2d9a5d88bec806035895a2bab66a27988bc" @@ -3350,8 +3432,8 @@ pako@~0.2.0: resolved "https://registry.yarnpkg.com/pako/-/pako-0.2.9.tgz#f3f7522f4ef782348da8161bad9ecfd51bf83a75" parse-asn1@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.0.0.tgz#35060f6d5015d37628c770f4e091a0b5a278bc23" + version "5.1.0" + resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.0.tgz#37c4f9b7ed3ab65c74817b5f2480937fbf97c712" dependencies: asn1.js "^4.0.0" browserify-aes "^1.0.0" @@ -3444,6 +3526,10 @@ pend@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" +performance-now@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-0.2.0.tgz#33ef30c5c77d4ea21c5a53869d91b56d8f2555e5" + phantomjs-prebuilt@^2.1.7: version "2.1.14" resolved "https://registry.yarnpkg.com/phantomjs-prebuilt/-/phantomjs-prebuilt-2.1.14.tgz#d53d311fcfb7d1d08ddb24014558f1188c516da0" @@ -3527,11 +3613,11 @@ progress@^1.1.8, progress@~1.1.8: resolved "https://registry.yarnpkg.com/progress/-/progress-1.1.8.tgz#e260c78f6161cdd9b0e56cc3e0a85de17c7a57be" proxy-addr@~1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-1.1.3.tgz#dc97502f5722e888467b3fa2297a7b1ff47df074" + version "1.1.4" + resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-1.1.4.tgz#27e545f6960a44a627d9b44467e35c1b6b4ce2f3" dependencies: forwarded "~0.1.0" - ipaddr.js "1.2.0" + ipaddr.js "1.3.0" prr@~0.0.0: version "0.0.0" @@ -3559,17 +3645,13 @@ qjobs@^1.1.4: version "1.1.5" resolved "https://registry.yarnpkg.com/qjobs/-/qjobs-1.1.5.tgz#659de9f2cf8dcc27a1481276f205377272382e73" -qs@6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.2.0.tgz#3b7848c03c2dece69a9522b0fae8c4126d745f3b" - -qs@6.2.1: - version "6.2.1" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.2.1.tgz#ce03c5ff0935bc1d9d69a9f14cbd18e568d67625" +qs@6.4.0, qs@~6.4.0: + version "6.4.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233" qs@~6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.3.0.tgz#f403b264f23bc01228c74131b407f18d5ea5d442" + version "6.3.2" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.3.2.tgz#e75bd5f6e268122a2a0e0bda630b2550c166502c" querystring-es3@^0.2.0: version "0.2.1" @@ -3616,14 +3698,14 @@ raw-loader@^0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/raw-loader/-/raw-loader-0.5.1.tgz#0c3d0beaed8a01c966d9787bf778281252a979aa" -rc@~1.1.6: - version "1.1.6" - resolved "https://registry.yarnpkg.com/rc/-/rc-1.1.6.tgz#43651b76b6ae53b5c802f1151fa3fc3b059969c9" +rc@^1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/rc/-/rc-1.1.7.tgz#c5ea564bb07aff9fd3a5b32e906c1d3a65940fea" dependencies: deep-extend "~0.4.0" ini "~1.3.0" minimist "^1.2.0" - strip-json-comments "~1.0.4" + strip-json-comments "~2.0.1" read-pkg-up@^1.0.1: version "1.0.1" @@ -3640,9 +3722,9 @@ read-pkg@^1.0.0: normalize-package-data "^2.3.2" path-type "^1.0.0" -"readable-stream@^2.0.0 || ^1.1.13", readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.1.0, readable-stream@^2.2.2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.2.2.tgz#a9e6fec3c7dda85f8bb1b3ba7028604556fc825e" +"readable-stream@^2.0.0 || ^1.1.13", readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.1.0, readable-stream@^2.1.4, readable-stream@^2.2.2: + version "2.2.6" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.2.6.tgz#8b43aed76e71483938d12a8d46c6cf1a00b1f816" dependencies: buffer-shims "^1.0.0" core-util-is "~1.0.0" @@ -3672,18 +3754,6 @@ readable-stream@~2.0.0: string_decoder "~0.10.x" util-deprecate "~1.0.1" -readable-stream@~2.1.4: - version "2.1.5" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.1.5.tgz#66fa8b720e1438b364681f2ad1a63c618448c9d0" - dependencies: - buffer-shims "^1.0.0" - core-util-is "~1.0.0" - inherits "~2.0.1" - isarray "~1.0.0" - process-nextick-args "~1.0.6" - string_decoder "~0.10.x" - util-deprecate "~1.0.1" - readdirp@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78" @@ -3712,8 +3782,8 @@ regenerate@^1.2.1: resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.3.2.tgz#d1941c67bad437e1be76433add5b385f95b19260" regenerator-runtime@^0.10.0: - version "0.10.1" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.1.tgz#257f41961ce44558b18f7814af48c17559f9faeb" + version "0.10.3" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.3.tgz#8c4367a904b51ea62a908ac310bf99ff90a82a3e" regenerator-transform@0.9.8: version "0.9.8" @@ -3772,7 +3842,34 @@ request-progress@~2.0.1: dependencies: throttleit "^1.0.0" -request@^2.79.0, request@~2.79.0: +request@^2.81.0: + version "2.81.0" + resolved "https://registry.yarnpkg.com/request/-/request-2.81.0.tgz#c6928946a0e06c5f8d6f8a9333469ffda46298a0" + dependencies: + aws-sign2 "~0.6.0" + aws4 "^1.2.1" + caseless "~0.12.0" + combined-stream "~1.0.5" + extend "~3.0.0" + forever-agent "~0.6.1" + form-data "~2.1.1" + har-validator "~4.2.1" + hawk "~3.1.3" + http-signature "~1.1.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.7" + oauth-sign "~0.8.1" + performance-now "^0.2.0" + qs "~6.4.0" + safe-buffer "^5.0.1" + stringstream "~0.0.4" + tough-cookie "~2.3.0" + tunnel-agent "^0.6.0" + uuid "^3.0.0" + +request@~2.79.0: version "2.79.0" resolved "https://registry.yarnpkg.com/request/-/request-2.79.0.tgz#4dfe5bf6be8b8cdc37fcf93e04b65577722710de" dependencies: @@ -3825,8 +3922,10 @@ resolve@1.1.x: resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" resolve@^1.1.6, resolve@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.2.0.tgz#9589c3f2f6149d1417a40becc1663db6ec6bc26c" + version "1.3.2" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.3.2.tgz#1f0442c9e0cbb8136e87b9305f932f46c7f28235" + dependencies: + path-parse "^1.0.5" restore-cursor@^1.0.1: version "1.0.1" @@ -3841,9 +3940,9 @@ right-align@^0.1.1: dependencies: align-text "^0.1.1" -rimraf@2, rimraf@^2.2.8, rimraf@^2.3.3, rimraf@^2.4.3, rimraf@^2.4.4, rimraf@~2.5.1, rimraf@~2.5.4: - version "2.5.4" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.5.4.tgz#96800093cbf1a0c86bd95b4625467535c29dfa04" +rimraf@2, rimraf@^2.2.8, rimraf@^2.4.3, rimraf@^2.4.4, rimraf@^2.5.1, rimraf@^2.6.0, rimraf@^2.6.1: + version "2.6.1" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.1.tgz#c2338ec643df7a1b7fe5c54fa86f57428a55f33d" dependencies: glob "^7.0.5" @@ -3873,7 +3972,7 @@ select2@3.5.2-browserify: version "3.5.2-browserify" resolved "https://registry.yarnpkg.com/select2/-/select2-3.5.2-browserify.tgz#dc4dafda38d67a734e8a97a46f0d3529ae05391d" -"semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@~5.3.0: +"semver@2 || 3 || 4 || 5", semver@^5.3.0: version "5.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" @@ -3881,18 +3980,18 @@ semver@~4.3.3: version "4.3.6" resolved "https://registry.yarnpkg.com/semver/-/semver-4.3.6.tgz#300bc6e0e86374f7ba61068b5b1ecd57fc6532da" -send@0.14.2: - version "0.14.2" - resolved "https://registry.yarnpkg.com/send/-/send-0.14.2.tgz#39b0438b3f510be5dc6f667a11f71689368cdeef" +send@0.15.1: + version "0.15.1" + resolved "https://registry.yarnpkg.com/send/-/send-0.15.1.tgz#8a02354c26e6f5cca700065f5f0cdeba90ec7b5f" dependencies: - debug "~2.2.0" + debug "2.6.1" depd "~1.1.0" destroy "~1.0.4" encodeurl "~1.0.1" escape-html "~1.0.3" - etag "~1.7.0" - fresh "0.3.0" - http-errors "~1.5.1" + etag "~1.8.0" + fresh "0.5.0" + http-errors "~1.6.1" mime "1.3.4" ms "0.7.2" on-finished "~2.3.0" @@ -3911,14 +4010,14 @@ serve-index@^1.7.2: mime-types "~2.1.11" parseurl "~1.3.1" -serve-static@~1.11.2: - version "1.11.2" - resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.11.2.tgz#2cf9889bd4435a320cc36895c9aa57bd662e6ac7" +serve-static@1.12.1: + version "1.12.1" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.12.1.tgz#7443a965e3ced647aceb5639fa06bf4d1bbe0039" dependencies: encodeurl "~1.0.1" escape-html "~1.0.3" parseurl "~1.3.1" - send "0.14.2" + send "0.15.1" set-blocking@^2.0.0, set-blocking@~2.0.0: version "2.0.0" @@ -3936,6 +4035,10 @@ setprototypeof@1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.0.2.tgz#81a552141ec104b88e89ce383103ad5c66564d08" +setprototypeof@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.0.3.tgz#66567e37043eeb4f04d91bd658c0cbefb55b8e04" + sha.js@^2.3.6: version "2.4.8" resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.8.tgz#37068c2c476b6baf402d14a49c67f597921f634f" @@ -3943,8 +4046,8 @@ sha.js@^2.3.6: inherits "^2.0.1" shelljs@^0.7.5: - version "0.7.6" - resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.7.6.tgz#379cccfb56b91c8601e4793356eb5382924de9ad" + version "0.7.7" + resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.7.7.tgz#b2f5c77ef97148f4b4f6e22682e10bba8667cff1" dependencies: glob "^7.0.0" interpret "^1.0.0" @@ -3975,15 +4078,15 @@ socket.io-adapter@0.5.0: debug "2.3.3" socket.io-parser "2.3.1" -socket.io-client@1.7.2: - version "1.7.2" - resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-1.7.2.tgz#39fdb0c3dd450e321b7e40cfd83612ec533dd644" +socket.io-client@1.7.3: + version "1.7.3" + resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-1.7.3.tgz#b30e86aa10d5ef3546601c09cde4765e381da377" dependencies: backo2 "1.0.2" component-bind "1.0.0" component-emitter "1.2.1" debug "2.3.3" - engine.io-client "1.8.2" + engine.io-client "1.8.3" has-binary "0.1.7" indexof "0.0.1" object-component "0.0.3" @@ -4000,24 +4103,24 @@ socket.io-parser@2.3.1: isarray "0.0.1" json3 "3.3.2" -socket.io@1.7.2: - version "1.7.2" - resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-1.7.2.tgz#83bbbdf2e79263b378900da403e7843e05dc3b71" +socket.io@1.7.3: + version "1.7.3" + resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-1.7.3.tgz#b8af9caba00949e568e369f1327ea9be9ea2461b" dependencies: debug "2.3.3" - engine.io "1.8.2" + engine.io "1.8.3" has-binary "0.1.7" object-assign "4.1.0" socket.io-adapter "0.5.0" - socket.io-client "1.7.2" + socket.io-client "1.7.3" socket.io-parser "2.3.1" -sockjs-client@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.1.1.tgz#284843e9a9784d7c474b1571b3240fca9dda4bb0" +sockjs-client@1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.1.2.tgz#f0212a8550e4c9468c8cceaeefd2e3493c033ad5" dependencies: debug "^2.2.0" - eventsource "~0.1.6" + eventsource "0.1.6" faye-websocket "~0.11.0" inherits "^2.0.1" json3 "^3.3.2" @@ -4030,15 +4133,19 @@ sockjs@0.3.18: faye-websocket "^0.10.0" uuid "^2.0.2" +source-list-map@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-1.1.1.tgz#1a33ac210ca144d1e561f906ebccab5669ff4cb4" + source-list-map@~0.1.7: version "0.1.8" resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-0.1.8.tgz#c550b2ab5427f6b3f21f5afead88c4f5587b2106" source-map-support@^0.4.2: - version "0.4.11" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.11.tgz#647f939978b38535909530885303daf23279f322" + version "0.4.14" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.14.tgz#9d4463772598b86271b4f523f6c1f4e02a7d6aef" dependencies: - source-map "^0.5.3" + source-map "^0.5.6" source-map@^0.1.41: version "0.1.43" @@ -4052,7 +4159,7 @@ source-map@^0.4.4: dependencies: amdefine ">=0.0.4" -source-map@^0.5.0, source-map@^0.5.3, source-map@~0.5.1, source-map@~0.5.3: +source-map@^0.5.0, source-map@^0.5.3, source-map@^0.5.6, source-map@~0.5.1, source-map@~0.5.3: version "0.5.6" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412" @@ -4101,8 +4208,8 @@ sprintf-js@~1.0.2: resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" sshpk@^1.7.0: - version "1.10.2" - resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.10.2.tgz#d5a804ce22695515638e798dbe23273de070a5fa" + version "1.11.0" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.11.0.tgz#2d8d5ebb4a6fab28ffba37fa62a90f4a3ea59d77" dependencies: asn1 "~0.2.3" assert-plus "^1.0.0" @@ -4119,7 +4226,7 @@ stats-webpack-plugin@^0.4.3: version "0.4.3" resolved "https://registry.yarnpkg.com/stats-webpack-plugin/-/stats-webpack-plugin-0.4.3.tgz#b2f618202f28dd04ab47d7ecf54ab846137b7aea" -"statuses@>= 1.3.1 < 2", statuses@~1.3.0, statuses@~1.3.1: +"statuses@>= 1.3.1 < 2", statuses@~1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.3.1.tgz#faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e" @@ -4179,18 +4286,10 @@ strip-bom@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" -strip-json-comments@~1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-1.0.4.tgz#1e15fbcac97d3ee99bf2d73b4c656b082bbafb91" - strip-json-comments@~2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" -supports-color@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-0.2.0.tgz#d92de2694eb3f67323973d7ae3d8b55b4c22190a" - supports-color@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" @@ -4220,20 +4319,20 @@ tapable@^0.2.5, tapable@~0.2.5: version "0.2.6" resolved "https://registry.yarnpkg.com/tapable/-/tapable-0.2.6.tgz#206be8e188860b514425375e6f1ae89bfb01fd8d" -tar-pack@~3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/tar-pack/-/tar-pack-3.3.0.tgz#30931816418f55afc4d21775afdd6720cee45dae" +tar-pack@^3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/tar-pack/-/tar-pack-3.4.0.tgz#23be2d7f671a8339376cbdb0b8fe3fdebf317984" dependencies: - debug "~2.2.0" - fstream "~1.0.10" - fstream-ignore "~1.0.5" - once "~1.3.3" - readable-stream "~2.1.4" - rimraf "~2.5.1" - tar "~2.2.1" - uid-number "~0.0.6" + debug "^2.2.0" + fstream "^1.0.10" + fstream-ignore "^1.0.5" + once "^1.3.3" + readable-stream "^2.1.4" + rimraf "^2.5.1" + tar "^2.2.1" + uid-number "^0.0.6" -tar@~2.2.1: +tar@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1" dependencies: @@ -4241,9 +4340,9 @@ tar@~2.2.1: fstream "^1.0.2" inherits "2" -test-exclude@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-4.0.0.tgz#0ddc0100b8ae7e88b34eb4fd98a907e961991900" +test-exclude@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-4.0.3.tgz#86a13ce3effcc60e6c90403cf31a27a60ac6c4e7" dependencies: arrify "^1.0.1" micromatch "^2.3.11" @@ -4279,9 +4378,9 @@ timers-browserify@^2.0.2: dependencies: setimmediate "^1.0.4" -tmp@0.0.28, tmp@0.0.x: - version "0.0.28" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.28.tgz#172735b7f614ea7af39664fa84cf0de4e515d120" +tmp@0.0.31, tmp@0.0.x: + version "0.0.31" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.31.tgz#8f38ab9438e17315e5dbd8b3657e8bfb277ae4a7" dependencies: os-tmpdir "~1.0.1" @@ -4319,6 +4418,12 @@ tty-browserify@0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" +tunnel-agent@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" + dependencies: + safe-buffer "^5.0.1" + tunnel-agent@~0.4.1: version "0.4.3" resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.4.3.tgz#6373db76909fe570e08d73583365ed828a74eeeb" @@ -4344,20 +4449,20 @@ typedarray@^0.0.6, typedarray@~0.0.5: version "0.0.6" resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" -uglify-js@^2.6, uglify-js@^2.7.5: - version "2.7.5" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.7.5.tgz#4612c0c7baaee2ba7c487de4904ae122079f2ca8" +uglify-js@^2.6, uglify-js@^2.8.5: + version "2.8.16" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.16.tgz#d286190b6eefc6fd65eb0ecac6551e0b0e8839a4" dependencies: - async "~0.2.6" source-map "~0.5.1" - uglify-to-browserify "~1.0.0" yargs "~3.10.0" + optionalDependencies: + uglify-to-browserify "~1.0.0" uglify-to-browserify@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7" -uid-number@~0.0.6: +uid-number@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81" @@ -4385,8 +4490,8 @@ url-parse@1.0.x: requires-port "1.0.x" url-parse@^1.1.1: - version "1.1.7" - resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.1.7.tgz#025cff999653a459ab34232147d89514cc87d74a" + version "1.1.8" + resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.1.8.tgz#7a65b3a8d57a1e86af6b4e2276e34774167c0156" dependencies: querystringify "0.0.x" requires-port "1.0.x" @@ -4404,7 +4509,7 @@ user-home@^2.0.0: dependencies: os-homedir "^1.0.0" -useragent@^2.1.10: +useragent@^2.1.12: version "2.1.12" resolved "https://registry.yarnpkg.com/useragent/-/useragent-2.1.12.tgz#aa7da6cdc48bdc37ba86790871a7321d64edbaa2" dependencies: @@ -4441,8 +4546,8 @@ validate-npm-package-license@^3.0.1: spdx-expression-parse "~1.0.0" vary@~1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.0.tgz#e1e5affbbd16ae768dd2674394b9ad3022653140" + version "1.1.1" + resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.1.tgz#67535ebb694c1d52257457984665323f587e8d37" verror@1.3.6: version "1.3.6" @@ -4469,12 +4574,12 @@ vue-resource@^0.9.3: resolved "https://registry.yarnpkg.com/vue-resource/-/vue-resource-0.9.3.tgz#ab46e1c44ea219142dcc28ae4043b3b04c80959d" vue@^2.2.4: - version "2.2.4" - resolved "https://registry.yarnpkg.com/vue/-/vue-2.2.4.tgz#d0a3a050a80a12356d7950ae5a7b3131048209cc" + version "2.2.5" + resolved "https://registry.yarnpkg.com/vue/-/vue-2.2.5.tgz#528eba68447d7eff99f86767b31176aa656c6963" -watchpack@^1.2.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.2.1.tgz#01efa80c5c29e5c56ba55d6f5470a35b6402f0b2" +watchpack@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.3.1.tgz#7d8693907b28ce6013e7f3610aa2a1acf07dad87" dependencies: async "^2.1.2" chokidar "^1.4.3" @@ -4487,8 +4592,8 @@ wbuf@^1.1.0, wbuf@^1.4.0: minimalistic-assert "^1.0.0" webpack-bundle-analyzer@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-2.3.0.tgz#0d05e96a43033f7cc57f6855b725782ba61e93a4" + version "2.3.1" + resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-2.3.1.tgz#d97f8aadbcce68fc865c5787741d8549359a25cd" dependencies: acorn "^4.0.11" chalk "^1.1.3" @@ -4502,8 +4607,8 @@ webpack-bundle-analyzer@^2.3.0: opener "^1.4.2" webpack-dev-middleware@^1.0.11, webpack-dev-middleware@^1.9.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-1.10.0.tgz#7d5be2651e692fddfafd8aaed177c16ff51f0eb8" + version "1.10.1" + resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-1.10.1.tgz#c6b4cf428139cf1aefbe06a0c00fdb4f8da2f893" dependencies: memory-fs "~0.4.1" mime "^1.3.4" @@ -4511,8 +4616,8 @@ webpack-dev-middleware@^1.0.11, webpack-dev-middleware@^1.9.0: range-parser "^1.0.3" webpack-dev-server@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-2.3.0.tgz#0437704bbd4d941a6e4c061eb3cc232ed7d06101" + version "2.4.2" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-2.4.2.tgz#cf595d6b40878452b6d2ad7229056b686f8a16be" dependencies: ansi-html "0.0.7" chokidar "^1.6.0" @@ -4520,28 +4625,35 @@ webpack-dev-server@^2.3.0: connect-history-api-fallback "^1.3.0" express "^4.13.3" html-entities "^1.2.0" - http-proxy-middleware "~0.17.1" + http-proxy-middleware "~0.17.4" opn "4.0.2" portfinder "^1.0.9" serve-index "^1.7.2" sockjs "0.3.18" - sockjs-client "1.1.1" + sockjs-client "1.1.2" spdy "^3.4.1" strip-ansi "^3.0.0" supports-color "^3.1.1" webpack-dev-middleware "^1.9.0" yargs "^6.0.0" -webpack-sources@^0.1.0, webpack-sources@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-0.1.4.tgz#ccc2c817e08e5fa393239412690bb481821393cd" +webpack-sources@^0.1.0: + version "0.1.5" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-0.1.5.tgz#aa1f3abf0f0d74db7111c40e500b84f966640750" dependencies: source-list-map "~0.1.7" source-map "~0.5.3" +webpack-sources@^0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-0.2.3.tgz#17c62bfaf13c707f9d02c479e0dcdde8380697fb" + dependencies: + source-list-map "^1.1.1" + source-map "~0.5.3" + webpack@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-2.2.1.tgz#7bb1d72ae2087dd1a4af526afec15eed17dda475" + version "2.3.2" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-2.3.2.tgz#7d521e6f0777a3a58985c69425263fdfe977b458" dependencies: acorn "^4.0.4" acorn-dynamic-import "^2.0.0" @@ -4559,9 +4671,9 @@ webpack@^2.2.1: source-map "^0.5.3" supports-color "^3.1.0" tapable "~0.2.5" - uglify-js "^2.7.5" - watchpack "^1.2.0" - webpack-sources "^0.1.4" + uglify-js "^2.8.5" + watchpack "^1.3.1" + webpack-sources "^0.2.3" yargs "^6.0.0" websocket-driver@>=0.5.1: @@ -4579,10 +4691,10 @@ which-module@^1.0.0: resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f" which@^1.1.1, which@~1.2.10: - version "1.2.12" - resolved "https://registry.yarnpkg.com/which/-/which-1.2.12.tgz#de67b5e450269f194909ef23ece4ebe416fa1192" + version "1.2.14" + resolved "https://registry.yarnpkg.com/which/-/which-1.2.14.tgz#9a87c4378f03e827cecaf1acdf56c736c01c14e5" dependencies: - isexe "^1.1.1" + isexe "^2.0.0" wide-align@^1.1.0: version "1.1.0" @@ -4623,9 +4735,9 @@ write@^0.2.1: dependencies: mkdirp "^0.5.1" -ws@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/ws/-/ws-1.1.1.tgz#082ddb6c641e85d4bb451f03d52f06eabdb1f018" +ws@1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/ws/-/ws-1.1.2.tgz#8a244fa052401e08c9886cf44a85189e1fd4067f" dependencies: options ">=0.0.5" ultron "1.0.x"