From e75bce63a4633c90ae133ae8cfacfefe6ede6e3f Mon Sep 17 00:00:00 2001
From: sunyiteng <sunyiteng@bytedance.com>
Date: Sun, 24 Sep 2023 01:27:21 +0800
Subject: [PATCH] fix: esm import bug

---
 dist/vue-grid-layout.common.js      | 405 +++++++++++++++++++++++-----
 dist/vue-grid-layout.common.js.map  |   2 +-
 dist/vue-grid-layout.umd.js         | 405 +++++++++++++++++++++++-----
 dist/vue-grid-layout.umd.js.map     |   2 +-
 dist/vue-grid-layout.umd.min.js     |   4 +-
 dist/vue-grid-layout.umd.min.js.map |   2 +-
 src/components/index.js             |   2 +
 7 files changed, 691 insertions(+), 131 deletions(-)

diff --git a/dist/vue-grid-layout.common.js b/dist/vue-grid-layout.common.js
index ac6e4a73..5a473999 100644
--- a/dist/vue-grid-layout.common.js
+++ b/dist/vue-grid-layout.common.js
@@ -1,4 +1,4 @@
-/*! vue-grid-layout - 3.0.0-beta1 | (c) 2015, 2021  Gustavo Santos (JBay Solutions) <gustavo.santos@jbaysolutions.com> (http://www.jbaysolutions.com) | https://github.com/jbaysolutions/vue-grid-layout */
+/*! vue-grid-layout - 3.0.0-beta1 | (c) 2015, 2023  Gustavo Santos (JBay Solutions) <gustavo.santos@jbaysolutions.com> (http://www.jbaysolutions.com) | https://github.com/jbaysolutions/vue-grid-layout */
 module.exports =
 /******/ (function(modules) { // webpackBootstrap
 /******/ 	// The module cache
@@ -203,6 +203,17 @@ module.exports = function (S, index, unicode) {
 };
 
 
+/***/ }),
+
+/***/ "07e3":
+/***/ (function(module, exports) {
+
+var hasOwnProperty = {}.hasOwnProperty;
+module.exports = function (it, key) {
+  return hasOwnProperty.call(it, key);
+};
+
+
 /***/ }),
 
 /***/ "083e":
@@ -594,6 +605,39 @@ detector.isLegacyOpera = function() {
 };
 
 
+/***/ }),
+
+/***/ "1bc3":
+/***/ (function(module, exports, __webpack_require__) {
+
+// 7.1.1 ToPrimitive(input [, PreferredType])
+var isObject = __webpack_require__("f772");
+// instead of the ES6 spec version, we didn't implement @@toPrimitive case
+// and the second argument - flag - preferred type is a string
+module.exports = function (it, S) {
+  if (!isObject(it)) return it;
+  var fn, val;
+  if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;
+  if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;
+  if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;
+  throw TypeError("Can't convert object to primitive value");
+};
+
+
+/***/ }),
+
+/***/ "1ec9":
+/***/ (function(module, exports, __webpack_require__) {
+
+var isObject = __webpack_require__("f772");
+var document = __webpack_require__("e53d").document;
+// typeof document.createElement is 'object' in old IE
+var is = isObject(document) && isObject(document.createElement);
+module.exports = function (it) {
+  return is ? document.createElement(it) : {};
+};
+
+
 /***/ }),
 
 /***/ "214f":
@@ -851,6 +895,20 @@ function toComment(sourceMap) {
 exports.f = Object.getOwnPropertySymbols;
 
 
+/***/ }),
+
+/***/ "294c":
+/***/ (function(module, exports) {
+
+module.exports = function (exec) {
+  try {
+    return !!exec();
+  } catch (e) {
+    return true;
+  }
+};
+
+
 /***/ }),
 
 /***/ "2aba":
@@ -1033,6 +1091,21 @@ module.exports = __webpack_require__("9e1e") ? function (object, key, value) {
 };
 
 
+/***/ }),
+
+/***/ "35e8":
+/***/ (function(module, exports, __webpack_require__) {
+
+var dP = __webpack_require__("d9f6");
+var createDesc = __webpack_require__("aebd");
+module.exports = __webpack_require__("8e60") ? function (object, key, value) {
+  return dP.f(object, key, createDesc(1, value));
+} : function (object, key, value) {
+  object[key] = value;
+  return object;
+};
+
+
 /***/ }),
 
 /***/ "38fd":
@@ -1074,6 +1147,18 @@ module.exports = function (Constructor, NAME, next) {
 };
 
 
+/***/ }),
+
+/***/ "454f":
+/***/ (function(module, exports, __webpack_require__) {
+
+__webpack_require__("46a7");
+var $Object = __webpack_require__("584a").Object;
+module.exports = function defineProperty(it, key, desc) {
+  return $Object.defineProperty(it, key, desc);
+};
+
+
 /***/ }),
 
 /***/ "456d":
@@ -1118,6 +1203,16 @@ module.exports = function (bitmap, value) {
 };
 
 
+/***/ }),
+
+/***/ "46a7":
+/***/ (function(module, exports, __webpack_require__) {
+
+var $export = __webpack_require__("63b6");
+// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)
+$export($export.S + $export.F * !__webpack_require__("8e60"), 'Object', { defineProperty: __webpack_require__("d9f6").f });
+
+
 /***/ }),
 
 /***/ "4917":
@@ -1728,6 +1823,15 @@ $export($export.P + $export.F * (fails(function () {
 });
 
 
+/***/ }),
+
+/***/ "584a":
+/***/ (function(module, exports) {
+
+var core = module.exports = { version: '2.6.12' };
+if (typeof __e == 'number') __e = core; // eslint-disable-line no-undef
+
+
 /***/ }),
 
 /***/ "5be5":
@@ -1925,6 +2029,75 @@ module.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {
 };
 
 
+/***/ }),
+
+/***/ "63b6":
+/***/ (function(module, exports, __webpack_require__) {
+
+var global = __webpack_require__("e53d");
+var core = __webpack_require__("584a");
+var ctx = __webpack_require__("d864");
+var hide = __webpack_require__("35e8");
+var has = __webpack_require__("07e3");
+var PROTOTYPE = 'prototype';
+
+var $export = function (type, name, source) {
+  var IS_FORCED = type & $export.F;
+  var IS_GLOBAL = type & $export.G;
+  var IS_STATIC = type & $export.S;
+  var IS_PROTO = type & $export.P;
+  var IS_BIND = type & $export.B;
+  var IS_WRAP = type & $export.W;
+  var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});
+  var expProto = exports[PROTOTYPE];
+  var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE];
+  var key, own, out;
+  if (IS_GLOBAL) source = name;
+  for (key in source) {
+    // contains in native
+    own = !IS_FORCED && target && target[key] !== undefined;
+    if (own && has(exports, key)) continue;
+    // export native or passed
+    out = own ? target[key] : source[key];
+    // prevent global pollution for namespaces
+    exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]
+    // bind timers to global for call from export context
+    : IS_BIND && own ? ctx(out, global)
+    // wrap global constructors for prevent change them in library
+    : IS_WRAP && target[key] == out ? (function (C) {
+      var F = function (a, b, c) {
+        if (this instanceof C) {
+          switch (arguments.length) {
+            case 0: return new C();
+            case 1: return new C(a);
+            case 2: return new C(a, b);
+          } return new C(a, b, c);
+        } return C.apply(this, arguments);
+      };
+      F[PROTOTYPE] = C[PROTOTYPE];
+      return F;
+    // make static versions for prototype methods
+    })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;
+    // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%
+    if (IS_PROTO) {
+      (exports.virtual || (exports.virtual = {}))[key] = out;
+      // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%
+      if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out);
+    }
+  }
+};
+// type bitmap
+$export.F = 1;   // forced
+$export.G = 2;   // global
+$export.S = 4;   // static
+$export.P = 8;   // proto
+$export.B = 16;  // bind
+$export.W = 32;  // wrap
+$export.U = 64;  // safe
+$export.R = 128; // real proto method for `library`
+module.exports = $export;
+
+
 /***/ }),
 
 /***/ "6521":
@@ -1981,48 +2154,21 @@ module.exports = function (it, S) {
 
 /***/ }),
 
-/***/ "7333":
+/***/ "6b0d":
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
-// 19.1.2.1 Object.assign(target, source, ...)
-var DESCRIPTORS = __webpack_require__("9e1e");
-var getKeys = __webpack_require__("0d58");
-var gOPS = __webpack_require__("2621");
-var pIE = __webpack_require__("52a7");
-var toObject = __webpack_require__("4bf8");
-var IObject = __webpack_require__("626a");
-var $assign = Object.assign;
-
-// should work with symbols and should have deterministic property order (V8 bug)
-module.exports = !$assign || __webpack_require__("79e5")(function () {
-  var A = {};
-  var B = {};
-  // eslint-disable-next-line no-undef
-  var S = Symbol();
-  var K = 'abcdefghijklmnopqrst';
-  A[S] = 7;
-  K.split('').forEach(function (k) { B[k] = k; });
-  return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;
-}) ? function assign(target, source) { // eslint-disable-line no-unused-vars
-  var T = toObject(target);
-  var aLen = arguments.length;
-  var index = 1;
-  var getSymbols = gOPS.f;
-  var isEnum = pIE.f;
-  while (aLen > index) {
-    var S = IObject(arguments[index++]);
-    var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);
-    var length = keys.length;
-    var j = 0;
-    var key;
-    while (length > j) {
-      key = keys[j++];
-      if (!DESCRIPTORS || isEnum.call(S, key)) T[key] = S[key];
+Object.defineProperty(exports, "__esModule", { value: true });
+// runtime helper for setting properties on components
+// in a tree-shakable way
+exports.default = (sfc, props) => {
+    const target = sfc.__vccOpts || sfc;
+    for (const [key, val] of props) {
+        target[key] = val;
     }
-  } return T;
-} : $assign;
+    return target;
+};
 
 
 /***/ }),
@@ -2052,6 +2198,27 @@ module.exports = function (index, length) {
 };
 
 
+/***/ }),
+
+/***/ "794b":
+/***/ (function(module, exports, __webpack_require__) {
+
+module.exports = !__webpack_require__("8e60") && !__webpack_require__("294c")(function () {
+  return Object.defineProperty(__webpack_require__("1ec9")('div'), 'a', { get: function () { return 7; } }).a != 7;
+});
+
+
+/***/ }),
+
+/***/ "79aa":
+/***/ (function(module, exports) {
+
+module.exports = function (it) {
+  if (typeof it != 'function') throw TypeError(it + ' is not a function!');
+  return it;
+};
+
+
 /***/ }),
 
 /***/ "79e5":
@@ -2111,6 +2278,13 @@ module.exports = exports;
 module.exports = {};
 
 
+/***/ }),
+
+/***/ "85f2":
+/***/ (function(module, exports, __webpack_require__) {
+
+module.exports = __webpack_require__("454f");
+
 /***/ }),
 
 /***/ "86cc":
@@ -2258,6 +2432,17 @@ module.exports = {
 
 module.exports = require("vue");
 
+/***/ }),
+
+/***/ "8e60":
+/***/ (function(module, exports, __webpack_require__) {
+
+// Thank's IE8 for his funny defineProperty
+module.exports = !__webpack_require__("294c")(function () {
+  return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;
+});
+
+
 /***/ }),
 
 /***/ "8e6e":
@@ -2676,6 +2861,21 @@ for (var collections = getKeys(DOMIterables), i = 0; i < collections.length; i++
 }
 
 
+/***/ }),
+
+/***/ "aebd":
+/***/ (function(module, exports) {
+
+module.exports = function (bitmap, value) {
+  return {
+    enumerable: !(bitmap & 1),
+    configurable: !(bitmap & 2),
+    writable: !(bitmap & 4),
+    value: value
+  };
+};
+
+
 /***/ }),
 
 /***/ "b0c5":
@@ -3819,6 +4019,33 @@ module.exports = {
 };
 
 
+/***/ }),
+
+/***/ "d864":
+/***/ (function(module, exports, __webpack_require__) {
+
+// optional / simple context binding
+var aFunction = __webpack_require__("79aa");
+module.exports = function (fn, that, length) {
+  aFunction(fn);
+  if (that === undefined) return fn;
+  switch (length) {
+    case 1: return function (a) {
+      return fn.call(that, a);
+    };
+    case 2: return function (a, b) {
+      return fn.call(that, a, b);
+    };
+    case 3: return function (a, b, c) {
+      return fn.call(that, a, b, c);
+    };
+  }
+  return function (/* ...args */) {
+    return fn.apply(that, arguments);
+  };
+};
+
+
 /***/ }),
 
 /***/ "d8e8":
@@ -3830,6 +4057,29 @@ module.exports = function (it) {
 };
 
 
+/***/ }),
+
+/***/ "d9f6":
+/***/ (function(module, exports, __webpack_require__) {
+
+var anObject = __webpack_require__("e4ae");
+var IE8_DOM_DEFINE = __webpack_require__("794b");
+var toPrimitive = __webpack_require__("1bc3");
+var dP = Object.defineProperty;
+
+exports.f = __webpack_require__("8e60") ? Object.defineProperty : function defineProperty(O, P, Attributes) {
+  anObject(O);
+  P = toPrimitive(P, true);
+  anObject(Attributes);
+  if (IE8_DOM_DEFINE) try {
+    return dP(O, P, Attributes);
+  } catch (e) { /* empty */ }
+  if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');
+  if ('value' in Attributes) O[P] = Attributes.value;
+  return O;
+};
+
+
 /***/ }),
 
 /***/ "e11e":
@@ -3841,6 +4091,31 @@ module.exports = (
 ).split(',');
 
 
+/***/ }),
+
+/***/ "e4ae":
+/***/ (function(module, exports, __webpack_require__) {
+
+var isObject = __webpack_require__("f772");
+module.exports = function (it) {
+  if (!isObject(it)) throw TypeError(it + ' is not an object!');
+  return it;
+};
+
+
+/***/ }),
+
+/***/ "e53d":
+/***/ (function(module, exports) {
+
+// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028
+var global = module.exports = typeof window != 'undefined' && window.Math == Math
+  ? window : typeof self != 'undefined' && self.Math == Math ? self
+  // eslint-disable-next-line no-new-func
+  : Function('return this')();
+if (typeof __g == 'number') __g = global; // eslint-disable-line no-undef
+
+
 /***/ }),
 
 /***/ "eec4":
@@ -4195,13 +4470,12 @@ module.exports = function (object, index, value) {
 
 /***/ }),
 
-/***/ "f751":
-/***/ (function(module, exports, __webpack_require__) {
-
-// 19.1.3.1 Object.assign(target, source)
-var $export = __webpack_require__("5ca1");
+/***/ "f772":
+/***/ (function(module, exports) {
 
-$export($export.S + $export.F, 'Object', { assign: __webpack_require__("7333") });
+module.exports = function (it) {
+  return typeof it === 'object' ? it !== null : typeof it === 'function';
+};
 
 
 /***/ }),
@@ -4292,9 +4566,6 @@ var es6_regexp_match = __webpack_require__("4917");
 // EXTERNAL MODULE: ./node_modules/core-js/modules/es6.number.constructor.js
 var es6_number_constructor = __webpack_require__("c5f6");
 
-// EXTERNAL MODULE: ./node_modules/core-js/modules/es6.array.iterator.js
-var es6_array_iterator = __webpack_require__("cadf");
-
 // EXTERNAL MODULE: ./node_modules/core-js/modules/es6.object.keys.js
 var es6_object_keys = __webpack_require__("456d");
 
@@ -4309,7 +4580,6 @@ var es6_array_sort = __webpack_require__("55dd");
 
 
 
-
 // @flow
 
 /*:: export type LayoutItemRequired = {w: number, h: number, x: number, y: number, i: string};*/
@@ -5089,7 +5359,6 @@ function isNum(num) {
 
 
 
-
 // @flow
 
 
@@ -11903,7 +12172,7 @@ _interactjs_interact.use(dev_tools_plugin);
     /*containerWidth: {
      type: Number,
      required: true
-       },
+      },
      rowHeight: {
      type: Number,
      required: true
@@ -12758,15 +13027,21 @@ _interactjs_interact.use(dev_tools_plugin);
 // EXTERNAL MODULE: ./src/components/GridItem.vue?vue&type=style&index=0&id=46ff2fc8&lang=css
 var GridItemvue_type_style_index_0_id_46ff2fc8_lang_css = __webpack_require__("083e");
 
+// EXTERNAL MODULE: ./node_modules/vue-loader-v16/dist/exportHelper.js
+var exportHelper = __webpack_require__("6b0d");
+var exportHelper_default = /*#__PURE__*/__webpack_require__.n(exportHelper);
+
 // CONCATENATED MODULE: ./src/components/GridItem.vue
 
 
 
 
 
-GridItemvue_type_script_lang_js.render = render
 
-/* harmony default export */ var GridItem = (GridItemvue_type_script_lang_js);
+
+const __exports__ = /*#__PURE__*/exportHelper_default()(GridItemvue_type_script_lang_js, [['render',render]])
+
+/* harmony default export */ var GridItem = (__exports__);
 // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/vue-loader-v16/dist/templateLoader.js??ref--6!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader-v16/dist??ref--0-1!./src/components/GridLayout.vue?vue&type=template&id=fc5948f6
 
 function GridLayoutvue_type_template_id_fc5948f6_render(_ctx, _cache, $props, $setup, $data, $options) {
@@ -12790,16 +13065,18 @@ function GridLayoutvue_type_template_id_fc5948f6_render(_ctx, _cache, $props, $s
 // EXTERNAL MODULE: ./node_modules/core-js/modules/es7.object.get-own-property-descriptors.js
 var es7_object_get_own_property_descriptors = __webpack_require__("8e6e");
 
-// EXTERNAL MODULE: ./node_modules/core-js/modules/es6.object.assign.js
-var es6_object_assign = __webpack_require__("f751");
-
 // EXTERNAL MODULE: ./node_modules/core-js/modules/es6.number.is-finite.js
 var es6_number_is_finite = __webpack_require__("fca0");
 
-// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/defineProperty.js
+// EXTERNAL MODULE: ./node_modules/@babel/runtime-corejs2/core-js/object/define-property.js
+var define_property = __webpack_require__("85f2");
+var define_property_default = /*#__PURE__*/__webpack_require__.n(define_property);
+
+// CONCATENATED MODULE: ./node_modules/@babel/runtime-corejs2/helpers/esm/defineProperty.js
+
 function _defineProperty(obj, key, value) {
   if (key in obj) {
-    Object.defineProperty(obj, key, {
+    define_property_default()(obj, key, {
       value: value,
       enumerable: true,
       configurable: true,
@@ -12823,8 +13100,6 @@ function _defineProperty(obj, key, value) {
 
 
 
-
-
 function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
 
 function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
@@ -13049,14 +13324,14 @@ var elementResizeDetectorMaker = __webpack_require__("eec4");
               got set to null in the constructor. It is now time
               to issue layout-ready events as the GridItems have
               their sizes configured properly.
-                The reason for emitting the layout-ready events on
+               The reason for emitting the layout-ready events on
               the next tick is to allow for the newly-emitted
               updateWidth event (above) to have reached the
               children GridItem-s and had their effect, so we're
               sure that they have the final size before we emit
               layout-ready (for this GridLayout) and
               item-layout-ready (for the GridItem-s).
-                This way any client event handlers can reliably
+               This way any client event handlers can reliably
               invistigate stable sizes of GridItem-s.
           */
           this.$nextTick(function () {
@@ -13300,9 +13575,11 @@ var GridLayoutvue_type_style_index_0_id_fc5948f6_lang_css = __webpack_require__(
 
 
 
-GridLayoutvue_type_script_lang_js.render = GridLayoutvue_type_template_id_fc5948f6_render
 
-/* harmony default export */ var GridLayout = (GridLayoutvue_type_script_lang_js);
+
+const GridLayout_exports_ = /*#__PURE__*/exportHelper_default()(GridLayoutvue_type_script_lang_js, [['render',GridLayoutvue_type_template_id_fc5948f6_render]])
+
+/* harmony default export */ var GridLayout = (GridLayout_exports_);
 // CONCATENATED MODULE: ./src/components/index.js
 
 
@@ -13316,6 +13593,8 @@ var components_install = function install(app
   app.component('grid-item', GridItem);
 };
 
+components_install.GridItem = GridItem;
+components_install.GridLayout = GridLayout;
 /* harmony default export */ var components = (components_install);
 // CONCATENATED MODULE: ./node_modules/@vue/cli-service/lib/commands/build/entry-lib.js
 
diff --git a/dist/vue-grid-layout.common.js.map b/dist/vue-grid-layout.common.js.map
index 79c7b73e..2ab5657d 100644
--- a/dist/vue-grid-layout.common.js.map
+++ b/dist/vue-grid-layout.common.js.map
@@ -1 +1 @@
-{"version":3,"sources":["webpack://VueGridLayout/webpack/bootstrap","webpack://VueGridLayout/./node_modules/core-js/modules/_iter-define.js","webpack://VueGridLayout/./node_modules/core-js/modules/_string-at.js","webpack://VueGridLayout/./node_modules/core-js/modules/_advance-string-index.js","webpack://VueGridLayout/./src/components/GridItem.vue?d411","webpack://VueGridLayout/./node_modules/core-js/modules/_flags.js","webpack://VueGridLayout/./node_modules/core-js/modules/_object-keys.js","webpack://VueGridLayout/./node_modules/core-js/modules/_object-gopd.js","webpack://VueGridLayout/./node_modules/core-js/modules/_object-dps.js","webpack://VueGridLayout/./node_modules/element-resize-detector/src/detection-strategy/object.js","webpack://VueGridLayout/./node_modules/element-resize-detector/src/browser-detector.js","webpack://VueGridLayout/./node_modules/core-js/modules/_fix-re-wks.js","webpack://VueGridLayout/./node_modules/core-js/modules/_dom-create.js","webpack://VueGridLayout/./node_modules/core-js/modules/_classof.js","webpack://VueGridLayout/./node_modules/css-loader/dist/runtime/api.js","webpack://VueGridLayout/./node_modules/core-js/modules/_object-gops.js","webpack://VueGridLayout/./node_modules/core-js/modules/_redefine.js","webpack://VueGridLayout/./node_modules/core-js/modules/_object-create.js","webpack://VueGridLayout/./node_modules/core-js/modules/_wks.js","webpack://VueGridLayout/./node_modules/element-resize-detector/src/id-generator.js","webpack://VueGridLayout/./node_modules/core-js/modules/_library.js","webpack://VueGridLayout/./node_modules/core-js/modules/_cof.js","webpack://VueGridLayout/./node_modules/core-js/modules/_strict-method.js","webpack://VueGridLayout/./node_modules/core-js/modules/_hide.js","webpack://VueGridLayout/./node_modules/core-js/modules/_object-gpo.js","webpack://VueGridLayout/./node_modules/core-js/modules/_iter-create.js","webpack://VueGridLayout/./node_modules/core-js/modules/es6.object.keys.js","webpack://VueGridLayout/./node_modules/core-js/modules/_to-integer.js","webpack://VueGridLayout/./node_modules/core-js/modules/_property-desc.js","webpack://VueGridLayout/./node_modules/core-js/modules/es6.regexp.match.js","webpack://VueGridLayout/./src/components/GridItem.vue?3b34","webpack://VueGridLayout/./node_modules/vue-style-loader/lib/listToStyles.js","webpack://VueGridLayout/./node_modules/vue-style-loader/lib/addStylesClient.js","webpack://VueGridLayout/./node_modules/element-resize-detector/src/listener-handler.js","webpack://VueGridLayout/./node_modules/core-js/modules/_to-object.js","webpack://VueGridLayout/./node_modules/element-resize-detector/src/id-handler.js","webpack://VueGridLayout/./node_modules/batch-processor/src/utils.js","webpack://VueGridLayout/./node_modules/core-js/modules/_regexp-exec.js","webpack://VueGridLayout/./node_modules/core-js/modules/_object-pie.js","webpack://VueGridLayout/./node_modules/core-js/modules/_shared.js","webpack://VueGridLayout/./node_modules/core-js/modules/es6.array.sort.js","webpack://VueGridLayout/./node_modules/element-resize-detector/src/element-utils.js","webpack://VueGridLayout/./node_modules/core-js/modules/_export.js","webpack://VueGridLayout/./node_modules/core-js/modules/_inherit-if-required.js","webpack://VueGridLayout/./node_modules/core-js/modules/_object-sap.js","webpack://VueGridLayout/./node_modules/core-js/modules/_regexp-exec-abstract.js","webpack://VueGridLayout/./node_modules/core-js/modules/_shared-key.js","webpack://VueGridLayout/./node_modules/core-js/modules/_iobject.js","webpack://VueGridLayout/./src/components/GridLayout.vue?845a","webpack://VueGridLayout/./node_modules/core-js/modules/_to-iobject.js","webpack://VueGridLayout/./node_modules/core-js/modules/_has.js","webpack://VueGridLayout/./node_modules/core-js/modules/_to-primitive.js","webpack://VueGridLayout/./node_modules/core-js/modules/_object-assign.js","webpack://VueGridLayout/./node_modules/core-js/modules/_global.js","webpack://VueGridLayout/./node_modules/core-js/modules/_to-absolute-index.js","webpack://VueGridLayout/./node_modules/core-js/modules/_fails.js","webpack://VueGridLayout/./node_modules/core-js/modules/_set-to-string-tag.js","webpack://VueGridLayout/./node_modules/core-js/modules/_core.js","webpack://VueGridLayout/./src/components/GridLayout.vue?2bad","webpack://VueGridLayout/./node_modules/core-js/modules/_iterators.js","webpack://VueGridLayout/./node_modules/core-js/modules/_object-dp.js","webpack://VueGridLayout/./node_modules/@soda/get-current-script/index.js","webpack://VueGridLayout/./node_modules/core-js/modules/_set-proto.js","webpack://VueGridLayout/external {\"commonjs\":\"vue\",\"commonjs2\":\"vue\",\"root\":\"Vue\"}","webpack://VueGridLayout/./node_modules/core-js/modules/es7.object.get-own-property-descriptors.js","webpack://VueGridLayout/./node_modules/core-js/modules/_object-gopn.js","webpack://VueGridLayout/./src/components/GridLayout.vue?c712","webpack://VueGridLayout/./node_modules/core-js/modules/_own-keys.js","webpack://VueGridLayout/./node_modules/core-js/modules/_ctx.js","webpack://VueGridLayout/./node_modules/core-js/modules/_add-to-unscopables.js","webpack://VueGridLayout/./node_modules/core-js/modules/_to-length.js","webpack://VueGridLayout/./node_modules/core-js/modules/_descriptors.js","webpack://VueGridLayout/./node_modules/core-js/modules/es6.regexp.replace.js","webpack://VueGridLayout/./node_modules/core-js/modules/_string-trim.js","webpack://VueGridLayout/./node_modules/element-resize-detector/src/reporter.js","webpack://VueGridLayout/./node_modules/core-js/modules/web.dom.iterable.js","webpack://VueGridLayout/./node_modules/core-js/modules/es6.regexp.exec.js","webpack://VueGridLayout/./node_modules/element-resize-detector/src/collection-utils.js","webpack://VueGridLayout/./node_modules/core-js/modules/_defined.js","webpack://VueGridLayout/./node_modules/batch-processor/src/batch-processor.js","webpack://VueGridLayout/./node_modules/core-js/modules/_array-includes.js","webpack://VueGridLayout/./src/components/GridItem.vue?1d19","webpack://VueGridLayout/./node_modules/core-js/modules/es6.number.constructor.js","webpack://VueGridLayout/./node_modules/core-js/modules/_ie8-dom-define.js","webpack://VueGridLayout/./node_modules/element-resize-detector/src/detection-strategy/scroll.js","webpack://VueGridLayout/./node_modules/core-js/modules/_uid.js","webpack://VueGridLayout/./node_modules/core-js/modules/es6.array.iterator.js","webpack://VueGridLayout/./node_modules/core-js/modules/_an-object.js","webpack://VueGridLayout/./node_modules/core-js/modules/_object-keys-internal.js","webpack://VueGridLayout/./node_modules/core-js/modules/_is-object.js","webpack://VueGridLayout/./node_modules/core-js/modules/_iter-step.js","webpack://VueGridLayout/./node_modules/element-resize-detector/src/state-handler.js","webpack://VueGridLayout/./node_modules/core-js/modules/_a-function.js","webpack://VueGridLayout/./node_modules/core-js/modules/_enum-bug-keys.js","webpack://VueGridLayout/./node_modules/element-resize-detector/src/element-resize-detector.js","webpack://VueGridLayout/./node_modules/core-js/modules/_create-property.js","webpack://VueGridLayout/./node_modules/core-js/modules/es6.object.assign.js","webpack://VueGridLayout/./node_modules/core-js/modules/_function-to-string.js","webpack://VueGridLayout/./node_modules/core-js/modules/_html.js","webpack://VueGridLayout/./node_modules/@vue/cli-service/lib/commands/build/setPublicPath.js","webpack://VueGridLayout/./src/components/GridItem.vue","webpack://VueGridLayout/./src/helpers/utils.js","webpack://VueGridLayout/./src/helpers/draggableUtils.js","webpack://VueGridLayout/./src/helpers/responsiveUtils.js","webpack://VueGridLayout/./src/helpers/DOM.js","webpack://VueGridLayout/./node_modules/@interactjs/utils/domObjects.js","webpack://VueGridLayout/./node_modules/@interactjs/utils/isWindow.js","webpack://VueGridLayout/./node_modules/@interactjs/utils/window.js","webpack://VueGridLayout/./node_modules/@interactjs/utils/is.js","webpack://VueGridLayout/./node_modules/@interactjs/utils/browser.js","webpack://VueGridLayout/./node_modules/@interactjs/utils/arr.js","webpack://VueGridLayout/./node_modules/@interactjs/utils/clone.js","webpack://VueGridLayout/./node_modules/@interactjs/utils/extend.js","webpack://VueGridLayout/./node_modules/@interactjs/utils/raf.js","webpack://VueGridLayout/./node_modules/@interactjs/utils/normalizeListeners.js","webpack://VueGridLayout/./node_modules/@interactjs/core/Eventable.js","webpack://VueGridLayout/./node_modules/@interactjs/utils/domUtils.js","webpack://VueGridLayout/./node_modules/@interactjs/utils/rect.js","webpack://VueGridLayout/./node_modules/@interactjs/utils/getOriginXY.js","webpack://VueGridLayout/./node_modules/@interactjs/utils/hypot.js","webpack://VueGridLayout/./node_modules/@interactjs/core/BaseEvent.js","webpack://VueGridLayout/./node_modules/@interactjs/core/defaultOptions.js","webpack://VueGridLayout/./node_modules/@interactjs/core/InteractEvent.js","webpack://VueGridLayout/./node_modules/@interactjs/core/isNonNativeEvent.js","webpack://VueGridLayout/./node_modules/@interactjs/core/Interactable.js","webpack://VueGridLayout/./node_modules/@interactjs/core/InteractableSet.js","webpack://VueGridLayout/./node_modules/@interactjs/utils/pointerExtend.js","webpack://VueGridLayout/./node_modules/@interactjs/utils/pointerUtils.js","webpack://VueGridLayout/./node_modules/@interactjs/core/events.js","webpack://VueGridLayout/./node_modules/@interactjs/utils/misc.js","webpack://VueGridLayout/./node_modules/@interactjs/core/interactStatic.js","webpack://VueGridLayout/./node_modules/@interactjs/core/PointerInfo.js","webpack://VueGridLayout/./node_modules/@interactjs/core/Interaction.js","webpack://VueGridLayout/./node_modules/@interactjs/core/interactablePreventDefault.js","webpack://VueGridLayout/./node_modules/@interactjs/core/interactionFinder.js","webpack://VueGridLayout/./node_modules/@interactjs/core/interactions.js","webpack://VueGridLayout/./node_modules/@interactjs/core/scope.js","webpack://VueGridLayout/./node_modules/@interactjs/interact/index.js","webpack://VueGridLayout/./node_modules/@interactjs/auto-start/InteractableMethods.js","webpack://VueGridLayout/./node_modules/@interactjs/auto-start/base.js","webpack://VueGridLayout/./node_modules/@interactjs/auto-start/dragAxis.js","webpack://VueGridLayout/./node_modules/@interactjs/auto-start/hold.js","webpack://VueGridLayout/./node_modules/@interactjs/auto-start/plugin.js","webpack://VueGridLayout/./node_modules/@interactjs/auto-start/index.js","webpack://VueGridLayout/./node_modules/@interactjs/actions/drag/plugin.js","webpack://VueGridLayout/./node_modules/@interactjs/actions/drag/index.js","webpack://VueGridLayout/./node_modules/@interactjs/actions/resize/plugin.js","webpack://VueGridLayout/./node_modules/@interactjs/actions/resize/index.js","webpack://VueGridLayout/./node_modules/@interactjs/snappers/edgeTarget.js","webpack://VueGridLayout/./node_modules/@interactjs/snappers/elements.js","webpack://VueGridLayout/./node_modules/@interactjs/snappers/grid.js","webpack://VueGridLayout/./node_modules/@interactjs/snappers/all.js","webpack://VueGridLayout/./node_modules/@interactjs/snappers/plugin.js","webpack://VueGridLayout/./node_modules/@interactjs/modifiers/Modification.js","webpack://VueGridLayout/./node_modules/@interactjs/modifiers/base.js","webpack://VueGridLayout/./node_modules/@interactjs/modifiers/aspectRatio.js","webpack://VueGridLayout/./node_modules/@interactjs/modifiers/noop.js","webpack://VueGridLayout/./node_modules/@interactjs/modifiers/restrict/pointer.js","webpack://VueGridLayout/./node_modules/@interactjs/modifiers/restrict/edges.js","webpack://VueGridLayout/./node_modules/@interactjs/modifiers/restrict/rect.js","webpack://VueGridLayout/./node_modules/@interactjs/modifiers/restrict/size.js","webpack://VueGridLayout/./node_modules/@interactjs/modifiers/snap/pointer.js","webpack://VueGridLayout/./node_modules/@interactjs/modifiers/snap/size.js","webpack://VueGridLayout/./node_modules/@interactjs/modifiers/snap/edges.js","webpack://VueGridLayout/./node_modules/@interactjs/modifiers/all.js","webpack://VueGridLayout/./node_modules/@interactjs/modifiers/plugin.js","webpack://VueGridLayout/./node_modules/@interactjs/modifiers/index.js","webpack://VueGridLayout/./node_modules/@interactjs/dev-tools/plugin.js","webpack://VueGridLayout/./node_modules/@interactjs/dev-tools/index.js","webpack://VueGridLayout/./src/components/GridItem.vue?b8d1","webpack://VueGridLayout/./src/components/GridItem.vue?0590","webpack://VueGridLayout/./src/components/GridLayout.vue","webpack://VueGridLayout/./node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://VueGridLayout/./node_modules/mitt/dist/mitt.es.js","webpack://VueGridLayout/./src/components/GridLayout.vue?373d","webpack://VueGridLayout/./src/components/GridLayout.vue?19aa","webpack://VueGridLayout/./src/components/index.js","webpack://VueGridLayout/./node_modules/@vue/cli-service/lib/commands/build/entry-lib.js","webpack://VueGridLayout/./node_modules/core-js/modules/es6.number.is-finite.js","webpack://VueGridLayout/./node_modules/core-js/modules/_string-ws.js"],"names":["bottom","layout","max","bottomY","i","len","length","y","h","cloneLayout","newLayout","Array","cloneLayoutItem","layoutItem","JSON","parse","stringify","collides","l1","l2","x","w","compact","verticalCompact","compareWith","getStatics","sorted","sortLayoutItemsByRowCol","out","l","static","compactItem","push","indexOf","moved","getFirstCollision","correctBounds","bounds","collidesWith","cols","getLayoutItem","id","getAllCollisions","filter","moveElement","isUserAction","preventCollision","oldX","oldY","movingUp","reverse","collisions","collision","moveElementAwayFromCollision","itemToMove","fakeItem","Math","undefined","perc","num","setTransform","top","left","width","height","translate","transform","WebkitTransform","MozTransform","msTransform","OTransform","position","setTransformRtl","right","setTopLeft","setTopRight","concat","sort","a","b","validateLayout","contextName","subProps","keyArr","isArray","Error","item","j","autoBindHandlers","el","fns","forEach","key","bind","createMarkup","obj","keys","Object","result","val","hyphenate","addPx","IS_UNITLESS","animationIterationCount","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridRow","gridColumn","fontWeight","lineClamp","lineHeight","opacity","order","orphans","tabSize","widows","zIndex","zoom","fillOpacity","stopOpacity","strokeDashoffset","strokeOpacity","strokeWidth","name","value","hyphenateRE","str","replace","toLowerCase","findItemInArray","array","property","findAndRemove","index","splice","getControlPosition","e","offsetXYFromParentOf","evt","offsetParent","target","document","body","offsetParentRect","getBoundingClientRect","clientX","scrollLeft","clientY","scrollTop","createCoreData","lastX","lastY","isStart","isNum","deltaX","deltaY","isNaN","getBreakpointFromWidth","breakpoints","sortBreakpoints","matching","breakpointName","getColsFromBreakpoint","breakpoint","findOrGenerateResponsiveLayout","orgLayout","layouts","lastBreakpoint","breakpointsSorted","breakpointsAbove","slice","generateResponsiveLayout","currentDir","hasDocument","hasWindow","window","getDocumentDir","direction","dir","getElementsByTagName","getAttribute","setDocumentDir","html","setAttribute","addWindowEventListener","event","callback","addEventListener","removeWindowEventListener","removeEventListener","install","app","component","GridLayout","GridItem"],"mappings":"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;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;;AAE7B;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACtPa;;AAEb;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;;;;;;;;;ACtCa;AACb,mBAAO,CAAC,MAAmB;AAC3B,eAAe,mBAAO,CAAC,MAAa;AACpC,WAAW,mBAAO,CAAC,MAAS;AAC5B,YAAY,mBAAO,CAAC,MAAU;AAC9B,cAAc,mBAAO,CAAC,MAAY;AAClC,UAAU,mBAAO,CAAC,MAAQ;AAC1B,iBAAiB,mBAAO,CAAC,MAAgB;;AAEzC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,yBAAyB,4CAA4C;AACrE;AACA;AACA,CAAC;;AAED;AACA;;AAEA;AACA;AACA;AACA,6BAA6B,UAAU;AACvC;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,2BAA2B,mBAAmB,aAAa;AAC3D;AACA;AACA;AACA;AACA,6CAA6C,WAAW;AACxD;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA,kBAAkB;AAClB;AACA,gBAAgB;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gCAAgC,qCAAqC;AACrE;AACA;AACA,2BAA2B,gCAAgC;AAC3D;AACA;AACA;;;;;;;;AC/FA,eAAe,mBAAO,CAAC,MAAc;AACrC,eAAe,mBAAO,CAAC,MAAW;AAClC;AACA;AACA;AACA;AACA;;;;;;;;ACNA;AACA,UAAU,mBAAO,CAAC,MAAQ;AAC1B,UAAU,mBAAO,CAAC,MAAQ;AAC1B;AACA,2BAA2B,kBAAkB,EAAE;;AAE/C;AACA;AACA;AACA;AACA,GAAG,YAAY;AACf;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACtBa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;;AAEhB;AACA;AACA;;AAEA;AACA,4CAA4C,qBAAqB;AACjE;;AAEA;AACA,KAAK;AACL,IAAI;AACJ;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,qBAAqB,iBAAiB;AACtC;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,oBAAoB,qBAAqB;AACzC;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,8BAA8B;;AAE9B;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA,CAAC;;;AAGD;AACA;AACA;AACA,qDAAqD,cAAc;AACnE;AACA,C;;;;;;;AC7FA;;;;;;;;ACAA,aAAa,mBAAO,CAAC,MAAW;AAChC,WAAW,mBAAO,CAAC,MAAS;AAC5B,UAAU,mBAAO,CAAC,MAAQ;AAC1B,UAAU,mBAAO,CAAC,MAAQ;AAC1B,gBAAgB,mBAAO,CAAC,MAAuB;AAC/C;AACA;;AAEA,mBAAO,CAAC,MAAS;AACjB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA,CAAC;AACD;AACA,CAAC;;;;;;;;AC9BD;AACA,eAAe,mBAAO,CAAC,MAAc;AACrC,UAAU,mBAAO,CAAC,MAAe;AACjC,kBAAkB,mBAAO,CAAC,MAAkB;AAC5C,eAAe,mBAAO,CAAC,MAAe;AACtC,yBAAyB;AACzB;;AAEA;AACA;AACA;AACA,eAAe,mBAAO,CAAC,MAAe;AACtC;AACA;AACA;AACA;AACA;AACA,EAAE,mBAAO,CAAC,MAAS;AACnB,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;;;;;;;ACxCA,YAAY,mBAAO,CAAC,MAAW;AAC/B,UAAU,mBAAO,CAAC,MAAQ;AAC1B,aAAa,mBAAO,CAAC,MAAW;AAChC;;AAEA;AACA;AACA;AACA;;AAEA;;;;;;;;;ACVa;;AAEb;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;;;;;;ACjBA;;;;;;;;ACAA,iBAAiB;;AAEjB;AACA;AACA;;;;;;;;;ACJa;AACb,YAAY,mBAAO,CAAC,MAAU;;AAE9B;AACA;AACA;AACA,yCAAyC,cAAc;AACvD,GAAG;AACH;;;;;;;;ACRA,SAAS,mBAAO,CAAC,MAAc;AAC/B,iBAAiB,mBAAO,CAAC,MAAkB;AAC3C,iBAAiB,mBAAO,CAAC,MAAgB;AACzC;AACA,CAAC;AACD;AACA;AACA;;;;;;;;ACPA;AACA,UAAU,mBAAO,CAAC,MAAQ;AAC1B,eAAe,mBAAO,CAAC,MAAc;AACrC,eAAe,mBAAO,CAAC,MAAe;AACtC;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;;;;;;;;ACZa;AACb,aAAa,mBAAO,CAAC,MAAkB;AACvC,iBAAiB,mBAAO,CAAC,MAAkB;AAC3C,qBAAqB,mBAAO,CAAC,MAAsB;AACnD;;AAEA;AACA,mBAAO,CAAC,MAAS,qBAAqB,mBAAO,CAAC,MAAQ,4BAA4B,aAAa,EAAE;;AAEjG;AACA,qDAAqD,4BAA4B;AACjF;AACA;;;;;;;;ACZA;AACA,eAAe,mBAAO,CAAC,MAAc;AACrC,YAAY,mBAAO,CAAC,MAAgB;;AAEpC,mBAAO,CAAC,MAAe;AACvB;AACA;AACA;AACA,CAAC;;;;;;;;ACRD;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPa;;AAEb,eAAe,mBAAO,CAAC,MAAc;AACrC,eAAe,mBAAO,CAAC,MAAc;AACrC,yBAAyB,mBAAO,CAAC,MAAyB;AAC1D,iBAAiB,mBAAO,CAAC,MAAyB;;AAElD;AACA,mBAAO,CAAC,MAAe;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;ACvCD;AACA,kCAAkC,mBAAO,CAAC,MAAmD;AAC7F;AACA;AACA,cAAc,QAAS,kBAAkB,gCAAgC,wBAAwB,2CAA2C,mCAAmC,uCAAuC,sBAAsB,kBAAkB,6BAA6B,8CAA8C,sCAAsC,8BAA8B,gDAAgD,OAAO,WAAW,wCAAwC,UAAU,QAAQ,wBAAwB,WAAW,UAAU,sCAAsC,wBAAwB,gBAAgB,UAAU,oCAAoC,eAAe,WAAW,gCAAgC,wBAAwB,UAAU,yBAAyB,sBAAsB,qBAAqB,oBAAoB,iBAAiB,qCAAqC,kBAAkB,WAAW,YAAY,SAAS,QAAQ,oCAAoC,mNAAmN,8BAA8B,oBAAoB,4BAA4B,8BAA8B,8BAA8B,sBAAsB,iBAAiB,yCAAyC,SAAS,OAAO,kCAAkC,6hBAA6hB,2BAA2B,iBAAiB,4BAA4B,8BAA8B,iBAAiB,WAAW,kCAAkC,yBAAyB,sBAAsB,qBAAqB,iBAAiB;AAC/uE;AACA;;;;;;;;;;;;;;;;ACNA;AACA;AACA;AACA;AACe;AACf;AACA;AACA,iBAAiB,iBAAiB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,wBAAwB;AAC3D,KAAK;AACL;AACA;AACA;AACA;AACA;;;AC1BA;AACA;AACA;AACA;AACA;;AAEyC;;AAEzC;;AAEA;AACA;AACA;AACA;AACA,UAAU,iBAAiB;AAC3B;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEe;AACf;;AAEA;;AAEA,eAAe,YAAY;AAC3B;;AAEA;AACA;AACA,mBAAmB,mBAAmB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,YAAY;AAC3B;AACA,KAAK;AACL;AACA;AACA,mBAAmB,sBAAsB;AACzC;AACA;AACA,uBAAuB,2BAA2B;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iBAAiB,mBAAmB;AACpC;AACA;AACA;AACA;AACA,qBAAqB,2BAA2B;AAChD;AACA;AACA,YAAY,uBAAuB;AACnC;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,qBAAqB,uBAAuB;AAC5C;AACA;AACA,8BAA8B;AAC9B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,yDAAyD;AACzD;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC7Na;;AAEb;AACA;;AAEA;AACA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,eAAe,QAAQ;AACvB,eAAe,SAAS;AACxB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,+CAA+C,SAAS;AACxD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,uBAAuB,QAAQ;AAC/B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC3DA;AACA,cAAc,mBAAO,CAAC,MAAY;AAClC;AACA;AACA;;;;;;;;;ACJa;;AAEb;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,QAAQ;AACvB,iBAAiB,mBAAmB;AACpC;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,eAAe,QAAQ;AACvB,iBAAiB,mBAAmB;AACpC;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;;;;;;AC9Ca;;AAEb;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;;;;;;;;ACda;;AAEb,kBAAkB,mBAAO,CAAC,MAAU;;AAEpC;AACA;AACA;AACA;AACA;;AAEA;;AAEA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AU;AACpC,iCAAiC,QAAQ,mBAAmB,UAAU,EAAE,EAAE;AAC1E,CAAC;;;;;;;;;ACHY;;AAEb,eAAe,mBAAO,CAAC,MAAc;AACrC,eAAe,mBAAO,CAAC,MAAc;AACrC,eAAe,mBAAO,CAAC,MAAc;AACrC,gBAAgB,mBAAO,CAAC,MAAe;AACvC,yBAAyB,mBAAO,CAAC,MAAyB;AAC1D,iBAAiB,mBAAO,CAAC,MAAyB;AAClD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,mBAAO,CAAC,MAAe;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,oBAAoB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,mBAAmB;AAC1C;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,CAAC;;;;;;;;ACrHD,cAAc,mBAAO,CAAC,MAAW;AACjC,cAAc,mBAAO,CAAC,MAAY;AAClC,YAAY,mBAAO,CAAC,MAAU;AAC9B,aAAa,mBAAO,CAAC,MAAc;AACnC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;AC7Ba;;AAEb;;AAEA;AACA;AACA;AACA,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA,iBAAiB;AACjB,mCAAmC,sBAAsB;AACzD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,E;;;;;;;AC1CA,iBAAiB,mBAAO,CAAC,MAAsB;AAC/C,cAAc,mBAAO,CAAC,MAAgB;AACtC,eAAe,mBAAO,CAAC,MAAa;AACpC,aAAa,mBAAO,CAAC,MAAW;AAChC,WAAW,mBAAO,CAAC,MAAS;AAC5B,gBAAgB,mBAAO,CAAC,MAAc;AACtC,UAAU,mBAAO,CAAC,MAAQ;AAC1B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,oDAAoD,wBAAwB;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACzDa;AACb,iBAAiB,mBAAO,CAAC,MAAgB;AACzC,mBAAO,CAAC,MAAW;AACnB;AACA;AACA;AACA,CAAC;AACD;AACA,CAAC;;;;;;;;;ACRY;;AAEb;;AAEA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,SAAS;AACpB,aAAa,EAAE;AACf;AACA;AACA,kBAAkB,uBAAuB;AACzC;AACA;AACA;AACA;AACA;AACA;;;;;;;;AClBA;AACA;AACA;AACA;AACA;;;;;;;;;ACJa;;AAEb,YAAY,mBAAO,CAAC,MAAS;;AAE7B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,4IAA4I,kCAAkC;AAC9K,gCAAgC,0BAA0B;AAC1D;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,oCAAoC,mBAAmB;AACvD;;AAEA,0BAA0B,gBAAgB;AAC1C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACzIA;AACA;AACA,gBAAgB,mBAAO,CAAC,MAAe;AACvC,eAAe,mBAAO,CAAC,MAAc;AACrC,sBAAsB,mBAAO,CAAC,MAAsB;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,YAAY,eAAe;AAChC;AACA,KAAK;AACL;AACA;;;;;;;;ACtBA;;AAEA;AACA,cAAc,mBAAO,CAAC,MAAsa;AAC5b,4CAA4C,QAAS;AACrD;AACA;AACA,UAAU,mBAAO,CAAC,MAA6D;AAC/E,6CAA6C,qCAAqC,E;;;;;;;;ACRrE;AACb,aAAa,mBAAO,CAAC,MAAW;AAChC,UAAU,mBAAO,CAAC,MAAQ;AAC1B,UAAU,mBAAO,CAAC,MAAQ;AAC1B,wBAAwB,mBAAO,CAAC,MAAwB;AACxD,kBAAkB,mBAAO,CAAC,MAAiB;AAC3C,YAAY,mBAAO,CAAC,MAAU;AAC9B,WAAW,mBAAO,CAAC,MAAgB;AACnC,WAAW,mBAAO,CAAC,MAAgB;AACnC,SAAS,mBAAO,CAAC,MAAc;AAC/B,YAAY,mBAAO,CAAC,MAAgB;AACpC;AACA;AACA;AACA;AACA;AACA,qBAAqB,mBAAO,CAAC,MAAkB;AAC/C;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD;AACpD,KAAK;AACL;AACA,oCAAoC,cAAc,OAAO;AACzD,qCAAqC,cAAc,OAAO;AAC1D;AACA;AACA,oEAAoE,OAAO;AAC3E;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,0BAA0B,EAAE;AACtE;AACA;AACA,kBAAkB,mBAAO,CAAC,MAAgB;AAC1C;AACA;AACA;AACA;AACA;AACA,2BAA2B,iBAAiB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,mBAAO,CAAC,MAAa;AACvB;;;;;;;;ACpEA,kBAAkB,mBAAO,CAAC,MAAgB,MAAM,mBAAO,CAAC,MAAU;AAClE,+BAA+B,mBAAO,CAAC,MAAe,gBAAgB,mBAAmB,UAAU,EAAE,EAAE;AACvG,CAAC;;;;;;;;;ACFD;AACA;AACA;AACA;;AAEa;;AAEb,cAAc,mBAAO,CAAC,MAAqB;;AAE3C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,yDAAyD,OAAO;;AAEhE;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,wEAAwE,gDAAgD;AACxH,8DAA8D,mMAAmM;AACjQ,2EAA2E,KAAK,YAAY,EAAE,MAAM,YAAY,EAAE,OAAO,YAAY,EAAE,EAAE;AACzI,2EAA2E,KAAK,YAAY,EAAE,MAAM,YAAY,EAAE,OAAO,YAAY,EAAE,EAAE;AACzI;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,QAAQ;AACvB,eAAe,SAAS;AACxB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,QAAQ;AACvB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,mCAAmC,iBAAiB;AACpD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,oEAAoE;AACpE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,iBAAiB;;AAEjB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,qBAAqB;AACrB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACppBA;AACA;AACA;AACA;AACA;;;;;;;;;ACJa;AACb,uBAAuB,mBAAO,CAAC,MAAuB;AACtD,WAAW,mBAAO,CAAC,MAAc;AACjC,gBAAgB,mBAAO,CAAC,MAAc;AACtC,gBAAgB,mBAAO,CAAC,MAAe;;AAEvC;AACA;AACA;AACA;AACA,iBAAiB,mBAAO,CAAC,MAAgB;AACzC,gCAAgC;AAChC,cAAc;AACd,iBAAiB;AACjB;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;;AAEA;AACA;AACA;;;;;;;;ACjCA,eAAe,mBAAO,CAAC,MAAc;AACrC;AACA;AACA;AACA;;;;;;;;ACJA,UAAU,mBAAO,CAAC,MAAQ;AAC1B,gBAAgB,mBAAO,CAAC,MAAe;AACvC,mBAAmB,mBAAO,CAAC,MAAmB;AAC9C,eAAe,mBAAO,CAAC,MAAe;;AAEtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AChBA;AACA;AACA;;;;;;;;ACFA;AACA,UAAU;AACV;;;;;;;;;ACFa;;AAEb;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;;;;;ACrBA;AACA;AACA;AACA;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;ACHa;;AAEb,8BAA8B,mBAAO,CAAC,MAAoB;AAC1D,8BAA8B,mBAAO,CAAC,MAAiB;AACvD,8BAA8B,mBAAO,CAAC,MAAoB;AAC1D,8BAA8B,mBAAO,CAAC,MAAgB;AACtD,8BAA8B,mBAAO,CAAC,MAAc;AACpD,8BAA8B,mBAAO,CAAC,MAAY;AAClD,8BAA8B,mBAAO,CAAC,MAAoB;AAC1D,8BAA8B,mBAAO,CAAC,MAAiB;AACvD,8BAA8B,mBAAO,CAAC,MAAiB;;AAEvD;AACA,8BAA8B,mBAAO,CAAC,MAAgC;AACtE,8BAA8B,mBAAO,CAAC,MAAgC;;AAEtE;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,UAAU;AACV,cAAc,SAAS;AACvB,cAAc,SAAS;AACvB;;AAEA;AACA;AACA,UAAU;AACV,cAAc,QAAQ;AACtB;AACA;AACA,cAAc,UAAU;AACxB;AACA,cAAc,SAAS;AACvB;AACA;AACA,cAAc,QAAQ;AACtB;;AAEA;AACA;AACA;AACA,WAAW,SAAS;AACpB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,qCAAqC,6CAA6C,EAAE;AACpF;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,mFAAmF,qBAAqB;;AAExG;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,SAAS;AACxB,eAAe,kBAAkB;AACjC,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;;AAEA;AACA,8EAA8E;AAC9E;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;;AAEA;AACA;AACA;AACA,yDAAyD,6CAA6C;AACtG;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,qBAAqB;AACrB;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;;AA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;AAEA,MAAM,EAAE;AACR;AACA;;AAEA,MAAM,EAAE;AACR,mCAAmC,MAAM;AACzC,GAAG,MAAM,WAAW,WAAW,WAAW;;;AAG1C,MAAM,EAAE;AACR;AACA;AACA;;AAEA,MAAM,EAAE;AACR;AACA;AACA,GAAG,UAAU,EAAE;AACf;AACA;AACA;AACA,GAAG,UAAU,EAAE;AACf;AACA,sDAAsD,KAAK,EAAE,EAAE;AAC/D;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,8C;;ACvCuC;AACC;AACe;;AAEvD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEO,MAAM,mBAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,MAAM,GAAG,eAAe;AAC3C;;AAEA;AACA;AACA,+BAA+B;AAC/B;;AAEA;AACA;AACA,KAAK;;;AAGL;AACA;AACA;AACA;;AAEA;AACA,sBAAsB,SAAS;;AAE/B;AACA,yBAAyB,KAAS;AAClC;AACA;;AAEA;AACA,sBAAsB,SAAS;;AAE/B;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,qC;;ACxEmC;AACM;AAChB;AACU;AAC5B;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACO,SAAS,gBAAO;AACvB,SAAS,EAAE;AACX;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACO;AACP;;AAEA,MAAM,EAAE;AACR;AACA;AACA,qCAAqC,EAAE;AACvC;AACA;;AAEA;AACA;;AAEA;AACA;AACO;AACP;AACA,MAAM,GAAU,KAAK,UAAc;AACnC;AACA;;AAEA,iBAAiB,aAAO;AACxB;;AAEA,iDAAiD;;;AAG1C;AACP;AACA;;AAEA,iBAAiB,qBAAqB;AACtC;AACA,mDAAmD;;AAEnD;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,qDAAqD;AACrD;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,OAAO;;;AAGP;AACA;AACA;AACA;;AAEA;AACA,KAAK;;;AAGL;AACA,sBAAsB;;AAEtB,+BAA+B,gBAAU,uCAAuC,gBAAU,wCAAwC,gBAAU;AAC5I;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;;AAEA;AACA,wBAAwB;;AAExB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,+BAA+B,SAAa;AAC5C,8BAA8B,SAAa;AAC3C;AACA;;AAEO;AACP,SAAS,EAAE;AACX;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACO;AACP;AACA;AACO;AACP,qCAAqC,GAAU;AAC/C;AACA;AACA;AACA;AACA;AACO;AACP,wCAAwC,gBAAU;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;;AAEA,OAAO,aAAO;AACd,+BAA+B,SAAa;AAC5C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACO;AACP;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACO;AACP,OAAO,EAAE;AACT;AACA,GAAG;;;AAGH,EAAE,gBAAU;AACZ;AACA;AACA,oC;;AC/NoE;AACnC;AACR;AAClB;AACP;AACA,WAAW,UAAU;AACrB;;AAEA;AACA;AACA;;AAEA,SAAS,gBAAO;AAChB;AACO;AACP;;AAEA,MAAM,EAAE;AACR;AACA,GAAG,UAAU,EAAE;AACf;AACA;;AAEA,MAAM,EAAE;AACR,kBAAkB,cAAc;AAChC;;AAEA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA,WAAW,MAAM,GAAG;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACO;AACP;AACA,WAAW,MAAM,GAAG;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACO;AACP;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,gC;;AC7EsD;AACvC;AACf;AACA;AACA;AACA,qBAAqB,eAAe;AACpC,SAAS,QAAQ;AACjB;AACA;AACA;AACA,CAAC;AACD,uC;;ACXgB,4EAAkC,EAAE;AACpD,iC;;ACDO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA,CAAC;AACD;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;;AAEA,CAAC;AACD,qC;;AC5CA;AACA;AACO,MAAM,uBAAQ;AACrB;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,0C;;AChBwC;AACU;AACZ;AACK;AACI;AACxC,MAAM,2BAAa,SAAS,SAAS;AAC5C;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,uBAAQ;AAC7D,mBAAmB,WAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,gBAAgB,MAAM,GAAG;AACzB,kBAAkB,MAAM,GAAG;AAC3B,gBAAgB,MAAM,GAAG;AACzB;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA,6CAA6C;;AAE7C,oBAAoB,MAAM,GAAG;AAC7B,iBAAiB,KAAK;AACtB;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA,CAAC;AACD;;AAEA,wBAAwB,2BAAa;AACrC;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA,GAAG;AACH;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA,GAAG;AACH;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA,GAAG;AACH;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA,GAAG;AACH;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA,GAAG;AACH;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA,GAAG;AACH;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA,GAAG;AACH;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA,CAAC;AACD,yC;;AC3Oe;AACf;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,4C;;ACbA;AACuC;AACG;AACJ;AACwD;AACtD;AACR;AACgC;AACjB;AACJ;AACU;;AAErD;AACO,MAAM,yBAAY;AACzB;AACA;AACA;AACA,cAAc;AACd,mBAAmB;AACnB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,sBAAsB,mBAAS;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,SAAS,CAAC,WAAW;AACrC;AACA;AACA;AACA;;AAEA;AACA,QAAQ,EAAE;AACV,iBAAiB,WAAW;AAC5B;;AAEA,QAAQ,EAAE;AACV,iBAAiB,WAAW;AAC5B;;AAEA,QAAQ,EAAE;AACV,iBAAiB,WAAW;AAC5B;;AAEA,QAAQ,EAAE;AACV,iBAAiB,WAAW;AAC5B;;AAEA;AACA;;AAEA;AACA,QAAQ,EAAE,gBAAgB,EAAE;AAC5B;AACA;;AAEA,QAAQ,EAAE,eAAe,EAAE;AAC3B;AACA;AACA;;AAEA;AACA,oCAAoC;;AAEpC;AACA;AACA;AACA,8CAA8C;;AAE9C;AACA;AACA,OAAO;;;AAGP,UAAU,EAAE;AACZ,oCAAoC,IAAQ;AAC5C,OAAO;AACP,eAAe,EAAE;AACjB;AACA,sCAAsC,MAAM,gCAAgC,EAAE,KAAK,eAAe;;AAElG,cAAc,EAAE;AAChB;AACA;AACA,SAAS;AACT,iBAAiB,EAAE,sBAAsB,EAAE;AAC3C;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,+BAA+B;AACtD;AACA,aAAa,QAAQ;AACrB,cAAc,KAAK;AACnB;;;AAGA;AACA,0BAA0B,EAAE;;AAE5B,QAAQ,EAAE;AACV;AACA;;AAEA,WAAW,cAAc;AACzB;AACA;AACA;AACA;AACA;AACA,aAAa,SAAS;AACtB,8BAA8B;AAC9B,cAAc,kBAAkB;AAChC;;;AAGA;AACA,QAAQ,EAAE;AACV;;AAEA;AACA,qBAAqB,MAAM,GAAG;;AAE9B;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,QAAQ,WAAW,cAAc,EAAE;AACnC;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,0BAA0B;AACvC,uCAAuC,aAAa;AACpD;AACA;AACA,cAAc,OAAO;AACrB;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,iBAAiB;AACjB,cAAc,gBAAgB;AAC9B;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,KAAK;AACnB;;;AAGA;AACA;AACA;;AAEA;AACA,sDAAsD,YAAY;AAClE;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,SAAS,EAAE;AACX;AACA;;AAEA,QAAQ,EAAE;AACV,aAAa,WAAW;AACxB,KAAK,UAAU,EAAE;AACjB,aAAa,YAAY;AACzB;;AAEA;AACA;;AAEA;AACA,wBAAwB,EAAE;AAC1B;AACA;;AAEA,QAAQ,EAAE;AACV,aAAa,WAAW;AACxB,KAAK,UAAU,EAAE;AACjB,aAAa,YAAY;AACzB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,cAAc;AAC3B;AACA,cAAc,aAAa;AAC3B;;;AAGA;AACA;AACA;AACA;;AAEA;AACA,QAAQ,EAAE,qBAAqB,EAAE;AACjC;AACA;AACA;;AAEA;AACA,sBAAsB,SAAkB;;AAExC;AACA;AACA,eAAe,aAAO;AACtB;;AAEA;AACA;AACA,YAAY,gBAAgB;AAC5B;AACA,SAAS;AACT,iBAAiB,EAAE;AACnB,iCAAiC,UAAU;AAC3C,WAAW;AACX;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,wBAAwB;AACrC;AACA,aAAa,0BAA0B;AACvC,aAAa,iBAAiB;AAC9B;AACA,cAAc,aAAa;AAC3B;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,wBAAwB;AACrC;AACA,aAAa,0BAA0B;AACvC,aAAa,iBAAiB;AAC9B;AACA,cAAc,aAAa;AAC3B;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,cAAc,OAAO;AACrB;;;AAGA;AACA;;AAEA,SAAS,EAAE;AACX;AACA;;AAEA,mBAAmB,KAAK;;AAExB;AACA;AACA;AACA;AACA,oCAAoC,MAAM,CAAC,MAAM,GAAG;AACpD;AACA;;AAEA;AACA,UAAU,EAAE;AACZ;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA,QAAQ,EAAE;AACV;AACA;AACA;;AAEA,0CAA0C,QAAQ;AAClD;AACA;AACA;AACA;AACA,WAAW;;AAEX;AACA;AACA;;AAEA,4CAA4C,QAAQ;AACpD;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA,wC;;AC/YuC;AACU;AACT;AACR;AACzB,MAAM,+BAAe;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT,+BAA+B,EAAE;AACjC,4BAA4B,SAAa;;AAEzC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;;AAEA;AACA,cAAc,MAAM,cAAc;AAClC;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,QAAQ,EAAE;AACV;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA,uBAAuB,EAAE;AACzB;;AAEA;AACA;AACA;;AAEA,kBAAkB,IAAQ;AAC1B;AACA;;AAEA;AACA;AACA;;AAEA,WAAW,EAAE;AACb,QAAQ,EAAE,kBAAkB,eAAwB;AACpD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,2C;;ACtGA;AACA;AACA;AACA,2BAA2B;;AAE3B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACe,qEAAa,EAAC;AAC7B,yC;;ACzBmC;AACD;AACQ;AACX;AACN;AACsB;AACxC;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP,4BAA4B,gBAAG,6BAA6B,gBAAG;AAC/D,CAAC;;AAEM;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,IAAI;;AAEJ,MAAM,aAAO;AACb;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACO;AACP;;AAEA,MAAM,aAAO;AACb;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACO;AACP,SAAS,EAAE;AACX;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP,qBAAqB;;AAErB,MAAM,EAAE;AACR;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,SAAS,KAAK;AACd;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,SAAS,EAAE,qDAAqD,EAAE;AAClE;AACA,qDAAqD,gBAAG;AACxD,CAAC;;AAEM;AACP,eAAe,EAAE;AACjB,UAAU,gBAAyB,iCAAiC,gBAAyB;AAC7F;AACO;AACP;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACO;AACP;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;AACyB;AACzB,wC;;ACzPmC;AACI;AACU;AACT;AACR;AACgB;AACS;;AAEzD,SAAS,cAAO;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA,GAAG;AACH;;AAEA;AACA;AACA,iBAAiB,IAAQ;;AAEzB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,yCAAyC,QAAY;AACrD;AACA;AACA;AACA;;AAEA;AACA;AACA,wBAAwB,SAAa;AACrC;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,8CAA8C,QAAQ;AACtD;AACA;;AAEA;AACA,OAAO;AACP,uBAAuB,0BAA0B;AACjD;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,iCAAiC;;AAEjC;AACA;AACA;AACA;AACA;;AAEA;AACA,mBAAmB,IAAQ;;AAE3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;;AAGL,sCAAsC,YAAY;AAClD,mCAAmC;;AAEnC;AACA;AACA;AACA,SAAS,OAAO;;AAEhB,0CAA0C,QAAQ;AAClD;AACA;AACA;AACA,WAAW,iBAAiB;;AAE5B;AACA;AACA,mCAAmC;AACnC;;AAEA;AACA,yCAAyC;;AAEzC;AACA;AACA,aAAa;;;AAGb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;;AAGA;AACA;AACA,0BAA0B,gBAAS;AACnC;AACA,0BAA0B,eAA4B;AACtD,8BAA8B;;AAE9B,WAAW,EAAE;AACb,qBAAqB,sBAAsB;AAC3C;AACA;AACA;AACA;AACA,SAAS;;AAET,YAAY,eAAwB,uBAAuB,YAAqB,0BAA0B,YAAqB;AAC/H;AACA;AACA,WAAW;AACX;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;;AAEA,gBAAgB,UAAmB;AACnC;AACA;;AAEA;AACA;AACA,GAAG;;;AAGH;AACA;;AAEA,MAAM,gBAAS;AACf;AACA;AACA;AACA;AACA,uCAAuC;;AAEvC,IAAI,mBAAO;AACX;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,OAAO,EAAE;AACT;AACA;AACA;AACA;AACA;;AAEA,kBAAkB,MAAM,GAAG;AAC3B;AACA;AACA;AACA;;AAEe;AACf;AACA,SAAS;AACT,CAAC,EAAC;AACF,kC;;ACpRqC;AAC9B;AACP;AACA;AACA;AACA,MAAM,GAAM;AACZ;AACA;;AAEA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,gC;;AClBA;AAC0C;AACO;AACjB;AACyB;AACb;AACS;AAC9C;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,iBAAiB;AAC9B;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,IAAI;;;AAGJ,+BAA+B,cAA2B;AAC1D,0BAA0B,SAAsB;AAChD,8BAA8B,aAA0B;AACxD,2BAA2B,UAAuB;AAClD,4BAA4B,cAAuB;AACnD,kCAAkC,oBAA6B;AAC/D,6BAA6B,eAAwB;AACrD,qBAAqB,gBAAgB;AACrC,6BAA6B;;AAE7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,4DAA4D;AAC5D;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,cAAc,QAAQ;AACtB;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,wBAAwB;AACrC,aAAa,SAAS;AACtB,aAAa,iBAAiB;AAC9B;AACA,cAAc,OAAO;AACrB;;;AAGA,gBAAgB,QAAQ;AACxB,QAAQ,EAAE;AACV;AACA;;AAEA,QAAQ,EAAE;AACV;AACA;AACA;;AAEA;AACA;;AAEA,QAAQ,EAAE;AACV;AACA;AACA;;AAEA;AACA,KAAK;;;AAGL,QAAQ,gBAAgB;AACxB;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,wBAAwB;AACrC;AACA,aAAa,SAAS;AACtB,aAAa,iBAAiB;AAC9B;AACA,cAAc,OAAO;AACrB;;AAEA,iBAAiB,QAAQ;AACzB,QAAQ,EAAE;AACV;AACA;;AAEA,QAAQ,EAAE;AACV;AACA;AACA;;AAEA;AACA;;AAEA,QAAQ,EAAE;AACV;AACA;AACA;;AAEA;AACA;;AAEA,QAAQ,gBAAgB;AACxB;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,QAAQ;AACtB;;;AAGA;AACA,WAAW,aAAO;AAClB;AACA;AACA;AACA;AACA,cAAc,QAAQ;AACtB;;;AAGA;AACA,WAAW,aAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,OAAO;AACrB;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,cAAc;AACd;;;AAGA;AACA,QAAQ,EAAE;AACV;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,0C;;AC7PO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,uC;;ACfuC;AACC;AACF;AACkB;AACC;AACX;AACK;AACJ;AACxC;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,oCAAoC;;AAE9B;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,sCAAsC;;AAEvC;AACO,MAAM,uBAAW;AACxB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,QAAQ;AAC1B;AACA,KAAK;AACL;AACA;AACA,aAAa,SAAsB;AACnC;AACA,YAAY,SAAsB;AAClC;AACA,WAAW,SAAsB;AACjC;AACA,aAAa,SAAsB;AACnC;AACA,gBAAgB,SAAsB;AACtC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,OAAO;AACP;;AAEA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA,8BAA8B,eAAe;AAC7C;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,qBAAqB;AAClE;AACA;AACA,aAAa,OAAO;AACpB,aAAa,aAAa;AAC1B,aAAa,QAAQ;AACrB,cAAc,QAAQ;AACtB;;;AAGA;AACA;AACA;AACA;;AAEA,IAAI,UAAU;AACd;AACA;AACA;AACA,uCAAuC,MAAM,GAAG;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW;;AAEX;AACA;AACA;AACA,6BAA6B,KAAK;AAClC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAM,gBAA6B;AACnC;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,QAAQ,UAAuB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,QAAQ,eAAe;AAChE;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,MAAM,aAA0B;AAChC;;AAEA,gBAAgB,MAAM;AACtB;AACA;AACA;AACA;AACA,KAAK,iBAAiB;AACtB;;AAEA;AACA,GAAG;;;AAGH;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA,oCAAoC,KAAK;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA,aAAa,aAAa;AAC1B;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA,sBAAsB,YAAyB,UAAU;;AAEzD,mGAAmG,SAAa;AAChH;;AAEA;AACA;AACA;;AAEA;AACA,eAAe,YAAyB;AACxC;AACA;AACA;;AAEA;AACA,wBAAwB,WAAW;AACnC;AACA;AACA,KAAK;AACL;AACA;;AAEA,IAAI,SAAsB;AAC1B,IAAI,cAA2B;;AAE/B;AACA;AACA;AACA;AACA,MAAM,mBAA0B;;AAEhC;AACA,QAAQ,UAAuB;AAC/B,QAAQ,UAAuB;AAC/B;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,eAAe,2BAAa;AAC5B;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;;AAEL;AACA;AACA,MAAM,QAAkB;AACxB;AACA;AACA;;AAEA,uEAAuE,MAAM;;AAE7E;AACA;AACA;;AAEA;;AAEA,2CAA2C,MAAM;;AAEjD;AACA;AACA;;AAEA;;AAEA,iDAAiD,MAAM;;AAEvD;AACA;;AAEA;AACA;AACA;;AAEA;AACe,4EAAW,EAAC;AACJ;AACvB,uC;;ACxgBiD;AACoB;AACrC;AACe;;AAE/C;AACA;AACA;AACA;AACA;;AAEA,MAAM,EAAE;AACR;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA,mCAAmC,WAAW;AAC9C;;;AAGA;AACA,gBAAgB,SAAS;AACzB;;AAEA;AACA;AACA;AACA,GAAG;;;AAGH;AACA;AACA,GAAG;;;AAGH,MAAM,EAAE,0BAA0B,eAAe;AACjD;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;;AAEO,SAAS,kCAAO;AACvB;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,cAAc,sBAAsB;AACpC;;AAEA;;AAEA;AACA;AACA,IAAI;;;AAGJ;AACA;;AAEA;AACA;AACA,4EAA4E,YAAY;AACxF;AACA;AACA;AACA;AACA;;AAEA,GAAG;AACH;AACe;AACf;AACA,SAAS;AACT;AACA,wBAAwB,UAAU;AAClC;AACA,GAAG,IAAI;AACP,CAAC,EAAC;AACF,sD;;AC/G4C;AAC5C;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,oBAAoB,UAAc;AAClC;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;;;AAGT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,KAAK;AACL;;;AAGA;AACA;AACA,KAAK;AACL;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,gDAAgD;AAChD;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEe,4DAAM,EAAC;AACtB,6C;;AC/I+C;AACL;AACM;AACI;AACK;AACV;AAC0B;AAC7B;AAC5C;;AAEA,SAAS,oBAAO;AAChB;;AAEA;AACA;AACA;;AAEA,sBAAsB,aAAO;AAC7B;;AAEA,MAAM,gBAAU;AAChB;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,GAAG,EAAE;;AAEL;AACA,oCAAoC,gBAAe;AACnD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;;;AAGP;AACA;AACA;AACA,SAAS,KAAK,YAAY;AAC1B;AACA;AACA;AACA;AACA;AACA;;AAEA,kBAAkB,0BAA0B;AAC5C;;AAEA;AACA;AACA;AACA,wBAAwB,cAA2B;AACnD,0CAA0C,eAA4B;AACtE,uBAAuB;;AAEvB;AACA,wCAAwC;;AAExC;AACA;AACA,0BAA0B,YAAyB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA,WAAW,aAAO;AAClB;AACA,uBAAuB,4CAA4C;AACnE;AACA,SAAS;AACT;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA,qBAAqB,YAAyB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;;AAGL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH,2BAA2B,iBAAM;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,GAAG;;;AAGH;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA,MAAM,yBAAY;AAClB;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,sDAAsD,QAAQ;AAC9D;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACe,+EAAY,EAAC;AAC5B,wC;;ACrR0C;AACJ;AACU;AACR;AACN;AACQ;AACC;AACQ;AACkB;AACd;AACR;AACd;AAC0B;AACd;AACtC,MAAM,WAAK;AAClB;AACA;AACA;AACA;AACA;AACA,kCAAkC,gCAAgC;AAClE;AACA;AACA,mBAAmB,aAAO;AAC1B,oBAAoB,KAAK,CAAC,uBAAQ;AAClC,qBAAqB,mBAAS;AAC9B;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,OAAO;AACP,oBAAoB;AACpB;AACA;AACA,0BAA0B,oBAAoB;AAC9C,yBAAyB,2BAAa;AACtC;AACA,6BAA6B,+BAAe;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,sCAAsC,yBAAgB;AACtD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,IAAI;;AAEX,YAAY,aAAa;AACzB;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,SAAa;AAChC,wBAAwB,MAAM,GAAG;AACjC;AACA;AACA;AACA,KAAK;AACL,oCAAoC;AACpC;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA,mBAAmB,SAAa;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA,mBAAmB,2BAA2B;AAC9C;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACO;AACP;AACA,EAAE,WAAQ;AACV,EAAE,gBAAU;AACZ,EAAE,aAAO;AACT,EAAE,GAAG;AACL;AACA;AACA,kBAAkB,iBAAY;AAC9B,kBAAkB,MAAM;AACxB;AACA;;AAEA;AACA;AACA;AACA,iC;;ACxOyC;AACzC,MAAM,cAAK,OAAO,WAAK;AACvB,MAAM,iBAAQ,GAAG,cAAK;AACP,0EAAQ,EAAC;AACjB,MAAM,aAAI,UAAU,cAAK;;AAEhC;AACA,EAAE,aAAI;AACN;AACA,iC;;ACTuD;AACvB;AACY;;AAE5C,SAAS,2BAAO;AAChB;AACA;AACA;;AAEA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA,QAAQ;AACR;AACA;AACA,aAAa,wBAAwB;AACrC;AACA,cAAc,0BAA0B;AACxC;AACA;;;AAGA,sCAAsC,QAAQ;AAC9C;AACA,GAAG,6EAA6E,qBAAqB;AACrG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA,aAAa,wBAAwB;AACrC;AACA,cAAc,0BAA0B;AACxC;AACA;;AAEA,qCAAqC,QAAQ;AAC7C;AACA,GAAG,4EAA4E,oBAAoB;AACnG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA,aAAa,gBAAgB;AAC7B;AACA;AACA;AACA;AACA,cAAc,wBAAwB;AACtC;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,cAAc,uBAAuB;AACrC;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,MAAM,EAAE;AACR;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,MAAM,EAAE;AACR;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEe;AACf;AACA,SAAS;AACT,CAAC,EAAC;AACF,+C;;AC7KqD;AACJ;AACT;AACR;AACc;AACa;;AAE3D,SAAS,YAAO;AAChB;AACA;AACA;AACA,GAAG;AACH,kBAAkB,mBAAmB;AACrC;AACA;AACA,EAAE,MAAM;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC;AACD;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,CAAC;AACD;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,uCAAuC,SAAS;AAChD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,SAAS,EAAE;AACX;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,cAAc,UAAmB;AACjC;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,EAAE,UAAU;AACZ;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;;AAEvB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,MAAM,EAAE;AACR;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA,QAAQ,EAAE;AACV;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;AACA;AACA;AACA;AACe,kDAAS,EAAC;AACzB,gC;;AC9TkD;AAClB;AACE;;AAElC;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA,GAAG;;;AAGH;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;;AAE3B;AACA;AACA,qCAAqC;;AAErC;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA,6FAA6F,IAAS;AACtG;AACA;AACA;AACA,MAAM;;;AAGN,WAAW,EAAE;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,gBAAgB,UAAU;AAC1B;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEe;AACf;AACA;AACA;AACA;AACA,CAAC,EAAC;AACF,oC;;AC5EiD;AACd;;AAEnC,SAAS,YAAO;AAChB;AACA;AACA,GAAG;AACH,kBAAkB,IAAU;AAC5B;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACe,wDAAI,EAAC;AACpB,gC;;AClEkC;AACG;AACR;AACd;AACf;;AAEA;AACA,oBAAoB,IAAS;AAC7B,oBAAoB,eAAI;AACxB,oBAAoB,QAAQ;AAC5B;;AAEA,CAAC,EAAC;AACF,kC;;ACbA;AACsD;AACrB;;AAEjC;AACA,EAAE,aAAI;AACN;;AAEA,oBAAQ,KAAK,iBAAM;AACnB,iC;;ACT0D;AACvB;;AAEnC,SAAS,cAAO;AAChB;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC;AACD;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC;AACnC,mCAAmC;AACnC,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA,qDAAqD;AACrD;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,iBAAiB;AAC5B;AACA;AACA,YAAY,uBAAuB;AACnC;AACA;;;AAGA,MAAM,gBAAS;AACf,MAAM,EAAE;AACR;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,MAAM,EAAE;AACR;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,WAAW;AACX;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACe,oDAAI,EAAC;AACpB,kC;;AClKA;AACyD;AACxB;;AAEjC;AACA,EAAE,aAAI;AACN;;AAEA,oBAAQ,KAAK,WAAM;AACnB,iC;;ACT0D;AACF;AACT;AACJ;AACR;;AAEnC,SAAS,qBAAO;AAChB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG,SAAS;;AAEZ;AACA;AACA;AACA;AACA;AACA,mCAAmC;AACnC,mCAAmC;AACnC,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,6BAA6B;AACnE;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,iBAAiB;AAC9B;AACA;AACA,cAAc,uBAAuB;AACrC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA,eAAe,MAAM,GAAG;AACxB;;AAEA;AACA;AACA;AACA,GAAG;;;AAGH,MAAM,EAAE;AACR;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,MAAM,EAAE;AACR;AACA;AACA;;AAEA,QAAQ,EAAE;AACV;AACA,KAAK;AACL;AACA;;AAEA,QAAQ,EAAE;AACV;AACA,KAAK,UAAU,EAAE;AACjB;AACA;;AAEA;AACA;;AAEA,MAAM,EAAE;AACR;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;;AAGH;AACA;AACA,kBAAkB,EAAE;AACpB,mBAAmB,EAAE,4DAA4D;;AAEjF;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;;AAGH,OAAO,EAAE;AACT;AACA;;AAEA,SAAS,EAAE;AACX;AACA,IAAI,WAAe;AACnB;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,MAAM,GAAG;AACpB,eAAe,MAAM,GAAG;AACxB,cAAc,MAAM,GAAG;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS,WAAI;AACb;AACA;AACA,CAAC;AACD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE,MAAM;;AAER;AACA;AACA,IAAI,MAAM;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA,GAAG;AACH;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA,MAAM,WAAI;AACV;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACe,wDAAM,EAAC;AACtB,kC;;ACjcA;AACyD;AACxB;;AAEjC;AACA,EAAE,aAAI;AACN;;AAEA,oBAAQ,KAAK,aAAM;AACnB,iC;;ACTgB,uDAAQ,EAAE;AAC1B,sC;;ACDgB,8DAAQ,EAAE;AAC1B,oC;;ACDgB;AAChB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,CAAC,EAAE;AACH,gC;;ACtCwD;AACJ;AACR;AAC5C,+B;;ACHwC;AACA;AACxC;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL,wBAAwB,MAAM,wBAAwB,EAAE,mBAAW;AACnE;AACA;;AAEA;AACe,kEAAc,EAAC;AAC9B,kC;;ACfsC;AACE;AACM;AAC/B,MAAM,yBAAY;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA,KAAK;AACL;AACA;AACA,iBAAiB,MAAM,GAAG;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,iBAAiB,MAAM,GAAG;AAC1B,eAAe,MAAM,GAAG;AACxB;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP,iCAAiC,MAAM,GAAG;AAC1C;;AAEA;AACA;AACA;AACA,QAAQ,QAAkB;AAC1B;AACA;AACA,SAAS;AACT;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA,MAAM,MAAM;AACZ;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL,yBAAyB;AACzB;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA,wBAAwB,MAAM;AAC9B;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,uBAAuB,6BAA6B;AACpD;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,wCAAwC,KAAK;AAC7C,+BAA+B,MAAM,GAAG,wBAAwB,MAAM,GAAG;AACzE;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,wC;;ACvYyD;AACR;AACJ;AACtC;AACP;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,gDAAgD;;AAEhD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,KAAK;AACL,qCAAqC,yBAAY;AACjD,KAAK;AACL;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,gEAAa,EAAC;AAC7B,gC;;AC3FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,eAAe;AAC3D,QAAQ;AACR,6BAA6B,oBAAoB;AACjD;AACA,IAAI;AACJ;AACA;AACwC;AACI;AACC;AACJ;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA,wBAAwB,MAAM,GAAG;AACjC,sBAAsB,MAAM,GAAG;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA,IAAI,MAAM;;AAEV;AACA;AACA;;AAEA,gCAAgC,yBAAY;AAC5C;AACA;AACA;AACA,8BAA8B;AAC9B,KAAK;AACL,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,0BAA0B,MAAM,GAAG;AACnC;AACA;;AAEA;AACA;AACA;;AAEA,0BAA0B,MAAM,GAAG;AACnC,IAAI,QAAQ;AACZ;AACA;AACA,KAAK;AACL,iDAAiD;AACjD;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;;AAEL;AACA,oEAAoE;;AAEpE;AACA,MAAM,MAAM;AACZ;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEe,sEAAY,4BAA4B,EAAC;AACjC;AACvB,uC;;ACtJA;;AAEA;AACe,uDAAI,EAAC;AACpB,gC;;ACJ2C;AACR;AACc;AACP;;AAE1C,SAAS,aAAK;AACd;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH,iBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA,GAAG,sBAAsB;;AAEzB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA,eAAe,UAAoB;AACnC;AACA;AACA;;AAEO;AACP,MAAM,EAAE;AACR,WAAW,eAAyB;AACpC,GAAG;AACH,WAAW,eAAyB;AACpC;AACA;AACA,MAAM,gBAAQ;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,UAAU;AACV;AACe,iEAAY,sBAAsB,EAAC;AAC9B;AACpB,mC;;AC7FA;AACA;AACA;AACA;AACA,aAAa,wBAAwB;AACrC;AACA,eAAe,+CAA+C;AAC9D,eAAe,+CAA+C;AAC9D,MAAM;AACN,IAAI;AACuC;AACM;AACP;AACQ;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS,WAAK;AACd;AACA;AACA;AACA,CAAC;AACD;AACA;AACA,GAAG;AACH;;AAEA;AACA,uBAAuB,kBAAkB;AACzC,aAAa,QAAkB;AAC/B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS,SAAG;AACZ;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA,eAAe,MAAM,GAAG;AACxB,gBAAgB,kBAAkB;AAClC,gBAAgB,kBAAkB;AAClC;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,MAAM,cAAQ;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL,UAAU;AACV;AACe,+DAAY,gCAAgC,EAAC;AACnC;AACzB,iC;;AClH2C;AACD;AACF;AACxC,MAAM,aAAQ,GAAG,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;;AAEA,CAAC,EAAE,QAAQ;AACX;AACA,SAAS,QAAQ;AACjB,OAAO,QAAQ;AACf,UAAU;AACV;AACe,8DAAY,8BAA8B,EAAC;AAClC;AACxB,gC;;ACvB2C;AACM;AACP;AACC;AACO;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS,UAAK;AACd,SAAS,aAAa;AACtB;;AAEA,SAAS,QAAG;AACZ;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA,kBAAkB,UAAoB,CAAC,kBAAkB;AACzD,kBAAkB,UAAoB,CAAC,kBAAkB;AACzD;AACA;AACA,WAAW,MAAM,GAAG,EAAE,aAAa;AACnC,WAAW,MAAM,GAAG,EAAE,aAAa;AACnC;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA,EAAE,aAAa;AACf;AACA;;AAEA,MAAM,aAAQ;AACd;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL,UAAU;AACV;AACe,qDAAY,8BAA8B,EAAC;AAClC;AACxB,gC;;AC1E2C;AACU;AACZ;AACN;AAC6B;AACtB;;AAE1C,SAAS,kBAAK;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,uBAAuB,eAAe;AACtC,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG,MAAM,MAAM;AACf;AACA;AACA,GAAG;AACH;;AAEA,SAAS,WAAG;AACZ;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH,iBAAiB,WAAW;AAC5B,eAAe,MAAM,GAAG;AACxB;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,qDAAqD,aAAa;AAClE;AACA;;AAEA,UAAU,EAAE;AACZ;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA,YAAY,EAAE;AACd,YAAY,EAAE;AACd,eAAe,EAAE;AACjB;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,qBAAqB,KAAK;AAC1B,oCAAoC;AACpC;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH,wBAAwB,QAAQ,CAAC,eAAe;AAChD,kCAAkC,WAAW;AAC7C;AACA;;AAEA,MAAM,qBAAQ;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL,UAAU;AACV;AACe,6DAAY,cAAc,EAAC;AAC1B;AAChB,mC;;AC/KA;AACA;AAC2C;AACR;AACO;AACN;;AAEpC,SAAS,eAAK;AACd;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,EAAE,IAAI;AACN;AACA;AACA;;AAEA,SAAS,aAAG;AACZ;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,kBAAkB,MAAM,GAAG;AAC3B;;AAEA;AACA;;AAEA,QAAQ,EAAE;AACV;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,sBAAsB,IAAI;AAC1B;AACA;AACA;;AAEA,MAAM,kBAAQ;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL,UAAU;AACV;AACe,0DAAY,sBAAsB,EAAC;AAC9B;AACpB,gC;;ACrGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,gBAAgB;AACzD,MAAM;AACN,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA,MAAM;AACN,IAAI;AACJ;AACA;AACyC;AACE;AACD;AACL;;AAErC,SAAS,gBAAK;AACd;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA,SAAS,QAAQ;AACjB;;AAEA;AACA,OAAO;AACP,OAAO,QAAQ;AACf,YAAY,MAAM,CAAC,KAAK,CAAC,QAAQ;AACjC;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACe,2DAAY,wBAAwB,EAAC;AAC/B;AACrB,iC;;AC5DA;AAC2C;AACZ;AACiB;AACH;AACC;AACA;AACL;AACD;AACH;AACC;AACL;AACM;AACxB;AACf,EAAE,kCAAW;AACb,EAAE,6BAAa;AACf,EAAE,0BAAQ;AACV,EAAE,2BAAY;AACd,EAAE,kBAAY;AACd,EAAE,qBAAS;AACX,EAAE,kBAAI;AACN,EAAE,mBAAQ;AACV,EAAE,sBAAM;AACR,EAAE,qBAAK;AACP,EAAE,yBAAS;AACX,EAAE,0BAAU;AACZ,CAAC,EAAC;AACF,+B;;AC3B6C;AAClB;AACE;AAC7B,MAAM,gBAAS;AACf;;AAEA;AACA;AACA;AACA,KA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","file":"vue-grid-layout.common.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"fb15\");\n","'use strict';\nvar LIBRARY = require('./_library');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar $iterCreate = require('./_iter-create');\nvar setToStringTag = require('./_set-to-string-tag');\nvar getPrototypeOf = require('./_object-gpo');\nvar ITERATOR = require('./_wks')('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n  $iterCreate(Constructor, NAME, next);\n  var getMethod = function (kind) {\n    if (!BUGGY && kind in proto) return proto[kind];\n    switch (kind) {\n      case KEYS: return function keys() { return new Constructor(this, kind); };\n      case VALUES: return function values() { return new Constructor(this, kind); };\n    } return function entries() { return new Constructor(this, kind); };\n  };\n  var TAG = NAME + ' Iterator';\n  var DEF_VALUES = DEFAULT == VALUES;\n  var VALUES_BUG = false;\n  var proto = Base.prototype;\n  var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n  var $default = $native || getMethod(DEFAULT);\n  var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n  var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n  var methods, key, IteratorPrototype;\n  // Fix native\n  if ($anyNative) {\n    IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n    if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n      // Set @@toStringTag to native iterators\n      setToStringTag(IteratorPrototype, TAG, true);\n      // fix for some old engines\n      if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);\n    }\n  }\n  // fix Array#{values, @@iterator}.name in V8 / FF\n  if (DEF_VALUES && $native && $native.name !== VALUES) {\n    VALUES_BUG = true;\n    $default = function values() { return $native.call(this); };\n  }\n  // Define iterator\n  if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n    hide(proto, ITERATOR, $default);\n  }\n  // Plug for library\n  Iterators[NAME] = $default;\n  Iterators[TAG] = returnThis;\n  if (DEFAULT) {\n    methods = {\n      values: DEF_VALUES ? $default : getMethod(VALUES),\n      keys: IS_SET ? $default : getMethod(KEYS),\n      entries: $entries\n    };\n    if (FORCED) for (key in methods) {\n      if (!(key in proto)) redefine(proto, key, methods[key]);\n    } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n  }\n  return methods;\n};\n","var toInteger = require('./_to-integer');\nvar defined = require('./_defined');\n// true  -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n  return function (that, pos) {\n    var s = String(defined(that));\n    var i = toInteger(pos);\n    var l = s.length;\n    var a, b;\n    if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n    a = s.charCodeAt(i);\n    return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n      ? TO_STRING ? s.charAt(i) : a\n      : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n  };\n};\n","'use strict';\nvar at = require('./_string-at')(true);\n\n // `AdvanceStringIndex` abstract operation\n// https://tc39.github.io/ecma262/#sec-advancestringindex\nmodule.exports = function (S, index, unicode) {\n  return index + (unicode ? at(S, index).length : 1);\n};\n","export * from \"-!../../node_modules/vue-style-loader/index.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./GridItem.vue?vue&type=style&index=0&id=46ff2fc8&lang=css\"","'use strict';\n// 21.2.5.3 get RegExp.prototype.flags\nvar anObject = require('./_an-object');\nmodule.exports = function () {\n  var that = anObject(this);\n  var result = '';\n  if (that.global) result += 'g';\n  if (that.ignoreCase) result += 'i';\n  if (that.multiline) result += 'm';\n  if (that.unicode) result += 'u';\n  if (that.sticky) result += 'y';\n  return result;\n};\n","// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = require('./_object-keys-internal');\nvar enumBugKeys = require('./_enum-bug-keys');\n\nmodule.exports = Object.keys || function keys(O) {\n  return $keys(O, enumBugKeys);\n};\n","var pIE = require('./_object-pie');\nvar createDesc = require('./_property-desc');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar has = require('./_has');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nexports.f = require('./_descriptors') ? gOPD : function getOwnPropertyDescriptor(O, P) {\n  O = toIObject(O);\n  P = toPrimitive(P, true);\n  if (IE8_DOM_DEFINE) try {\n    return gOPD(O, P);\n  } catch (e) { /* empty */ }\n  if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);\n};\n","var dP = require('./_object-dp');\nvar anObject = require('./_an-object');\nvar getKeys = require('./_object-keys');\n\nmodule.exports = require('./_descriptors') ? Object.defineProperties : function defineProperties(O, Properties) {\n  anObject(O);\n  var keys = getKeys(Properties);\n  var length = keys.length;\n  var i = 0;\n  var P;\n  while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n  return O;\n};\n","/**\n * Resize detection strategy that injects objects to elements in order to detect resize events.\n * Heavily inspired by: http://www.backalleycoder.com/2013/03/18/cross-browser-event-based-element-resize-detection/\n */\n\n\"use strict\";\n\nvar browserDetector = require(\"../browser-detector\");\n\nmodule.exports = function(options) {\n    options             = options || {};\n    var reporter        = options.reporter;\n    var batchProcessor  = options.batchProcessor;\n    var getState        = options.stateHandler.getState;\n\n    if(!reporter) {\n        throw new Error(\"Missing required dependency: reporter.\");\n    }\n\n    /**\n     * Adds a resize event listener to the element.\n     * @public\n     * @param {element} element The element that should have the listener added.\n     * @param {function} listener The listener callback to be called for each resize event of the element. The element will be given as a parameter to the listener callback.\n     */\n    function addListener(element, listener) {\n        function listenerProxy() {\n            listener(element);\n        }\n\n        if(browserDetector.isIE(8)) {\n            //IE 8 does not support object, but supports the resize event directly on elements.\n            getState(element).object = {\n                proxy: listenerProxy\n            };\n            element.attachEvent(\"onresize\", listenerProxy);\n        } else {\n            var object = getObject(element);\n\n            if(!object) {\n                throw new Error(\"Element is not detectable by this strategy.\");\n            }\n\n            object.contentDocument.defaultView.addEventListener(\"resize\", listenerProxy);\n        }\n    }\n\n    function buildCssTextString(rules) {\n        var seperator = options.important ? \" !important; \" : \"; \";\n\n        return (rules.join(seperator) + seperator).trim();\n    }\n\n    /**\n     * Makes an element detectable and ready to be listened for resize events. Will call the callback when the element is ready to be listened for resize changes.\n     * @private\n     * @param {object} options Optional options object.\n     * @param {element} element The element to make detectable\n     * @param {function} callback The callback to be called when the element is ready to be listened for resize changes. Will be called with the element as first parameter.\n     */\n    function makeDetectable(options, element, callback) {\n        if (!callback) {\n            callback = element;\n            element = options;\n            options = null;\n        }\n\n        options = options || {};\n        var debug = options.debug;\n\n        function injectObject(element, callback) {\n            var OBJECT_STYLE = buildCssTextString([\"display: block\", \"position: absolute\", \"top: 0\", \"left: 0\", \"width: 100%\", \"height: 100%\", \"border: none\", \"padding: 0\", \"margin: 0\", \"opacity: 0\", \"z-index: -1000\", \"pointer-events: none\"]);\n\n            //The target element needs to be positioned (everything except static) so the absolute positioned object will be positioned relative to the target element.\n\n            // Position altering may be performed directly or on object load, depending on if style resolution is possible directly or not.\n            var positionCheckPerformed = false;\n\n            // The element may not yet be attached to the DOM, and therefore the style object may be empty in some browsers.\n            // Since the style object is a reference, it will be updated as soon as the element is attached to the DOM.\n            var style = window.getComputedStyle(element);\n            var width = element.offsetWidth;\n            var height = element.offsetHeight;\n\n            getState(element).startSize = {\n                width: width,\n                height: height\n            };\n\n            function mutateDom() {\n                function alterPositionStyles() {\n                    if(style.position === \"static\") {\n                        element.style.setProperty(\"position\", \"relative\", options.important ? \"important\" : \"\");\n\n                        var removeRelativeStyles = function(reporter, element, style, property) {\n                            function getNumericalValue(value) {\n                                return value.replace(/[^-\\d\\.]/g, \"\");\n                            }\n\n                            var value = style[property];\n\n                            if(value !== \"auto\" && getNumericalValue(value) !== \"0\") {\n                                reporter.warn(\"An element that is positioned static has style.\" + property + \"=\" + value + \" which is ignored due to the static positioning. The element will need to be positioned relative, so the style.\" + property + \" will be set to 0. Element: \", element);\n                                element.style.setProperty(property, \"0\", options.important ? \"important\" : \"\");\n                            }\n                        };\n\n                        //Check so that there are no accidental styles that will make the element styled differently now that is is relative.\n                        //If there are any, set them to 0 (this should be okay with the user since the style properties did nothing before [since the element was positioned static] anyway).\n                        removeRelativeStyles(reporter, element, style, \"top\");\n                        removeRelativeStyles(reporter, element, style, \"right\");\n                        removeRelativeStyles(reporter, element, style, \"bottom\");\n                        removeRelativeStyles(reporter, element, style, \"left\");\n                    }\n                }\n\n                function onObjectLoad() {\n                    // The object has been loaded, which means that the element now is guaranteed to be attached to the DOM.\n                    if (!positionCheckPerformed) {\n                        alterPositionStyles();\n                    }\n\n                    /*jshint validthis: true */\n\n                    function getDocument(element, callback) {\n                        //Opera 12 seem to call the object.onload before the actual document has been created.\n                        //So if it is not present, poll it with an timeout until it is present.\n                        //TODO: Could maybe be handled better with object.onreadystatechange or similar.\n                        if(!element.contentDocument) {\n                            var state = getState(element);\n                            if (state.checkForObjectDocumentTimeoutId) {\n                                window.clearTimeout(state.checkForObjectDocumentTimeoutId);\n                            }\n                            state.checkForObjectDocumentTimeoutId = setTimeout(function checkForObjectDocument() {\n                                state.checkForObjectDocumentTimeoutId = 0;\n                                getDocument(element, callback);\n                            }, 100);\n\n                            return;\n                        }\n\n                        callback(element.contentDocument);\n                    }\n\n                    //Mutating the object element here seems to fire another load event.\n                    //Mutating the inner document of the object element is fine though.\n                    var objectElement = this;\n\n                    //Create the style element to be added to the object.\n                    getDocument(objectElement, function onObjectDocumentReady(objectDocument) {\n                        //Notify that the element is ready to be listened to.\n                        callback(element);\n                    });\n                }\n\n                // The element may be detached from the DOM, and some browsers does not support style resolving of detached elements.\n                // The alterPositionStyles needs to be delayed until we know the element has been attached to the DOM (which we are sure of when the onObjectLoad has been fired), if style resolution is not possible.\n                if (style.position !== \"\") {\n                    alterPositionStyles(style);\n                    positionCheckPerformed = true;\n                }\n\n                //Add an object element as a child to the target element that will be listened to for resize events.\n                var object = document.createElement(\"object\");\n                object.style.cssText = OBJECT_STYLE;\n                object.tabIndex = -1;\n                object.type = \"text/html\";\n                object.setAttribute(\"aria-hidden\", \"true\");\n                object.onload = onObjectLoad;\n\n                //Safari: This must occur before adding the object to the DOM.\n                //IE: Does not like that this happens before, even if it is also added after.\n                if(!browserDetector.isIE()) {\n                    object.data = \"about:blank\";\n                }\n\n                if (!getState(element)) {\n                    // The element has been uninstalled before the actual loading happened.\n                    return;\n                }\n\n                element.appendChild(object);\n                getState(element).object = object;\n\n                //IE: This must occur after adding the object to the DOM.\n                if(browserDetector.isIE()) {\n                    object.data = \"about:blank\";\n                }\n            }\n\n            if(batchProcessor) {\n                batchProcessor.add(mutateDom);\n            } else {\n                mutateDom();\n            }\n        }\n\n        if(browserDetector.isIE(8)) {\n            //IE 8 does not support objects properly. Luckily they do support the resize event.\n            //So do not inject the object and notify that the element is already ready to be listened to.\n            //The event handler for the resize event is attached in the utils.addListener instead.\n            callback(element);\n        } else {\n            injectObject(element, callback);\n        }\n    }\n\n    /**\n     * Returns the child object of the target element.\n     * @private\n     * @param {element} element The target element.\n     * @returns The object element of the target.\n     */\n    function getObject(element) {\n        return getState(element).object;\n    }\n\n    function uninstall(element) {\n        if (!getState(element)) {\n            return;\n        }\n\n        var object = getObject(element);\n\n        if (!object) {\n            return;\n        }\n\n        if (browserDetector.isIE(8)) {\n            element.detachEvent(\"onresize\", object.proxy);\n        } else {\n            element.removeChild(object);\n        }\n\n        if (getState(element).checkForObjectDocumentTimeoutId) {\n            window.clearTimeout(getState(element).checkForObjectDocumentTimeoutId);\n        }\n\n        delete getState(element).object;\n    }\n\n    return {\n        makeDetectable: makeDetectable,\n        addListener: addListener,\n        uninstall: uninstall\n    };\n};\n","\"use strict\";\n\nvar detector = module.exports = {};\n\ndetector.isIE = function(version) {\n    function isAnyIeVersion() {\n        var agent = navigator.userAgent.toLowerCase();\n        return agent.indexOf(\"msie\") !== -1 || agent.indexOf(\"trident\") !== -1 || agent.indexOf(\" edge/\") !== -1;\n    }\n\n    if(!isAnyIeVersion()) {\n        return false;\n    }\n\n    if(!version) {\n        return true;\n    }\n\n    //Shamelessly stolen from https://gist.github.com/padolsey/527683\n    var ieVersion = (function(){\n        var undef,\n            v = 3,\n            div = document.createElement(\"div\"),\n            all = div.getElementsByTagName(\"i\");\n\n        do {\n            div.innerHTML = \"<!--[if gt IE \" + (++v) + \"]><i></i><![endif]-->\";\n        }\n        while (all[0]);\n\n        return v > 4 ? v : undef;\n    }());\n\n    return version === ieVersion;\n};\n\ndetector.isLegacyOpera = function() {\n    return !!window.opera;\n};\n","'use strict';\nrequire('./es6.regexp.exec');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar fails = require('./_fails');\nvar defined = require('./_defined');\nvar wks = require('./_wks');\nvar regexpExec = require('./_regexp-exec');\n\nvar SPECIES = wks('species');\n\nvar REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {\n  // #replace needs built-in support for named groups.\n  // #match works fine because it just return the exec results, even if it has\n  // a \"grops\" property.\n  var re = /./;\n  re.exec = function () {\n    var result = [];\n    result.groups = { a: '7' };\n    return result;\n  };\n  return ''.replace(re, '$<a>') !== '7';\n});\n\nvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = (function () {\n  // Chrome 51 has a buggy \"split\" implementation when RegExp#exec !== nativeExec\n  var re = /(?:)/;\n  var originalExec = re.exec;\n  re.exec = function () { return originalExec.apply(this, arguments); };\n  var result = 'ab'.split(re);\n  return result.length === 2 && result[0] === 'a' && result[1] === 'b';\n})();\n\nmodule.exports = function (KEY, length, exec) {\n  var SYMBOL = wks(KEY);\n\n  var DELEGATES_TO_SYMBOL = !fails(function () {\n    // String methods call symbol-named RegEp methods\n    var O = {};\n    O[SYMBOL] = function () { return 7; };\n    return ''[KEY](O) != 7;\n  });\n\n  var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL ? !fails(function () {\n    // Symbol-named RegExp methods call .exec\n    var execCalled = false;\n    var re = /a/;\n    re.exec = function () { execCalled = true; return null; };\n    if (KEY === 'split') {\n      // RegExp[@@split] doesn't call the regex's exec method, but first creates\n      // a new one. We need to return the patched regex when creating the new one.\n      re.constructor = {};\n      re.constructor[SPECIES] = function () { return re; };\n    }\n    re[SYMBOL]('');\n    return !execCalled;\n  }) : undefined;\n\n  if (\n    !DELEGATES_TO_SYMBOL ||\n    !DELEGATES_TO_EXEC ||\n    (KEY === 'replace' && !REPLACE_SUPPORTS_NAMED_GROUPS) ||\n    (KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC)\n  ) {\n    var nativeRegExpMethod = /./[SYMBOL];\n    var fns = exec(\n      defined,\n      SYMBOL,\n      ''[KEY],\n      function maybeCallNative(nativeMethod, regexp, str, arg2, forceStringMethod) {\n        if (regexp.exec === regexpExec) {\n          if (DELEGATES_TO_SYMBOL && !forceStringMethod) {\n            // The native String method already delegates to @@method (this\n            // polyfilled function), leasing to infinite recursion.\n            // We avoid it by directly calling the native @@method method.\n            return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) };\n          }\n          return { done: true, value: nativeMethod.call(str, regexp, arg2) };\n        }\n        return { done: false };\n      }\n    );\n    var strfn = fns[0];\n    var rxfn = fns[1];\n\n    redefine(String.prototype, KEY, strfn);\n    hide(RegExp.prototype, SYMBOL, length == 2\n      // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)\n      // 21.2.5.11 RegExp.prototype[@@split](string, limit)\n      ? function (string, arg) { return rxfn.call(string, this, arg); }\n      // 21.2.5.6 RegExp.prototype[@@match](string)\n      // 21.2.5.9 RegExp.prototype[@@search](string)\n      : function (string) { return rxfn.call(string, this); }\n    );\n  }\n};\n","var isObject = require('./_is-object');\nvar document = require('./_global').document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n  return is ? document.createElement(it) : {};\n};\n","// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = require('./_cof');\nvar TAG = require('./_wks')('toStringTag');\n// ES3 wrong here\nvar ARG = cof(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n  try {\n    return it[key];\n  } catch (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n  var O, T, B;\n  return it === undefined ? 'Undefined' : it === null ? 'Null'\n    // @@toStringTag case\n    : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n    // builtinTag case\n    : ARG ? cof(O)\n    // ES3 arguments fallback\n    : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n","\"use strict\";\n\n/*\n  MIT License http://www.opensource.org/licenses/mit-license.php\n  Author Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\n// eslint-disable-next-line func-names\nmodule.exports = function (useSourceMap) {\n  var list = []; // return the list of modules as css string\n\n  list.toString = function toString() {\n    return this.map(function (item) {\n      var content = cssWithMappingToString(item, useSourceMap);\n\n      if (item[2]) {\n        return \"@media \".concat(item[2], \" {\").concat(content, \"}\");\n      }\n\n      return content;\n    }).join('');\n  }; // import a list of modules into the list\n  // eslint-disable-next-line func-names\n\n\n  list.i = function (modules, mediaQuery, dedupe) {\n    if (typeof modules === 'string') {\n      // eslint-disable-next-line no-param-reassign\n      modules = [[null, modules, '']];\n    }\n\n    var alreadyImportedModules = {};\n\n    if (dedupe) {\n      for (var i = 0; i < this.length; i++) {\n        // eslint-disable-next-line prefer-destructuring\n        var id = this[i][0];\n\n        if (id != null) {\n          alreadyImportedModules[id] = true;\n        }\n      }\n    }\n\n    for (var _i = 0; _i < modules.length; _i++) {\n      var item = [].concat(modules[_i]);\n\n      if (dedupe && alreadyImportedModules[item[0]]) {\n        // eslint-disable-next-line no-continue\n        continue;\n      }\n\n      if (mediaQuery) {\n        if (!item[2]) {\n          item[2] = mediaQuery;\n        } else {\n          item[2] = \"\".concat(mediaQuery, \" and \").concat(item[2]);\n        }\n      }\n\n      list.push(item);\n    }\n  };\n\n  return list;\n};\n\nfunction cssWithMappingToString(item, useSourceMap) {\n  var content = item[1] || ''; // eslint-disable-next-line prefer-destructuring\n\n  var cssMapping = item[3];\n\n  if (!cssMapping) {\n    return content;\n  }\n\n  if (useSourceMap && typeof btoa === 'function') {\n    var sourceMapping = toComment(cssMapping);\n    var sourceURLs = cssMapping.sources.map(function (source) {\n      return \"/*# sourceURL=\".concat(cssMapping.sourceRoot || '').concat(source, \" */\");\n    });\n    return [content].concat(sourceURLs).concat([sourceMapping]).join('\\n');\n  }\n\n  return [content].join('\\n');\n} // Adapted from convert-source-map (MIT)\n\n\nfunction toComment(sourceMap) {\n  // eslint-disable-next-line no-undef\n  var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));\n  var data = \"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(base64);\n  return \"/*# \".concat(data, \" */\");\n}","exports.f = Object.getOwnPropertySymbols;\n","var global = require('./_global');\nvar hide = require('./_hide');\nvar has = require('./_has');\nvar SRC = require('./_uid')('src');\nvar $toString = require('./_function-to-string');\nvar TO_STRING = 'toString';\nvar TPL = ('' + $toString).split(TO_STRING);\n\nrequire('./_core').inspectSource = function (it) {\n  return $toString.call(it);\n};\n\n(module.exports = function (O, key, val, safe) {\n  var isFunction = typeof val == 'function';\n  if (isFunction) has(val, 'name') || hide(val, 'name', key);\n  if (O[key] === val) return;\n  if (isFunction) has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key)));\n  if (O === global) {\n    O[key] = val;\n  } else if (!safe) {\n    delete O[key];\n    hide(O, key, val);\n  } else if (O[key]) {\n    O[key] = val;\n  } else {\n    hide(O, key, val);\n  }\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, TO_STRING, function toString() {\n  return typeof this == 'function' && this[SRC] || $toString.call(this);\n});\n","// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = require('./_an-object');\nvar dPs = require('./_object-dps');\nvar enumBugKeys = require('./_enum-bug-keys');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n  // Thrash, waste and sodomy: IE GC bug\n  var iframe = require('./_dom-create')('iframe');\n  var i = enumBugKeys.length;\n  var lt = '<';\n  var gt = '>';\n  var iframeDocument;\n  iframe.style.display = 'none';\n  require('./_html').appendChild(iframe);\n  iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n  // createDict = iframe.contentWindow.Object;\n  // html.removeChild(iframe);\n  iframeDocument = iframe.contentWindow.document;\n  iframeDocument.open();\n  iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n  iframeDocument.close();\n  createDict = iframeDocument.F;\n  while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n  return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n  var result;\n  if (O !== null) {\n    Empty[PROTOTYPE] = anObject(O);\n    result = new Empty();\n    Empty[PROTOTYPE] = null;\n    // add \"__proto__\" for Object.getPrototypeOf polyfill\n    result[IE_PROTO] = O;\n  } else result = createDict();\n  return Properties === undefined ? result : dPs(result, Properties);\n};\n","var store = require('./_shared')('wks');\nvar uid = require('./_uid');\nvar Symbol = require('./_global').Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n  return store[name] || (store[name] =\n    USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n","\"use strict\";\n\nmodule.exports = function() {\n    var idCount = 1;\n\n    /**\n     * Generates a new unique id in the context.\n     * @public\n     * @returns {number} A unique id in the context.\n     */\n    function generate() {\n        return idCount++;\n    }\n\n    return {\n        generate: generate\n    };\n};\n","module.exports = false;\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n  return toString.call(it).slice(8, -1);\n};\n","'use strict';\nvar fails = require('./_fails');\n\nmodule.exports = function (method, arg) {\n  return !!method && fails(function () {\n    // eslint-disable-next-line no-useless-call\n    arg ? method.call(null, function () { /* empty */ }, 1) : method.call(null);\n  });\n};\n","var dP = require('./_object-dp');\nvar createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function (object, key, value) {\n  return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n  object[key] = value;\n  return object;\n};\n","// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = require('./_has');\nvar toObject = require('./_to-object');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n  O = toObject(O);\n  if (has(O, IE_PROTO)) return O[IE_PROTO];\n  if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n    return O.constructor.prototype;\n  } return O instanceof Object ? ObjectProto : null;\n};\n","'use strict';\nvar create = require('./_object-create');\nvar descriptor = require('./_property-desc');\nvar setToStringTag = require('./_set-to-string-tag');\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nrequire('./_hide')(IteratorPrototype, require('./_wks')('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n  Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n  setToStringTag(Constructor, NAME + ' Iterator');\n};\n","// 19.1.2.14 Object.keys(O)\nvar toObject = require('./_to-object');\nvar $keys = require('./_object-keys');\n\nrequire('./_object-sap')('keys', function () {\n  return function keys(it) {\n    return $keys(toObject(it));\n  };\n});\n","// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n  return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n","module.exports = function (bitmap, value) {\n  return {\n    enumerable: !(bitmap & 1),\n    configurable: !(bitmap & 2),\n    writable: !(bitmap & 4),\n    value: value\n  };\n};\n","'use strict';\n\nvar anObject = require('./_an-object');\nvar toLength = require('./_to-length');\nvar advanceStringIndex = require('./_advance-string-index');\nvar regExpExec = require('./_regexp-exec-abstract');\n\n// @@match logic\nrequire('./_fix-re-wks')('match', 1, function (defined, MATCH, $match, maybeCallNative) {\n  return [\n    // `String.prototype.match` method\n    // https://tc39.github.io/ecma262/#sec-string.prototype.match\n    function match(regexp) {\n      var O = defined(this);\n      var fn = regexp == undefined ? undefined : regexp[MATCH];\n      return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[MATCH](String(O));\n    },\n    // `RegExp.prototype[@@match]` method\n    // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@match\n    function (regexp) {\n      var res = maybeCallNative($match, regexp, this);\n      if (res.done) return res.value;\n      var rx = anObject(regexp);\n      var S = String(this);\n      if (!rx.global) return regExpExec(rx, S);\n      var fullUnicode = rx.unicode;\n      rx.lastIndex = 0;\n      var A = [];\n      var n = 0;\n      var result;\n      while ((result = regExpExec(rx, S)) !== null) {\n        var matchStr = String(result[0]);\n        A[n] = matchStr;\n        if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n        n++;\n      }\n      return n === 0 ? null : A;\n    }\n  ];\n});\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".vue-grid-item{-webkit-transition:all .2s ease;transition:all .2s ease;-webkit-transition-property:left,top,right;transition-property:left,top,right}.vue-grid-item,.vue-grid-item.no-touch{-ms-touch-action:none;touch-action:none}.vue-grid-item.cssTransforms{-webkit-transition-property:-webkit-transform;transition-property:-webkit-transform;transition-property:transform;transition-property:transform,-webkit-transform;left:0;right:auto}.vue-grid-item.cssTransforms.render-rtl{left:auto;right:0}.vue-grid-item.resizing{opacity:.6;z-index:3}.vue-grid-item.vue-draggable-dragging{-webkit-transition:none;transition:none;z-index:3}.vue-grid-item.vue-grid-placeholder{background:red;opacity:.2;-webkit-transition-duration:.1s;transition-duration:.1s;z-index:2;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none}.vue-grid-item>.vue-resizable-handle{position:absolute;width:20px;height:20px;bottom:0;right:0;background:url(\\\"data:image/svg+xml;base64,PHN2ZyBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjojZmZmZmZmMDAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjYiIGhlaWdodD0iNiI+PHBhdGggZD0iTTYgNkgwVjQuMmg0LjJWMEg2djZ6IiBvcGFjaXR5PSIuMzAyIi8+PC9zdmc+\\\");background-position:100% 100%;padding:0 3px 3px 0;background-repeat:no-repeat;background-origin:content-box;-webkit-box-sizing:border-box;box-sizing:border-box;cursor:se-resize}.vue-grid-item>.vue-rtl-resizable-handle{bottom:0;left:0;background:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTAiIGhlaWdodD0iMTAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbD0ibm9uZSIgZD0iTS0xLTFoMTJ2MTJILTF6Ii8+PGc+PHBhdGggc3Ryb2tlLWxpbmVjYXA9InVuZGVmaW5lZCIgc3Ryb2tlLWxpbmVqb2luPSJ1bmRlZmluZWQiIHN0cm9rZS13aWR0aD0iMS41IiBzdHJva2U9IiMwMDAiIGZpbGw9Im5vbmUiIGQ9Ik0xNDQuODIxLTM4LjM5M2wtMjAuMzU3LTMxLjc4NSIvPjxwYXRoIHN0cm9rZT0iIzY2NiIgc3Ryb2tlLWxpbmVjYXA9InVuZGVmaW5lZCIgc3Ryb2tlLWxpbmVqb2luPSJ1bmRlZmluZWQiIHN0cm9rZS13aWR0aD0iMiIgZmlsbD0ibm9uZSIgZD0iTS45NDctLjAxOHY5LjEyNU0tLjY1NiA5aDEwLjczIi8+PC9nPjwvc3ZnPg==);background-position:0 100%;padding-left:3px;background-repeat:no-repeat;background-origin:content-box;cursor:sw-resize;right:auto}.vue-grid-item.disable-userselect{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}\", \"\"]);\n// Exports\nmodule.exports = exports;\n","/**\n * Translates the list format produced by css-loader into something\n * easier to manipulate.\n */\nexport default function listToStyles (parentId, list) {\n  var styles = []\n  var newStyles = {}\n  for (var i = 0; i < list.length; i++) {\n    var item = list[i]\n    var id = item[0]\n    var css = item[1]\n    var media = item[2]\n    var sourceMap = item[3]\n    var part = {\n      id: parentId + ':' + i,\n      css: css,\n      media: media,\n      sourceMap: sourceMap\n    }\n    if (!newStyles[id]) {\n      styles.push(newStyles[id] = { id: id, parts: [part] })\n    } else {\n      newStyles[id].parts.push(part)\n    }\n  }\n  return styles\n}\n","/*\n  MIT License http://www.opensource.org/licenses/mit-license.php\n  Author Tobias Koppers @sokra\n  Modified by Evan You @yyx990803\n*/\n\nimport listToStyles from './listToStyles'\n\nvar hasDocument = typeof document !== 'undefined'\n\nif (typeof DEBUG !== 'undefined' && DEBUG) {\n  if (!hasDocument) {\n    throw new Error(\n    'vue-style-loader cannot be used in a non-browser environment. ' +\n    \"Use { target: 'node' } in your Webpack config to indicate a server-rendering environment.\"\n  ) }\n}\n\n/*\ntype StyleObject = {\n  id: number;\n  parts: Array<StyleObjectPart>\n}\n\ntype StyleObjectPart = {\n  css: string;\n  media: string;\n  sourceMap: ?string\n}\n*/\n\nvar stylesInDom = {/*\n  [id: number]: {\n    id: number,\n    refs: number,\n    parts: Array<(obj?: StyleObjectPart) => void>\n  }\n*/}\n\nvar head = hasDocument && (document.head || document.getElementsByTagName('head')[0])\nvar singletonElement = null\nvar singletonCounter = 0\nvar isProduction = false\nvar noop = function () {}\nvar options = null\nvar ssrIdKey = 'data-vue-ssr-id'\n\n// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>\n// tags it will allow on a page\nvar isOldIE = typeof navigator !== 'undefined' && /msie [6-9]\\b/.test(navigator.userAgent.toLowerCase())\n\nexport default function addStylesClient (parentId, list, _isProduction, _options) {\n  isProduction = _isProduction\n\n  options = _options || {}\n\n  var styles = listToStyles(parentId, list)\n  addStylesToDom(styles)\n\n  return function update (newList) {\n    var mayRemove = []\n    for (var i = 0; i < styles.length; i++) {\n      var item = styles[i]\n      var domStyle = stylesInDom[item.id]\n      domStyle.refs--\n      mayRemove.push(domStyle)\n    }\n    if (newList) {\n      styles = listToStyles(parentId, newList)\n      addStylesToDom(styles)\n    } else {\n      styles = []\n    }\n    for (var i = 0; i < mayRemove.length; i++) {\n      var domStyle = mayRemove[i]\n      if (domStyle.refs === 0) {\n        for (var j = 0; j < domStyle.parts.length; j++) {\n          domStyle.parts[j]()\n        }\n        delete stylesInDom[domStyle.id]\n      }\n    }\n  }\n}\n\nfunction addStylesToDom (styles /* Array<StyleObject> */) {\n  for (var i = 0; i < styles.length; i++) {\n    var item = styles[i]\n    var domStyle = stylesInDom[item.id]\n    if (domStyle) {\n      domStyle.refs++\n      for (var j = 0; j < domStyle.parts.length; j++) {\n        domStyle.parts[j](item.parts[j])\n      }\n      for (; j < item.parts.length; j++) {\n        domStyle.parts.push(addStyle(item.parts[j]))\n      }\n      if (domStyle.parts.length > item.parts.length) {\n        domStyle.parts.length = item.parts.length\n      }\n    } else {\n      var parts = []\n      for (var j = 0; j < item.parts.length; j++) {\n        parts.push(addStyle(item.parts[j]))\n      }\n      stylesInDom[item.id] = { id: item.id, refs: 1, parts: parts }\n    }\n  }\n}\n\nfunction createStyleElement () {\n  var styleElement = document.createElement('style')\n  styleElement.type = 'text/css'\n  head.appendChild(styleElement)\n  return styleElement\n}\n\nfunction addStyle (obj /* StyleObjectPart */) {\n  var update, remove\n  var styleElement = document.querySelector('style[' + ssrIdKey + '~=\"' + obj.id + '\"]')\n\n  if (styleElement) {\n    if (isProduction) {\n      // has SSR styles and in production mode.\n      // simply do nothing.\n      return noop\n    } else {\n      // has SSR styles but in dev mode.\n      // for some reason Chrome can't handle source map in server-rendered\n      // style tags - source maps in <style> only works if the style tag is\n      // created and inserted dynamically. So we remove the server rendered\n      // styles and inject new ones.\n      styleElement.parentNode.removeChild(styleElement)\n    }\n  }\n\n  if (isOldIE) {\n    // use singleton mode for IE9.\n    var styleIndex = singletonCounter++\n    styleElement = singletonElement || (singletonElement = createStyleElement())\n    update = applyToSingletonTag.bind(null, styleElement, styleIndex, false)\n    remove = applyToSingletonTag.bind(null, styleElement, styleIndex, true)\n  } else {\n    // use multi-style-tag mode in all other cases\n    styleElement = createStyleElement()\n    update = applyToTag.bind(null, styleElement)\n    remove = function () {\n      styleElement.parentNode.removeChild(styleElement)\n    }\n  }\n\n  update(obj)\n\n  return function updateStyle (newObj /* StyleObjectPart */) {\n    if (newObj) {\n      if (newObj.css === obj.css &&\n          newObj.media === obj.media &&\n          newObj.sourceMap === obj.sourceMap) {\n        return\n      }\n      update(obj = newObj)\n    } else {\n      remove()\n    }\n  }\n}\n\nvar replaceText = (function () {\n  var textStore = []\n\n  return function (index, replacement) {\n    textStore[index] = replacement\n    return textStore.filter(Boolean).join('\\n')\n  }\n})()\n\nfunction applyToSingletonTag (styleElement, index, remove, obj) {\n  var css = remove ? '' : obj.css\n\n  if (styleElement.styleSheet) {\n    styleElement.styleSheet.cssText = replaceText(index, css)\n  } else {\n    var cssNode = document.createTextNode(css)\n    var childNodes = styleElement.childNodes\n    if (childNodes[index]) styleElement.removeChild(childNodes[index])\n    if (childNodes.length) {\n      styleElement.insertBefore(cssNode, childNodes[index])\n    } else {\n      styleElement.appendChild(cssNode)\n    }\n  }\n}\n\nfunction applyToTag (styleElement, obj) {\n  var css = obj.css\n  var media = obj.media\n  var sourceMap = obj.sourceMap\n\n  if (media) {\n    styleElement.setAttribute('media', media)\n  }\n  if (options.ssrId) {\n    styleElement.setAttribute(ssrIdKey, obj.id)\n  }\n\n  if (sourceMap) {\n    // https://developer.chrome.com/devtools/docs/javascript-debugging\n    // this makes source maps inside style tags work properly in Chrome\n    css += '\\n/*# sourceURL=' + sourceMap.sources[0] + ' */'\n    // http://stackoverflow.com/a/26603875\n    css += '\\n/*# sourceMappingURL=data:application/json;base64,' + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + ' */'\n  }\n\n  if (styleElement.styleSheet) {\n    styleElement.styleSheet.cssText = css\n  } else {\n    while (styleElement.firstChild) {\n      styleElement.removeChild(styleElement.firstChild)\n    }\n    styleElement.appendChild(document.createTextNode(css))\n  }\n}\n","\"use strict\";\n\nmodule.exports = function(idHandler) {\n    var eventListeners = {};\n\n    /**\n     * Gets all listeners for the given element.\n     * @public\n     * @param {element} element The element to get all listeners for.\n     * @returns All listeners for the given element.\n     */\n    function getListeners(element) {\n        var id = idHandler.get(element);\n\n        if (id === undefined) {\n            return [];\n        }\n\n        return eventListeners[id] || [];\n    }\n\n    /**\n     * Stores the given listener for the given element. Will not actually add the listener to the element.\n     * @public\n     * @param {element} element The element that should have the listener added.\n     * @param {function} listener The callback that the element has added.\n     */\n    function addListener(element, listener) {\n        var id = idHandler.get(element);\n\n        if(!eventListeners[id]) {\n            eventListeners[id] = [];\n        }\n\n        eventListeners[id].push(listener);\n    }\n\n    function removeListener(element, listener) {\n        var listeners = getListeners(element);\n        for (var i = 0, len = listeners.length; i < len; ++i) {\n            if (listeners[i] === listener) {\n              listeners.splice(i, 1);\n              break;\n            }\n        }\n    }\n\n    function removeAllListeners(element) {\n      var listeners = getListeners(element);\n      if (!listeners) { return; }\n      listeners.length = 0;\n    }\n\n    return {\n        get: getListeners,\n        add: addListener,\n        removeListener: removeListener,\n        removeAllListeners: removeAllListeners\n    };\n};\n","// 7.1.13 ToObject(argument)\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n  return Object(defined(it));\n};\n","\"use strict\";\n\nmodule.exports = function(options) {\n    var idGenerator     = options.idGenerator;\n    var getState        = options.stateHandler.getState;\n\n    /**\n     * Gets the resize detector id of the element.\n     * @public\n     * @param {element} element The target element to get the id of.\n     * @returns {string|number|null} The id of the element. Null if it has no id.\n     */\n    function getId(element) {\n        var state = getState(element);\n\n        if (state && state.id !== undefined) {\n            return state.id;\n        }\n\n        return null;\n    }\n\n    /**\n     * Sets the resize detector id of the element. Requires the element to have a resize detector state initialized.\n     * @public\n     * @param {element} element The target element to set the id of.\n     * @returns {string|number|null} The id of the element.\n     */\n    function setId(element) {\n        var state = getState(element);\n\n        if (!state) {\n            throw new Error(\"setId required the element to have a resize detection state.\");\n        }\n\n        var id = idGenerator.generate();\n\n        state.id = id;\n\n        return id;\n    }\n\n    return {\n        get: getId,\n        set: setId\n    };\n};\n","\"use strict\";\n\nvar utils = module.exports = {};\n\nutils.getOption = getOption;\n\nfunction getOption(options, name, defaultValue) {\n    var value = options[name];\n\n    if((value === undefined || value === null) && defaultValue !== undefined) {\n        return defaultValue;\n    }\n\n    return value;\n}\n","'use strict';\n\nvar regexpFlags = require('./_flags');\n\nvar nativeExec = RegExp.prototype.exec;\n// This always refers to the native implementation, because the\n// String#replace polyfill uses ./fix-regexp-well-known-symbol-logic.js,\n// which loads this file before patching the method.\nvar nativeReplace = String.prototype.replace;\n\nvar patchedExec = nativeExec;\n\nvar LAST_INDEX = 'lastIndex';\n\nvar UPDATES_LAST_INDEX_WRONG = (function () {\n  var re1 = /a/,\n      re2 = /b*/g;\n  nativeExec.call(re1, 'a');\n  nativeExec.call(re2, 'a');\n  return re1[LAST_INDEX] !== 0 || re2[LAST_INDEX] !== 0;\n})();\n\n// nonparticipating capturing group, copied from es5-shim's String#split patch.\nvar NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;\n\nvar PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED;\n\nif (PATCH) {\n  patchedExec = function exec(str) {\n    var re = this;\n    var lastIndex, reCopy, match, i;\n\n    if (NPCG_INCLUDED) {\n      reCopy = new RegExp('^' + re.source + '$(?!\\\\s)', regexpFlags.call(re));\n    }\n    if (UPDATES_LAST_INDEX_WRONG) lastIndex = re[LAST_INDEX];\n\n    match = nativeExec.call(re, str);\n\n    if (UPDATES_LAST_INDEX_WRONG && match) {\n      re[LAST_INDEX] = re.global ? match.index + match[0].length : lastIndex;\n    }\n    if (NPCG_INCLUDED && match && match.length > 1) {\n      // Fix browsers whose `exec` methods don't consistently return `undefined`\n      // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/\n      // eslint-disable-next-line no-loop-func\n      nativeReplace.call(match[0], reCopy, function () {\n        for (i = 1; i < arguments.length - 2; i++) {\n          if (arguments[i] === undefined) match[i] = undefined;\n        }\n      });\n    }\n\n    return match;\n  };\n}\n\nmodule.exports = patchedExec;\n","exports.f = {}.propertyIsEnumerable;\n","var core = require('./_core');\nvar global = require('./_global');\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n  return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n  version: core.version,\n  mode: require('./_library') ? 'pure' : 'global',\n  copyright: '© 2020 Denis Pushkarev (zloirock.ru)'\n});\n","'use strict';\nvar $export = require('./_export');\nvar aFunction = require('./_a-function');\nvar toObject = require('./_to-object');\nvar fails = require('./_fails');\nvar $sort = [].sort;\nvar test = [1, 2, 3];\n\n$export($export.P + $export.F * (fails(function () {\n  // IE8-\n  test.sort(undefined);\n}) || !fails(function () {\n  // V8 bug\n  test.sort(null);\n  // Old WebKit\n}) || !require('./_strict-method')($sort)), 'Array', {\n  // 22.1.3.25 Array.prototype.sort(comparefn)\n  sort: function sort(comparefn) {\n    return comparefn === undefined\n      ? $sort.call(toObject(this))\n      : $sort.call(toObject(this), aFunction(comparefn));\n  }\n});\n","\"use strict\";\n\nmodule.exports = function(options) {\n    var getState = options.stateHandler.getState;\n\n    /**\n     * Tells if the element has been made detectable and ready to be listened for resize events.\n     * @public\n     * @param {element} The element to check.\n     * @returns {boolean} True or false depending on if the element is detectable or not.\n     */\n    function isDetectable(element) {\n        var state = getState(element);\n        return state && !!state.isDetectable;\n    }\n\n    /**\n     * Marks the element that it has been made detectable and ready to be listened for resize events.\n     * @public\n     * @param {element} The element to mark.\n     */\n    function markAsDetectable(element) {\n        getState(element).isDetectable = true;\n    }\n\n    /**\n     * Tells if the element is busy or not.\n     * @public\n     * @param {element} The element to check.\n     * @returns {boolean} True or false depending on if the element is busy or not.\n     */\n    function isBusy(element) {\n        return !!getState(element).busy;\n    }\n\n    /**\n     * Marks the object is busy and should not be made detectable.\n     * @public\n     * @param {element} element The element to mark.\n     * @param {boolean} busy If the element is busy or not.\n     */\n    function markBusy(element, busy) {\n        getState(element).busy = !!busy;\n    }\n\n    return {\n        isDetectable: isDetectable,\n        markAsDetectable: markAsDetectable,\n        isBusy: isBusy,\n        markBusy: markBusy\n    };\n};\n","var global = require('./_global');\nvar core = require('./_core');\nvar hide = require('./_hide');\nvar redefine = require('./_redefine');\nvar ctx = require('./_ctx');\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n  var IS_FORCED = type & $export.F;\n  var IS_GLOBAL = type & $export.G;\n  var IS_STATIC = type & $export.S;\n  var IS_PROTO = type & $export.P;\n  var IS_BIND = type & $export.B;\n  var target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE];\n  var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n  var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {});\n  var key, own, out, exp;\n  if (IS_GLOBAL) source = name;\n  for (key in source) {\n    // contains in native\n    own = !IS_FORCED && target && target[key] !== undefined;\n    // export native or passed\n    out = (own ? target : source)[key];\n    // bind timers to global for call from export context\n    exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n    // extend global\n    if (target) redefine(target, key, out, type & $export.U);\n    // export\n    if (exports[key] != out) hide(exports, key, exp);\n    if (IS_PROTO && expProto[key] != out) expProto[key] = out;\n  }\n};\nglobal.core = core;\n// type bitmap\n$export.F = 1;   // forced\n$export.G = 2;   // global\n$export.S = 4;   // static\n$export.P = 8;   // proto\n$export.B = 16;  // bind\n$export.W = 32;  // wrap\n$export.U = 64;  // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n","var isObject = require('./_is-object');\nvar setPrototypeOf = require('./_set-proto').set;\nmodule.exports = function (that, target, C) {\n  var S = target.constructor;\n  var P;\n  if (S !== C && typeof S == 'function' && (P = S.prototype) !== C.prototype && isObject(P) && setPrototypeOf) {\n    setPrototypeOf(that, P);\n  } return that;\n};\n","// most Object methods by ES6 should accept primitives\nvar $export = require('./_export');\nvar core = require('./_core');\nvar fails = require('./_fails');\nmodule.exports = function (KEY, exec) {\n  var fn = (core.Object || {})[KEY] || Object[KEY];\n  var exp = {};\n  exp[KEY] = exec(fn);\n  $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);\n};\n","'use strict';\n\nvar classof = require('./_classof');\nvar builtinExec = RegExp.prototype.exec;\n\n // `RegExpExec` abstract operation\n// https://tc39.github.io/ecma262/#sec-regexpexec\nmodule.exports = function (R, S) {\n  var exec = R.exec;\n  if (typeof exec === 'function') {\n    var result = exec.call(R, S);\n    if (typeof result !== 'object') {\n      throw new TypeError('RegExp exec method returned something other than an Object or null');\n    }\n    return result;\n  }\n  if (classof(R) !== 'RegExp') {\n    throw new TypeError('RegExp#exec called on incompatible receiver');\n  }\n  return builtinExec.call(R, S);\n};\n","var shared = require('./_shared')('keys');\nvar uid = require('./_uid');\nmodule.exports = function (key) {\n  return shared[key] || (shared[key] = uid(key));\n};\n","// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = require('./_cof');\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n  return cof(it) == 'String' ? it.split('') : Object(it);\n};\n","export * from \"-!../../node_modules/vue-style-loader/index.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./GridLayout.vue?vue&type=style&index=0&id=fc5948f6&lang=css\"","// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = require('./_iobject');\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n  return IObject(defined(it));\n};\n","var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n  return hasOwnProperty.call(it, key);\n};\n","// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n  if (!isObject(it)) return it;\n  var fn, val;\n  if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n  if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n  if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n  throw TypeError(\"Can't convert object to primitive value\");\n};\n","'use strict';\n// 19.1.2.1 Object.assign(target, source, ...)\nvar DESCRIPTORS = require('./_descriptors');\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nvar toObject = require('./_to-object');\nvar IObject = require('./_iobject');\nvar $assign = Object.assign;\n\n// should work with symbols and should have deterministic property order (V8 bug)\nmodule.exports = !$assign || require('./_fails')(function () {\n  var A = {};\n  var B = {};\n  // eslint-disable-next-line no-undef\n  var S = Symbol();\n  var K = 'abcdefghijklmnopqrst';\n  A[S] = 7;\n  K.split('').forEach(function (k) { B[k] = k; });\n  return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n  var T = toObject(target);\n  var aLen = arguments.length;\n  var index = 1;\n  var getSymbols = gOPS.f;\n  var isEnum = pIE.f;\n  while (aLen > index) {\n    var S = IObject(arguments[index++]);\n    var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);\n    var length = keys.length;\n    var j = 0;\n    var key;\n    while (length > j) {\n      key = keys[j++];\n      if (!DESCRIPTORS || isEnum.call(S, key)) T[key] = S[key];\n    }\n  } return T;\n} : $assign;\n","// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n  ? window : typeof self != 'undefined' && self.Math == Math ? self\n  // eslint-disable-next-line no-new-func\n  : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n","var toInteger = require('./_to-integer');\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n  index = toInteger(index);\n  return index < 0 ? max(index + length, 0) : min(index, length);\n};\n","module.exports = function (exec) {\n  try {\n    return !!exec();\n  } catch (e) {\n    return true;\n  }\n};\n","var def = require('./_object-dp').f;\nvar has = require('./_has');\nvar TAG = require('./_wks')('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n  if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n","var core = module.exports = { version: '2.6.12' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".vue-grid-layout{position:relative;-webkit-transition:height .2s ease;transition:height .2s ease}\", \"\"]);\n// Exports\nmodule.exports = exports;\n","module.exports = {};\n","var anObject = require('./_an-object');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar toPrimitive = require('./_to-primitive');\nvar dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n  anObject(O);\n  P = toPrimitive(P, true);\n  anObject(Attributes);\n  if (IE8_DOM_DEFINE) try {\n    return dP(O, P, Attributes);\n  } catch (e) { /* empty */ }\n  if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n  if ('value' in Attributes) O[P] = Attributes.value;\n  return O;\n};\n","// addapted from the document.currentScript polyfill by Adam Miller\n// MIT license\n// source: https://github.com/amiller-gh/currentScript-polyfill\n\n// added support for Firefox https://bugzilla.mozilla.org/show_bug.cgi?id=1620505\n\n(function (root, factory) {\n  if (typeof define === 'function' && define.amd) {\n    define([], factory);\n  } else if (typeof module === 'object' && module.exports) {\n    module.exports = factory();\n  } else {\n    root.getCurrentScript = factory();\n  }\n}(typeof self !== 'undefined' ? self : this, function () {\n  function getCurrentScript () {\n    var descriptor = Object.getOwnPropertyDescriptor(document, 'currentScript')\n    // for chrome\n    if (!descriptor && 'currentScript' in document && document.currentScript) {\n      return document.currentScript\n    }\n\n    // for other browsers with native support for currentScript\n    if (descriptor && descriptor.get !== getCurrentScript && document.currentScript) {\n      return document.currentScript\n    }\n  \n    // IE 8-10 support script readyState\n    // IE 11+ & Firefox support stack trace\n    try {\n      throw new Error();\n    }\n    catch (err) {\n      // Find the second match for the \"at\" string to get file src url from stack.\n      var ieStackRegExp = /.*at [^(]*\\((.*):(.+):(.+)\\)$/ig,\n        ffStackRegExp = /@([^@]*):(\\d+):(\\d+)\\s*$/ig,\n        stackDetails = ieStackRegExp.exec(err.stack) || ffStackRegExp.exec(err.stack),\n        scriptLocation = (stackDetails && stackDetails[1]) || false,\n        line = (stackDetails && stackDetails[2]) || false,\n        currentLocation = document.location.href.replace(document.location.hash, ''),\n        pageSource,\n        inlineScriptSourceRegExp,\n        inlineScriptSource,\n        scripts = document.getElementsByTagName('script'); // Live NodeList collection\n  \n      if (scriptLocation === currentLocation) {\n        pageSource = document.documentElement.outerHTML;\n        inlineScriptSourceRegExp = new RegExp('(?:[^\\\\n]+?\\\\n){0,' + (line - 2) + '}[^<]*<script>([\\\\d\\\\D]*?)<\\\\/script>[\\\\d\\\\D]*', 'i');\n        inlineScriptSource = pageSource.replace(inlineScriptSourceRegExp, '$1').trim();\n      }\n  \n      for (var i = 0; i < scripts.length; i++) {\n        // If ready state is interactive, return the script tag\n        if (scripts[i].readyState === 'interactive') {\n          return scripts[i];\n        }\n  \n        // If src matches, return the script tag\n        if (scripts[i].src === scriptLocation) {\n          return scripts[i];\n        }\n  \n        // If inline source matches, return the script tag\n        if (\n          scriptLocation === currentLocation &&\n          scripts[i].innerHTML &&\n          scripts[i].innerHTML.trim() === inlineScriptSource\n        ) {\n          return scripts[i];\n        }\n      }\n  \n      // If no match, return null\n      return null;\n    }\n  };\n\n  return getCurrentScript\n}));\n","// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nvar isObject = require('./_is-object');\nvar anObject = require('./_an-object');\nvar check = function (O, proto) {\n  anObject(O);\n  if (!isObject(proto) && proto !== null) throw TypeError(proto + \": can't set as prototype!\");\n};\nmodule.exports = {\n  set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line\n    function (test, buggy, set) {\n      try {\n        set = require('./_ctx')(Function.call, require('./_object-gopd').f(Object.prototype, '__proto__').set, 2);\n        set(test, []);\n        buggy = !(test instanceof Array);\n      } catch (e) { buggy = true; }\n      return function setPrototypeOf(O, proto) {\n        check(O, proto);\n        if (buggy) O.__proto__ = proto;\n        else set(O, proto);\n        return O;\n      };\n    }({}, false) : undefined),\n  check: check\n};\n","module.exports = require(\"vue\");","// https://github.com/tc39/proposal-object-getownpropertydescriptors\nvar $export = require('./_export');\nvar ownKeys = require('./_own-keys');\nvar toIObject = require('./_to-iobject');\nvar gOPD = require('./_object-gopd');\nvar createProperty = require('./_create-property');\n\n$export($export.S, 'Object', {\n  getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object) {\n    var O = toIObject(object);\n    var getDesc = gOPD.f;\n    var keys = ownKeys(O);\n    var result = {};\n    var i = 0;\n    var key, desc;\n    while (keys.length > i) {\n      desc = getDesc(O, key = keys[i++]);\n      if (desc !== undefined) createProperty(result, key, desc);\n    }\n    return result;\n  }\n});\n","// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)\nvar $keys = require('./_object-keys-internal');\nvar hiddenKeys = require('./_enum-bug-keys').concat('length', 'prototype');\n\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n  return $keys(O, hiddenKeys);\n};\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./GridLayout.vue?vue&type=style&index=0&id=fc5948f6&lang=css\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"ff1827d0\", content, true, {\"sourceMap\":false,\"shadowMode\":false});","// all object keys, includes non-enumerable and symbols\nvar gOPN = require('./_object-gopn');\nvar gOPS = require('./_object-gops');\nvar anObject = require('./_an-object');\nvar Reflect = require('./_global').Reflect;\nmodule.exports = Reflect && Reflect.ownKeys || function ownKeys(it) {\n  var keys = gOPN.f(anObject(it));\n  var getSymbols = gOPS.f;\n  return getSymbols ? keys.concat(getSymbols(it)) : keys;\n};\n","// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function (fn, that, length) {\n  aFunction(fn);\n  if (that === undefined) return fn;\n  switch (length) {\n    case 1: return function (a) {\n      return fn.call(that, a);\n    };\n    case 2: return function (a, b) {\n      return fn.call(that, a, b);\n    };\n    case 3: return function (a, b, c) {\n      return fn.call(that, a, b, c);\n    };\n  }\n  return function (/* ...args */) {\n    return fn.apply(that, arguments);\n  };\n};\n","// 22.1.3.31 Array.prototype[@@unscopables]\nvar UNSCOPABLES = require('./_wks')('unscopables');\nvar ArrayProto = Array.prototype;\nif (ArrayProto[UNSCOPABLES] == undefined) require('./_hide')(ArrayProto, UNSCOPABLES, {});\nmodule.exports = function (key) {\n  ArrayProto[UNSCOPABLES][key] = true;\n};\n","// 7.1.15 ToLength\nvar toInteger = require('./_to-integer');\nvar min = Math.min;\nmodule.exports = function (it) {\n  return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n","// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function () {\n  return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n","'use strict';\n\nvar anObject = require('./_an-object');\nvar toObject = require('./_to-object');\nvar toLength = require('./_to-length');\nvar toInteger = require('./_to-integer');\nvar advanceStringIndex = require('./_advance-string-index');\nvar regExpExec = require('./_regexp-exec-abstract');\nvar max = Math.max;\nvar min = Math.min;\nvar floor = Math.floor;\nvar SUBSTITUTION_SYMBOLS = /\\$([$&`']|\\d\\d?|<[^>]*>)/g;\nvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\$([$&`']|\\d\\d?)/g;\n\nvar maybeToString = function (it) {\n  return it === undefined ? it : String(it);\n};\n\n// @@replace logic\nrequire('./_fix-re-wks')('replace', 2, function (defined, REPLACE, $replace, maybeCallNative) {\n  return [\n    // `String.prototype.replace` method\n    // https://tc39.github.io/ecma262/#sec-string.prototype.replace\n    function replace(searchValue, replaceValue) {\n      var O = defined(this);\n      var fn = searchValue == undefined ? undefined : searchValue[REPLACE];\n      return fn !== undefined\n        ? fn.call(searchValue, O, replaceValue)\n        : $replace.call(String(O), searchValue, replaceValue);\n    },\n    // `RegExp.prototype[@@replace]` method\n    // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@replace\n    function (regexp, replaceValue) {\n      var res = maybeCallNative($replace, regexp, this, replaceValue);\n      if (res.done) return res.value;\n\n      var rx = anObject(regexp);\n      var S = String(this);\n      var functionalReplace = typeof replaceValue === 'function';\n      if (!functionalReplace) replaceValue = String(replaceValue);\n      var global = rx.global;\n      if (global) {\n        var fullUnicode = rx.unicode;\n        rx.lastIndex = 0;\n      }\n      var results = [];\n      while (true) {\n        var result = regExpExec(rx, S);\n        if (result === null) break;\n        results.push(result);\n        if (!global) break;\n        var matchStr = String(result[0]);\n        if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n      }\n      var accumulatedResult = '';\n      var nextSourcePosition = 0;\n      for (var i = 0; i < results.length; i++) {\n        result = results[i];\n        var matched = String(result[0]);\n        var position = max(min(toInteger(result.index), S.length), 0);\n        var captures = [];\n        // NOTE: This is equivalent to\n        //   captures = result.slice(1).map(maybeToString)\n        // but for some reason `nativeSlice.call(result, 1, result.length)` (called in\n        // the slice polyfill when slicing native arrays) \"doesn't work\" in safari 9 and\n        // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.\n        for (var j = 1; j < result.length; j++) captures.push(maybeToString(result[j]));\n        var namedCaptures = result.groups;\n        if (functionalReplace) {\n          var replacerArgs = [matched].concat(captures, position, S);\n          if (namedCaptures !== undefined) replacerArgs.push(namedCaptures);\n          var replacement = String(replaceValue.apply(undefined, replacerArgs));\n        } else {\n          replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);\n        }\n        if (position >= nextSourcePosition) {\n          accumulatedResult += S.slice(nextSourcePosition, position) + replacement;\n          nextSourcePosition = position + matched.length;\n        }\n      }\n      return accumulatedResult + S.slice(nextSourcePosition);\n    }\n  ];\n\n    // https://tc39.github.io/ecma262/#sec-getsubstitution\n  function getSubstitution(matched, str, position, captures, namedCaptures, replacement) {\n    var tailPos = position + matched.length;\n    var m = captures.length;\n    var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;\n    if (namedCaptures !== undefined) {\n      namedCaptures = toObject(namedCaptures);\n      symbols = SUBSTITUTION_SYMBOLS;\n    }\n    return $replace.call(replacement, symbols, function (match, ch) {\n      var capture;\n      switch (ch.charAt(0)) {\n        case '$': return '$';\n        case '&': return matched;\n        case '`': return str.slice(0, position);\n        case \"'\": return str.slice(tailPos);\n        case '<':\n          capture = namedCaptures[ch.slice(1, -1)];\n          break;\n        default: // \\d\\d?\n          var n = +ch;\n          if (n === 0) return match;\n          if (n > m) {\n            var f = floor(n / 10);\n            if (f === 0) return match;\n            if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1);\n            return match;\n          }\n          capture = captures[n - 1];\n      }\n      return capture === undefined ? '' : capture;\n    });\n  }\n});\n","var $export = require('./_export');\nvar defined = require('./_defined');\nvar fails = require('./_fails');\nvar spaces = require('./_string-ws');\nvar space = '[' + spaces + ']';\nvar non = '\\u200b\\u0085';\nvar ltrim = RegExp('^' + space + space + '*');\nvar rtrim = RegExp(space + space + '*$');\n\nvar exporter = function (KEY, exec, ALIAS) {\n  var exp = {};\n  var FORCE = fails(function () {\n    return !!spaces[KEY]() || non[KEY]() != non;\n  });\n  var fn = exp[KEY] = FORCE ? exec(trim) : spaces[KEY];\n  if (ALIAS) exp[ALIAS] = fn;\n  $export($export.P + $export.F * FORCE, 'String', exp);\n};\n\n// 1 -> String#trimLeft\n// 2 -> String#trimRight\n// 3 -> String#trim\nvar trim = exporter.trim = function (string, TYPE) {\n  string = String(defined(string));\n  if (TYPE & 1) string = string.replace(ltrim, '');\n  if (TYPE & 2) string = string.replace(rtrim, '');\n  return string;\n};\n\nmodule.exports = exporter;\n","\"use strict\";\n\n/* global console: false */\n\n/**\n * Reporter that handles the reporting of logs, warnings and errors.\n * @public\n * @param {boolean} quiet Tells if the reporter should be quiet or not.\n */\nmodule.exports = function(quiet) {\n    function noop() {\n        //Does nothing.\n    }\n\n    var reporter = {\n        log: noop,\n        warn: noop,\n        error: noop\n    };\n\n    if(!quiet && window.console) {\n        var attachFunction = function(reporter, name) {\n            //The proxy is needed to be able to call the method with the console context,\n            //since we cannot use bind.\n            reporter[name] = function reporterProxy() {\n                var f = console[name];\n                if (f.apply) { //IE9 does not support console.log.apply :)\n                    f.apply(console, arguments);\n                } else {\n                    for (var i = 0; i < arguments.length; i++) {\n                        f(arguments[i]);\n                    }\n                }\n            };\n        };\n\n        attachFunction(reporter, \"log\");\n        attachFunction(reporter, \"warn\");\n        attachFunction(reporter, \"error\");\n    }\n\n    return reporter;\n};","var $iterators = require('./es6.array.iterator');\nvar getKeys = require('./_object-keys');\nvar redefine = require('./_redefine');\nvar global = require('./_global');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar wks = require('./_wks');\nvar ITERATOR = wks('iterator');\nvar TO_STRING_TAG = wks('toStringTag');\nvar ArrayValues = Iterators.Array;\n\nvar DOMIterables = {\n  CSSRuleList: true, // TODO: Not spec compliant, should be false.\n  CSSStyleDeclaration: false,\n  CSSValueList: false,\n  ClientRectList: false,\n  DOMRectList: false,\n  DOMStringList: false,\n  DOMTokenList: true,\n  DataTransferItemList: false,\n  FileList: false,\n  HTMLAllCollection: false,\n  HTMLCollection: false,\n  HTMLFormElement: false,\n  HTMLSelectElement: false,\n  MediaList: true, // TODO: Not spec compliant, should be false.\n  MimeTypeArray: false,\n  NamedNodeMap: false,\n  NodeList: true,\n  PaintRequestList: false,\n  Plugin: false,\n  PluginArray: false,\n  SVGLengthList: false,\n  SVGNumberList: false,\n  SVGPathSegList: false,\n  SVGPointList: false,\n  SVGStringList: false,\n  SVGTransformList: false,\n  SourceBufferList: false,\n  StyleSheetList: true, // TODO: Not spec compliant, should be false.\n  TextTrackCueList: false,\n  TextTrackList: false,\n  TouchList: false\n};\n\nfor (var collections = getKeys(DOMIterables), i = 0; i < collections.length; i++) {\n  var NAME = collections[i];\n  var explicit = DOMIterables[NAME];\n  var Collection = global[NAME];\n  var proto = Collection && Collection.prototype;\n  var key;\n  if (proto) {\n    if (!proto[ITERATOR]) hide(proto, ITERATOR, ArrayValues);\n    if (!proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n    Iterators[NAME] = ArrayValues;\n    if (explicit) for (key in $iterators) if (!proto[key]) redefine(proto, key, $iterators[key], true);\n  }\n}\n","'use strict';\nvar regexpExec = require('./_regexp-exec');\nrequire('./_export')({\n  target: 'RegExp',\n  proto: true,\n  forced: regexpExec !== /./.exec\n}, {\n  exec: regexpExec\n});\n","\"use strict\";\n\nvar utils = module.exports = {};\n\n/**\n * Loops through the collection and calls the callback for each element. if the callback returns truthy, the loop is broken and returns the same value.\n * @public\n * @param {*} collection The collection to loop through. Needs to have a length property set and have indices set from 0 to length - 1.\n * @param {function} callback The callback to be called for each element. The element will be given as a parameter to the callback. If this callback returns truthy, the loop is broken and the same value is returned.\n * @returns {*} The value that a callback has returned (if truthy). Otherwise nothing.\n */\nutils.forEach = function(collection, callback) {\n    for(var i = 0; i < collection.length; i++) {\n        var result = callback(collection[i]);\n        if(result) {\n            return result;\n        }\n    }\n};\n","// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n  if (it == undefined) throw TypeError(\"Can't call method on  \" + it);\n  return it;\n};\n","\"use strict\";\n\nvar utils = require(\"./utils\");\n\nmodule.exports = function batchProcessorMaker(options) {\n    options             = options || {};\n    var reporter        = options.reporter;\n    var asyncProcess    = utils.getOption(options, \"async\", true);\n    var autoProcess     = utils.getOption(options, \"auto\", true);\n\n    if(autoProcess && !asyncProcess) {\n        reporter && reporter.warn(\"Invalid options combination. auto=true and async=false is invalid. Setting async=true.\");\n        asyncProcess = true;\n    }\n\n    var batch = Batch();\n    var asyncFrameHandler;\n    var isProcessing = false;\n\n    function addFunction(level, fn) {\n        if(!isProcessing && autoProcess && asyncProcess && batch.size() === 0) {\n            // Since this is async, it is guaranteed to be executed after that the fn is added to the batch.\n            // This needs to be done before, since we're checking the size of the batch to be 0.\n            processBatchAsync();\n        }\n\n        batch.add(level, fn);\n    }\n\n    function processBatch() {\n        // Save the current batch, and create a new batch so that incoming functions are not added into the currently processing batch.\n        // Continue processing until the top-level batch is empty (functions may be added to the new batch while processing, and so on).\n        isProcessing = true;\n        while (batch.size()) {\n            var processingBatch = batch;\n            batch = Batch();\n            processingBatch.process();\n        }\n        isProcessing = false;\n    }\n\n    function forceProcessBatch(localAsyncProcess) {\n        if (isProcessing) {\n            return;\n        }\n\n        if(localAsyncProcess === undefined) {\n            localAsyncProcess = asyncProcess;\n        }\n\n        if(asyncFrameHandler) {\n            cancelFrame(asyncFrameHandler);\n            asyncFrameHandler = null;\n        }\n\n        if(localAsyncProcess) {\n            processBatchAsync();\n        } else {\n            processBatch();\n        }\n    }\n\n    function processBatchAsync() {\n        asyncFrameHandler = requestFrame(processBatch);\n    }\n\n    function clearBatch() {\n        batch           = {};\n        batchSize       = 0;\n        topLevel        = 0;\n        bottomLevel     = 0;\n    }\n\n    function cancelFrame(listener) {\n        // var cancel = window.cancelAnimationFrame || window.mozCancelAnimationFrame || window.webkitCancelAnimationFrame || window.clearTimeout;\n        var cancel = clearTimeout;\n        return cancel(listener);\n    }\n\n    function requestFrame(callback) {\n        // var raf = window.requestAnimationFrame || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame || function(fn) { return window.setTimeout(fn, 20); };\n        var raf = function(fn) { return setTimeout(fn, 0); };\n        return raf(callback);\n    }\n\n    return {\n        add: addFunction,\n        force: forceProcessBatch\n    };\n};\n\nfunction Batch() {\n    var batch       = {};\n    var size        = 0;\n    var topLevel    = 0;\n    var bottomLevel = 0;\n\n    function add(level, fn) {\n        if(!fn) {\n            fn = level;\n            level = 0;\n        }\n\n        if(level > topLevel) {\n            topLevel = level;\n        } else if(level < bottomLevel) {\n            bottomLevel = level;\n        }\n\n        if(!batch[level]) {\n            batch[level] = [];\n        }\n\n        batch[level].push(fn);\n        size++;\n    }\n\n    function process() {\n        for(var level = bottomLevel; level <= topLevel; level++) {\n            var fns = batch[level];\n\n            for(var i = 0; i < fns.length; i++) {\n                var fn = fns[i];\n                fn();\n            }\n        }\n    }\n\n    function getSize() {\n        return size;\n    }\n\n    return {\n        add: add,\n        process: process,\n        size: getSize\n    };\n}\n","// false -> Array#indexOf\n// true  -> Array#includes\nvar toIObject = require('./_to-iobject');\nvar toLength = require('./_to-length');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nmodule.exports = function (IS_INCLUDES) {\n  return function ($this, el, fromIndex) {\n    var O = toIObject($this);\n    var length = toLength(O.length);\n    var index = toAbsoluteIndex(fromIndex, length);\n    var value;\n    // Array#includes uses SameValueZero equality algorithm\n    // eslint-disable-next-line no-self-compare\n    if (IS_INCLUDES && el != el) while (length > index) {\n      value = O[index++];\n      // eslint-disable-next-line no-self-compare\n      if (value != value) return true;\n    // Array#indexOf ignores holes, Array#includes - not\n    } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n      if (O[index] === el) return IS_INCLUDES || index || 0;\n    } return !IS_INCLUDES && -1;\n  };\n};\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./GridItem.vue?vue&type=style&index=0&id=46ff2fc8&lang=css\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"40158674\", content, true, {\"sourceMap\":false,\"shadowMode\":false});","'use strict';\nvar global = require('./_global');\nvar has = require('./_has');\nvar cof = require('./_cof');\nvar inheritIfRequired = require('./_inherit-if-required');\nvar toPrimitive = require('./_to-primitive');\nvar fails = require('./_fails');\nvar gOPN = require('./_object-gopn').f;\nvar gOPD = require('./_object-gopd').f;\nvar dP = require('./_object-dp').f;\nvar $trim = require('./_string-trim').trim;\nvar NUMBER = 'Number';\nvar $Number = global[NUMBER];\nvar Base = $Number;\nvar proto = $Number.prototype;\n// Opera ~12 has broken Object#toString\nvar BROKEN_COF = cof(require('./_object-create')(proto)) == NUMBER;\nvar TRIM = 'trim' in String.prototype;\n\n// 7.1.3 ToNumber(argument)\nvar toNumber = function (argument) {\n  var it = toPrimitive(argument, false);\n  if (typeof it == 'string' && it.length > 2) {\n    it = TRIM ? it.trim() : $trim(it, 3);\n    var first = it.charCodeAt(0);\n    var third, radix, maxCode;\n    if (first === 43 || first === 45) {\n      third = it.charCodeAt(2);\n      if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix\n    } else if (first === 48) {\n      switch (it.charCodeAt(1)) {\n        case 66: case 98: radix = 2; maxCode = 49; break; // fast equal /^0b[01]+$/i\n        case 79: case 111: radix = 8; maxCode = 55; break; // fast equal /^0o[0-7]+$/i\n        default: return +it;\n      }\n      for (var digits = it.slice(2), i = 0, l = digits.length, code; i < l; i++) {\n        code = digits.charCodeAt(i);\n        // parseInt parses a string to a first unavailable symbol\n        // but ToNumber should return NaN if a string contains unavailable symbols\n        if (code < 48 || code > maxCode) return NaN;\n      } return parseInt(digits, radix);\n    }\n  } return +it;\n};\n\nif (!$Number(' 0o1') || !$Number('0b1') || $Number('+0x1')) {\n  $Number = function Number(value) {\n    var it = arguments.length < 1 ? 0 : value;\n    var that = this;\n    return that instanceof $Number\n      // check on 1..constructor(foo) case\n      && (BROKEN_COF ? fails(function () { proto.valueOf.call(that); }) : cof(that) != NUMBER)\n        ? inheritIfRequired(new Base(toNumber(it)), that, $Number) : toNumber(it);\n  };\n  for (var keys = require('./_descriptors') ? gOPN(Base) : (\n    // ES3:\n    'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' +\n    // ES6 (in case, if modules with ES6 Number statics required before):\n    'EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,' +\n    'MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger'\n  ).split(','), j = 0, key; keys.length > j; j++) {\n    if (has(Base, key = keys[j]) && !has($Number, key)) {\n      dP($Number, key, gOPD(Base, key));\n    }\n  }\n  $Number.prototype = proto;\n  proto.constructor = $Number;\n  require('./_redefine')(global, NUMBER, $Number);\n}\n","module.exports = !require('./_descriptors') && !require('./_fails')(function () {\n  return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n","/**\n * Resize detection strategy that injects divs to elements in order to detect resize events on scroll events.\n * Heavily inspired by: https://github.com/marcj/css-element-queries/blob/master/src/ResizeSensor.js\n */\n\n\"use strict\";\n\nvar forEach = require(\"../collection-utils\").forEach;\n\nmodule.exports = function(options) {\n    options             = options || {};\n    var reporter        = options.reporter;\n    var batchProcessor  = options.batchProcessor;\n    var getState        = options.stateHandler.getState;\n    var hasState        = options.stateHandler.hasState;\n    var idHandler       = options.idHandler;\n\n    if (!batchProcessor) {\n        throw new Error(\"Missing required dependency: batchProcessor\");\n    }\n\n    if (!reporter) {\n        throw new Error(\"Missing required dependency: reporter.\");\n    }\n\n    //TODO: Could this perhaps be done at installation time?\n    var scrollbarSizes = getScrollbarSizes();\n\n    var styleId = \"erd_scroll_detection_scrollbar_style\";\n    var detectionContainerClass = \"erd_scroll_detection_container\";\n\n    function initDocument(targetDocument) {\n        // Inject the scrollbar styling that prevents them from appearing sometimes in Chrome.\n        // The injected container needs to have a class, so that it may be styled with CSS (pseudo elements).\n        injectScrollStyle(targetDocument, styleId, detectionContainerClass);\n    }\n\n    initDocument(window.document);\n\n    function buildCssTextString(rules) {\n        var seperator = options.important ? \" !important; \" : \"; \";\n\n        return (rules.join(seperator) + seperator).trim();\n    }\n\n    function getScrollbarSizes() {\n        var width = 500;\n        var height = 500;\n\n        var child = document.createElement(\"div\");\n        child.style.cssText = buildCssTextString([\"position: absolute\", \"width: \" + width*2 + \"px\", \"height: \" + height*2 + \"px\", \"visibility: hidden\", \"margin: 0\", \"padding: 0\"]);\n\n        var container = document.createElement(\"div\");\n        container.style.cssText = buildCssTextString([\"position: absolute\", \"width: \" + width + \"px\", \"height: \" + height + \"px\", \"overflow: scroll\", \"visibility: none\", \"top: \" + -width*3 + \"px\", \"left: \" + -height*3 + \"px\", \"visibility: hidden\", \"margin: 0\", \"padding: 0\"]);\n\n        container.appendChild(child);\n\n        document.body.insertBefore(container, document.body.firstChild);\n\n        var widthSize = width - container.clientWidth;\n        var heightSize = height - container.clientHeight;\n\n        document.body.removeChild(container);\n\n        return {\n            width: widthSize,\n            height: heightSize\n        };\n    }\n\n    function injectScrollStyle(targetDocument, styleId, containerClass) {\n        function injectStyle(style, method) {\n            method = method || function (element) {\n                targetDocument.head.appendChild(element);\n            };\n\n            var styleElement = targetDocument.createElement(\"style\");\n            styleElement.innerHTML = style;\n            styleElement.id = styleId;\n            method(styleElement);\n            return styleElement;\n        }\n\n        if (!targetDocument.getElementById(styleId)) {\n            var containerAnimationClass = containerClass + \"_animation\";\n            var containerAnimationActiveClass = containerClass + \"_animation_active\";\n            var style = \"/* Created by the element-resize-detector library. */\\n\";\n            style += \".\" + containerClass + \" > div::-webkit-scrollbar { \" + buildCssTextString([\"display: none\"]) + \" }\\n\\n\";\n            style += \".\" + containerAnimationActiveClass + \" { \" + buildCssTextString([\"-webkit-animation-duration: 0.1s\", \"animation-duration: 0.1s\", \"-webkit-animation-name: \" + containerAnimationClass, \"animation-name: \" + containerAnimationClass]) + \" }\\n\";\n            style += \"@-webkit-keyframes \" + containerAnimationClass +  \" { 0% { opacity: 1; } 50% { opacity: 0; } 100% { opacity: 1; } }\\n\";\n            style += \"@keyframes \" + containerAnimationClass +          \" { 0% { opacity: 1; } 50% { opacity: 0; } 100% { opacity: 1; } }\";\n            injectStyle(style);\n        }\n    }\n\n    function addAnimationClass(element) {\n        element.className += \" \" + detectionContainerClass + \"_animation_active\";\n    }\n\n    function addEvent(el, name, cb) {\n        if (el.addEventListener) {\n            el.addEventListener(name, cb);\n        } else if(el.attachEvent) {\n            el.attachEvent(\"on\" + name, cb);\n        } else {\n            return reporter.error(\"[scroll] Don't know how to add event listeners.\");\n        }\n    }\n\n    function removeEvent(el, name, cb) {\n        if (el.removeEventListener) {\n            el.removeEventListener(name, cb);\n        } else if(el.detachEvent) {\n            el.detachEvent(\"on\" + name, cb);\n        } else {\n            return reporter.error(\"[scroll] Don't know how to remove event listeners.\");\n        }\n    }\n\n    function getExpandElement(element) {\n        return getState(element).container.childNodes[0].childNodes[0].childNodes[0];\n    }\n\n    function getShrinkElement(element) {\n        return getState(element).container.childNodes[0].childNodes[0].childNodes[1];\n    }\n\n    /**\n     * Adds a resize event listener to the element.\n     * @public\n     * @param {element} element The element that should have the listener added.\n     * @param {function} listener The listener callback to be called for each resize event of the element. The element will be given as a parameter to the listener callback.\n     */\n    function addListener(element, listener) {\n        var listeners = getState(element).listeners;\n\n        if (!listeners.push) {\n            throw new Error(\"Cannot add listener to an element that is not detectable.\");\n        }\n\n        getState(element).listeners.push(listener);\n    }\n\n    /**\n     * Makes an element detectable and ready to be listened for resize events. Will call the callback when the element is ready to be listened for resize changes.\n     * @private\n     * @param {object} options Optional options object.\n     * @param {element} element The element to make detectable\n     * @param {function} callback The callback to be called when the element is ready to be listened for resize changes. Will be called with the element as first parameter.\n     */\n    function makeDetectable(options, element, callback) {\n        if (!callback) {\n            callback = element;\n            element = options;\n            options = null;\n        }\n\n        options = options || {};\n\n        function debug() {\n            if (options.debug) {\n                var args = Array.prototype.slice.call(arguments);\n                args.unshift(idHandler.get(element), \"Scroll: \");\n                if (reporter.log.apply) {\n                    reporter.log.apply(null, args);\n                } else {\n                    for (var i = 0; i < args.length; i++) {\n                        reporter.log(args[i]);\n                    }\n                }\n            }\n        }\n\n        function isDetached(element) {\n            function isInDocument(element) {\n                return element === element.ownerDocument.body || element.ownerDocument.body.contains(element);\n            }\n\n            if (!isInDocument(element)) {\n                return true;\n            }\n\n            // FireFox returns null style in hidden iframes. See https://github.com/wnr/element-resize-detector/issues/68 and https://bugzilla.mozilla.org/show_bug.cgi?id=795520\n            if (window.getComputedStyle(element) === null) {\n                return true;\n            }\n\n            return false;\n        }\n\n        function isUnrendered(element) {\n            // Check the absolute positioned container since the top level container is display: inline.\n            var container = getState(element).container.childNodes[0];\n            var style = window.getComputedStyle(container);\n            return !style.width || style.width.indexOf(\"px\") === -1; //Can only compute pixel value when rendered.\n        }\n\n        function getStyle() {\n            // Some browsers only force layouts when actually reading the style properties of the style object, so make sure that they are all read here,\n            // so that the user of the function can be sure that it will perform the layout here, instead of later (important for batching).\n            var elementStyle            = window.getComputedStyle(element);\n            var style                   = {};\n            style.position              = elementStyle.position;\n            style.width                 = element.offsetWidth;\n            style.height                = element.offsetHeight;\n            style.top                   = elementStyle.top;\n            style.right                 = elementStyle.right;\n            style.bottom                = elementStyle.bottom;\n            style.left                  = elementStyle.left;\n            style.widthCSS              = elementStyle.width;\n            style.heightCSS             = elementStyle.height;\n            return style;\n        }\n\n        function storeStartSize() {\n            var style = getStyle();\n            getState(element).startSize = {\n                width: style.width,\n                height: style.height\n            };\n            debug(\"Element start size\", getState(element).startSize);\n        }\n\n        function initListeners() {\n            getState(element).listeners = [];\n        }\n\n        function storeStyle() {\n            debug(\"storeStyle invoked.\");\n            if (!getState(element)) {\n                debug(\"Aborting because element has been uninstalled\");\n                return;\n            }\n\n            var style = getStyle();\n            getState(element).style = style;\n        }\n\n        function storeCurrentSize(element, width, height) {\n            getState(element).lastWidth = width;\n            getState(element).lastHeight  = height;\n        }\n\n        function getExpandChildElement(element) {\n            return getExpandElement(element).childNodes[0];\n        }\n\n        function getWidthOffset() {\n            return 2 * scrollbarSizes.width + 1;\n        }\n\n        function getHeightOffset() {\n            return 2 * scrollbarSizes.height + 1;\n        }\n\n        function getExpandWidth(width) {\n            return width + 10 + getWidthOffset();\n        }\n\n        function getExpandHeight(height) {\n            return height + 10 + getHeightOffset();\n        }\n\n        function getShrinkWidth(width) {\n            return width * 2 + getWidthOffset();\n        }\n\n        function getShrinkHeight(height) {\n            return height * 2 + getHeightOffset();\n        }\n\n        function positionScrollbars(element, width, height) {\n            var expand          = getExpandElement(element);\n            var shrink          = getShrinkElement(element);\n            var expandWidth     = getExpandWidth(width);\n            var expandHeight    = getExpandHeight(height);\n            var shrinkWidth     = getShrinkWidth(width);\n            var shrinkHeight    = getShrinkHeight(height);\n            expand.scrollLeft   = expandWidth;\n            expand.scrollTop    = expandHeight;\n            shrink.scrollLeft   = shrinkWidth;\n            shrink.scrollTop    = shrinkHeight;\n        }\n\n        function injectContainerElement() {\n            var container = getState(element).container;\n\n            if (!container) {\n                container                   = document.createElement(\"div\");\n                container.className         = detectionContainerClass;\n                container.style.cssText     = buildCssTextString([\"visibility: hidden\", \"display: inline\", \"width: 0px\", \"height: 0px\", \"z-index: -1\", \"overflow: hidden\", \"margin: 0\", \"padding: 0\"]);\n                getState(element).container = container;\n                addAnimationClass(container);\n                element.appendChild(container);\n\n                var onAnimationStart = function () {\n                    getState(element).onRendered && getState(element).onRendered();\n                };\n\n                addEvent(container, \"animationstart\", onAnimationStart);\n\n                // Store the event handler here so that they may be removed when uninstall is called.\n                // See uninstall function for an explanation why it is needed.\n                getState(element).onAnimationStart = onAnimationStart;\n            }\n\n            return container;\n        }\n\n        function injectScrollElements() {\n            function alterPositionStyles() {\n                var style = getState(element).style;\n\n                if(style.position === \"static\") {\n                    element.style.setProperty(\"position\", \"relative\",options.important ? \"important\" : \"\");\n\n                    var removeRelativeStyles = function(reporter, element, style, property) {\n                        function getNumericalValue(value) {\n                            return value.replace(/[^-\\d\\.]/g, \"\");\n                        }\n\n                        var value = style[property];\n\n                        if(value !== \"auto\" && getNumericalValue(value) !== \"0\") {\n                            reporter.warn(\"An element that is positioned static has style.\" + property + \"=\" + value + \" which is ignored due to the static positioning. The element will need to be positioned relative, so the style.\" + property + \" will be set to 0. Element: \", element);\n                            element.style[property] = 0;\n                        }\n                    };\n\n                    //Check so that there are no accidental styles that will make the element styled differently now that is is relative.\n                    //If there are any, set them to 0 (this should be okay with the user since the style properties did nothing before [since the element was positioned static] anyway).\n                    removeRelativeStyles(reporter, element, style, \"top\");\n                    removeRelativeStyles(reporter, element, style, \"right\");\n                    removeRelativeStyles(reporter, element, style, \"bottom\");\n                    removeRelativeStyles(reporter, element, style, \"left\");\n                }\n            }\n\n            function getLeftTopBottomRightCssText(left, top, bottom, right) {\n                left = (!left ? \"0\" : (left + \"px\"));\n                top = (!top ? \"0\" : (top + \"px\"));\n                bottom = (!bottom ? \"0\" : (bottom + \"px\"));\n                right = (!right ? \"0\" : (right + \"px\"));\n\n                return [\"left: \" + left, \"top: \" + top, \"right: \" + right, \"bottom: \" + bottom];\n            }\n\n            debug(\"Injecting elements\");\n\n            if (!getState(element)) {\n                debug(\"Aborting because element has been uninstalled\");\n                return;\n            }\n\n            alterPositionStyles();\n\n            var rootContainer = getState(element).container;\n\n            if (!rootContainer) {\n                rootContainer = injectContainerElement();\n            }\n\n            // Due to this WebKit bug https://bugs.webkit.org/show_bug.cgi?id=80808 (currently fixed in Blink, but still present in WebKit browsers such as Safari),\n            // we need to inject two containers, one that is width/height 100% and another that is left/top -1px so that the final container always is 1x1 pixels bigger than\n            // the targeted element.\n            // When the bug is resolved, \"containerContainer\" may be removed.\n\n            // The outer container can occasionally be less wide than the targeted when inside inline elements element in WebKit (see https://bugs.webkit.org/show_bug.cgi?id=152980).\n            // This should be no problem since the inner container either way makes sure the injected scroll elements are at least 1x1 px.\n\n            var scrollbarWidth          = scrollbarSizes.width;\n            var scrollbarHeight         = scrollbarSizes.height;\n            var containerContainerStyle = buildCssTextString([\"position: absolute\", \"flex: none\", \"overflow: hidden\", \"z-index: -1\", \"visibility: hidden\", \"width: 100%\", \"height: 100%\", \"left: 0px\", \"top: 0px\"]);\n            var containerStyle          = buildCssTextString([\"position: absolute\", \"flex: none\", \"overflow: hidden\", \"z-index: -1\", \"visibility: hidden\"].concat(getLeftTopBottomRightCssText(-(1 + scrollbarWidth), -(1 + scrollbarHeight), -scrollbarHeight, -scrollbarWidth)));\n            var expandStyle             = buildCssTextString([\"position: absolute\", \"flex: none\", \"overflow: scroll\", \"z-index: -1\", \"visibility: hidden\", \"width: 100%\", \"height: 100%\"]);\n            var shrinkStyle             = buildCssTextString([\"position: absolute\", \"flex: none\", \"overflow: scroll\", \"z-index: -1\", \"visibility: hidden\", \"width: 100%\", \"height: 100%\"]);\n            var expandChildStyle        = buildCssTextString([\"position: absolute\", \"left: 0\", \"top: 0\"]);\n            var shrinkChildStyle        = buildCssTextString([\"position: absolute\", \"width: 200%\", \"height: 200%\"]);\n\n            var containerContainer      = document.createElement(\"div\");\n            var container               = document.createElement(\"div\");\n            var expand                  = document.createElement(\"div\");\n            var expandChild             = document.createElement(\"div\");\n            var shrink                  = document.createElement(\"div\");\n            var shrinkChild             = document.createElement(\"div\");\n\n            // Some browsers choke on the resize system being rtl, so force it to ltr. https://github.com/wnr/element-resize-detector/issues/56\n            // However, dir should not be set on the top level container as it alters the dimensions of the target element in some browsers.\n            containerContainer.dir              = \"ltr\";\n\n            containerContainer.style.cssText    = containerContainerStyle;\n            containerContainer.className        = detectionContainerClass;\n            container.className                 = detectionContainerClass;\n            container.style.cssText             = containerStyle;\n            expand.style.cssText                = expandStyle;\n            expandChild.style.cssText           = expandChildStyle;\n            shrink.style.cssText                = shrinkStyle;\n            shrinkChild.style.cssText           = shrinkChildStyle;\n\n            expand.appendChild(expandChild);\n            shrink.appendChild(shrinkChild);\n            container.appendChild(expand);\n            container.appendChild(shrink);\n            containerContainer.appendChild(container);\n            rootContainer.appendChild(containerContainer);\n\n            function onExpandScroll() {\n                getState(element).onExpand && getState(element).onExpand();\n            }\n\n            function onShrinkScroll() {\n                getState(element).onShrink && getState(element).onShrink();\n            }\n\n            addEvent(expand, \"scroll\", onExpandScroll);\n            addEvent(shrink, \"scroll\", onShrinkScroll);\n\n            // Store the event handlers here so that they may be removed when uninstall is called.\n            // See uninstall function for an explanation why it is needed.\n            getState(element).onExpandScroll = onExpandScroll;\n            getState(element).onShrinkScroll = onShrinkScroll;\n        }\n\n        function registerListenersAndPositionElements() {\n            function updateChildSizes(element, width, height) {\n                var expandChild             = getExpandChildElement(element);\n                var expandWidth             = getExpandWidth(width);\n                var expandHeight            = getExpandHeight(height);\n                expandChild.style.setProperty(\"width\", expandWidth + \"px\", options.important ? \"important\" : \"\");\n                expandChild.style.setProperty(\"height\", expandHeight + \"px\", options.important ? \"important\" : \"\");\n            }\n\n            function updateDetectorElements(done) {\n                var width           = element.offsetWidth;\n                var height          = element.offsetHeight;\n\n                // Check whether the size has actually changed since last time the algorithm ran. If not, some steps may be skipped.\n                var sizeChanged = width !== getState(element).lastWidth || height !== getState(element).lastHeight;\n\n                debug(\"Storing current size\", width, height);\n\n                // Store the size of the element sync here, so that multiple scroll events may be ignored in the event listeners.\n                // Otherwise the if-check in handleScroll is useless.\n                storeCurrentSize(element, width, height);\n\n                // Since we delay the processing of the batch, there is a risk that uninstall has been called before the batch gets to execute.\n                // Since there is no way to cancel the fn executions, we need to add an uninstall guard to all fns of the batch.\n\n                batchProcessor.add(0, function performUpdateChildSizes() {\n                    if (!sizeChanged) {\n                        return;\n                    }\n\n                    if (!getState(element)) {\n                        debug(\"Aborting because element has been uninstalled\");\n                        return;\n                    }\n\n                    if (!areElementsInjected()) {\n                        debug(\"Aborting because element container has not been initialized\");\n                        return;\n                    }\n\n                    if (options.debug) {\n                        var w = element.offsetWidth;\n                        var h = element.offsetHeight;\n\n                        if (w !== width || h !== height) {\n                            reporter.warn(idHandler.get(element), \"Scroll: Size changed before updating detector elements.\");\n                        }\n                    }\n\n                    updateChildSizes(element, width, height);\n                });\n\n                batchProcessor.add(1, function updateScrollbars() {\n                    // This function needs to be invoked event though the size is unchanged. The element could have been resized very quickly and then\n                    // been restored to the original size, which will have changed the scrollbar positions.\n\n                    if (!getState(element)) {\n                        debug(\"Aborting because element has been uninstalled\");\n                        return;\n                    }\n\n                    if (!areElementsInjected()) {\n                        debug(\"Aborting because element container has not been initialized\");\n                        return;\n                    }\n\n                    positionScrollbars(element, width, height);\n                });\n\n                if (sizeChanged && done) {\n                    batchProcessor.add(2, function () {\n                        if (!getState(element)) {\n                            debug(\"Aborting because element has been uninstalled\");\n                            return;\n                        }\n\n                        if (!areElementsInjected()) {\n                          debug(\"Aborting because element container has not been initialized\");\n                          return;\n                        }\n\n                        done();\n                    });\n                }\n            }\n\n            function areElementsInjected() {\n                return !!getState(element).container;\n            }\n\n            function notifyListenersIfNeeded() {\n                function isFirstNotify() {\n                    return getState(element).lastNotifiedWidth === undefined;\n                }\n\n                debug(\"notifyListenersIfNeeded invoked\");\n\n                var state = getState(element);\n\n                // Don't notify if the current size is the start size, and this is the first notification.\n                if (isFirstNotify() && state.lastWidth === state.startSize.width && state.lastHeight === state.startSize.height) {\n                    return debug(\"Not notifying: Size is the same as the start size, and there has been no notification yet.\");\n                }\n\n                // Don't notify if the size already has been notified.\n                if (state.lastWidth === state.lastNotifiedWidth && state.lastHeight === state.lastNotifiedHeight) {\n                    return debug(\"Not notifying: Size already notified\");\n                }\n\n\n                debug(\"Current size not notified, notifying...\");\n                state.lastNotifiedWidth = state.lastWidth;\n                state.lastNotifiedHeight = state.lastHeight;\n                forEach(getState(element).listeners, function (listener) {\n                    listener(element);\n                });\n            }\n\n            function handleRender() {\n                debug(\"startanimation triggered.\");\n\n                if (isUnrendered(element)) {\n                    debug(\"Ignoring since element is still unrendered...\");\n                    return;\n                }\n\n                debug(\"Element rendered.\");\n                var expand = getExpandElement(element);\n                var shrink = getShrinkElement(element);\n                if (expand.scrollLeft === 0 || expand.scrollTop === 0 || shrink.scrollLeft === 0 || shrink.scrollTop === 0) {\n                    debug(\"Scrollbars out of sync. Updating detector elements...\");\n                    updateDetectorElements(notifyListenersIfNeeded);\n                }\n            }\n\n            function handleScroll() {\n                debug(\"Scroll detected.\");\n\n                if (isUnrendered(element)) {\n                    // Element is still unrendered. Skip this scroll event.\n                    debug(\"Scroll event fired while unrendered. Ignoring...\");\n                    return;\n                }\n\n                updateDetectorElements(notifyListenersIfNeeded);\n            }\n\n            debug(\"registerListenersAndPositionElements invoked.\");\n\n            if (!getState(element)) {\n                debug(\"Aborting because element has been uninstalled\");\n                return;\n            }\n\n            getState(element).onRendered = handleRender;\n            getState(element).onExpand = handleScroll;\n            getState(element).onShrink = handleScroll;\n\n            var style = getState(element).style;\n            updateChildSizes(element, style.width, style.height);\n        }\n\n        function finalizeDomMutation() {\n            debug(\"finalizeDomMutation invoked.\");\n\n            if (!getState(element)) {\n                debug(\"Aborting because element has been uninstalled\");\n                return;\n            }\n\n            var style = getState(element).style;\n            storeCurrentSize(element, style.width, style.height);\n            positionScrollbars(element, style.width, style.height);\n        }\n\n        function ready() {\n            callback(element);\n        }\n\n        function install() {\n            debug(\"Installing...\");\n            initListeners();\n            storeStartSize();\n\n            batchProcessor.add(0, storeStyle);\n            batchProcessor.add(1, injectScrollElements);\n            batchProcessor.add(2, registerListenersAndPositionElements);\n            batchProcessor.add(3, finalizeDomMutation);\n            batchProcessor.add(4, ready);\n        }\n\n        debug(\"Making detectable...\");\n\n        if (isDetached(element)) {\n            debug(\"Element is detached\");\n\n            injectContainerElement();\n\n            debug(\"Waiting until element is attached...\");\n\n            getState(element).onRendered = function () {\n                debug(\"Element is now attached\");\n                install();\n            };\n        } else {\n            install();\n        }\n    }\n\n    function uninstall(element) {\n        var state = getState(element);\n\n        if (!state) {\n            // Uninstall has been called on a non-erd element.\n            return;\n        }\n\n        // Uninstall may have been called in the following scenarios:\n        // (1) Right between the sync code and async batch (here state.busy = true, but nothing have been registered or injected).\n        // (2) In the ready callback of the last level of the batch by another element (here, state.busy = true, but all the stuff has been injected).\n        // (3) After the installation process (here, state.busy = false and all the stuff has been injected).\n        // So to be on the safe side, let's check for each thing before removing.\n\n        // We need to remove the event listeners, because otherwise the event might fire on an uninstall element which results in an error when trying to get the state of the element.\n        state.onExpandScroll && removeEvent(getExpandElement(element), \"scroll\", state.onExpandScroll);\n        state.onShrinkScroll && removeEvent(getShrinkElement(element), \"scroll\", state.onShrinkScroll);\n        state.onAnimationStart && removeEvent(state.container, \"animationstart\", state.onAnimationStart);\n\n        state.container && element.removeChild(state.container);\n    }\n\n    return {\n        makeDetectable: makeDetectable,\n        addListener: addListener,\n        uninstall: uninstall,\n        initDocument: initDocument\n    };\n};\n","var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n  return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n","'use strict';\nvar addToUnscopables = require('./_add-to-unscopables');\nvar step = require('./_iter-step');\nvar Iterators = require('./_iterators');\nvar toIObject = require('./_to-iobject');\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = require('./_iter-define')(Array, 'Array', function (iterated, kind) {\n  this._t = toIObject(iterated); // target\n  this._i = 0;                   // next index\n  this._k = kind;                // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n  var O = this._t;\n  var kind = this._k;\n  var index = this._i++;\n  if (!O || index >= O.length) {\n    this._t = undefined;\n    return step(1);\n  }\n  if (kind == 'keys') return step(0, index);\n  if (kind == 'values') return step(0, O[index]);\n  return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n","var isObject = require('./_is-object');\nmodule.exports = function (it) {\n  if (!isObject(it)) throw TypeError(it + ' is not an object!');\n  return it;\n};\n","var has = require('./_has');\nvar toIObject = require('./_to-iobject');\nvar arrayIndexOf = require('./_array-includes')(false);\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\n\nmodule.exports = function (object, names) {\n  var O = toIObject(object);\n  var i = 0;\n  var result = [];\n  var key;\n  for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n  // Don't enum bug & hidden keys\n  while (names.length > i) if (has(O, key = names[i++])) {\n    ~arrayIndexOf(result, key) || result.push(key);\n  }\n  return result;\n};\n","module.exports = function (it) {\n  return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","module.exports = function (done, value) {\n  return { value: value, done: !!done };\n};\n","\"use strict\";\n\nvar prop = \"_erd\";\n\nfunction initState(element) {\n    element[prop] = {};\n    return getState(element);\n}\n\nfunction getState(element) {\n    return element[prop];\n}\n\nfunction cleanState(element) {\n    delete element[prop];\n}\n\nmodule.exports = {\n    initState: initState,\n    getState: getState,\n    cleanState: cleanState\n};\n","module.exports = function (it) {\n  if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n  return it;\n};\n","// IE 8- don't enum bug keys\nmodule.exports = (\n  'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n","\"use strict\";\n\nvar forEach                 = require(\"./collection-utils\").forEach;\nvar elementUtilsMaker       = require(\"./element-utils\");\nvar listenerHandlerMaker    = require(\"./listener-handler\");\nvar idGeneratorMaker        = require(\"./id-generator\");\nvar idHandlerMaker          = require(\"./id-handler\");\nvar reporterMaker           = require(\"./reporter\");\nvar browserDetector         = require(\"./browser-detector\");\nvar batchProcessorMaker     = require(\"batch-processor\");\nvar stateHandler            = require(\"./state-handler\");\n\n//Detection strategies.\nvar objectStrategyMaker     = require(\"./detection-strategy/object.js\");\nvar scrollStrategyMaker     = require(\"./detection-strategy/scroll.js\");\n\nfunction isCollection(obj) {\n    return Array.isArray(obj) || obj.length !== undefined;\n}\n\nfunction toArray(collection) {\n    if (!Array.isArray(collection)) {\n        var array = [];\n        forEach(collection, function (obj) {\n            array.push(obj);\n        });\n        return array;\n    } else {\n        return collection;\n    }\n}\n\nfunction isElement(obj) {\n    return obj && obj.nodeType === 1;\n}\n\n/**\n * @typedef idHandler\n * @type {object}\n * @property {function} get Gets the resize detector id of the element.\n * @property {function} set Generate and sets the resize detector id of the element.\n */\n\n/**\n * @typedef Options\n * @type {object}\n * @property {boolean} callOnAdd    Determines if listeners should be called when they are getting added.\n                                    Default is true. If true, the listener is guaranteed to be called when it has been added.\n                                    If false, the listener will not be guarenteed to be called when it has been added (does not prevent it from being called).\n * @property {idHandler} idHandler  A custom id handler that is responsible for generating, setting and retrieving id's for elements.\n                                    If not provided, a default id handler will be used.\n * @property {reporter} reporter    A custom reporter that handles reporting logs, warnings and errors.\n                                    If not provided, a default id handler will be used.\n                                    If set to false, then nothing will be reported.\n * @property {boolean} debug        If set to true, the the system will report debug messages as default for the listenTo method.\n */\n\n/**\n * Creates an element resize detector instance.\n * @public\n * @param {Options?} options Optional global options object that will decide how this instance will work.\n */\nmodule.exports = function(options) {\n    options = options || {};\n\n    //idHandler is currently not an option to the listenTo function, so it should not be added to globalOptions.\n    var idHandler;\n\n    if (options.idHandler) {\n        // To maintain compatability with idHandler.get(element, readonly), make sure to wrap the given idHandler\n        // so that readonly flag always is true when it's used here. This may be removed next major version bump.\n        idHandler = {\n            get: function (element) { return options.idHandler.get(element, true); },\n            set: options.idHandler.set\n        };\n    } else {\n        var idGenerator = idGeneratorMaker();\n        var defaultIdHandler = idHandlerMaker({\n            idGenerator: idGenerator,\n            stateHandler: stateHandler\n        });\n        idHandler = defaultIdHandler;\n    }\n\n    //reporter is currently not an option to the listenTo function, so it should not be added to globalOptions.\n    var reporter = options.reporter;\n\n    if(!reporter) {\n        //If options.reporter is false, then the reporter should be quiet.\n        var quiet = reporter === false;\n        reporter = reporterMaker(quiet);\n    }\n\n    //batchProcessor is currently not an option to the listenTo function, so it should not be added to globalOptions.\n    var batchProcessor = getOption(options, \"batchProcessor\", batchProcessorMaker({ reporter: reporter }));\n\n    //Options to be used as default for the listenTo function.\n    var globalOptions = {};\n    globalOptions.callOnAdd     = !!getOption(options, \"callOnAdd\", true);\n    globalOptions.debug         = !!getOption(options, \"debug\", false);\n\n    var eventListenerHandler    = listenerHandlerMaker(idHandler);\n    var elementUtils            = elementUtilsMaker({\n        stateHandler: stateHandler\n    });\n\n    //The detection strategy to be used.\n    var detectionStrategy;\n    var desiredStrategy = getOption(options, \"strategy\", \"object\");\n    var importantCssRules = getOption(options, \"important\", false);\n    var strategyOptions = {\n        reporter: reporter,\n        batchProcessor: batchProcessor,\n        stateHandler: stateHandler,\n        idHandler: idHandler,\n        important: importantCssRules\n    };\n\n    if(desiredStrategy === \"scroll\") {\n        if (browserDetector.isLegacyOpera()) {\n            reporter.warn(\"Scroll strategy is not supported on legacy Opera. Changing to object strategy.\");\n            desiredStrategy = \"object\";\n        } else if (browserDetector.isIE(9)) {\n            reporter.warn(\"Scroll strategy is not supported on IE9. Changing to object strategy.\");\n            desiredStrategy = \"object\";\n        }\n    }\n\n    if(desiredStrategy === \"scroll\") {\n        detectionStrategy = scrollStrategyMaker(strategyOptions);\n    } else if(desiredStrategy === \"object\") {\n        detectionStrategy = objectStrategyMaker(strategyOptions);\n    } else {\n        throw new Error(\"Invalid strategy name: \" + desiredStrategy);\n    }\n\n    //Calls can be made to listenTo with elements that are still being installed.\n    //Also, same elements can occur in the elements list in the listenTo function.\n    //With this map, the ready callbacks can be synchronized between the calls\n    //so that the ready callback can always be called when an element is ready - even if\n    //it wasn't installed from the function itself.\n    var onReadyCallbacks = {};\n\n    /**\n     * Makes the given elements resize-detectable and starts listening to resize events on the elements. Calls the event callback for each event for each element.\n     * @public\n     * @param {Options?} options Optional options object. These options will override the global options. Some options may not be overriden, such as idHandler.\n     * @param {element[]|element} elements The given array of elements to detect resize events of. Single element is also valid.\n     * @param {function} listener The callback to be executed for each resize event for each element.\n     */\n    function listenTo(options, elements, listener) {\n        function onResizeCallback(element) {\n            var listeners = eventListenerHandler.get(element);\n            forEach(listeners, function callListenerProxy(listener) {\n                listener(element);\n            });\n        }\n\n        function addListener(callOnAdd, element, listener) {\n            eventListenerHandler.add(element, listener);\n\n            if(callOnAdd) {\n                listener(element);\n            }\n        }\n\n        //Options object may be omitted.\n        if(!listener) {\n            listener = elements;\n            elements = options;\n            options = {};\n        }\n\n        if(!elements) {\n            throw new Error(\"At least one element required.\");\n        }\n\n        if(!listener) {\n            throw new Error(\"Listener required.\");\n        }\n\n        if (isElement(elements)) {\n            // A single element has been passed in.\n            elements = [elements];\n        } else if (isCollection(elements)) {\n            // Convert collection to array for plugins.\n            // TODO: May want to check so that all the elements in the collection are valid elements.\n            elements = toArray(elements);\n        } else {\n            return reporter.error(\"Invalid arguments. Must be a DOM element or a collection of DOM elements.\");\n        }\n\n        var elementsReady = 0;\n\n        var callOnAdd = getOption(options, \"callOnAdd\", globalOptions.callOnAdd);\n        var onReadyCallback = getOption(options, \"onReady\", function noop() {});\n        var debug = getOption(options, \"debug\", globalOptions.debug);\n\n        forEach(elements, function attachListenerToElement(element) {\n            if (!stateHandler.getState(element)) {\n                stateHandler.initState(element);\n                idHandler.set(element);\n            }\n\n            var id = idHandler.get(element);\n\n            debug && reporter.log(\"Attaching listener to element\", id, element);\n\n            if(!elementUtils.isDetectable(element)) {\n                debug && reporter.log(id, \"Not detectable.\");\n                if(elementUtils.isBusy(element)) {\n                    debug && reporter.log(id, \"System busy making it detectable\");\n\n                    //The element is being prepared to be detectable. Do not make it detectable.\n                    //Just add the listener, because the element will soon be detectable.\n                    addListener(callOnAdd, element, listener);\n                    onReadyCallbacks[id] = onReadyCallbacks[id] || [];\n                    onReadyCallbacks[id].push(function onReady() {\n                        elementsReady++;\n\n                        if(elementsReady === elements.length) {\n                            onReadyCallback();\n                        }\n                    });\n                    return;\n                }\n\n                debug && reporter.log(id, \"Making detectable...\");\n                //The element is not prepared to be detectable, so do prepare it and add a listener to it.\n                elementUtils.markBusy(element, true);\n                return detectionStrategy.makeDetectable({ debug: debug, important: importantCssRules }, element, function onElementDetectable(element) {\n                    debug && reporter.log(id, \"onElementDetectable\");\n\n                    if (stateHandler.getState(element)) {\n                        elementUtils.markAsDetectable(element);\n                        elementUtils.markBusy(element, false);\n                        detectionStrategy.addListener(element, onResizeCallback);\n                        addListener(callOnAdd, element, listener);\n\n                        // Since the element size might have changed since the call to \"listenTo\", we need to check for this change,\n                        // so that a resize event may be emitted.\n                        // Having the startSize object is optional (since it does not make sense in some cases such as unrendered elements), so check for its existance before.\n                        // Also, check the state existance before since the element may have been uninstalled in the installation process.\n                        var state = stateHandler.getState(element);\n                        if (state && state.startSize) {\n                            var width = element.offsetWidth;\n                            var height = element.offsetHeight;\n                            if (state.startSize.width !== width || state.startSize.height !== height) {\n                                onResizeCallback(element);\n                            }\n                        }\n\n                        if(onReadyCallbacks[id]) {\n                            forEach(onReadyCallbacks[id], function(callback) {\n                                callback();\n                            });\n                        }\n                    } else {\n                        // The element has been unisntalled before being detectable.\n                        debug && reporter.log(id, \"Element uninstalled before being detectable.\");\n                    }\n\n                    delete onReadyCallbacks[id];\n\n                    elementsReady++;\n                    if(elementsReady === elements.length) {\n                        onReadyCallback();\n                    }\n                });\n            }\n\n            debug && reporter.log(id, \"Already detecable, adding listener.\");\n\n            //The element has been prepared to be detectable and is ready to be listened to.\n            addListener(callOnAdd, element, listener);\n            elementsReady++;\n        });\n\n        if(elementsReady === elements.length) {\n            onReadyCallback();\n        }\n    }\n\n    function uninstall(elements) {\n        if(!elements) {\n            return reporter.error(\"At least one element is required.\");\n        }\n\n        if (isElement(elements)) {\n            // A single element has been passed in.\n            elements = [elements];\n        } else if (isCollection(elements)) {\n            // Convert collection to array for plugins.\n            // TODO: May want to check so that all the elements in the collection are valid elements.\n            elements = toArray(elements);\n        } else {\n            return reporter.error(\"Invalid arguments. Must be a DOM element or a collection of DOM elements.\");\n        }\n\n        forEach(elements, function (element) {\n            eventListenerHandler.removeAllListeners(element);\n            detectionStrategy.uninstall(element);\n            stateHandler.cleanState(element);\n        });\n    }\n\n    function initDocument(targetDocument) {\n        detectionStrategy.initDocument && detectionStrategy.initDocument(targetDocument);\n    }\n\n    return {\n        listenTo: listenTo,\n        removeListener: eventListenerHandler.removeListener,\n        removeAllListeners: eventListenerHandler.removeAllListeners,\n        uninstall: uninstall,\n        initDocument: initDocument\n    };\n};\n\nfunction getOption(options, name, defaultValue) {\n    var value = options[name];\n\n    if((value === undefined || value === null) && defaultValue !== undefined) {\n        return defaultValue;\n    }\n\n    return value;\n}\n","'use strict';\nvar $defineProperty = require('./_object-dp');\nvar createDesc = require('./_property-desc');\n\nmodule.exports = function (object, index, value) {\n  if (index in object) $defineProperty.f(object, index, createDesc(0, value));\n  else object[index] = value;\n};\n","// 19.1.3.1 Object.assign(target, source)\nvar $export = require('./_export');\n\n$export($export.S + $export.F, 'Object', { assign: require('./_object-assign') });\n","module.exports = require('./_shared')('native-function-to-string', Function.toString);\n","var document = require('./_global').document;\nmodule.exports = document && document.documentElement;\n","// This file is imported into lib/wc client bundles.\n\nif (typeof window !== 'undefined') {\n  var currentScript = window.document.currentScript\n  if (process.env.NEED_CURRENTSCRIPT_POLYFILL) {\n    var getCurrentScript = require('@soda/get-current-script')\n    currentScript = getCurrentScript()\n\n    // for backward compatibility, because previously we directly included the polyfill\n    if (!('currentScript' in document)) {\n      Object.defineProperty(document, 'currentScript', { get: getCurrentScript })\n    }\n  }\n\n  var src = currentScript && currentScript.src.match(/(.+\\/)[^/]+\\.js(\\?.*)?$/)\n  if (src) {\n    __webpack_public_path__ = src[1] // eslint-disable-line\n  }\n}\n\n// Indicate to webpack that this file can be concatenated\nexport default null\n","<template>\r\n    <div ref=\"item\"\r\n         class=\"vue-grid-item\"\r\n         :class=\"classObj\"\r\n         :style=\"style\"\r\n    >\r\n        <slot></slot>\r\n        <span v-if=\"resizableAndNotStatic\" ref=\"handle\" :class=\"resizableHandleClass\"></span>\r\n        <!--<span v-if=\"draggable\" ref=\"dragHandle\" class=\"vue-draggable-handle\"></span>-->\r\n    </div>\r\n</template>\r\n<style>\r\n    .vue-grid-item {\r\n        touch-action: none;\r\n        transition: all 200ms ease;\r\n        transition-property: left, top, right;\r\n        /* add right for rtl */\r\n    }\r\n\r\n    .vue-grid-item.no-touch {\r\n        -ms-touch-action: none;\r\n        touch-action: none;\r\n    }\r\n\r\n    .vue-grid-item.cssTransforms {\r\n        transition-property: transform;\r\n        left: 0;\r\n        right: auto;\r\n    }\r\n\r\n    .vue-grid-item.cssTransforms.render-rtl {\r\n        left: auto;\r\n        right: 0;\r\n    }\r\n\r\n    .vue-grid-item.resizing {\r\n        opacity: 0.6;\r\n        z-index: 3;\r\n    }\r\n\r\n    .vue-grid-item.vue-draggable-dragging {\r\n        transition:none;\r\n        z-index: 3;\r\n    }\r\n\r\n    .vue-grid-item.vue-grid-placeholder {\r\n        background: red;\r\n        opacity: 0.2;\r\n        transition-duration: 100ms;\r\n        z-index: 2;\r\n        -webkit-user-select: none;\r\n        -moz-user-select: none;\r\n        -ms-user-select: none;\r\n        -o-user-select: none;\r\n        user-select: none;\r\n    }\r\n\r\n    .vue-grid-item > .vue-resizable-handle {\r\n        position: absolute;\r\n        width: 20px;\r\n        height: 20px;\r\n        bottom: 0;\r\n        right: 0;\r\n        background: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/Pg08IS0tIEdlbmVyYXRvcjogQWRvYmUgRmlyZXdvcmtzIENTNiwgRXhwb3J0IFNWRyBFeHRlbnNpb24gYnkgQWFyb24gQmVhbGwgKGh0dHA6Ly9maXJld29ya3MuYWJlYWxsLmNvbSkgLiBWZXJzaW9uOiAwLjYuMSAgLS0+DTwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+DTxzdmcgaWQ9IlVudGl0bGVkLVBhZ2UlMjAxIiB2aWV3Qm94PSIwIDAgNiA2IiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjojZmZmZmZmMDAiIHZlcnNpb249IjEuMSINCXhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhtbDpzcGFjZT0icHJlc2VydmUiDQl4PSIwcHgiIHk9IjBweCIgd2lkdGg9IjZweCIgaGVpZ2h0PSI2cHgiDT4NCTxnIG9wYWNpdHk9IjAuMzAyIj4NCQk8cGF0aCBkPSJNIDYgNiBMIDAgNiBMIDAgNC4yIEwgNCA0LjIgTCA0LjIgNC4yIEwgNC4yIDAgTCA2IDAgTCA2IDYgTCA2IDYgWiIgZmlsbD0iIzAwMDAwMCIvPg0JPC9nPg08L3N2Zz4=');\r\n        background-position: bottom right;\r\n        padding: 0 3px 3px 0;\r\n        background-repeat: no-repeat;\r\n        background-origin: content-box;\r\n        box-sizing: border-box;\r\n        cursor: se-resize;\r\n    }\r\n\r\n    .vue-grid-item > .vue-rtl-resizable-handle {\r\n        bottom: 0;\r\n        left: 0;\r\n        background: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTAuMDAwMDAwMDAwMDAwMDAyIiBoZWlnaHQ9IjEwLjAwMDAwMDAwMDAwMDAwMiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KIDwhLS0gQ3JlYXRlZCB3aXRoIE1ldGhvZCBEcmF3IC0gaHR0cDovL2dpdGh1Yi5jb20vZHVvcGl4ZWwvTWV0aG9kLURyYXcvIC0tPgogPGc+CiAgPHRpdGxlPmJhY2tncm91bmQ8L3RpdGxlPgogIDxyZWN0IGZpbGw9Im5vbmUiIGlkPSJjYW52YXNfYmFja2dyb3VuZCIgaGVpZ2h0PSIxMiIgd2lkdGg9IjEyIiB5PSItMSIgeD0iLTEiLz4KICA8ZyBkaXNwbGF5PSJub25lIiBvdmVyZmxvdz0idmlzaWJsZSIgeT0iMCIgeD0iMCIgaGVpZ2h0PSIxMDAlIiB3aWR0aD0iMTAwJSIgaWQ9ImNhbnZhc0dyaWQiPgogICA8cmVjdCBmaWxsPSJ1cmwoI2dyaWRwYXR0ZXJuKSIgc3Ryb2tlLXdpZHRoPSIwIiB5PSIwIiB4PSIwIiBoZWlnaHQ9IjEwMCUiIHdpZHRoPSIxMDAlIi8+CiAgPC9nPgogPC9nPgogPGc+CiAgPHRpdGxlPkxheWVyIDE8L3RpdGxlPgogIDxsaW5lIGNhbnZhcz0iI2ZmZmZmZiIgY2FudmFzLW9wYWNpdHk9IjEiIHN0cm9rZS1saW5lY2FwPSJ1bmRlZmluZWQiIHN0cm9rZS1saW5lam9pbj0idW5kZWZpbmVkIiBpZD0ic3ZnXzEiIHkyPSItNzAuMTc4NDA3IiB4Mj0iMTI0LjQ2NDE3NSIgeTE9Ii0zOC4zOTI3MzciIHgxPSIxNDQuODIxMjg5IiBzdHJva2Utd2lkdGg9IjEuNSIgc3Ryb2tlPSIjMDAwIiBmaWxsPSJub25lIi8+CiAgPGxpbmUgc3Ryb2tlPSIjNjY2NjY2IiBzdHJva2UtbGluZWNhcD0idW5kZWZpbmVkIiBzdHJva2UtbGluZWpvaW49InVuZGVmaW5lZCIgaWQ9InN2Z181IiB5Mj0iOS4xMDY5NTciIHgyPSIwLjk0NzI0NyIgeTE9Ii0wLjAxODEyOCIgeDE9IjAuOTQ3MjQ3IiBzdHJva2Utd2lkdGg9IjIiIGZpbGw9Im5vbmUiLz4KICA8bGluZSBzdHJva2UtbGluZWNhcD0idW5kZWZpbmVkIiBzdHJva2UtbGluZWpvaW49InVuZGVmaW5lZCIgaWQ9InN2Z183IiB5Mj0iOSIgeDI9IjEwLjA3MzUyOSIgeTE9IjkiIHgxPSItMC42NTU2NCIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2U9IiM2NjY2NjYiIGZpbGw9Im5vbmUiLz4KIDwvZz4KPC9zdmc+);\r\n        background-position: bottom left;\r\n        padding-left: 3px;\r\n        background-repeat: no-repeat;\r\n        background-origin: content-box;\r\n        cursor: sw-resize;\r\n        right: auto;\r\n    }\r\n\r\n    .vue-grid-item.disable-userselect {\r\n        user-select: none;\r\n    }\r\n</style>\r\n<script>\r\n    import {setTopLeft, setTopRight, setTransformRtl, setTransform} from '@/helpers/utils';\r\n    import {getControlPosition, createCoreData} from '@/helpers/draggableUtils';\r\n    import {getColsFromBreakpoint} from '@/helpers/responsiveUtils';\r\n    import {getDocumentDir} from \"@/helpers/DOM\";\r\n    //    var eventBus = require('./eventBus');\r\n\r\n    import '@interactjs/auto-start'\r\n    import '@interactjs/actions/drag'\r\n    import '@interactjs/actions/resize'\r\n    import '@interactjs/modifiers'\r\n    import '@interactjs/dev-tools'\r\n    import interact from '@interactjs/interact'\r\n\r\n    export default {\r\n        name: \"GridItem\",\r\n        props: {\r\n            /*cols: {\r\n             type: Number,\r\n             required: true\r\n             },*/\r\n            /*containerWidth: {\r\n             type: Number,\r\n             required: true\r\n\r\n             },\r\n             rowHeight: {\r\n             type: Number,\r\n             required: true\r\n             },\r\n             margin: {\r\n             type: Array,\r\n             required: true\r\n             },\r\n             maxRows: {\r\n             type: Number,\r\n             required: true\r\n             },*/\r\n            isDraggable: {\r\n                type: Boolean,\r\n                required: false,\r\n                default: null\r\n            },\r\n            isResizable: {\r\n                type: Boolean,\r\n                required: false,\r\n                default: null\r\n            },\r\n            /*useCssTransforms: {\r\n             type: Boolean,\r\n             required: true\r\n             },\r\n             */\r\n            static: {\r\n                type: Boolean,\r\n                required: false,\r\n                default: false\r\n            },\r\n            minH: {\r\n                type: Number,\r\n                required: false,\r\n                default: 1\r\n            },\r\n            minW: {\r\n                type: Number,\r\n                required: false,\r\n                default: 1\r\n            },\r\n            maxH: {\r\n                type: Number,\r\n                required: false,\r\n                default: Infinity\r\n            },\r\n            maxW: {\r\n                type: Number,\r\n                required: false,\r\n                default: Infinity\r\n            },\r\n            x: {\r\n                type: Number,\r\n                required: true\r\n            },\r\n            y: {\r\n                type: Number,\r\n                required: true\r\n            },\r\n            w: {\r\n                type: Number,\r\n                required: true\r\n            },\r\n            h: {\r\n                type: Number,\r\n                required: true\r\n            },\r\n            i: {\r\n                required: true\r\n            },\r\n            dragIgnoreFrom: {\r\n                type: String,\r\n                required: false,\r\n                default: 'a, button'\r\n            },\r\n            dragAllowFrom: {\r\n                type: String,\r\n                required: false,\r\n                default: null\r\n            },\r\n            resizeIgnoreFrom: {\r\n                type: String,\r\n                required: false,\r\n                default: 'a, button'\r\n            },\r\n            preserveAspectRatio: {\r\n                type: Boolean,\r\n                required: false,\r\n                default: false,\r\n            }\r\n        },\r\n        inject: [\"eventBus\", \"layout\"],\r\n        data: function () {\r\n            return {\r\n                cols: 1,\r\n                containerWidth: 100,\r\n                rowHeight: 30,\r\n                margin: [10, 10],\r\n                maxRows: Infinity,\r\n                draggable: null,\r\n                resizable: null,\r\n                useCssTransforms: true,\r\n                useStyleCursor: true,\r\n\r\n                isDragging: false,\r\n                dragging: null,\r\n                isResizing: false,\r\n                resizing: null,\r\n                lastX: NaN,\r\n                lastY: NaN,\r\n                lastW: NaN,\r\n                lastH: NaN,\r\n                style: {},\r\n                rtl: false,\r\n\r\n                dragEventSet: false,\r\n                resizeEventSet: false,\r\n\r\n                previousW: null,\r\n                previousH: null,\r\n                previousX: null,\r\n                previousY: null,\r\n                innerX: this.x,\r\n                innerY: this.y,\r\n                innerW: this.w,\r\n                innerH: this.h\r\n            }\r\n        },\r\n        created () {\r\n            let self = this;\r\n\r\n            // Accessible refernces of functions for removing in beforeUnmount\r\n            self.updateWidthHandler = function (width) {\r\n                self.updateWidth(width);\r\n            };\r\n\r\n            self.compactHandler = function (layout) {\r\n                self.compact(layout);\r\n            };\r\n\r\n            self.setDraggableHandler = function (isDraggable) {\r\n                if (self.isDraggable === null) {\r\n                    self.draggable = isDraggable;\r\n                }\r\n            };\r\n\r\n            self.setResizableHandler = function (isResizable) {\r\n                if (self.isResizable === null) {\r\n                    self.resizable = isResizable;\r\n                }\r\n            };\r\n\r\n            self.setRowHeightHandler = function (rowHeight) {\r\n                self.rowHeight = rowHeight;\r\n            };\r\n\r\n            self.setMaxRowsHandler = function (maxRows) {\r\n                self.maxRows = maxRows;\r\n            };\r\n\r\n            self.directionchangeHandler = () => {\r\n                this.rtl = getDocumentDir() === 'rtl';\r\n                this.compact();\r\n            };\r\n\r\n            self.setColNum = (colNum) => {\r\n               self.cols = parseInt(colNum);\r\n            }\r\n\r\n            this.eventBus.on('updateWidth', self.updateWidthHandler);\r\n            this.eventBus.on('compact', self.compactHandler);\r\n            this.eventBus.on('setDraggable', self.setDraggableHandler);\r\n            this.eventBus.on('setResizable', self.setResizableHandler);\r\n            this.eventBus.on('setRowHeight', self.setRowHeightHandler);\r\n            this.eventBus.on('setMaxRows', self.setMaxRowsHandler);\r\n            this.eventBus.on('directionchange', self.directionchangeHandler);\r\n            this.eventBus.on('setColNum', self.setColNum)\r\n\r\n            this.rtl = getDocumentDir() === 'rtl';\r\n        },\r\n        beforeUnmount: function(){\r\n            let self = this;\r\n            //Remove listeners\r\n            this.eventBus.off('updateWidth', self.updateWidthHandler);\r\n            this.eventBus.off('compact', self.compactHandler);\r\n            this.eventBus.off('setDraggable', self.setDraggableHandler);\r\n            this.eventBus.off('setResizable', self.setResizableHandler);\r\n            this.eventBus.off('setRowHeight', self.setRowHeightHandler);\r\n            this.eventBus.off('setMaxRows', self.setMaxRowsHandler);\r\n            this.eventBus.off('directionchange', self.directionchangeHandler);\r\n            this.eventBus.off('setColNum', self.setColNum);\r\n            if (this.interactObj) {\r\n                this.interactObj.unset() // destroy interact intance\r\n            }\r\n        },\r\n        mounted: function () {\r\n            if (this.layout.responsive && this.layout.lastBreakpoint) {\r\n                this.cols = getColsFromBreakpoint(this.layout.lastBreakpoint, this.layout.cols);\r\n            } else {\r\n                this.cols = this.layout.colNum;\r\n            }\r\n            this.rowHeight = this.layout.rowHeight;\r\n            this.containerWidth = this.layout.width !== null ? this.layout.width : 100;\r\n            this.margin = this.layout.margin !== undefined ? this.layout.margin : [10, 10];\r\n            this.maxRows = this.layout.maxRows;\r\n\r\n            if (this.isDraggable === null) {\r\n                this.draggable = this.layout.isDraggable;\r\n            } else {\r\n                this.draggable = this.isDraggable;\r\n            }\r\n            if (this.isResizable === null) {\r\n                this.resizable = this.layout.isResizable;\r\n            } else {\r\n                this.resizable = this.isResizable;\r\n            }\r\n            this.useCssTransforms = this.layout.useCssTransforms;\r\n            this.useStyleCursor = this.layout.useStyleCursor;\r\n            this.createStyle();\r\n        },\r\n        watch: {\r\n            isDraggable: function () {\r\n                this.draggable = this.isDraggable;\r\n            },\r\n            static: function () {\r\n                this.tryMakeDraggable();\r\n                this.tryMakeResizable();\r\n            },\r\n            draggable: function () {\r\n                this.tryMakeDraggable();\r\n            },\r\n            isResizable: function () {\r\n                this.resizable = this.isResizable;\r\n            },\r\n            resizable: function () {\r\n                this.tryMakeResizable();\r\n            },\r\n            rowHeight: function () {\r\n                this.createStyle();\r\n                this.emitContainerResized();\r\n            },\r\n            cols: function () {\r\n                this.tryMakeResizable();\r\n                this.createStyle();\r\n                this.emitContainerResized();\r\n            },\r\n            containerWidth: function () {\r\n                this.tryMakeResizable();\r\n                this.createStyle();\r\n                this.emitContainerResized();\r\n            },\r\n            x: function (newVal) {\r\n                this.innerX = newVal;\r\n                this.createStyle();\r\n            },\r\n            y: function (newVal) {\r\n                this.innerY = newVal;\r\n                this.createStyle();\r\n            },\r\n            h: function (newVal) {\r\n                this.innerH = newVal\r\n                this.createStyle();\r\n                // this.emitContainerResized();\r\n            },\r\n            w: function (newVal) {\r\n                this.innerW = newVal;\r\n                this.createStyle();\r\n                // this.emitContainerResized();\r\n            },\r\n            renderRtl: function () {\r\n                // console.log(\"### renderRtl\");\r\n                this.tryMakeResizable();\r\n                this.createStyle();\r\n            },\r\n            minH: function () {\r\n                this.tryMakeResizable();\r\n            },\r\n            maxH: function () {\r\n                this.tryMakeResizable();\r\n            },\r\n            minW: function () {\r\n                this.tryMakeResizable();\r\n            },\r\n            maxW: function () {\r\n                this.tryMakeResizable();\r\n            },\r\n            \"$parent.margin\": function (margin) {\r\n                if (!margin || (margin[0] == this.margin[0] && margin[1] == this.margin[1])) {\r\n                    return;\r\n                }\r\n                this.margin = margin.map(m => Number(m));\r\n                this.createStyle();\r\n                this.emitContainerResized();\r\n            },\r\n        },\r\n        computed: {\r\n            classObj() {\r\n                return {\r\n                    'vue-resizable' : this.resizableAndNotStatic,\r\n                    'static': this.static,\r\n                    'resizing' : this.isResizing,\r\n                    'vue-draggable-dragging' : this.isDragging,\r\n                    'cssTransforms' : this.useCssTransforms,\r\n                    'render-rtl' : this.renderRtl,\r\n                    'disable-userselect': this.isDragging,\r\n                    'no-touch': this.isAndroid && this.draggableOrResizableAndNotStatic\r\n                }\r\n            },\r\n            resizableAndNotStatic(){\r\n                return this.resizable && !this.static;\r\n            },\r\n            draggableOrResizableAndNotStatic(){\r\n                return (this.draggable || this.resizable) && !this.static;\r\n            },\r\n            isAndroid() {\r\n                return navigator.userAgent.toLowerCase().indexOf(\"android\") !== -1;\r\n            },\r\n            renderRtl() {\r\n                return (this.layout.isMirrored) ? !this.rtl : this.rtl;\r\n            },\r\n            resizableHandleClass() {\r\n                if (this.renderRtl) {\r\n                    return 'vue-resizable-handle vue-rtl-resizable-handle';\r\n                } else {\r\n                    return 'vue-resizable-handle';\r\n                }\r\n            }\r\n        },\r\n        methods: {\r\n            createStyle: function () {\r\n                if (this.x + this.w > this.cols) {\r\n                    this.innerX = 0;\r\n                    this.innerW = (this.w > this.cols) ? this.cols : this.w\r\n                } else {\r\n                  this.innerX = this.x;\r\n                  this.innerW = this.w;\r\n                }\r\n                let pos = this.calcPosition(this.innerX, this.innerY, this.innerW, this.innerH);\r\n\r\n\r\n                if (this.isDragging) {\r\n                    pos.top = this.dragging.top;\r\n//                    Add rtl support\r\n                    if (this.renderRtl) {\r\n                        pos.right = this.dragging.left;\r\n                    } else {\r\n                        pos.left = this.dragging.left;\r\n                    }\r\n                }\r\n                if (this.isResizing) {\r\n                    pos.width = this.resizing.width;\r\n                    pos.height = this.resizing.height;\r\n                }\r\n\r\n                let style;\r\n                // CSS Transforms support (default)\r\n                if (this.useCssTransforms) {\r\n//                    Add rtl support\r\n                    if (this.renderRtl) {\r\n                        style = setTransformRtl(pos.top, pos.right, pos.width, pos.height);\r\n                    } else {\r\n                        style = setTransform(pos.top, pos.left, pos.width, pos.height);\r\n                    }\r\n\r\n                } else { // top,left (slow)\r\n//                    Add rtl support\r\n                    if (this.renderRtl) {\r\n                        style = setTopRight(pos.top, pos.right, pos.width, pos.height);\r\n                    } else {\r\n                        style = setTopLeft(pos.top, pos.left, pos.width, pos.height);\r\n                    }\r\n                }\r\n                this.style = style;\r\n            },\r\n            emitContainerResized() {\r\n                // this.style has width and height with trailing 'px'. The\r\n                // resized event is without them\r\n                let styleProps = {};\r\n                for (let prop of ['width', 'height']) {\r\n                    let val = this.style[prop];\r\n                    let matches = val.match(/^(\\d+)px$/);\r\n                    if (! matches)\r\n                        return;\r\n                    styleProps[prop] = matches[1];\r\n                }\r\n                this.$emit(\"container-resized\", this.i, this.h, this.w, styleProps.height, styleProps.width);\r\n            },\r\n            handleResize: function (event) {\r\n                if (this.static) return;\r\n                const position = getControlPosition(event);\r\n                // Get the current drag point from the event. This is used as the offset.\r\n                if (position == null) return; // not possible but satisfies flow\r\n                const {x, y} = position;\r\n\r\n                const newSize = {width: 0, height: 0};\r\n                let pos;\r\n                switch (event.type) {\r\n                    case \"resizestart\": {\r\n                        this.previousW = this.innerW;\r\n                        this.previousH = this.innerH;\r\n                        pos = this.calcPosition(this.innerX, this.innerY, this.innerW, this.innerH);\r\n                        newSize.width = pos.width;\r\n                        newSize.height = pos.height;\r\n                        this.resizing = newSize;\r\n                        this.isResizing = true;\r\n                        break;\r\n                    }\r\n                    case \"resizemove\": {\r\n//                        console.log(\"### resize => \" + event.type + \", lastW=\" + this.lastW + \", lastH=\" + this.lastH);\r\n                        const coreEvent = createCoreData(this.lastW, this.lastH, x, y);\r\n                        if (this.renderRtl) {\r\n                            newSize.width = this.resizing.width - coreEvent.deltaX;\r\n                        } else {\r\n                            newSize.width = this.resizing.width + coreEvent.deltaX;\r\n                        }\r\n                        newSize.height = this.resizing.height + coreEvent.deltaY;\r\n\r\n                        ///console.log(\"### resize => \" + event.type + \", deltaX=\" + coreEvent.deltaX + \", deltaY=\" + coreEvent.deltaY);\r\n                        this.resizing = newSize;\r\n                        break;\r\n                    }\r\n                    case \"resizeend\": {\r\n                        //console.log(\"### resize end => x=\" +this.innerX + \" y=\" + this.innerY + \" w=\" + this.innerW + \" h=\" + this.innerH);\r\n                        pos = this.calcPosition(this.innerX, this.innerY, this.innerW, this.innerH);\r\n                        newSize.width = pos.width;\r\n                        newSize.height = pos.height;\r\n//                        console.log(\"### resize end => \" + JSON.stringify(newSize));\r\n                        this.resizing = null;\r\n                        this.isResizing = false;\r\n                        break;\r\n                    }\r\n                }\r\n\r\n                // Get new WH\r\n                pos = this.calcWH(newSize.height, newSize.width);\r\n                if (pos.w < this.minW) {\r\n                    pos.w = this.minW;\r\n                }\r\n                if (pos.w > this.maxW) {\r\n                    pos.w = this.maxW;\r\n                }\r\n                if (pos.h < this.minH) {\r\n                    pos.h = this.minH;\r\n                }\r\n                if (pos.h > this.maxH) {\r\n                    pos.h = this.maxH;\r\n                }\r\n\r\n                if (pos.h < 1) {\r\n                    pos.h = 1;\r\n                }\r\n                if (pos.w < 1) {\r\n                    pos.w = 1;\r\n                }\r\n\r\n                this.lastW = x;\r\n                this.lastH = y;\r\n\r\n                if (this.innerW !== pos.w || this.innerH !== pos.h) {\r\n                    this.$emit(\"resize\", this.i, pos.h, pos.w, newSize.height, newSize.width);\r\n                }\r\n                if (event.type === \"resizeend\" && (this.previousW !== this.innerW || this.previousH !== this.innerH)) {\r\n                    this.$emit(\"resized\", this.i, pos.h, pos.w, newSize.height, newSize.width);\r\n                }\r\n                this.eventBus.emit(\"resizeEvent\", {eventType: event.type, i: this.i, x: this.innerX, y: this.innerY, h: pos.h, w: pos.w});\r\n            },\r\n            handleDrag(event) {\r\n                if (this.static) return;\r\n                if (this.isResizing) return;\r\n\r\n                const position = getControlPosition(event);\r\n\r\n                // Get the current drag point from the event. This is used as the offset.\r\n                if (position === null) return; // not possible but satisfies flow\r\n                const {x, y} = position;\r\n\r\n                // let shouldUpdate = false;\r\n                let newPosition = {top: 0, left: 0};\r\n                switch (event.type) {\r\n                    case \"dragstart\": {\r\n                        this.previousX = this.innerX;\r\n                        this.previousY = this.innerY;\r\n\r\n                        let parentRect = event.target.offsetParent.getBoundingClientRect();\r\n                        let clientRect = event.target.getBoundingClientRect();\r\n                        if (this.renderRtl) {\r\n                            newPosition.left = (clientRect.right - parentRect.right) * -1;\r\n                        } else {\r\n                            newPosition.left = clientRect.left - parentRect.left;\r\n                        }\r\n                        newPosition.top = clientRect.top - parentRect.top;\r\n                        this.dragging = newPosition;\r\n                        this.isDragging = true;\r\n                        break;\r\n                    }\r\n                    case \"dragend\": {\r\n                        if (!this.isDragging) return;\r\n                        let parentRect = event.target.offsetParent.getBoundingClientRect();\r\n                        let clientRect = event.target.getBoundingClientRect();\r\n//                        Add rtl support\r\n                        if (this.renderRtl) {\r\n                            newPosition.left = (clientRect.right - parentRect.right) * -1;\r\n                        } else {\r\n                            newPosition.left = clientRect.left - parentRect.left;\r\n                        }\r\n                        newPosition.top = clientRect.top - parentRect.top;\r\n//                        console.log(\"### drag end => \" + JSON.stringify(newPosition));\r\n//                        console.log(\"### DROP: \" + JSON.stringify(newPosition));\r\n                        this.dragging = null;\r\n                        this.isDragging = false;\r\n                        // shouldUpdate = true;\r\n                        break;\r\n                    }\r\n                    case \"dragmove\": {\r\n                        const coreEvent = createCoreData(this.lastX, this.lastY, x, y);\r\n//                        Add rtl support\r\n                        if (this.renderRtl) {\r\n                            newPosition.left = this.dragging.left - coreEvent.deltaX;\r\n                        } else {\r\n                            newPosition.left = this.dragging.left + coreEvent.deltaX;\r\n                        }\r\n                        newPosition.top = this.dragging.top + coreEvent.deltaY;\r\n//                        console.log(\"### drag => \" + event.type + \", x=\" + x + \", y=\" + y);\r\n//                        console.log(\"### drag => \" + event.type + \", deltaX=\" + coreEvent.deltaX + \", deltaY=\" + coreEvent.deltaY);\r\n//                        console.log(\"### drag end => \" + JSON.stringify(newPosition));\r\n                        this.dragging = newPosition;\r\n                        break;\r\n                    }\r\n                }\r\n\r\n                // Get new XY\r\n                let pos;\r\n                if (this.renderRtl) {\r\n                    pos = this.calcXY(newPosition.top, newPosition.left);\r\n                } else {\r\n                    pos = this.calcXY(newPosition.top, newPosition.left);\r\n                }\r\n\r\n                this.lastX = x;\r\n                this.lastY = y;\r\n\r\n                if (this.innerX !== pos.x || this.innerY !== pos.y) {\r\n                    this.$emit(\"move\", this.i, pos.x, pos.y);\r\n                }\r\n                if (event.type === \"dragend\" && (this.previousX !== this.innerX || this.previousY !== this.innerY)) {\r\n                    this.$emit(\"moved\", this.i, pos.x, pos.y);\r\n                }\r\n                this.eventBus.emit(\"dragEvent\", {eventType: event.type, i: this.i, x: pos.x, y: pos.y, h: this.innerH, w: this.innerW});\r\n            },\r\n            calcPosition: function (x, y, w, h) {\r\n                const colWidth = this.calcColWidth();\r\n                // add rtl support\r\n                let out;\r\n                if (this.renderRtl) {\r\n                    out = {\r\n                        right: Math.round(colWidth * x + (x + 1) * this.margin[0]),\r\n                        top: Math.round(this.rowHeight * y + (y + 1) * this.margin[1]),\r\n                        // 0 * Infinity === NaN, which causes problems with resize constriants;\r\n                        // Fix this if it occurs.\r\n                        // Note we do it here rather than later because Math.round(Infinity) causes deopt\r\n                        width: w === Infinity ? w : Math.round(colWidth * w + Math.max(0, w - 1) * this.margin[0]),\r\n                        height: h === Infinity ? h : Math.round(this.rowHeight * h + Math.max(0, h - 1) * this.margin[1])\r\n                    };\r\n                } else {\r\n                    out = {\r\n                        left: Math.round(colWidth * x + (x + 1) * this.margin[0]),\r\n                        top: Math.round(this.rowHeight * y + (y + 1) * this.margin[1]),\r\n                        // 0 * Infinity === NaN, which causes problems with resize constriants;\r\n                        // Fix this if it occurs.\r\n                        // Note we do it here rather than later because Math.round(Infinity) causes deopt\r\n                        width: w === Infinity ? w : Math.round(colWidth * w + Math.max(0, w - 1) * this.margin[0]),\r\n                        height: h === Infinity ? h : Math.round(this.rowHeight * h + Math.max(0, h - 1) * this.margin[1])\r\n                    };\r\n                }\r\n\r\n\r\n                return out;\r\n            },\r\n            /**\r\n             * Translate x and y coordinates from pixels to grid units.\r\n             * @param  {Number} top  Top position (relative to parent) in pixels.\r\n             * @param  {Number} left Left position (relative to parent) in pixels.\r\n             * @return {Object} x and y in grid units.\r\n             */\r\n            // TODO check if this function needs change in order to support rtl.\r\n            calcXY(top, left) {\r\n                const colWidth = this.calcColWidth();\r\n\r\n                // left = colWidth * x + margin * (x + 1)\r\n                // l = cx + m(x+1)\r\n                // l = cx + mx + m\r\n                // l - m = cx + mx\r\n                // l - m = x(c + m)\r\n                // (l - m) / (c + m) = x\r\n                // x = (left - margin) / (coldWidth + margin)\r\n                let x = Math.round((left - this.margin[0]) / (colWidth + this.margin[0]));\r\n                let y = Math.round((top - this.margin[1]) / (this.rowHeight + this.margin[1]));\r\n\r\n                // Capping\r\n                x = Math.max(Math.min(x, this.cols - this.innerW), 0);\r\n                y = Math.max(Math.min(y, this.maxRows - this.innerH), 0);\r\n\r\n                return {x, y};\r\n            },\r\n            // Helper for generating column width\r\n            calcColWidth() {\r\n                const colWidth = (this.containerWidth - (this.margin[0] * (this.cols + 1))) / this.cols;\r\n               // console.log(\"### COLS=\" + this.cols + \" COL WIDTH=\" + colWidth + \" MARGIN \" + this.margin[0]);\r\n                return colWidth;\r\n            },\r\n\r\n            /**\r\n             * Given a height and width in pixel values, calculate grid units.\r\n             * @param  {Number} height Height in pixels.\r\n             * @param  {Number} width  Width in pixels.\r\n             * @param  {Boolean} autoSizeFlag  function autoSize identifier.\r\n             * @return {Object} w, h as grid units.\r\n             */\r\n            calcWH(height, width, autoSizeFlag = false) {\r\n                const colWidth = this.calcColWidth();\r\n\r\n                // width = colWidth * w - (margin * (w - 1))\r\n                // ...\r\n                // w = (width + margin) / (colWidth + margin)\r\n                let w = Math.round((width + this.margin[0]) / (colWidth + this.margin[0]));\r\n                let h = 0;\r\n                if (!autoSizeFlag) {\r\n                    h = Math.round((height + this.margin[1]) / (this.rowHeight + this.margin[1]));\r\n                } else {\r\n                    h = Math.ceil((height + this.margin[1]) / (this.rowHeight + this.margin[1]));\r\n                }\r\n\r\n                // Capping\r\n                w = Math.max(Math.min(w, this.cols - this.innerX), 0);\r\n                h = Math.max(Math.min(h, this.maxRows - this.innerY), 0);\r\n                return {w, h};\r\n            },\r\n            updateWidth: function (width, colNum) {\r\n                this.containerWidth = width;\r\n                if (colNum !== undefined && colNum !== null) {\r\n                    this.cols = colNum;\r\n                }\r\n            },\r\n            compact: function () {\r\n                this.createStyle();\r\n            },\r\n            tryMakeDraggable: function(){\r\n                const self = this;\r\n                if (this.interactObj === null || this.interactObj === undefined) {\r\n                    this.interactObj = interact(this.$refs.item);\r\n                    if (!this.useStyleCursor) {\r\n                        this.interactObj.styleCursor(false);\r\n                    }\r\n                }\r\n                if (this.draggable && !this.static) {\r\n                    const opts = {\r\n                        ignoreFrom: this.dragIgnoreFrom,\r\n                        allowFrom: this.dragAllowFrom\r\n                    };\r\n                    this.interactObj.draggable(opts);\r\n                    /*this.interactObj.draggable({allowFrom: '.vue-draggable-handle'});*/\r\n                    if (!this.dragEventSet) {\r\n                        this.dragEventSet = true;\r\n                        this.interactObj.on('dragstart dragmove dragend', function (event) {\r\n                            self.handleDrag(event);\r\n                        });\r\n                    }\r\n                } else {\r\n                    this.interactObj.draggable({\r\n                        enabled: false\r\n                    });\r\n                }\r\n            },\r\n            tryMakeResizable: function(){\r\n                const self = this;\r\n                if (this.interactObj === null || this.interactObj === undefined) {\r\n                    this.interactObj = interact(this.$refs.item);\r\n                    if (!this.useStyleCursor) {\r\n                        this.interactObj.styleCursor(false);\r\n                    }\r\n                }\r\n                if (this.resizable && !this.static) {\r\n                    let maximum = this.calcPosition(0,0,this.maxW, this.maxH);\r\n                    let minimum = this.calcPosition(0,0, this.minW, this.minH);\r\n\r\n                    // console.log(\"### MAX \" + JSON.stringify(maximum));\r\n                    // console.log(\"### MIN \" + JSON.stringify(minimum));\r\n\r\n                    const opts = {\r\n                        // allowFrom: \".\" + this.resizableHandleClass.trim().replace(\" \", \".\"),\r\n                        edges: {\r\n                            left: false,\r\n                            right: \".\" + this.resizableHandleClass.trim().replace(\" \", \".\"),\r\n                            bottom: \".\" + this.resizableHandleClass.trim().replace(\" \", \".\"),\r\n                            top: false\r\n                        },\r\n                        ignoreFrom: this.resizeIgnoreFrom,\r\n                        restrictSize: {\r\n                            min: {\r\n                                height: minimum.height,\r\n                                width: minimum.width\r\n                            },\r\n                            max: {\r\n                                height: maximum.height,\r\n                                width: maximum.width\r\n                            }\r\n                        }\r\n                    };\r\n\r\n                    if (this.preserveAspectRatio) {\r\n                        opts.modifiers = [\r\n                            interact.modifiers.aspectRatio({\r\n                                ratio: 'preserve'\r\n                            }),\r\n                        ]\r\n                    }\r\n\r\n                    this.interactObj.resizable(opts);\r\n                    if (!this.resizeEventSet) {\r\n                        this.resizeEventSet = true;\r\n                        this.interactObj\r\n                            .on('resizestart resizemove resizeend', function (event) {\r\n                                self.handleResize(event);\r\n                            });\r\n                    }\r\n                } else {\r\n                    this.interactObj.resizable({\r\n                        enabled: false\r\n                    });\r\n                }\r\n            },\r\n            autoSize: function() {\r\n                // ok here we want to calculate if a resize is needed\r\n                this.previousW = this.innerW;\r\n                this.previousH = this.innerH;\r\n\r\n                let newSize=this.$slots().default[0].elm.getBoundingClientRect();\r\n                let pos = this.calcWH(newSize.height, newSize.width, true);\r\n                if (pos.w < this.minW) {\r\n                    pos.w = this.minW;\r\n                }\r\n                if (pos.w > this.maxW) {\r\n                    pos.w = this.maxW;\r\n                }\r\n                if (pos.h < this.minH) {\r\n                    pos.h = this.minH;\r\n                }\r\n                if (pos.h > this.maxH) {\r\n                    pos.h = this.maxH;\r\n                }\r\n\r\n                if (pos.h < 1) {\r\n                    pos.h = 1;\r\n                }\r\n                if (pos.w < 1) {\r\n                    pos.w = 1;\r\n                }\r\n\r\n                // this.lastW = x; // basically, this is copied from resizehandler, but shouldn't be needed\r\n                // this.lastH = y;\r\n\r\n                if (this.innerW !== pos.w || this.innerH !== pos.h) {\r\n                    this.$emit(\"resize\", this.i, pos.h, pos.w, newSize.height, newSize.width);\r\n                }\r\n                if (this.previousW !== pos.w || this.previousH !== pos.h) {\r\n                    this.$emit(\"resized\", this.i, pos.h, pos.w, newSize.height, newSize.width);\r\n                    this.eventBus.emit(\"resizeEvent\", {eventType: \"resizeend\", i: this.i, x: this.innerX, y: this.innerY, h: pos.h, w: pos.w});\r\n                }\r\n            }\r\n        },\r\n    }\r\n</script>\r\n","// @flow\r\nexport type LayoutItemRequired = {w: number, h: number, x: number, y: number, i: string};\r\nexport type LayoutItem = LayoutItemRequired &\r\n                         {minW?: number, minH?: number, maxW?: number, maxH?: number,\r\n                          moved?: boolean, static?: boolean,\r\n                          isDraggable?: ?boolean, isResizable?: ?boolean};\r\nexport type Layout = Array<LayoutItem>;\r\n// export type Position = {left: number, top: number, width: number, height: number};\r\n/*\r\nexport type DragCallbackData = {\r\n  node: HTMLElement,\r\n  x: number, y: number,\r\n  deltaX: number, deltaY: number,\r\n  lastX: number, lastY: number\r\n};\r\n*/\r\n// export type DragEvent = {e: Event} & DragCallbackData;\r\nexport type Size = {width: number, height: number};\r\n// export type ResizeEvent = {e: Event, node: HTMLElement, size: Size};\r\n\r\n// const isProduction = process.env.NODE_ENV === 'production';\r\n/**\r\n * Return the bottom coordinate of the layout.\r\n *\r\n * @param  {Array} layout Layout array.\r\n * @return {Number}       Bottom coordinate.\r\n */\r\nexport function bottom(layout: Layout): number {\r\n  let max = 0, bottomY;\r\n  for (let i = 0, len = layout.length; i < len; i++) {\r\n    bottomY = layout[i]. y + layout[i].h;\r\n    if (bottomY > max) max = bottomY;\r\n  }\r\n  return max;\r\n}\r\n\r\nexport function cloneLayout(layout: Layout): Layout {\r\n  const newLayout = Array(layout.length);\r\n  for (let i = 0, len = layout.length; i < len; i++) {\r\n    newLayout[i] = cloneLayoutItem(layout[i]);\r\n  }\r\n  return newLayout;\r\n}\r\n\r\n// Fast path to cloning, since this is monomorphic\r\nexport function cloneLayoutItem(layoutItem: LayoutItem): LayoutItem {\r\n  /*return {\r\n    w: layoutItem.w, h: layoutItem.h, x: layoutItem.x, y: layoutItem.y, i: layoutItem.i,\r\n    minW: layoutItem.minW, maxW: layoutItem.maxW, minH: layoutItem.minH, maxH: layoutItem.maxH,\r\n    moved: Boolean(layoutItem.moved), static: Boolean(layoutItem.static),\r\n    // These can be null\r\n    isDraggable: layoutItem.isDraggable, isResizable: layoutItem.isResizable\r\n  };*/\r\n    return JSON.parse(JSON.stringify(layoutItem));\r\n}\r\n\r\n/**\r\n * Given two layoutitems, check if they collide.\r\n *\r\n * @return {Boolean}   True if colliding.\r\n */\r\nexport function collides(l1: LayoutItem, l2: LayoutItem): boolean {\r\n  if (l1 === l2) return false; // same element\r\n  if (l1.x + l1.w <= l2.x) return false; // l1 is left of l2\r\n  if (l1.x >= l2.x + l2.w) return false; // l1 is right of l2\r\n  if (l1.y + l1.h <= l2.y) return false; // l1 is above l2\r\n  if (l1.y >= l2.y + l2.h) return false; // l1 is below l2\r\n  return true; // boxes overlap\r\n}\r\n\r\n/**\r\n * Given a layout, compact it. This involves going down each y coordinate and removing gaps\r\n * between items.\r\n *\r\n * @param  {Array} layout Layout.\r\n * @param  {Boolean} verticalCompact Whether or not to compact the layout\r\n *   vertically.\r\n * @return {Array}       Compacted Layout.\r\n */\r\nexport function compact(layout: Layout, verticalCompact: Boolean): Layout {\r\n    // Statics go in the compareWith array right away so items flow around them.\r\n  const compareWith = getStatics(layout);\r\n  // We go through the items by row and column.\r\n  const sorted = sortLayoutItemsByRowCol(layout);\r\n  // Holding for new items.\r\n  const out = Array(layout.length);\r\n\r\n  for (let i = 0, len = sorted.length; i < len; i++) {\r\n    let l = sorted[i];\r\n\r\n    // Don't move static elements\r\n    if (!l.static) {\r\n      l = compactItem(compareWith, l, verticalCompact);\r\n\r\n      // Add to comparison array. We only collide with items before this one.\r\n      // Statics are already in this array.\r\n      compareWith.push(l);\r\n    }\r\n\r\n    // Add to output array to make sure they still come out in the right order.\r\n    out[layout.indexOf(l)] = l;\r\n\r\n    // Clear moved flag, if it exists.\r\n    l.moved = false;\r\n  }\r\n\r\n  return out;\r\n}\r\n\r\n/**\r\n * Compact an item in the layout.\r\n */\r\nexport function compactItem(compareWith: Layout, l: LayoutItem, verticalCompact: boolean): LayoutItem {\r\n  if (verticalCompact) {\r\n    // Move the element up as far as it can go without colliding.\r\n    while (l.y > 0 && !getFirstCollision(compareWith, l)) {\r\n      l.y--;\r\n    }\r\n  }\r\n\r\n  // Move it down, and keep moving it down if it's colliding.\r\n  let collides;\r\n  while((collides = getFirstCollision(compareWith, l))) {\r\n    l.y = collides.y + collides.h;\r\n  }\r\n  return l;\r\n}\r\n\r\n/**\r\n * Given a layout, make sure all elements fit within its bounds.\r\n *\r\n * @param  {Array} layout Layout array.\r\n * @param  {Number} bounds Number of columns.\r\n */\r\nexport function correctBounds(layout: Layout, bounds: {cols: number}): Layout {\r\n  const collidesWith = getStatics(layout);\r\n  for (let i = 0, len = layout.length; i < len; i++) {\r\n    const l = layout[i];\r\n    // Overflows right\r\n    if (l.x + l.w > bounds.cols) l.x = bounds.cols - l.w;\r\n    // Overflows left\r\n    if (l.x < 0) {\r\n      l.x = 0;\r\n      l.w = bounds.cols;\r\n    }\r\n    if (!l.static) collidesWith.push(l);\r\n    else {\r\n      // If this is static and collides with other statics, we must move it down.\r\n      // We have to do something nicer than just letting them overlap.\r\n      while(getFirstCollision(collidesWith, l)) {\r\n        l.y++;\r\n      }\r\n    }\r\n  }\r\n  return layout;\r\n}\r\n\r\n/**\r\n * Get a layout item by ID. Used so we can override later on if necessary.\r\n *\r\n * @param  {Array}  layout Layout array.\r\n * @param  {String} id     ID\r\n * @return {LayoutItem}    Item at ID.\r\n */\r\nexport function getLayoutItem(layout: Layout, id: string): ?LayoutItem {\r\n  for (let i = 0, len = layout.length; i < len; i++) {\r\n    if (layout[i].i === id) return layout[i];\r\n  }\r\n}\r\n\r\n/**\r\n * Returns the first item this layout collides with.\r\n * It doesn't appear to matter which order we approach this from, although\r\n * perhaps that is the wrong thing to do.\r\n *\r\n * @param  {Object} layoutItem Layout item.\r\n * @return {Object|undefined}  A colliding layout item, or undefined.\r\n */\r\nexport function getFirstCollision(layout: Layout, layoutItem: LayoutItem): ?LayoutItem {\r\n  for (let i = 0, len = layout.length; i < len; i++) {\r\n    if (collides(layout[i], layoutItem)) return layout[i];\r\n  }\r\n}\r\n\r\nexport function getAllCollisions(layout: Layout, layoutItem: LayoutItem): Array<LayoutItem> {\r\n  return layout.filter((l) => collides(l, layoutItem));\r\n}\r\n\r\n/**\r\n * Get all static elements.\r\n * @param  {Array} layout Array of layout objects.\r\n * @return {Array}        Array of static layout items..\r\n */\r\nexport function getStatics(layout: Layout): Array<LayoutItem> {\r\n    //return [];\r\n    return layout.filter((l) => l.static);\r\n}\r\n\r\n/**\r\n * Move an element. Responsible for doing cascading movements of other elements.\r\n *\r\n * @param  {Array}      layout Full layout to modify.\r\n * @param  {LayoutItem} l      element to move.\r\n * @param  {Number}     [x]    X position in grid units.\r\n * @param  {Number}     [y]    Y position in grid units.\r\n * @param  {Boolean}    [isUserAction] If true, designates that the item we're moving is\r\n *                                     being dragged/resized by th euser.\r\n */\r\nexport function moveElement(layout: Layout, l: LayoutItem, x: Number, y: Number, isUserAction: Boolean, preventCollision: Boolean): Layout {\r\n  if (l.static) return layout;\r\n\r\n  // Short-circuit if nothing to do.\r\n  //if (l.y === y && l.x === x) return layout;\r\n\r\n  const oldX = l.x;\r\n  const oldY = l.y;\r\n\r\n  const movingUp = y && l.y > y;\r\n  // This is quite a bit faster than extending the object\r\n  if (typeof x === 'number') l.x = x;\r\n  if (typeof y === 'number') l.y = y;\r\n  l.moved = true;\r\n\r\n  // If this collides with anything, move it.\r\n  // When doing this comparison, we have to sort the items we compare with\r\n  // to ensure, in the case of multiple collisions, that we're getting the\r\n  // nearest collision.\r\n  let sorted = sortLayoutItemsByRowCol(layout);\r\n  if (movingUp) sorted = sorted.reverse();\r\n  const collisions = getAllCollisions(sorted, l);\r\n\r\n  if (preventCollision && collisions.length) {\r\n    l.x = oldX;\r\n    l.y = oldY;\r\n    l.moved = false;\r\n    return layout;\r\n  }\r\n\r\n  // Move each item that collides away from this element.\r\n  for (let i = 0, len = collisions.length; i < len; i++) {\r\n    const collision = collisions[i];\r\n    // console.log('resolving collision between', l.i, 'at', l.y, 'and', collision.i, 'at', collision.y);\r\n\r\n    // Short circuit so we can't infinite loop\r\n    if (collision.moved) continue;\r\n\r\n    // This makes it feel a bit more precise by waiting to swap for just a bit when moving up.\r\n    if (l.y > collision.y && l.y - collision.y > collision.h / 4) continue;\r\n\r\n    // Don't move static items - we have to move *this* element away\r\n    if (collision.static) {\r\n      layout = moveElementAwayFromCollision(layout, collision, l, isUserAction);\r\n    } else {\r\n      layout = moveElementAwayFromCollision(layout, l, collision, isUserAction);\r\n    }\r\n  }\r\n\r\n  return layout;\r\n}\r\n\r\n/**\r\n * This is where the magic needs to happen - given a collision, move an element away from the collision.\r\n * We attempt to move it up if there's room, otherwise it goes below.\r\n *\r\n * @param  {Array} layout            Full layout to modify.\r\n * @param  {LayoutItem} collidesWith Layout item we're colliding with.\r\n * @param  {LayoutItem} itemToMove   Layout item we're moving.\r\n * @param  {Boolean} [isUserAction]  If true, designates that the item we're moving is being dragged/resized\r\n *                                   by the user.\r\n */\r\nexport function moveElementAwayFromCollision(layout: Layout, collidesWith: LayoutItem,\r\n                                             itemToMove: LayoutItem, isUserAction: ?boolean): Layout {\r\n\r\n  const preventCollision = false // we're already colliding\r\n  // If there is enough space above the collision to put this element, move it there.\r\n  // We only do this on the main collision as this can get funky in cascades and cause\r\n  // unwanted swapping behavior.\r\n  if (isUserAction) {\r\n    // Make a mock item so we don't modify the item here, only modify in moveElement.\r\n    const fakeItem: LayoutItem = {\r\n      x: itemToMove.x,\r\n      y: itemToMove.y,\r\n      w: itemToMove.w,\r\n      h: itemToMove.h,\r\n      i: '-1'\r\n    };\r\n    fakeItem.y = Math.max(collidesWith.y - itemToMove.h, 0);\r\n    if (!getFirstCollision(layout, fakeItem)) {\r\n      return moveElement(layout, itemToMove, undefined, fakeItem.y, preventCollision);\r\n    }\r\n  }\r\n\r\n  // Previously this was optimized to move below the collision directly, but this can cause problems\r\n  // with cascading moves, as an item may actually leapflog a collision and cause a reversal in order.\r\n  return moveElement(layout, itemToMove, undefined, itemToMove.y + 1, preventCollision);\r\n}\r\n\r\n/**\r\n * Helper to convert a number to a percentage string.\r\n *\r\n * @param  {Number} num Any number\r\n * @return {String}     That number as a percentage.\r\n */\r\nexport function perc(num: number): string {\r\n  return num * 100 + '%';\r\n}\r\n\r\nexport function setTransform(top, left, width, height): Object {\r\n  // Replace unitless items with px\r\n  const translate = \"translate3d(\" + left + \"px,\" + top + \"px, 0)\";\r\n  return {\r\n    transform: translate,\r\n    WebkitTransform: translate,\r\n    MozTransform: translate,\r\n    msTransform: translate,\r\n    OTransform: translate,\r\n    width: width + \"px\",\r\n    height: height + \"px\",\r\n    position: 'absolute'\r\n  };\r\n}\r\n/**\r\n * Just like the setTransform method, but instead it will return a negative value of right.\r\n *\r\n * @param top\r\n * @param right\r\n * @param width\r\n * @param height\r\n * @returns {{transform: string, WebkitTransform: string, MozTransform: string, msTransform: string, OTransform: string, width: string, height: string, position: string}}\r\n */\r\nexport function setTransformRtl(top, right, width, height): Object {\r\n    // Replace unitless items with px\r\n    const translate = \"translate3d(\" + right * -1 + \"px,\" + top + \"px, 0)\";\r\n    return {\r\n        transform: translate,\r\n        WebkitTransform: translate,\r\n        MozTransform: translate,\r\n        msTransform: translate,\r\n        OTransform: translate,\r\n        width: width + \"px\",\r\n        height: height + \"px\",\r\n        position: 'absolute'\r\n    };\r\n}\r\n\r\nexport function setTopLeft(top, left, width, height): Object {\r\n    return {\r\n        top: top + \"px\",\r\n        left: left + \"px\",\r\n        width: width + \"px\",\r\n        height: height + \"px\",\r\n        position: 'absolute'\r\n    };\r\n}\r\n/**\r\n * Just like the setTopLeft method, but instead, it will return a right property instead of left.\r\n *\r\n * @param top\r\n * @param right\r\n * @param width\r\n * @param height\r\n * @returns {{top: string, right: string, width: string, height: string, position: string}}\r\n */\r\nexport function setTopRight(top, right, width, height): Object {\r\n    return {\r\n        top: top + \"px\",\r\n        right: right+ \"px\",\r\n        width: width + \"px\",\r\n        height: height + \"px\",\r\n        position: 'absolute'\r\n    };\r\n}\r\n\r\n\r\n/**\r\n * Get layout items sorted from top left to right and down.\r\n *\r\n * @return {Array} Array of layout objects.\r\n * @return {Array}        Layout, sorted static items first.\r\n */\r\nexport function sortLayoutItemsByRowCol(layout: Layout): Layout {\r\n  return [].concat(layout).sort(function(a, b) {\r\n    if (a.y === b.y && a.x === b.x) {\r\n      return 0;\r\n    }\r\n\r\n    if (a.y > b.y || (a.y === b.y && a.x > b.x)) {\r\n      return 1;\r\n    }\r\n\r\n    return -1;\r\n  });\r\n}\r\n\r\n/**\r\n * Generate a layout using the initialLayout and children as a template.\r\n * Missing entries will be added, extraneous ones will be truncated.\r\n *\r\n * @param  {Array}  initialLayout Layout passed in through props.\r\n * @param  {String} breakpoint    Current responsive breakpoint.\r\n * @param  {Boolean} verticalCompact Whether or not to compact the layout vertically.\r\n * @return {Array}                Working layout.\r\n */\r\n/*\r\nexport function synchronizeLayoutWithChildren(initialLayout: Layout, children: Array<React.Element>|React.Element,\r\n                                              cols: number, verticalCompact: boolean): Layout {\r\n  // ensure 'children' is always an array\r\n  if (!Array.isArray(children)) {\r\n    children = [children];\r\n  }\r\n  initialLayout = initialLayout || [];\r\n\r\n  // Generate one layout item per child.\r\n  let layout: Layout = [];\r\n  for (let i = 0, len = children.length; i < len; i++) {\r\n    let newItem;\r\n    const child = children[i];\r\n\r\n    // Don't overwrite if it already exists.\r\n    const exists = getLayoutItem(initialLayout, child.key || \"1\" /!* FIXME satisfies Flow *!/);\r\n    if (exists) {\r\n      newItem = exists;\r\n    } else {\r\n      const g = child.props._grid;\r\n\r\n      // Hey, this item has a _grid property, use it.\r\n      if (g) {\r\n        if (!isProduction) {\r\n          validateLayout([g], 'ReactGridLayout.children');\r\n        }\r\n        // Validated; add it to the layout. Bottom 'y' possible is the bottom of the layout.\r\n        // This allows you to do nice stuff like specify {y: Infinity}\r\n        if (verticalCompact) {\r\n          newItem = cloneLayoutItem({...g, y: Math.min(bottom(layout), g.y), i: child.key});\r\n        } else {\r\n          newItem = cloneLayoutItem({...g, y: g.y, i: child.key});\r\n        }\r\n      }\r\n      // Nothing provided: ensure this is added to the bottom\r\n      else {\r\n        newItem = cloneLayoutItem({w: 1, h: 1, x: 0, y: bottom(layout), i: child.key || \"1\"});\r\n      }\r\n    }\r\n    layout[i] = newItem;\r\n  }\r\n\r\n  // Correct the layout.\r\n  layout = correctBounds(layout, {cols: cols});\r\n  layout = compact(layout, verticalCompact);\r\n\r\n  return layout;\r\n}\r\n*/\r\n\r\n/**\r\n * Validate a layout. Throws errors.\r\n *\r\n * @param  {Array}  layout        Array of layout items.\r\n * @param  {String} [contextName] Context name for errors.\r\n * @throw  {Error}                Validation error.\r\n */\r\nexport function validateLayout(layout: Layout, contextName: string): void {\r\n  contextName = contextName || \"Layout\";\r\n  const subProps = ['x', 'y', 'w', 'h'];\r\n  let keyArr = [];\r\n  if (!Array.isArray(layout)) throw new Error(contextName + \" must be an array!\");\r\n  for (let i = 0, len = layout.length; i < len; i++) {\r\n    const item = layout[i];\r\n    for (let j = 0; j < subProps.length; j++) {\r\n      if (typeof item[subProps[j]] !== 'number') {\r\n        throw new Error('VueGridLayout: ' + contextName + '[' + i + '].' + subProps[j] + ' must be a number!');\r\n      }\r\n    }\r\n\r\n    if (item.i === undefined || item.i === null) {\r\n      throw new Error('VueGridLayout: ' + contextName + '[' + i + '].i cannot be null!');\r\n    }\r\n\r\n    if (typeof item.i !== 'number' && typeof item.i !== 'string') {\r\n      throw new Error('VueGridLayout: ' + contextName + '[' + i + '].i must be a string or number!');\r\n    }\r\n\r\n    if (keyArr.indexOf(item.i) >= 0) {\r\n      throw new Error('VueGridLayout: ' + contextName + '[' + i + '].i must be unique!');\r\n    }\r\n    keyArr.push(item.i);\r\n\r\n    if (item.static !== undefined && typeof item.static !== 'boolean') {\r\n      throw new Error('VueGridLayout: ' + contextName + '[' + i + '].static must be a boolean!');\r\n    }\r\n  }\r\n}\r\n\r\n// Flow can't really figure this out, so we just use Object\r\nexport function autoBindHandlers(el: Object, fns: Array<string>): void {\r\n  fns.forEach((key) => el[key] = el[key].bind(el));\r\n}\r\n\r\n\r\n\r\n/**\r\n * Convert a JS object to CSS string. Similar to React's output of CSS.\r\n * @param obj\r\n * @returns {string}\r\n */\r\nexport function createMarkup(obj) {\r\n    var keys = Object.keys(obj);\r\n    if (!keys.length) return '';\r\n    var i, len = keys.length;\r\n    var result = '';\r\n\r\n    for (i = 0; i < len; i++) {\r\n        var key = keys[i];\r\n        var val = obj[key];\r\n        result += hyphenate(key) + ':' + addPx(key, val) + ';';\r\n    }\r\n\r\n    return result;\r\n}\r\n\r\n\r\n/* The following list is defined in React's core */\r\nexport var IS_UNITLESS = {\r\n    animationIterationCount: true,\r\n    boxFlex: true,\r\n    boxFlexGroup: true,\r\n    boxOrdinalGroup: true,\r\n    columnCount: true,\r\n    flex: true,\r\n    flexGrow: true,\r\n    flexPositive: true,\r\n    flexShrink: true,\r\n    flexNegative: true,\r\n    flexOrder: true,\r\n    gridRow: true,\r\n    gridColumn: true,\r\n    fontWeight: true,\r\n    lineClamp: true,\r\n    lineHeight: true,\r\n    opacity: true,\r\n    order: true,\r\n    orphans: true,\r\n    tabSize: true,\r\n    widows: true,\r\n    zIndex: true,\r\n    zoom: true,\r\n\r\n    // SVG-related properties\r\n    fillOpacity: true,\r\n    stopOpacity: true,\r\n    strokeDashoffset: true,\r\n    strokeOpacity: true,\r\n    strokeWidth: true\r\n};\r\n\r\n\r\n/**\r\n * Will add px to the end of style values which are Numbers.\r\n * @param name\r\n * @param value\r\n * @returns {*}\r\n */\r\nexport function addPx(name, value) {\r\n    if(typeof value === 'number' && !IS_UNITLESS[ name ]) {\r\n        return value + 'px';\r\n    } else {\r\n        return value;\r\n    }\r\n}\r\n\r\n\r\n/**\r\n * Hyphenate a camelCase string.\r\n *\r\n * @param {String} str\r\n * @return {String}\r\n */\r\n\r\nexport var hyphenateRE = /([a-z\\d])([A-Z])/g;\r\n\r\nexport function hyphenate(str) {\r\n    return str.replace(hyphenateRE, '$1-$2').toLowerCase();\r\n}\r\n\r\n\r\nexport function findItemInArray(array, property, value) {\r\n    for (var i=0; i < array.length; i++)\r\n        if (array[i][property] == value)\r\n            return true;\r\n\r\n    return false;\r\n}\r\n\r\nexport function findAndRemove(array, property, value) {\r\n    array.forEach(function (result, index) {\r\n        if (result[property] === value) {\r\n            //Remove from array\r\n            array.splice(index, 1);\r\n        }\r\n    });\r\n}\r\n","// Get {x, y} positions from event.\r\nexport function getControlPosition(e) {\r\n    return offsetXYFromParentOf(e);\r\n}\r\n\r\n\r\n// Get from offsetParent\r\nexport function offsetXYFromParentOf(evt) {\r\n    const offsetParent = evt.target.offsetParent || document.body;\r\n    const offsetParentRect = evt.offsetParent === document.body ? {left: 0, top: 0} : offsetParent.getBoundingClientRect();\r\n\r\n    const x = evt.clientX + offsetParent.scrollLeft - offsetParentRect.left;\r\n    const y = evt.clientY + offsetParent.scrollTop - offsetParentRect.top;\r\n\r\n    /*const x = Math.round(evt.clientX + offsetParent.scrollLeft - offsetParentRect.left);\r\n    const y = Math.round(evt.clientY + offsetParent.scrollTop - offsetParentRect.top);*/\r\n\r\n\r\n    return {x, y};\r\n}\r\n\r\n\r\n// Create an data object exposed by <DraggableCore>'s events\r\nexport function createCoreData(lastX, lastY, x, y) {\r\n    // State changes are often (but not always!) async. We want the latest value.\r\n    const isStart = !isNum(lastX);\r\n\r\n    if (isStart) {\r\n        // If this is our first move, use the x and y as last coords.\r\n        return {\r\n            deltaX: 0, deltaY: 0,\r\n            lastX: x, lastY: y,\r\n            x: x, y: y\r\n        };\r\n    } else {\r\n        // Otherwise calculate proper values.\r\n        return {\r\n            deltaX: x - lastX, deltaY: y - lastY,\r\n            lastX: lastX, lastY: lastY,\r\n            x: x, y: y\r\n        };\r\n    }\r\n}\r\n\r\n\r\nfunction isNum(num)  {\r\n    return typeof num === 'number' && !isNaN(num);\r\n}\r\n\r\n","// @flow\r\n\r\nimport {cloneLayout, compact, correctBounds} from './utils';\r\n\r\nimport type {Layout} from './utils';\r\nexport type ResponsiveLayout = {lg?: Layout, md?: Layout, sm?: Layout, xs?: Layout, xxs?: Layout};\r\ntype Breakpoint = string;\r\ntype Breakpoints = {lg?: number, md?: number, sm?: number, xs?: number, xxs?: number};\r\n\r\n/**\r\n * Given a width, find the highest breakpoint that matches is valid for it (width > breakpoint).\r\n *\r\n * @param  {Object} breakpoints Breakpoints object (e.g. {lg: 1200, md: 960, ...})\r\n * @param  {Number} width Screen width.\r\n * @return {String}       Highest breakpoint that is less than width.\r\n */\r\nexport function getBreakpointFromWidth(breakpoints: Breakpoints, width: number): Breakpoint {\r\n  const sorted = sortBreakpoints(breakpoints);\r\n  let matching = sorted[0];\r\n  for (let i = 1, len = sorted.length; i < len; i++) {\r\n    const breakpointName = sorted[i];\r\n    if (width > breakpoints[breakpointName]) matching = breakpointName;\r\n  }\r\n  return matching;\r\n}\r\n\r\n\r\n/**\r\n * Given a breakpoint, get the # of cols set for it.\r\n * @param  {String} breakpoint Breakpoint name.\r\n * @param  {Object} cols       Map of breakpoints to cols.\r\n * @return {Number}            Number of cols.\r\n */\r\nexport function getColsFromBreakpoint(breakpoint: Breakpoint, cols: Breakpoints): number {\r\n  if (!cols[breakpoint]) {\r\n    throw new Error(\"ResponsiveGridLayout: `cols` entry for breakpoint \" + breakpoint + \" is missing!\");\r\n  }\r\n  return cols[breakpoint];\r\n}\r\n\r\n/**\r\n * Given existing layouts and a new breakpoint, find or generate a new layout.\r\n *\r\n * This finds the layout above the new one and generates from it, if it exists.\r\n *\r\n * @param  {Array} orgLayout     Original layout.\r\n * @param  {Object} layouts     Existing layouts.\r\n * @param  {Array} breakpoints All breakpoints.\r\n * @param  {String} breakpoint New breakpoint.\r\n * @param  {String} breakpoint Last breakpoint (for fallback).\r\n * @param  {Number} cols       Column count at new breakpoint.\r\n * @param  {Boolean} verticalCompact Whether or not to compact the layout\r\n *   vertically.\r\n * @return {Array}             New layout.\r\n */\r\nexport function findOrGenerateResponsiveLayout(orgLayout: Layout, layouts: ResponsiveLayout, breakpoints: Breakpoints,\r\n                                               breakpoint: Breakpoint, lastBreakpoint: Breakpoint,\r\n                                               cols: number, verticalCompact: boolean): Layout {\r\n  // If it already exists, just return it.\r\n  if (layouts[breakpoint]) return cloneLayout(layouts[breakpoint]);\r\n  // Find or generate the next layout\r\n  let layout = orgLayout;\r\n\r\n  const breakpointsSorted = sortBreakpoints(breakpoints);\r\n  const breakpointsAbove = breakpointsSorted.slice(breakpointsSorted.indexOf(breakpoint));\r\n  for (let i = 0, len = breakpointsAbove.length; i < len; i++) {\r\n    const b = breakpointsAbove[i];\r\n    if (layouts[b]) {\r\n      layout = layouts[b];\r\n      break;\r\n    }\r\n  }\r\n  layout = cloneLayout(layout || []); // clone layout so we don't modify existing items\r\n  return compact(correctBounds(layout, {cols: cols}), verticalCompact);\r\n}\r\n\r\nexport function generateResponsiveLayout(layout: Layout, breakpoints: Breakpoints,\r\n                                               breakpoint: Breakpoint, lastBreakpoint: Breakpoint,\r\n                                               cols: number, verticalCompact: boolean): Layout {\r\n  // If it already exists, just return it.\r\n  /*if (layouts[breakpoint]) return cloneLayout(layouts[breakpoint]);\r\n  // Find or generate the next layout\r\n  let layout = layouts[lastBreakpoint];*/\r\n    /*const breakpointsSorted = sortBreakpoints(breakpoints);\r\n  const breakpointsAbove = breakpointsSorted.slice(breakpointsSorted.indexOf(breakpoint));\r\n  for (let i = 0, len = breakpointsAbove.length; i < len; i++) {\r\n    const b = breakpointsAbove[i];\r\n    if (layouts[b]) {\r\n      layout = layouts[b];\r\n      break;\r\n    }\r\n  }*/\r\n  layout = cloneLayout(layout || []); // clone layout so we don't modify existing items\r\n  return compact(correctBounds(layout, {cols: cols}), verticalCompact);\r\n}\r\n\r\n/**\r\n * Given breakpoints, return an array of breakpoints sorted by width. This is usually\r\n * e.g. ['xxs', 'xs', 'sm', ...]\r\n *\r\n * @param  {Object} breakpoints Key/value pair of breakpoint names to widths.\r\n * @return {Array}              Sorted breakpoints.\r\n */\r\nexport function sortBreakpoints(breakpoints: Breakpoints): Array<Breakpoint> {\r\n  const keys: Array<string> = Object.keys(breakpoints);\r\n  return keys.sort(function(a, b) {\r\n    return breakpoints[a] - breakpoints[b];\r\n  });\r\n}\r\n","let currentDir: \"ltr\" | \"rtl\" | \"auto\"  = \"auto\";\r\n// let currentDir = \"auto\";\r\n\r\nfunction hasDocument(){\r\n    return (typeof document !== \"undefined\");\r\n}\r\n\r\nfunction hasWindow(){\r\n    return (typeof window !== \"undefined\");\r\n}\r\n\r\nexport function getDocumentDir(){\r\n    if(!hasDocument()){\r\n        return currentDir;\r\n    }\r\n    const direction = (typeof document.dir !== \"undefined\") ?\r\n        document.dir :\r\n        document.getElementsByTagName(\"html\")[0].getAttribute(\"dir\");\r\n    return direction;\r\n}\r\n\r\nexport function setDocumentDir(dir: \"ltr\" | \"rtl\" | \"auto\"){\r\n// export function setDocumentDir(dir){\r\n    if(!hasDocument){\r\n        currentDir = dir;\r\n        return;\r\n    }\r\n\r\n    const html = document.getElementsByTagName(\"html\")[0];\r\n    html.setAttribute(\"dir\", dir);\r\n}\r\n\r\nexport function addWindowEventListener(event:string, callback: () => mixed){\r\n    if(!hasWindow){\r\n\r\n        callback();\r\n        return;\r\n    }\r\n    window.addEventListener(event, callback);\r\n}\r\n\r\nexport function removeWindowEventListener(event:string, callback: () => mixed){\r\n    if(!hasWindow){\r\n        return;\r\n    }\r\n    window.removeEventListener(event, callback);\r\n}\r\n\r\n\r\n\r\n","const domObjects = {\n  init,\n  document: null,\n  DocumentFragment: null,\n  SVGElement: null,\n  SVGSVGElement: null,\n  SVGElementInstance: null,\n  Element: null,\n  HTMLElement: null,\n  Event: null,\n  Touch: null,\n  PointerEvent: null\n};\n\nfunction blank() {}\n\nexport default domObjects;\n\nfunction init(window) {\n  const win = window;\n  domObjects.document = win.document;\n  domObjects.DocumentFragment = win.DocumentFragment || blank;\n  domObjects.SVGElement = win.SVGElement || blank;\n  domObjects.SVGSVGElement = win.SVGSVGElement || blank;\n  domObjects.SVGElementInstance = win.SVGElementInstance || blank;\n  domObjects.Element = win.Element || blank;\n  domObjects.HTMLElement = win.HTMLElement || domObjects.Element;\n  domObjects.Event = win.Event;\n  domObjects.Touch = win.Touch || blank;\n  domObjects.PointerEvent = win.PointerEvent || win.MSPointerEvent;\n}\n//# sourceMappingURL=domObjects.js.map","export default (thing => !!(thing && thing.Window) && thing instanceof thing.Window);\n//# sourceMappingURL=isWindow.js.map","import isWindow from \"./isWindow.js\";\nexport let realWindow = undefined;\nlet win = undefined;\nexport { win as window };\nexport function init(window) {\n  // get wrapped window if using Shadow DOM polyfill\n  realWindow = window; // create a TextNode\n\n  const el = window.document.createTextNode(''); // check if it's wrapped by a polyfill\n\n  if (el.ownerDocument !== window.document && typeof window.wrap === 'function' && window.wrap(el) === el) {\n    // use wrapped window\n    window = window.wrap(window);\n  }\n\n  win = window;\n}\n\nif (typeof window !== 'undefined' && !!window) {\n  init(window);\n}\n\nexport function getWindow(node) {\n  if (isWindow(node)) {\n    return node;\n  }\n\n  const rootNode = node.ownerDocument || node;\n  return rootNode.defaultView || win.window;\n}\n//# sourceMappingURL=window.js.map","import isWindow from \"./isWindow.js\";\nimport * as win from \"./window.js\";\n\nconst window = thing => thing === win.window || isWindow(thing);\n\nconst docFrag = thing => object(thing) && thing.nodeType === 11;\n\nconst object = thing => !!thing && typeof thing === 'object';\n\nconst func = thing => typeof thing === 'function';\n\nconst number = thing => typeof thing === 'number';\n\nconst bool = thing => typeof thing === 'boolean';\n\nconst string = thing => typeof thing === 'string';\n\nconst element = thing => {\n  if (!thing || typeof thing !== 'object') {\n    return false;\n  } // eslint-disable-next-line import/no-named-as-default-member\n\n\n  const _window = win.getWindow(thing) || win.window;\n\n  return /object|function/.test(typeof _window.Element) ? thing instanceof _window.Element // DOM2\n  : thing.nodeType === 1 && typeof thing.nodeName === 'string';\n};\n\nconst plainObject = thing => object(thing) && !!thing.constructor && /function Object\\b/.test(thing.constructor.toString());\n\nconst array = thing => object(thing) && typeof thing.length !== 'undefined' && func(thing.splice);\n\nexport default {\n  window,\n  docFrag,\n  object,\n  func,\n  number,\n  bool,\n  string,\n  element,\n  plainObject,\n  array\n};\n//# sourceMappingURL=is.js.map","import domObjects from \"./domObjects.js\";\nimport is from \"./is.js\";\nimport * as win from \"./window.js\";\nconst browser = {\n  init,\n  supportsTouch: null,\n  supportsPointerEvent: null,\n  isIOS7: null,\n  isIOS: null,\n  isIe9: null,\n  isOperaMobile: null,\n  prefixedMatchesSelector: null,\n  pEventTypes: null,\n  wheelEvent: null\n};\n\nfunction init(window) {\n  const Element = domObjects.Element;\n  const navigator = win.window.navigator; // Does the browser support touch input?\n\n  browser.supportsTouch = 'ontouchstart' in window || is.func(window.DocumentTouch) && domObjects.document instanceof window.DocumentTouch; // Does the browser support PointerEvents\n\n  browser.supportsPointerEvent = navigator.pointerEnabled !== false && !!domObjects.PointerEvent;\n  browser.isIOS = /iP(hone|od|ad)/.test(navigator.platform); // scrolling doesn't change the result of getClientRects on iOS 7\n\n  browser.isIOS7 = /iP(hone|od|ad)/.test(navigator.platform) && /OS 7[^\\d]/.test(navigator.appVersion);\n  browser.isIe9 = /MSIE 9/.test(navigator.userAgent); // Opera Mobile must be handled differently\n\n  browser.isOperaMobile = navigator.appName === 'Opera' && browser.supportsTouch && /Presto/.test(navigator.userAgent); // prefix matchesSelector\n\n  browser.prefixedMatchesSelector = 'matches' in Element.prototype ? 'matches' : 'webkitMatchesSelector' in Element.prototype ? 'webkitMatchesSelector' : 'mozMatchesSelector' in Element.prototype ? 'mozMatchesSelector' : 'oMatchesSelector' in Element.prototype ? 'oMatchesSelector' : 'msMatchesSelector';\n  browser.pEventTypes = browser.supportsPointerEvent ? domObjects.PointerEvent === window.MSPointerEvent ? {\n    up: 'MSPointerUp',\n    down: 'MSPointerDown',\n    over: 'mouseover',\n    out: 'mouseout',\n    move: 'MSPointerMove',\n    cancel: 'MSPointerCancel'\n  } : {\n    up: 'pointerup',\n    down: 'pointerdown',\n    over: 'pointerover',\n    out: 'pointerout',\n    move: 'pointermove',\n    cancel: 'pointercancel'\n  } : null; // because Webkit and Opera still use 'mousewheel' event type\n\n  browser.wheelEvent = 'onmousewheel' in domObjects.document ? 'mousewheel' : 'wheel';\n}\n\nexport default browser;\n//# sourceMappingURL=browser.js.map","export const contains = (array, target) => array.indexOf(target) !== -1;\nexport const remove = (array, target) => array.splice(array.indexOf(target), 1);\nexport const merge = (target, source) => {\n  for (const item of source) {\n    target.push(item);\n  }\n\n  return target;\n};\nexport const from = source => merge([], source);\nexport const findIndex = (array, func) => {\n  for (let i = 0; i < array.length; i++) {\n    if (func(array[i], i, array)) {\n      return i;\n    }\n  }\n\n  return -1;\n};\nexport const find = (array, func) => array[findIndex(array, func)];\n//# sourceMappingURL=arr.js.map","import * as arr from \"./arr.js\";\nimport is from \"./is.js\"; // tslint:disable-next-line ban-types\n\nexport default function clone(source) {\n  const dest = {};\n\n  for (const prop in source) {\n    const value = source[prop];\n\n    if (is.plainObject(value)) {\n      dest[prop] = clone(value);\n    } else if (is.array(value)) {\n      dest[prop] = arr.from(value);\n    } else {\n      dest[prop] = value;\n    }\n  }\n\n  return dest;\n}\n//# sourceMappingURL=clone.js.map","export default function extend(dest, source) {\n  for (const prop in source) {\n    dest[prop] = source[prop];\n  }\n\n  const ret = dest;\n  return ret;\n}\n//# sourceMappingURL=extend.js.map","let lastTime = 0;\nlet request;\nlet cancel;\n\nfunction init(window) {\n  request = window.requestAnimationFrame;\n  cancel = window.cancelAnimationFrame;\n\n  if (!request) {\n    const vendors = ['ms', 'moz', 'webkit', 'o'];\n\n    for (const vendor of vendors) {\n      request = window[`${vendor}RequestAnimationFrame`];\n      cancel = window[`${vendor}CancelAnimationFrame`] || window[`${vendor}CancelRequestAnimationFrame`];\n    }\n  }\n\n  request = request && request.bind(window);\n  cancel = cancel && cancel.bind(window);\n\n  if (!request) {\n    request = callback => {\n      const currTime = Date.now();\n      const timeToCall = Math.max(0, 16 - (currTime - lastTime)); // eslint-disable-next-line node/no-callback-literal\n\n      const token = window.setTimeout(() => {\n        callback(currTime + timeToCall);\n      }, timeToCall);\n      lastTime = currTime + timeToCall;\n      return token;\n    };\n\n    cancel = token => clearTimeout(token);\n  }\n}\n\nexport default {\n  request: callback => request(callback),\n  cancel: token => cancel(token),\n  init\n};\n//# sourceMappingURL=raf.js.map","import extend from \"./extend.js\";\nimport is from \"./is.js\";\nexport default function normalize(type, listeners, result) {\n  result = result || {};\n\n  if (is.string(type) && type.search(' ') !== -1) {\n    type = split(type);\n  }\n\n  if (is.array(type)) {\n    return type.reduce((acc, t) => extend(acc, normalize(t, listeners, result)), result);\n  } // ({ type: fn }) -> ('', { type: fn })\n\n\n  if (is.object(type)) {\n    listeners = type;\n    type = '';\n  }\n\n  if (is.func(listeners)) {\n    result[type] = result[type] || [];\n    result[type].push(listeners);\n  } else if (is.array(listeners)) {\n    for (const l of listeners) {\n      normalize(type, l, result);\n    }\n  } else if (is.object(listeners)) {\n    for (const prefix in listeners) {\n      const combinedTypes = split(prefix).map(p => `${type}${p}`);\n      normalize(combinedTypes, listeners[prefix], result);\n    }\n  }\n\n  return result;\n}\n\nfunction split(type) {\n  return type.trim().split(/ +/);\n}\n//# sourceMappingURL=normalizeListeners.js.map","import * as arr from \"../utils/arr.js\";\nimport extend from \"../utils/extend.js\";\nimport normalize from \"../utils/normalizeListeners.js\";\n\nfunction fireUntilImmediateStopped(event, listeners) {\n  for (const listener of listeners) {\n    if (event.immediatePropagationStopped) {\n      break;\n    }\n\n    listener(event);\n  }\n}\n\nexport class Eventable {\n  constructor(options) {\n    this.options = void 0;\n    this.types = {};\n    this.propagationStopped = false;\n    this.immediatePropagationStopped = false;\n    this.global = void 0;\n    this.options = extend({}, options || {});\n  }\n\n  fire(event) {\n    let listeners;\n    const global = this.global; // Interactable#on() listeners\n    // tslint:disable no-conditional-assignment\n\n    if (listeners = this.types[event.type]) {\n      fireUntilImmediateStopped(event, listeners);\n    } // interact.on() listeners\n\n\n    if (!event.propagationStopped && global && (listeners = global[event.type])) {\n      fireUntilImmediateStopped(event, listeners);\n    }\n  }\n\n  on(type, listener) {\n    const listeners = normalize(type, listener);\n\n    for (type in listeners) {\n      this.types[type] = arr.merge(this.types[type] || [], listeners[type]);\n    }\n  }\n\n  off(type, listener) {\n    const listeners = normalize(type, listener);\n\n    for (type in listeners) {\n      const eventList = this.types[type];\n\n      if (!eventList || !eventList.length) {\n        continue;\n      }\n\n      for (const subListener of listeners[type]) {\n        const index = eventList.indexOf(subListener);\n\n        if (index !== -1) {\n          eventList.splice(index, 1);\n        }\n      }\n    }\n  }\n\n  getRect(_element) {\n    return null;\n  }\n\n}\n//# sourceMappingURL=Eventable.js.map","import browser from \"./browser.js\";\nimport domObjects from \"./domObjects.js\";\nimport is from \"./is.js\";\nimport * as win from \"./window.js\";\nexport function nodeContains(parent, child) {\n  if (parent.contains) {\n    return parent.contains(child);\n  }\n\n  while (child) {\n    if (child === parent) {\n      return true;\n    }\n\n    child = child.parentNode;\n  }\n\n  return false;\n}\nexport function closest(element, selector) {\n  while (is.element(element)) {\n    if (matchesSelector(element, selector)) {\n      return element;\n    }\n\n    element = parentNode(element);\n  }\n\n  return null;\n}\nexport function parentNode(node) {\n  let parent = node.parentNode;\n\n  if (is.docFrag(parent)) {\n    // skip past #shado-root fragments\n    // tslint:disable-next-line\n    while ((parent = parent.host) && is.docFrag(parent)) {\n      continue;\n    }\n\n    return parent;\n  }\n\n  return parent;\n}\nexport function matchesSelector(element, selector) {\n  // remove /deep/ from selectors if shadowDOM polyfill is used\n  if (win.window !== win.realWindow) {\n    selector = selector.replace(/\\/deep\\//g, ' ');\n  }\n\n  return element[browser.prefixedMatchesSelector](selector);\n}\n\nconst getParent = el => el.parentNode || el.host; // Test for the element that's \"above\" all other qualifiers\n\n\nexport function indexOfDeepestElement(elements) {\n  let deepestNodeParents = [];\n  let deepestNodeIndex;\n\n  for (let i = 0; i < elements.length; i++) {\n    const currentNode = elements[i];\n    const deepestNode = elements[deepestNodeIndex]; // node may appear in elements array multiple times\n\n    if (!currentNode || i === deepestNodeIndex) {\n      continue;\n    }\n\n    if (!deepestNode) {\n      deepestNodeIndex = i;\n      continue;\n    }\n\n    const currentNodeParent = getParent(currentNode);\n    const deepestNodeParent = getParent(deepestNode); // check if the deepest or current are document.documentElement/rootElement\n    // - if the current node is, do nothing and continue\n\n    if (currentNodeParent === currentNode.ownerDocument) {\n      continue;\n    } // - if deepest is, update with the current node and continue to next\n    else if (deepestNodeParent === currentNode.ownerDocument) {\n        deepestNodeIndex = i;\n        continue;\n      } // compare zIndex of siblings\n\n\n    if (currentNodeParent === deepestNodeParent) {\n      if (zIndexIsHigherThan(currentNode, deepestNode)) {\n        deepestNodeIndex = i;\n      }\n\n      continue;\n    } // populate the ancestry array for the latest deepest node\n\n\n    deepestNodeParents = deepestNodeParents.length ? deepestNodeParents : getNodeParents(deepestNode);\n    let ancestryStart; // if the deepest node is an HTMLElement and the current node is a non root svg element\n\n    if (deepestNode instanceof domObjects.HTMLElement && currentNode instanceof domObjects.SVGElement && !(currentNode instanceof domObjects.SVGSVGElement)) {\n      // TODO: is this check necessary? Was this for HTML elements embedded in SVG?\n      if (currentNode === deepestNodeParent) {\n        continue;\n      }\n\n      ancestryStart = currentNode.ownerSVGElement;\n    } else {\n      ancestryStart = currentNode;\n    }\n\n    const currentNodeParents = getNodeParents(ancestryStart, deepestNode.ownerDocument);\n    let commonIndex = 0; // get (position of closest common ancestor) + 1\n\n    while (currentNodeParents[commonIndex] && currentNodeParents[commonIndex] === deepestNodeParents[commonIndex]) {\n      commonIndex++;\n    }\n\n    const parents = [currentNodeParents[commonIndex - 1], currentNodeParents[commonIndex], deepestNodeParents[commonIndex]];\n    let child = parents[0].lastChild;\n\n    while (child) {\n      if (child === parents[1]) {\n        deepestNodeIndex = i;\n        deepestNodeParents = currentNodeParents;\n        break;\n      } else if (child === parents[2]) {\n        break;\n      }\n\n      child = child.previousSibling;\n    }\n  }\n\n  return deepestNodeIndex;\n}\n\nfunction getNodeParents(node, limit) {\n  const parents = [];\n  let parent = node;\n  let parentParent;\n\n  while ((parentParent = getParent(parent)) && parent !== limit && parentParent !== parent.ownerDocument) {\n    parents.unshift(parent);\n    parent = parentParent;\n  }\n\n  return parents;\n}\n\nfunction zIndexIsHigherThan(higherNode, lowerNode) {\n  const higherIndex = parseInt(win.getWindow(higherNode).getComputedStyle(higherNode).zIndex, 10) || 0;\n  const lowerIndex = parseInt(win.getWindow(lowerNode).getComputedStyle(lowerNode).zIndex, 10) || 0;\n  return higherIndex >= lowerIndex;\n}\n\nexport function matchesUpTo(element, selector, limit) {\n  while (is.element(element)) {\n    if (matchesSelector(element, selector)) {\n      return true;\n    }\n\n    element = parentNode(element);\n\n    if (element === limit) {\n      return matchesSelector(element, selector);\n    }\n  }\n\n  return false;\n}\nexport function getActualElement(element) {\n  return element.correspondingUseElement || element;\n}\nexport function getScrollXY(relevantWindow) {\n  relevantWindow = relevantWindow || win.window;\n  return {\n    x: relevantWindow.scrollX || relevantWindow.document.documentElement.scrollLeft,\n    y: relevantWindow.scrollY || relevantWindow.document.documentElement.scrollTop\n  };\n}\nexport function getElementClientRect(element) {\n  const clientRect = element instanceof domObjects.SVGElement ? element.getBoundingClientRect() : element.getClientRects()[0];\n  return clientRect && {\n    left: clientRect.left,\n    right: clientRect.right,\n    top: clientRect.top,\n    bottom: clientRect.bottom,\n    width: clientRect.width || clientRect.right - clientRect.left,\n    height: clientRect.height || clientRect.bottom - clientRect.top\n  };\n}\nexport function getElementRect(element) {\n  const clientRect = getElementClientRect(element);\n\n  if (!browser.isIOS7 && clientRect) {\n    const scroll = getScrollXY(win.getWindow(element));\n    clientRect.left += scroll.x;\n    clientRect.right += scroll.x;\n    clientRect.top += scroll.y;\n    clientRect.bottom += scroll.y;\n  }\n\n  return clientRect;\n}\nexport function getPath(node) {\n  const path = [];\n\n  while (node) {\n    path.push(node);\n    node = parentNode(node);\n  }\n\n  return path;\n}\nexport function trySelector(value) {\n  if (!is.string(value)) {\n    return false;\n  } // an exception will be raised if it is invalid\n\n\n  domObjects.document.querySelector(value);\n  return true;\n}\n//# sourceMappingURL=domUtils.js.map","import { closest, getElementRect, parentNode } from \"./domUtils.js\";\nimport extend from \"./extend.js\";\nimport is from \"./is.js\";\nexport function getStringOptionResult(value, target, element) {\n  if (value === 'parent') {\n    return parentNode(element);\n  }\n\n  if (value === 'self') {\n    return target.getRect(element);\n  }\n\n  return closest(element, value);\n}\nexport function resolveRectLike(value, target, element, functionArgs) {\n  let returnValue = value;\n\n  if (is.string(returnValue)) {\n    returnValue = getStringOptionResult(returnValue, target, element);\n  } else if (is.func(returnValue)) {\n    returnValue = returnValue(...functionArgs);\n  }\n\n  if (is.element(returnValue)) {\n    returnValue = getElementRect(returnValue);\n  }\n\n  return returnValue;\n}\nexport function rectToXY(rect) {\n  return rect && {\n    x: 'x' in rect ? rect.x : rect.left,\n    y: 'y' in rect ? rect.y : rect.top\n  };\n}\nexport function xywhToTlbr(rect) {\n  if (rect && !('left' in rect && 'top' in rect)) {\n    rect = extend({}, rect);\n    rect.left = rect.x || 0;\n    rect.top = rect.y || 0;\n    rect.right = rect.right || rect.left + rect.width;\n    rect.bottom = rect.bottom || rect.top + rect.height;\n  }\n\n  return rect;\n}\nexport function tlbrToXywh(rect) {\n  if (rect && !('x' in rect && 'y' in rect)) {\n    rect = extend({}, rect);\n    rect.x = rect.left || 0;\n    rect.y = rect.top || 0;\n    rect.width = rect.width || (rect.right || 0) - rect.x;\n    rect.height = rect.height || (rect.bottom || 0) - rect.y;\n  }\n\n  return rect;\n}\nexport function addEdges(edges, rect, delta) {\n  if (edges.left) {\n    rect.left += delta.x;\n  }\n\n  if (edges.right) {\n    rect.right += delta.x;\n  }\n\n  if (edges.top) {\n    rect.top += delta.y;\n  }\n\n  if (edges.bottom) {\n    rect.bottom += delta.y;\n  }\n\n  rect.width = rect.right - rect.left;\n  rect.height = rect.bottom - rect.top;\n}\n//# sourceMappingURL=rect.js.map","import { rectToXY, resolveRectLike } from \"./rect.js\";\nexport default function (target, element, actionName) {\n  const actionOptions = target.options[actionName];\n  const actionOrigin = actionOptions && actionOptions.origin;\n  const origin = actionOrigin || target.options.origin;\n  const originRect = resolveRectLike(origin, target, element, [target && element]);\n  return rectToXY(originRect) || {\n    x: 0,\n    y: 0\n  };\n}\n//# sourceMappingURL=getOriginXY.js.map","export default ((x, y) => Math.sqrt(x * x + y * y));\n//# sourceMappingURL=hypot.js.map","export class BaseEvent {\n  constructor(interaction) {\n    this.type = void 0;\n    this.target = void 0;\n    this.currentTarget = void 0;\n    this.interactable = void 0;\n    this._interaction = void 0;\n    this.timeStamp = void 0;\n    this.immediatePropagationStopped = false;\n    this.propagationStopped = false;\n    this._interaction = interaction;\n  }\n\n  preventDefault() {}\n  /**\n   * Don't call any other listeners (even on the current target)\n   */\n\n\n  stopPropagation() {\n    this.propagationStopped = true;\n  }\n  /**\n   * Don't call listeners on the remaining targets\n   */\n\n\n  stopImmediatePropagation() {\n    this.immediatePropagationStopped = this.propagationStopped = true;\n  }\n\n} // defined outside of class definition to avoid assignment of undefined during\n// construction\n\n// getters and setters defined here to support typescript 3.6 and below which\n// don't support getter and setters in .d.ts files\nObject.defineProperty(BaseEvent.prototype, 'interaction', {\n  get() {\n    return this._interaction._proxy;\n  },\n\n  set() {}\n\n});\n//# sourceMappingURL=BaseEvent.js.map","// eslint-disable-next-line @typescript-eslint/no-empty-interface\n// export interface Options extends BaseDefaults, PerActionDefaults {}\nexport const defaults = {\n  base: {\n    preventDefault: 'auto',\n    deltaSource: 'page'\n  },\n  perAction: {\n    enabled: false,\n    origin: {\n      x: 0,\n      y: 0\n    }\n  },\n  actions: {}\n};\n//# sourceMappingURL=defaultOptions.js.map","import extend from \"../utils/extend.js\";\nimport getOriginXY from \"../utils/getOriginXY.js\";\nimport hypot from \"../utils/hypot.js\";\nimport { BaseEvent } from \"./BaseEvent.js\";\nimport { defaults } from \"./defaultOptions.js\";\nexport class InteractEvent extends BaseEvent {\n  // resize\n\n  /** */\n  constructor(interaction, event, actionName, phase, element, preEnd, type) {\n    super(interaction);\n    this.target = void 0;\n    this.currentTarget = void 0;\n    this.relatedTarget = null;\n    this.screenX = void 0;\n    this.screenY = void 0;\n    this.button = void 0;\n    this.buttons = void 0;\n    this.ctrlKey = void 0;\n    this.shiftKey = void 0;\n    this.altKey = void 0;\n    this.metaKey = void 0;\n    this.page = void 0;\n    this.client = void 0;\n    this.delta = void 0;\n    this.rect = void 0;\n    this.x0 = void 0;\n    this.y0 = void 0;\n    this.t0 = void 0;\n    this.dt = void 0;\n    this.duration = void 0;\n    this.clientX0 = void 0;\n    this.clientY0 = void 0;\n    this.velocity = void 0;\n    this.speed = void 0;\n    this.swipe = void 0;\n    this.timeStamp = void 0;\n    this.axes = void 0;\n    this.preEnd = void 0;\n    element = element || interaction.element;\n    const target = interaction.interactable;\n    const deltaSource = (target && target.options || defaults).deltaSource;\n    const origin = getOriginXY(target, element, actionName);\n    const starting = phase === 'start';\n    const ending = phase === 'end';\n    const prevEvent = starting ? this : interaction.prevEvent;\n    const coords = starting ? interaction.coords.start : ending ? {\n      page: prevEvent.page,\n      client: prevEvent.client,\n      timeStamp: interaction.coords.cur.timeStamp\n    } : interaction.coords.cur;\n    this.page = extend({}, coords.page);\n    this.client = extend({}, coords.client);\n    this.rect = extend({}, interaction.rect);\n    this.timeStamp = coords.timeStamp;\n\n    if (!ending) {\n      this.page.x -= origin.x;\n      this.page.y -= origin.y;\n      this.client.x -= origin.x;\n      this.client.y -= origin.y;\n    }\n\n    this.ctrlKey = event.ctrlKey;\n    this.altKey = event.altKey;\n    this.shiftKey = event.shiftKey;\n    this.metaKey = event.metaKey;\n    this.button = event.button;\n    this.buttons = event.buttons;\n    this.target = element;\n    this.currentTarget = element;\n    this.preEnd = preEnd;\n    this.type = type || actionName + (phase || '');\n    this.interactable = target;\n    this.t0 = starting ? interaction.pointers[interaction.pointers.length - 1].downTime : prevEvent.t0;\n    this.x0 = interaction.coords.start.page.x - origin.x;\n    this.y0 = interaction.coords.start.page.y - origin.y;\n    this.clientX0 = interaction.coords.start.client.x - origin.x;\n    this.clientY0 = interaction.coords.start.client.y - origin.y;\n\n    if (starting || ending) {\n      this.delta = {\n        x: 0,\n        y: 0\n      };\n    } else {\n      this.delta = {\n        x: this[deltaSource].x - prevEvent[deltaSource].x,\n        y: this[deltaSource].y - prevEvent[deltaSource].y\n      };\n    }\n\n    this.dt = interaction.coords.delta.timeStamp;\n    this.duration = this.timeStamp - this.t0; // velocity and speed in pixels per second\n\n    this.velocity = extend({}, interaction.coords.velocity[deltaSource]);\n    this.speed = hypot(this.velocity.x, this.velocity.y);\n    this.swipe = ending || phase === 'inertiastart' ? this.getSwipe() : null;\n  }\n\n  getSwipe() {\n    const interaction = this._interaction;\n\n    if (interaction.prevEvent.speed < 600 || this.timeStamp - interaction.prevEvent.timeStamp > 150) {\n      return null;\n    }\n\n    let angle = 180 * Math.atan2(interaction.prevEvent.velocityY, interaction.prevEvent.velocityX) / Math.PI;\n    const overlap = 22.5;\n\n    if (angle < 0) {\n      angle += 360;\n    }\n\n    const left = 135 - overlap <= angle && angle < 225 + overlap;\n    const up = 225 - overlap <= angle && angle < 315 + overlap;\n    const right = !left && (315 - overlap <= angle || angle < 45 + overlap);\n    const down = !up && 45 - overlap <= angle && angle < 135 + overlap;\n    return {\n      up,\n      down,\n      left,\n      right,\n      angle,\n      speed: interaction.prevEvent.speed,\n      velocity: {\n        x: interaction.prevEvent.velocityX,\n        y: interaction.prevEvent.velocityY\n      }\n    };\n  }\n\n  preventDefault() {}\n  /**\n   * Don't call listeners on the remaining targets\n   */\n\n\n  stopImmediatePropagation() {\n    this.immediatePropagationStopped = this.propagationStopped = true;\n  }\n  /**\n   * Don't call any other listeners (even on the current target)\n   */\n\n\n  stopPropagation() {\n    this.propagationStopped = true;\n  }\n\n} // getters and setters defined here to support typescript 3.6 and below which\n// don't support getter and setters in .d.ts files\n\nObject.defineProperties(InteractEvent.prototype, {\n  pageX: {\n    get() {\n      return this.page.x;\n    },\n\n    set(value) {\n      this.page.x = value;\n    }\n\n  },\n  pageY: {\n    get() {\n      return this.page.y;\n    },\n\n    set(value) {\n      this.page.y = value;\n    }\n\n  },\n  clientX: {\n    get() {\n      return this.client.x;\n    },\n\n    set(value) {\n      this.client.x = value;\n    }\n\n  },\n  clientY: {\n    get() {\n      return this.client.y;\n    },\n\n    set(value) {\n      this.client.y = value;\n    }\n\n  },\n  dx: {\n    get() {\n      return this.delta.x;\n    },\n\n    set(value) {\n      this.delta.x = value;\n    }\n\n  },\n  dy: {\n    get() {\n      return this.delta.y;\n    },\n\n    set(value) {\n      this.delta.y = value;\n    }\n\n  },\n  velocityX: {\n    get() {\n      return this.velocity.x;\n    },\n\n    set(value) {\n      this.velocity.x = value;\n    }\n\n  },\n  velocityY: {\n    get() {\n      return this.velocity.y;\n    },\n\n    set(value) {\n      this.velocity.y = value;\n    }\n\n  }\n});\n//# sourceMappingURL=InteractEvent.js.map","export default function isNonNativeEvent(type, actions) {\n  if (actions.phaselessTypes[type]) {\n    return true;\n  }\n\n  for (const name in actions.map) {\n    if (type.indexOf(name) === 0 && type.substr(name.length) in actions.phases) {\n      return true;\n    }\n  }\n\n  return false;\n}\n//# sourceMappingURL=isNonNativeEvent.js.map","/* eslint-disable no-dupe-class-members */\nimport * as arr from \"../utils/arr.js\";\nimport browser from \"../utils/browser.js\";\nimport clone from \"../utils/clone.js\";\nimport { getElementRect, matchesUpTo, nodeContains, trySelector } from \"../utils/domUtils.js\";\nimport extend from \"../utils/extend.js\";\nimport is from \"../utils/is.js\";\nimport normalizeListeners from \"../utils/normalizeListeners.js\";\nimport { getWindow } from \"../utils/window.js\";\nimport { Eventable } from \"./Eventable.js\";\nimport isNonNativeEvent from \"./isNonNativeEvent.js\";\n\n/** */\nexport class Interactable {\n  /** @internal */\n  get _defaults() {\n    return {\n      base: {},\n      perAction: {},\n      actions: {}\n    };\n  }\n\n  /** */\n  constructor(target, options, defaultContext, scopeEvents) {\n    this.options = void 0;\n    this._actions = void 0;\n    this.target = void 0;\n    this.events = new Eventable();\n    this._context = void 0;\n    this._win = void 0;\n    this._doc = void 0;\n    this._scopeEvents = void 0;\n    this._rectChecker = void 0;\n    this._actions = options.actions;\n    this.target = target;\n    this._context = options.context || defaultContext;\n    this._win = getWindow(trySelector(target) ? this._context : target);\n    this._doc = this._win.document;\n    this._scopeEvents = scopeEvents;\n    this.set(options);\n  }\n\n  setOnEvents(actionName, phases) {\n    if (is.func(phases.onstart)) {\n      this.on(`${actionName}start`, phases.onstart);\n    }\n\n    if (is.func(phases.onmove)) {\n      this.on(`${actionName}move`, phases.onmove);\n    }\n\n    if (is.func(phases.onend)) {\n      this.on(`${actionName}end`, phases.onend);\n    }\n\n    if (is.func(phases.oninertiastart)) {\n      this.on(`${actionName}inertiastart`, phases.oninertiastart);\n    }\n\n    return this;\n  }\n\n  updatePerActionListeners(actionName, prev, cur) {\n    if (is.array(prev) || is.object(prev)) {\n      this.off(actionName, prev);\n    }\n\n    if (is.array(cur) || is.object(cur)) {\n      this.on(actionName, cur);\n    }\n  }\n\n  setPerAction(actionName, options) {\n    const defaults = this._defaults; // for all the default per-action options\n\n    for (const optionName_ in options) {\n      const optionName = optionName_;\n      const actionOptions = this.options[actionName];\n      const optionValue = options[optionName]; // remove old event listeners and add new ones\n\n      if (optionName === 'listeners') {\n        this.updatePerActionListeners(actionName, actionOptions.listeners, optionValue);\n      } // if the option value is an array\n\n\n      if (is.array(optionValue)) {\n        actionOptions[optionName] = arr.from(optionValue);\n      } // if the option value is an object\n      else if (is.plainObject(optionValue)) {\n          // copy the object\n          actionOptions[optionName] = extend(actionOptions[optionName] || {}, clone(optionValue)); // set anabled field to true if it exists in the defaults\n\n          if (is.object(defaults.perAction[optionName]) && 'enabled' in defaults.perAction[optionName]) {\n            actionOptions[optionName].enabled = optionValue.enabled !== false;\n          }\n        } // if the option value is a boolean and the default is an object\n        else if (is.bool(optionValue) && is.object(defaults.perAction[optionName])) {\n            actionOptions[optionName].enabled = optionValue;\n          } // if it's anything else, do a plain assignment\n          else {\n              actionOptions[optionName] = optionValue;\n            }\n    }\n  }\n  /**\n   * The default function to get an Interactables bounding rect. Can be\n   * overridden using {@link Interactable.rectChecker}.\n   *\n   * @param {Element} [element] The element to measure.\n   * @return {Rect} The object's bounding rectangle.\n   */\n\n\n  getRect(element) {\n    element = element || (is.element(this.target) ? this.target : null);\n\n    if (is.string(this.target)) {\n      element = element || this._context.querySelector(this.target);\n    }\n\n    return getElementRect(element);\n  }\n  /**\n   * Returns or sets the function used to calculate the interactable's\n   * element's rectangle\n   *\n   * @param {function} [checker] A function which returns this Interactable's\n   * bounding rectangle. See {@link Interactable.getRect}\n   * @return {function | object} The checker function or this Interactable\n   */\n\n\n  rectChecker(checker) {\n    if (is.func(checker)) {\n      this._rectChecker = checker;\n\n      this.getRect = element => {\n        const rect = extend({}, this._rectChecker(element));\n\n        if (!('width' in rect)) {\n          rect.width = rect.right - rect.left;\n          rect.height = rect.bottom - rect.top;\n        }\n\n        return rect;\n      };\n\n      return this;\n    }\n\n    if (checker === null) {\n      delete this.getRect;\n      delete this._rectChecker;\n      return this;\n    }\n\n    return this.getRect;\n  }\n\n  _backCompatOption(optionName, newValue) {\n    if (trySelector(newValue) || is.object(newValue)) {\n      this.options[optionName] = newValue;\n\n      for (const action in this._actions.map) {\n        this.options[action][optionName] = newValue;\n      }\n\n      return this;\n    }\n\n    return this.options[optionName];\n  }\n  /**\n   * Gets or sets the origin of the Interactable's element.  The x and y\n   * of the origin will be subtracted from action event coordinates.\n   *\n   * @param {Element | object | string} [origin] An HTML or SVG Element whose\n   * rect will be used, an object eg. { x: 0, y: 0 } or string 'parent', 'self'\n   * or any CSS selector\n   *\n   * @return {object} The current origin or this Interactable\n   */\n\n\n  origin(newValue) {\n    return this._backCompatOption('origin', newValue);\n  }\n  /**\n   * Returns or sets the mouse coordinate types used to calculate the\n   * movement of the pointer.\n   *\n   * @param {string} [newValue] Use 'client' if you will be scrolling while\n   * interacting; Use 'page' if you want autoScroll to work\n   * @return {string | object} The current deltaSource or this Interactable\n   */\n\n\n  deltaSource(newValue) {\n    if (newValue === 'page' || newValue === 'client') {\n      this.options.deltaSource = newValue;\n      return this;\n    }\n\n    return this.options.deltaSource;\n  }\n  /**\n   * Gets the selector context Node of the Interactable. The default is\n   * `window.document`.\n   *\n   * @return {Node} The context Node of this Interactable\n   */\n\n\n  context() {\n    return this._context;\n  }\n\n  inContext(element) {\n    return this._context === element.ownerDocument || nodeContains(this._context, element);\n  }\n\n  testIgnoreAllow(options, targetNode, eventTarget) {\n    return !this.testIgnore(options.ignoreFrom, targetNode, eventTarget) && this.testAllow(options.allowFrom, targetNode, eventTarget);\n  }\n\n  testAllow(allowFrom, targetNode, element) {\n    if (!allowFrom) {\n      return true;\n    }\n\n    if (!is.element(element)) {\n      return false;\n    }\n\n    if (is.string(allowFrom)) {\n      return matchesUpTo(element, allowFrom, targetNode);\n    } else if (is.element(allowFrom)) {\n      return nodeContains(allowFrom, element);\n    }\n\n    return false;\n  }\n\n  testIgnore(ignoreFrom, targetNode, element) {\n    if (!ignoreFrom || !is.element(element)) {\n      return false;\n    }\n\n    if (is.string(ignoreFrom)) {\n      return matchesUpTo(element, ignoreFrom, targetNode);\n    } else if (is.element(ignoreFrom)) {\n      return nodeContains(ignoreFrom, element);\n    }\n\n    return false;\n  }\n  /**\n   * Calls listeners for the given InteractEvent type bound globally\n   * and directly to this Interactable\n   *\n   * @param {InteractEvent} iEvent The InteractEvent object to be fired on this\n   * Interactable\n   * @return {Interactable} this Interactable\n   */\n\n\n  fire(iEvent) {\n    this.events.fire(iEvent);\n    return this;\n  }\n\n  _onOff(method, typeArg, listenerArg, options) {\n    if (is.object(typeArg) && !is.array(typeArg)) {\n      options = listenerArg;\n      listenerArg = null;\n    }\n\n    const addRemove = method === 'on' ? 'add' : 'remove';\n    const listeners = normalizeListeners(typeArg, listenerArg);\n\n    for (let type in listeners) {\n      if (type === 'wheel') {\n        type = browser.wheelEvent;\n      }\n\n      for (const listener of listeners[type]) {\n        // if it is an action event type\n        if (isNonNativeEvent(type, this._actions)) {\n          this.events[method](type, listener);\n        } // delegated event\n        else if (is.string(this.target)) {\n            this._scopeEvents[`${addRemove}Delegate`](this.target, this._context, type, listener, options);\n          } // remove listener from this Interactable's element\n          else {\n              this._scopeEvents[addRemove](this.target, type, listener, options);\n            }\n      }\n    }\n\n    return this;\n  }\n  /**\n   * Binds a listener for an InteractEvent, pointerEvent or DOM event.\n   *\n   * @param {string | array | object} types The types of events to listen\n   * for\n   * @param {function | array | object} [listener] The event listener function(s)\n   * @param {object | boolean} [options] options object or useCapture flag for\n   * addEventListener\n   * @return {Interactable} This Interactable\n   */\n\n\n  on(types, listener, options) {\n    return this._onOff('on', types, listener, options);\n  }\n  /**\n   * Removes an InteractEvent, pointerEvent or DOM event listener.\n   *\n   * @param {string | array | object} types The types of events that were\n   * listened for\n   * @param {function | array | object} [listener] The event listener function(s)\n   * @param {object | boolean} [options] options object or useCapture flag for\n   * removeEventListener\n   * @return {Interactable} This Interactable\n   */\n\n\n  off(types, listener, options) {\n    return this._onOff('off', types, listener, options);\n  }\n  /**\n   * Reset the options of this Interactable\n   *\n   * @param {object} options The new settings to apply\n   * @return {object} This Interactable\n   */\n\n\n  set(options) {\n    const defaults = this._defaults;\n\n    if (!is.object(options)) {\n      options = {};\n    }\n\n    this.options = clone(defaults.base);\n\n    for (const actionName_ in this._actions.methodDict) {\n      const actionName = actionName_;\n      const methodName = this._actions.methodDict[actionName];\n      this.options[actionName] = {};\n      this.setPerAction(actionName, extend(extend({}, defaults.perAction), defaults.actions[actionName]));\n      this[methodName](options[actionName]);\n    }\n\n    for (const setting in options) {\n      if (is.func(this[setting])) {\n        this[setting](options[setting]);\n      }\n    }\n\n    return this;\n  }\n  /**\n   * Remove this interactable from the list of interactables and remove it's\n   * action capabilities and event listeners\n   */\n\n\n  unset() {\n    if (is.string(this.target)) {\n      // remove delegated events\n      for (const type in this._scopeEvents.delegatedEvents) {\n        const delegated = this._scopeEvents.delegatedEvents[type];\n\n        for (let i = delegated.length - 1; i >= 0; i--) {\n          const {\n            selector,\n            context,\n            listeners\n          } = delegated[i];\n\n          if (selector === this.target && context === this._context) {\n            delegated.splice(i, 1);\n          }\n\n          for (let l = listeners.length - 1; l >= 0; l--) {\n            this._scopeEvents.removeDelegate(this.target, this._context, type, listeners[l][0], listeners[l][1]);\n          }\n        }\n      }\n    } else {\n      this._scopeEvents.remove(this.target, 'all');\n    }\n  }\n\n}\n//# sourceMappingURL=Interactable.js.map","import * as arr from \"../utils/arr.js\";\nimport * as domUtils from \"../utils/domUtils.js\";\nimport extend from \"../utils/extend.js\";\nimport is from \"../utils/is.js\";\nexport class InteractableSet {\n  // all set interactables\n  constructor(scope) {\n    this.list = [];\n    this.selectorMap = {};\n    this.scope = void 0;\n    this.scope = scope;\n    scope.addListeners({\n      'interactable:unset': ({\n        interactable\n      }) => {\n        const {\n          target,\n          _context: context\n        } = interactable;\n        const targetMappings = is.string(target) ? this.selectorMap[target] : target[this.scope.id];\n        const targetIndex = arr.findIndex(targetMappings, m => m.context === context);\n\n        if (targetMappings[targetIndex]) {\n          // Destroying mappingInfo's context and interactable\n          targetMappings[targetIndex].context = null;\n          targetMappings[targetIndex].interactable = null;\n        }\n\n        targetMappings.splice(targetIndex, 1);\n      }\n    });\n  }\n\n  new(target, options) {\n    options = extend(options || {}, {\n      actions: this.scope.actions\n    });\n    const interactable = new this.scope.Interactable(target, options, this.scope.document, this.scope.events);\n    const mappingInfo = {\n      context: interactable._context,\n      interactable\n    };\n    this.scope.addDocument(interactable._doc);\n    this.list.push(interactable);\n\n    if (is.string(target)) {\n      if (!this.selectorMap[target]) {\n        this.selectorMap[target] = [];\n      }\n\n      this.selectorMap[target].push(mappingInfo);\n    } else {\n      if (!interactable.target[this.scope.id]) {\n        Object.defineProperty(target, this.scope.id, {\n          value: [],\n          configurable: true\n        });\n      }\n\n      target[this.scope.id].push(mappingInfo);\n    }\n\n    this.scope.fire('interactable:new', {\n      target,\n      options,\n      interactable,\n      win: this.scope._win\n    });\n    return interactable;\n  }\n\n  get(target, options) {\n    const context = options && options.context || this.scope.document;\n    const isSelector = is.string(target);\n    const targetMappings = isSelector ? this.selectorMap[target] : target[this.scope.id];\n\n    if (!targetMappings) {\n      return null;\n    }\n\n    const found = arr.find(targetMappings, m => m.context === context && (isSelector || m.interactable.inContext(target)));\n    return found && found.interactable;\n  }\n\n  forEachMatch(node, callback) {\n    for (const interactable of this.list) {\n      let ret;\n\n      if ((is.string(interactable.target) // target is a selector and the element matches\n      ? is.element(node) && domUtils.matchesSelector(node, interactable.target) : // target is the element\n      node === interactable.target) && // the element is in context\n      interactable.inContext(node)) {\n        ret = callback(interactable);\n      }\n\n      if (ret !== undefined) {\n        return ret;\n      }\n    }\n  }\n\n}\n//# sourceMappingURL=InteractableSet.js.map","function pointerExtend(dest, source) {\n  for (const prop in source) {\n    const prefixedPropREs = pointerExtend.prefixedPropREs;\n    let deprecated = false; // skip deprecated prefixed properties\n\n    for (const vendor in prefixedPropREs) {\n      if (prop.indexOf(vendor) === 0 && prefixedPropREs[vendor].test(prop)) {\n        deprecated = true;\n        break;\n      }\n    }\n\n    if (!deprecated && typeof source[prop] !== 'function') {\n      dest[prop] = source[prop];\n    }\n  }\n\n  return dest;\n}\n\npointerExtend.prefixedPropREs = {\n  webkit: /(Movement[XY]|Radius[XY]|RotationAngle|Force)$/,\n  moz: /(Pressure)$/\n};\nexport default pointerExtend;\n//# sourceMappingURL=pointerExtend.js.map","import browser from \"./browser.js\";\nimport dom from \"./domObjects.js\";\nimport * as domUtils from \"./domUtils.js\";\nimport hypot from \"./hypot.js\";\nimport is from \"./is.js\";\nimport pointerExtend from \"./pointerExtend.js\";\nexport function copyCoords(dest, src) {\n  dest.page = dest.page || {};\n  dest.page.x = src.page.x;\n  dest.page.y = src.page.y;\n  dest.client = dest.client || {};\n  dest.client.x = src.client.x;\n  dest.client.y = src.client.y;\n  dest.timeStamp = src.timeStamp;\n}\nexport function setCoordDeltas(targetObj, prev, cur) {\n  targetObj.page.x = cur.page.x - prev.page.x;\n  targetObj.page.y = cur.page.y - prev.page.y;\n  targetObj.client.x = cur.client.x - prev.client.x;\n  targetObj.client.y = cur.client.y - prev.client.y;\n  targetObj.timeStamp = cur.timeStamp - prev.timeStamp;\n}\nexport function setCoordVelocity(targetObj, delta) {\n  const dt = Math.max(delta.timeStamp / 1000, 0.001);\n  targetObj.page.x = delta.page.x / dt;\n  targetObj.page.y = delta.page.y / dt;\n  targetObj.client.x = delta.client.x / dt;\n  targetObj.client.y = delta.client.y / dt;\n  targetObj.timeStamp = dt;\n}\nexport function setZeroCoords(targetObj) {\n  targetObj.page.x = 0;\n  targetObj.page.y = 0;\n  targetObj.client.x = 0;\n  targetObj.client.y = 0;\n}\nexport function isNativePointer(pointer) {\n  return pointer instanceof dom.Event || pointer instanceof dom.Touch;\n} // Get specified X/Y coords for mouse or event.touches[0]\n\nexport function getXY(type, pointer, xy) {\n  xy = xy || {};\n  type = type || 'page';\n  xy.x = pointer[type + 'X'];\n  xy.y = pointer[type + 'Y'];\n  return xy;\n}\nexport function getPageXY(pointer, page) {\n  page = page || {\n    x: 0,\n    y: 0\n  }; // Opera Mobile handles the viewport and scrolling oddly\n\n  if (browser.isOperaMobile && isNativePointer(pointer)) {\n    getXY('screen', pointer, page);\n    page.x += window.scrollX;\n    page.y += window.scrollY;\n  } else {\n    getXY('page', pointer, page);\n  }\n\n  return page;\n}\nexport function getClientXY(pointer, client) {\n  client = client || {};\n\n  if (browser.isOperaMobile && isNativePointer(pointer)) {\n    // Opera Mobile handles the viewport and scrolling oddly\n    getXY('screen', pointer, client);\n  } else {\n    getXY('client', pointer, client);\n  }\n\n  return client;\n}\nexport function getPointerId(pointer) {\n  return is.number(pointer.pointerId) ? pointer.pointerId : pointer.identifier;\n}\nexport function setCoords(dest, pointers, timeStamp) {\n  const pointer = pointers.length > 1 ? pointerAverage(pointers) : pointers[0];\n  getPageXY(pointer, dest.page);\n  getClientXY(pointer, dest.client);\n  dest.timeStamp = timeStamp;\n}\nexport function getTouchPair(event) {\n  const touches = []; // array of touches is supplied\n\n  if (is.array(event)) {\n    touches[0] = event[0];\n    touches[1] = event[1];\n  } // an event\n  else {\n      if (event.type === 'touchend') {\n        if (event.touches.length === 1) {\n          touches[0] = event.touches[0];\n          touches[1] = event.changedTouches[0];\n        } else if (event.touches.length === 0) {\n          touches[0] = event.changedTouches[0];\n          touches[1] = event.changedTouches[1];\n        }\n      } else {\n        touches[0] = event.touches[0];\n        touches[1] = event.touches[1];\n      }\n    }\n\n  return touches;\n}\nexport function pointerAverage(pointers) {\n  const average = {\n    pageX: 0,\n    pageY: 0,\n    clientX: 0,\n    clientY: 0,\n    screenX: 0,\n    screenY: 0\n  };\n\n  for (const pointer of pointers) {\n    for (const prop in average) {\n      average[prop] += pointer[prop];\n    }\n  }\n\n  for (const prop in average) {\n    average[prop] /= pointers.length;\n  }\n\n  return average;\n}\nexport function touchBBox(event) {\n  if (!event.length) {\n    return null;\n  }\n\n  const touches = getTouchPair(event);\n  const minX = Math.min(touches[0].pageX, touches[1].pageX);\n  const minY = Math.min(touches[0].pageY, touches[1].pageY);\n  const maxX = Math.max(touches[0].pageX, touches[1].pageX);\n  const maxY = Math.max(touches[0].pageY, touches[1].pageY);\n  return {\n    x: minX,\n    y: minY,\n    left: minX,\n    top: minY,\n    right: maxX,\n    bottom: maxY,\n    width: maxX - minX,\n    height: maxY - minY\n  };\n}\nexport function touchDistance(event, deltaSource) {\n  const sourceX = deltaSource + 'X';\n  const sourceY = deltaSource + 'Y';\n  const touches = getTouchPair(event);\n  const dx = touches[0][sourceX] - touches[1][sourceX];\n  const dy = touches[0][sourceY] - touches[1][sourceY];\n  return hypot(dx, dy);\n}\nexport function touchAngle(event, deltaSource) {\n  const sourceX = deltaSource + 'X';\n  const sourceY = deltaSource + 'Y';\n  const touches = getTouchPair(event);\n  const dx = touches[1][sourceX] - touches[0][sourceX];\n  const dy = touches[1][sourceY] - touches[0][sourceY];\n  const angle = 180 * Math.atan2(dy, dx) / Math.PI;\n  return angle;\n}\nexport function getPointerType(pointer) {\n  return is.string(pointer.pointerType) ? pointer.pointerType : is.number(pointer.pointerType) ? [undefined, undefined, 'touch', 'pen', 'mouse'][pointer.pointerType] // if the PointerEvent API isn't available, then the \"pointer\" must\n  // be either a MouseEvent, TouchEvent, or Touch object\n  : /touch/.test(pointer.type) || pointer instanceof dom.Touch ? 'touch' : 'mouse';\n} // [ event.target, event.currentTarget ]\n\nexport function getEventTargets(event) {\n  const path = is.func(event.composedPath) ? event.composedPath() : event.path;\n  return [domUtils.getActualElement(path ? path[0] : event.target), domUtils.getActualElement(event.currentTarget)];\n}\nexport function newCoords() {\n  return {\n    page: {\n      x: 0,\n      y: 0\n    },\n    client: {\n      x: 0,\n      y: 0\n    },\n    timeStamp: 0\n  };\n}\nexport function coordsToEvent(coords) {\n  const event = {\n    coords,\n\n    get page() {\n      return this.coords.page;\n    },\n\n    get client() {\n      return this.coords.client;\n    },\n\n    get timeStamp() {\n      return this.coords.timeStamp;\n    },\n\n    get pageX() {\n      return this.coords.page.x;\n    },\n\n    get pageY() {\n      return this.coords.page.y;\n    },\n\n    get clientX() {\n      return this.coords.client.x;\n    },\n\n    get clientY() {\n      return this.coords.client.y;\n    },\n\n    get pointerId() {\n      return this.coords.pointerId;\n    },\n\n    get target() {\n      return this.coords.target;\n    },\n\n    get type() {\n      return this.coords.type;\n    },\n\n    get pointerType() {\n      return this.coords.pointerType;\n    },\n\n    get buttons() {\n      return this.coords.buttons;\n    },\n\n    preventDefault() {}\n\n  };\n  return event;\n}\nexport { pointerExtend };\n//# sourceMappingURL=pointerUtils.js.map","import { Scope } from \"./scope.js\";\nimport * as arr from \"../utils/arr.js\";\nimport * as domUtils from \"../utils/domUtils.js\";\nimport extend from \"../utils/extend.js\";\nimport is from \"../utils/is.js\";\nimport pExtend from \"../utils/pointerExtend.js\";\nimport * as pointerUtils from \"../utils/pointerUtils.js\";\n\nfunction install(scope) {\n  const targets = [];\n  const delegatedEvents = {};\n  const documents = [];\n  const eventsMethods = {\n    add,\n    remove,\n    addDelegate,\n    removeDelegate,\n    delegateListener,\n    delegateUseCapture,\n    delegatedEvents,\n    documents,\n    targets,\n    supportsOptions: false,\n    supportsPassive: false\n  }; // check if browser supports passive events and options arg\n\n  scope.document.createElement('div').addEventListener('test', null, {\n    get capture() {\n      return eventsMethods.supportsOptions = true;\n    },\n\n    get passive() {\n      return eventsMethods.supportsPassive = true;\n    }\n\n  });\n  scope.events = eventsMethods;\n\n  function add(eventTarget, type, listener, optionalArg) {\n    const options = getOptions(optionalArg);\n    let target = arr.find(targets, t => t.eventTarget === eventTarget);\n\n    if (!target) {\n      target = {\n        eventTarget,\n        events: {}\n      };\n      targets.push(target);\n    }\n\n    if (!target.events[type]) {\n      target.events[type] = [];\n    }\n\n    if (eventTarget.addEventListener && !arr.contains(target.events[type], listener)) {\n      eventTarget.addEventListener(type, listener, eventsMethods.supportsOptions ? options : options.capture);\n      target.events[type].push(listener);\n    }\n  }\n\n  function remove(eventTarget, type, listener, optionalArg) {\n    const options = getOptions(optionalArg);\n    const targetIndex = arr.findIndex(targets, t => t.eventTarget === eventTarget);\n    const target = targets[targetIndex];\n\n    if (!target || !target.events) {\n      return;\n    }\n\n    if (type === 'all') {\n      for (type in target.events) {\n        if (target.events.hasOwnProperty(type)) {\n          remove(eventTarget, type, 'all');\n        }\n      }\n\n      return;\n    }\n\n    let typeIsEmpty = false;\n    const typeListeners = target.events[type];\n\n    if (typeListeners) {\n      if (listener === 'all') {\n        for (let i = typeListeners.length - 1; i >= 0; i--) {\n          remove(eventTarget, type, typeListeners[i], options);\n        }\n\n        return;\n      } else {\n        for (let i = 0; i < typeListeners.length; i++) {\n          if (typeListeners[i] === listener) {\n            eventTarget.removeEventListener(type, listener, eventsMethods.supportsOptions ? options : options.capture);\n            typeListeners.splice(i, 1);\n\n            if (typeListeners.length === 0) {\n              delete target.events[type];\n              typeIsEmpty = true;\n            }\n\n            break;\n          }\n        }\n      }\n    }\n\n    if (typeIsEmpty && !Object.keys(target.events).length) {\n      targets.splice(targetIndex, 1);\n    }\n  }\n\n  function addDelegate(selector, context, type, listener, optionalArg) {\n    const options = getOptions(optionalArg);\n\n    if (!delegatedEvents[type]) {\n      delegatedEvents[type] = []; // add delegate listener functions\n\n      for (const doc of documents) {\n        add(doc, type, delegateListener);\n        add(doc, type, delegateUseCapture, true);\n      }\n    }\n\n    const delegates = delegatedEvents[type];\n    let delegate = arr.find(delegates, d => d.selector === selector && d.context === context);\n\n    if (!delegate) {\n      delegate = {\n        selector,\n        context,\n        listeners: []\n      };\n      delegates.push(delegate);\n    }\n\n    delegate.listeners.push([listener, options]);\n  }\n\n  function removeDelegate(selector, context, type, listener, optionalArg) {\n    const options = getOptions(optionalArg);\n    const delegates = delegatedEvents[type];\n    let matchFound = false;\n    let index;\n\n    if (!delegates) {\n      return;\n    } // count from last index of delegated to 0\n\n\n    for (index = delegates.length - 1; index >= 0; index--) {\n      const cur = delegates[index]; // look for matching selector and context Node\n\n      if (cur.selector === selector && cur.context === context) {\n        const {\n          listeners\n        } = cur; // each item of the listeners array is an array: [function, capture, passive]\n\n        for (let i = listeners.length - 1; i >= 0; i--) {\n          const [fn, {\n            capture,\n            passive\n          }] = listeners[i]; // check if the listener functions and capture and passive flags match\n\n          if (fn === listener && capture === options.capture && passive === options.passive) {\n            // remove the listener from the array of listeners\n            listeners.splice(i, 1); // if all listeners for this target have been removed\n            // remove the target from the delegates array\n\n            if (!listeners.length) {\n              delegates.splice(index, 1); // remove delegate function from context\n\n              remove(context, type, delegateListener);\n              remove(context, type, delegateUseCapture, true);\n            } // only remove one listener\n\n\n            matchFound = true;\n            break;\n          }\n        }\n\n        if (matchFound) {\n          break;\n        }\n      }\n    }\n  } // bound to the interactable context when a DOM event\n  // listener is added to a selector interactable\n\n\n  function delegateListener(event, optionalArg) {\n    const options = getOptions(optionalArg);\n    const fakeEvent = new FakeEvent(event);\n    const delegates = delegatedEvents[event.type];\n    const [eventTarget] = pointerUtils.getEventTargets(event);\n    let element = eventTarget; // climb up document tree looking for selector matches\n\n    while (is.element(element)) {\n      for (let i = 0; i < delegates.length; i++) {\n        const cur = delegates[i];\n        const {\n          selector,\n          context\n        } = cur;\n\n        if (domUtils.matchesSelector(element, selector) && domUtils.nodeContains(context, eventTarget) && domUtils.nodeContains(context, element)) {\n          const {\n            listeners\n          } = cur;\n          fakeEvent.currentTarget = element;\n\n          for (const [fn, {\n            capture,\n            passive\n          }] of listeners) {\n            if (capture === options.capture && passive === options.passive) {\n              fn(fakeEvent);\n            }\n          }\n        }\n      }\n\n      element = domUtils.parentNode(element);\n    }\n  }\n\n  function delegateUseCapture(event) {\n    return delegateListener.call(this, event, true);\n  } // for type inferrence\n\n\n  return eventsMethods;\n}\n\nclass FakeEvent {\n  constructor(originalEvent) {\n    this.currentTarget = void 0;\n    this.originalEvent = void 0;\n    this.type = void 0;\n    this.originalEvent = originalEvent; // duplicate the event so that currentTarget can be changed\n\n    pExtend(this, originalEvent);\n  }\n\n  preventOriginalDefault() {\n    this.originalEvent.preventDefault();\n  }\n\n  stopPropagation() {\n    this.originalEvent.stopPropagation();\n  }\n\n  stopImmediatePropagation() {\n    this.originalEvent.stopImmediatePropagation();\n  }\n\n}\n\nfunction getOptions(param) {\n  if (!is.object(param)) {\n    return {\n      capture: !!param,\n      passive: false\n    };\n  }\n\n  const options = extend({}, param);\n  options.capture = !!param.capture;\n  options.passive = !!param.passive;\n  return options;\n}\n\nexport default {\n  id: 'events',\n  install\n};\n//# sourceMappingURL=events.js.map","import { window } from \"./window.js\";\nexport function warnOnce(method, message) {\n  let warned = false;\n  return function () {\n    if (!warned) {\n      window.console.warn(message);\n      warned = true;\n    }\n\n    return method.apply(this, arguments);\n  };\n}\nexport function copyAction(dest, src) {\n  dest.name = src.name;\n  dest.axis = src.axis;\n  dest.edges = src.edges;\n  return dest;\n}\n//# sourceMappingURL=misc.js.map","/** @module interact */\nimport browser from \"../utils/browser.js\";\nimport * as domUtils from \"../utils/domUtils.js\";\nimport is from \"../utils/is.js\";\nimport * as pointerUtils from \"../utils/pointerUtils.js\";\nimport { warnOnce } from \"../utils/misc.js\";\nimport isNonNativeEvent from \"./isNonNativeEvent.js\";\nexport function createInteractStatic(scope) {\n  /**\n   * ```js\n   * interact('#draggable').draggable(true)\n   *\n   * var rectables = interact('rect')\n   * rectables\n   *   .gesturable(true)\n   *   .on('gesturemove', function (event) {\n   *       // ...\n   *   })\n   * ```\n   *\n   * The methods of this variable can be used to set elements as interactables\n   * and also to change various default settings.\n   *\n   * Calling it as a function and passing an element or a valid CSS selector\n   * string returns an Interactable object which has various methods to configure\n   * it.\n   *\n   * @global\n   *\n   * @param {Element | string} target The HTML or SVG Element to interact with\n   * or CSS selector\n   * @return {Interactable}\n   */\n  const interact = (target, options) => {\n    let interactable = scope.interactables.get(target, options);\n\n    if (!interactable) {\n      interactable = scope.interactables.new(target, options);\n      interactable.events.global = interact.globalEvents;\n    }\n\n    return interactable;\n  }; // expose the functions used to calculate multi-touch properties\n\n\n  interact.getPointerAverage = pointerUtils.pointerAverage;\n  interact.getTouchBBox = pointerUtils.touchBBox;\n  interact.getTouchDistance = pointerUtils.touchDistance;\n  interact.getTouchAngle = pointerUtils.touchAngle;\n  interact.getElementRect = domUtils.getElementRect;\n  interact.getElementClientRect = domUtils.getElementClientRect;\n  interact.matchesSelector = domUtils.matchesSelector;\n  interact.closest = domUtils.closest;\n  interact.globalEvents = {}; // eslint-disable-next-line no-undef\n\n  interact.version = \"1.10.2\";\n  interact.scope = scope;\n  /**\n  * Use a plugin\n  *\n  * @alias module:interact.use\n  *\n   */\n\n  interact.use = function (plugin, options) {\n    this.scope.usePlugin(plugin, options);\n    return this;\n  };\n  /**\n   * Check if an element or selector has been set with the {@link interact}\n   * function\n   *\n   * @alias module:interact.isSet\n   *\n   * @param {Target} target The Element or string being searched for\n   * @param {object} options\n   * @return {boolean} Indicates if the element or CSS selector was previously\n   * passed to interact\n   */\n\n\n  interact.isSet = function (target, options) {\n    return !!this.scope.interactables.get(target, options && options.context);\n  };\n  /**\n   * @deprecated\n   * Add a global listener for an InteractEvent or adds a DOM event to `document`\n   *\n   * @alias module:interact.on\n   *\n   * @param {string | array | object} type The types of events to listen for\n   * @param {function} listener The function event (s)\n   * @param {object | boolean} [options] object or useCapture flag for\n   * addEventListener\n   * @return {object} interact\n   */\n\n\n  interact.on = warnOnce(function on(type, listener, options) {\n    if (is.string(type) && type.search(' ') !== -1) {\n      type = type.trim().split(/ +/);\n    }\n\n    if (is.array(type)) {\n      for (const eventType of type) {\n        this.on(eventType, listener, options);\n      }\n\n      return this;\n    }\n\n    if (is.object(type)) {\n      for (const prop in type) {\n        this.on(prop, type[prop], listener);\n      }\n\n      return this;\n    } // if it is an InteractEvent type, add listener to globalEvents\n\n\n    if (isNonNativeEvent(type, this.scope.actions)) {\n      // if this type of event was never bound\n      if (!this.globalEvents[type]) {\n        this.globalEvents[type] = [listener];\n      } else {\n        this.globalEvents[type].push(listener);\n      }\n    } // If non InteractEvent type, addEventListener to document\n    else {\n        this.scope.events.add(this.scope.document, type, listener, {\n          options\n        });\n      }\n\n    return this;\n  }, 'The interact.on() method is being deprecated');\n  /**\n   * @deprecated\n   * Removes a global InteractEvent listener or DOM event from `document`\n   *\n   * @alias module:interact.off\n   *\n   * @param {string | array | object} type The types of events that were listened\n   * for\n   * @param {function} listener The listener function to be removed\n   * @param {object | boolean} options [options] object or useCapture flag for\n   * removeEventListener\n   * @return {object} interact\n   */\n\n  interact.off = warnOnce(function off(type, listener, options) {\n    if (is.string(type) && type.search(' ') !== -1) {\n      type = type.trim().split(/ +/);\n    }\n\n    if (is.array(type)) {\n      for (const eventType of type) {\n        this.off(eventType, listener, options);\n      }\n\n      return this;\n    }\n\n    if (is.object(type)) {\n      for (const prop in type) {\n        this.off(prop, type[prop], listener);\n      }\n\n      return this;\n    }\n\n    if (isNonNativeEvent(type, this.scope.actions)) {\n      let index;\n\n      if (type in this.globalEvents && (index = this.globalEvents[type].indexOf(listener)) !== -1) {\n        this.globalEvents[type].splice(index, 1);\n      }\n    } else {\n      this.scope.events.remove(this.scope.document, type, listener, options);\n    }\n\n    return this;\n  }, 'The interact.off() method is being deprecated');\n\n  interact.debug = function () {\n    return this.scope;\n  };\n  /**\n   * @alias module:interact.supportsTouch\n   *\n   * @return {boolean} Whether or not the browser supports touch input\n   */\n\n\n  interact.supportsTouch = function () {\n    return browser.supportsTouch;\n  };\n  /**\n   * @alias module:interact.supportsPointerEvent\n   *\n   * @return {boolean} Whether or not the browser supports PointerEvents\n   */\n\n\n  interact.supportsPointerEvent = function () {\n    return browser.supportsPointerEvent;\n  };\n  /**\n   * Cancels all interactions (end events are not fired)\n   *\n   * @alias module:interact.stop\n   *\n   * @return {object} interact\n   */\n\n\n  interact.stop = function () {\n    for (const interaction of this.scope.interactions.list) {\n      interaction.stop();\n    }\n\n    return this;\n  };\n  /**\n   * Returns or sets the distance the pointer must be moved before an action\n   * sequence occurs. This also affects tolerance for tap events.\n   *\n   * @alias module:interact.pointerMoveTolerance\n   *\n   * @param {number} [newValue] The movement from the start position must be greater than this value\n   * @return {interact | number}\n   */\n\n\n  interact.pointerMoveTolerance = function (newValue) {\n    if (is.number(newValue)) {\n      this.scope.interactions.pointerMoveTolerance = newValue;\n      return this;\n    }\n\n    return this.scope.interactions.pointerMoveTolerance;\n  };\n\n  interact.addDocument = function (doc, options) {\n    this.scope.addDocument(doc, options);\n  };\n\n  interact.removeDocument = function (doc) {\n    this.scope.removeDocument(doc);\n  };\n\n  return interact;\n}\n//# sourceMappingURL=interactStatic.js.map","export class PointerInfo {\n  constructor(id, pointer, event, downTime, downTarget) {\n    this.id = void 0;\n    this.pointer = void 0;\n    this.event = void 0;\n    this.downTime = void 0;\n    this.downTarget = void 0;\n    this.id = id;\n    this.pointer = pointer;\n    this.event = event;\n    this.downTime = downTime;\n    this.downTarget = downTarget;\n  }\n\n}\n//# sourceMappingURL=PointerInfo.js.map","import * as arr from \"../utils/arr.js\";\nimport extend from \"../utils/extend.js\";\nimport hypot from \"../utils/hypot.js\";\nimport { warnOnce, copyAction } from \"../utils/misc.js\";\nimport * as pointerUtils from \"../utils/pointerUtils.js\";\nimport * as rectUtils from \"../utils/rect.js\";\nimport { InteractEvent } from \"./InteractEvent.js\";\nimport { PointerInfo } from \"./PointerInfo.js\";\nexport let _ProxyValues;\n\n(function (_ProxyValues) {\n  _ProxyValues[\"interactable\"] = \"\";\n  _ProxyValues[\"element\"] = \"\";\n  _ProxyValues[\"prepared\"] = \"\";\n  _ProxyValues[\"pointerIsDown\"] = \"\";\n  _ProxyValues[\"pointerWasMoved\"] = \"\";\n  _ProxyValues[\"_proxy\"] = \"\";\n})(_ProxyValues || (_ProxyValues = {}));\n\nexport let _ProxyMethods;\n\n(function (_ProxyMethods) {\n  _ProxyMethods[\"start\"] = \"\";\n  _ProxyMethods[\"move\"] = \"\";\n  _ProxyMethods[\"end\"] = \"\";\n  _ProxyMethods[\"stop\"] = \"\";\n  _ProxyMethods[\"interacting\"] = \"\";\n})(_ProxyMethods || (_ProxyMethods = {}));\n\nlet idCounter = 0;\nexport class Interaction {\n  // current interactable being interacted with\n  // the target element of the interactable\n  // action that's ready to be fired on next move event\n  // keep track of added pointers\n  // pointerdown/mousedown/touchstart event\n  // previous action event\n\n  /** @internal */\n  get pointerMoveTolerance() {\n    return 1;\n  }\n  /**\n   * @alias Interaction.prototype.move\n   */\n\n\n  /** */\n  constructor({\n    pointerType,\n    scopeFire\n  }) {\n    this.interactable = null;\n    this.element = null;\n    this.rect = void 0;\n    this._rects = void 0;\n    this.edges = void 0;\n    this._scopeFire = void 0;\n    this.prepared = {\n      name: null,\n      axis: null,\n      edges: null\n    };\n    this.pointerType = void 0;\n    this.pointers = [];\n    this.downEvent = null;\n    this.downPointer = {};\n    this._latestPointer = {\n      pointer: null,\n      event: null,\n      eventTarget: null\n    };\n    this.prevEvent = null;\n    this.pointerIsDown = false;\n    this.pointerWasMoved = false;\n    this._interacting = false;\n    this._ending = false;\n    this._stopped = true;\n    this._proxy = null;\n    this.simulation = null;\n    this.doMove = warnOnce(function (signalArg) {\n      this.move(signalArg);\n    }, 'The interaction.doMove() method has been renamed to interaction.move()');\n    this.coords = {\n      // Starting InteractEvent pointer coordinates\n      start: pointerUtils.newCoords(),\n      // Previous native pointer move event coordinates\n      prev: pointerUtils.newCoords(),\n      // current native pointer move event coordinates\n      cur: pointerUtils.newCoords(),\n      // Change in coordinates and time of the pointer\n      delta: pointerUtils.newCoords(),\n      // pointer velocity\n      velocity: pointerUtils.newCoords()\n    };\n    this._id = idCounter++;\n    this._scopeFire = scopeFire;\n    this.pointerType = pointerType;\n    const that = this;\n    this._proxy = {};\n\n    for (const key in _ProxyValues) {\n      Object.defineProperty(this._proxy, key, {\n        get() {\n          return that[key];\n        }\n\n      });\n    }\n\n    for (const key in _ProxyMethods) {\n      Object.defineProperty(this._proxy, key, {\n        value: (...args) => that[key](...args)\n      });\n    }\n\n    this._scopeFire('interactions:new', {\n      interaction: this\n    });\n  }\n\n  pointerDown(pointer, event, eventTarget) {\n    const pointerIndex = this.updatePointer(pointer, event, eventTarget, true);\n    const pointerInfo = this.pointers[pointerIndex];\n\n    this._scopeFire('interactions:down', {\n      pointer,\n      event,\n      eventTarget,\n      pointerIndex,\n      pointerInfo,\n      type: 'down',\n      interaction: this\n    });\n  }\n  /**\n   * ```js\n   * interact(target)\n   *   .draggable({\n   *     // disable the default drag start by down->move\n   *     manualStart: true\n   *   })\n   *   // start dragging after the user holds the pointer down\n   *   .on('hold', function (event) {\n   *     var interaction = event.interaction\n   *\n   *     if (!interaction.interacting()) {\n   *       interaction.start({ name: 'drag' },\n   *                         event.interactable,\n   *                         event.currentTarget)\n   *     }\n   * })\n   * ```\n   *\n   * Start an action with the given Interactable and Element as tartgets. The\n   * action must be enabled for the target Interactable and an appropriate\n   * number of pointers must be held down - 1 for drag/resize, 2 for gesture.\n   *\n   * Use it with `interactable.<action>able({ manualStart: false })` to always\n   * [start actions manually](https://github.com/taye/interact.js/issues/114)\n   *\n   * @param {object} action   The action to be performed - drag, resize, etc.\n   * @param {Interactable} target  The Interactable to target\n   * @param {Element} element The DOM Element to target\n   * @return {Boolean} Whether the interaction was successfully started\n   */\n\n\n  start(action, interactable, element) {\n    if (this.interacting() || !this.pointerIsDown || this.pointers.length < (action.name === 'gesture' ? 2 : 1) || !interactable.options[action.name].enabled) {\n      return false;\n    }\n\n    copyAction(this.prepared, action);\n    this.interactable = interactable;\n    this.element = element;\n    this.rect = interactable.getRect(element);\n    this.edges = this.prepared.edges ? extend({}, this.prepared.edges) : {\n      left: true,\n      right: true,\n      top: true,\n      bottom: true\n    };\n    this._stopped = false;\n    this._interacting = this._doPhase({\n      interaction: this,\n      event: this.downEvent,\n      phase: 'start'\n    }) && !this._stopped;\n    return this._interacting;\n  }\n\n  pointerMove(pointer, event, eventTarget) {\n    if (!this.simulation && !(this.modification && this.modification.endResult)) {\n      this.updatePointer(pointer, event, eventTarget, false);\n    }\n\n    const duplicateMove = this.coords.cur.page.x === this.coords.prev.page.x && this.coords.cur.page.y === this.coords.prev.page.y && this.coords.cur.client.x === this.coords.prev.client.x && this.coords.cur.client.y === this.coords.prev.client.y;\n    let dx;\n    let dy; // register movement greater than pointerMoveTolerance\n\n    if (this.pointerIsDown && !this.pointerWasMoved) {\n      dx = this.coords.cur.client.x - this.coords.start.client.x;\n      dy = this.coords.cur.client.y - this.coords.start.client.y;\n      this.pointerWasMoved = hypot(dx, dy) > this.pointerMoveTolerance;\n    }\n\n    const pointerIndex = this.getPointerIndex(pointer);\n    const signalArg = {\n      pointer,\n      pointerIndex,\n      pointerInfo: this.pointers[pointerIndex],\n      event,\n      type: 'move',\n      eventTarget,\n      dx,\n      dy,\n      duplicate: duplicateMove,\n      interaction: this\n    };\n\n    if (!duplicateMove) {\n      // set pointer coordinate, time changes and velocity\n      pointerUtils.setCoordVelocity(this.coords.velocity, this.coords.delta);\n    }\n\n    this._scopeFire('interactions:move', signalArg);\n\n    if (!duplicateMove && !this.simulation) {\n      // if interacting, fire an 'action-move' signal etc\n      if (this.interacting()) {\n        signalArg.type = null;\n        this.move(signalArg);\n      }\n\n      if (this.pointerWasMoved) {\n        pointerUtils.copyCoords(this.coords.prev, this.coords.cur);\n      }\n    }\n  }\n  /**\n   * ```js\n   * interact(target)\n   *   .draggable(true)\n   *   .on('dragmove', function (event) {\n   *     if (someCondition) {\n   *       // change the snap settings\n   *       event.interactable.draggable({ snap: { targets: [] }})\n   *       // fire another move event with re-calculated snap\n   *       event.interaction.move()\n   *     }\n   *   })\n   * ```\n   *\n   * Force a move of the current action at the same coordinates. Useful if\n   * snap/restrict has been changed and you want a movement with the new\n   * settings.\n   */\n\n\n  move(signalArg) {\n    if (!signalArg || !signalArg.event) {\n      pointerUtils.setZeroCoords(this.coords.delta);\n    }\n\n    signalArg = extend({\n      pointer: this._latestPointer.pointer,\n      event: this._latestPointer.event,\n      eventTarget: this._latestPointer.eventTarget,\n      interaction: this\n    }, signalArg || {});\n    signalArg.phase = 'move';\n\n    this._doPhase(signalArg);\n  } // End interact move events and stop auto-scroll unless simulation is running\n\n\n  pointerUp(pointer, event, eventTarget, curEventTarget) {\n    let pointerIndex = this.getPointerIndex(pointer);\n\n    if (pointerIndex === -1) {\n      pointerIndex = this.updatePointer(pointer, event, eventTarget, false);\n    }\n\n    const type = /cancel$/i.test(event.type) ? 'cancel' : 'up';\n\n    this._scopeFire(`interactions:${type}`, {\n      pointer,\n      pointerIndex,\n      pointerInfo: this.pointers[pointerIndex],\n      event,\n      eventTarget,\n      type: type,\n      curEventTarget,\n      interaction: this\n    });\n\n    if (!this.simulation) {\n      this.end(event);\n    }\n\n    this.removePointer(pointer, event);\n  }\n\n  documentBlur(event) {\n    this.end(event);\n\n    this._scopeFire('interactions:blur', {\n      event,\n      type: 'blur',\n      interaction: this\n    });\n  }\n  /**\n   * ```js\n   * interact(target)\n   *   .draggable(true)\n   *   .on('move', function (event) {\n   *     if (event.pageX > 1000) {\n   *       // end the current action\n   *       event.interaction.end()\n   *       // stop all further listeners from being called\n   *       event.stopImmediatePropagation()\n   *     }\n   *   })\n   * ```\n   *\n   * @param {PointerEvent} [event]\n   */\n\n\n  end(event) {\n    this._ending = true;\n    event = event || this._latestPointer.event;\n    let endPhaseResult;\n\n    if (this.interacting()) {\n      endPhaseResult = this._doPhase({\n        event,\n        interaction: this,\n        phase: 'end'\n      });\n    }\n\n    this._ending = false;\n\n    if (endPhaseResult === true) {\n      this.stop();\n    }\n  }\n\n  currentAction() {\n    return this._interacting ? this.prepared.name : null;\n  }\n\n  interacting() {\n    return this._interacting;\n  }\n  /** */\n\n\n  stop() {\n    this._scopeFire('interactions:stop', {\n      interaction: this\n    });\n\n    this.interactable = this.element = null;\n    this._interacting = false;\n    this._stopped = true;\n    this.prepared.name = this.prevEvent = null;\n  }\n\n  getPointerIndex(pointer) {\n    const pointerId = pointerUtils.getPointerId(pointer); // mouse and pen interactions may have only one pointer\n\n    return this.pointerType === 'mouse' || this.pointerType === 'pen' ? this.pointers.length - 1 : arr.findIndex(this.pointers, curPointer => curPointer.id === pointerId);\n  }\n\n  getPointerInfo(pointer) {\n    return this.pointers[this.getPointerIndex(pointer)];\n  }\n\n  updatePointer(pointer, event, eventTarget, down) {\n    const id = pointerUtils.getPointerId(pointer);\n    let pointerIndex = this.getPointerIndex(pointer);\n    let pointerInfo = this.pointers[pointerIndex];\n    down = down === false ? false : down || /(down|start)$/i.test(event.type);\n\n    if (!pointerInfo) {\n      pointerInfo = new PointerInfo(id, pointer, event, null, null);\n      pointerIndex = this.pointers.length;\n      this.pointers.push(pointerInfo);\n    } else {\n      pointerInfo.pointer = pointer;\n    }\n\n    pointerUtils.setCoords(this.coords.cur, this.pointers.map(p => p.pointer), this._now());\n    pointerUtils.setCoordDeltas(this.coords.delta, this.coords.prev, this.coords.cur);\n\n    if (down) {\n      this.pointerIsDown = true;\n      pointerInfo.downTime = this.coords.cur.timeStamp;\n      pointerInfo.downTarget = eventTarget;\n      pointerUtils.pointerExtend(this.downPointer, pointer);\n\n      if (!this.interacting()) {\n        pointerUtils.copyCoords(this.coords.start, this.coords.cur);\n        pointerUtils.copyCoords(this.coords.prev, this.coords.cur);\n        this.downEvent = event;\n        this.pointerWasMoved = false;\n      }\n    }\n\n    this._updateLatestPointer(pointer, event, eventTarget);\n\n    this._scopeFire('interactions:update-pointer', {\n      pointer,\n      event,\n      eventTarget,\n      down,\n      pointerInfo,\n      pointerIndex,\n      interaction: this\n    });\n\n    return pointerIndex;\n  }\n\n  removePointer(pointer, event) {\n    const pointerIndex = this.getPointerIndex(pointer);\n\n    if (pointerIndex === -1) {\n      return;\n    }\n\n    const pointerInfo = this.pointers[pointerIndex];\n\n    this._scopeFire('interactions:remove-pointer', {\n      pointer,\n      event,\n      eventTarget: null,\n      pointerIndex,\n      pointerInfo,\n      interaction: this\n    });\n\n    this.pointers.splice(pointerIndex, 1);\n    this.pointerIsDown = false;\n  }\n\n  _updateLatestPointer(pointer, event, eventTarget) {\n    this._latestPointer.pointer = pointer;\n    this._latestPointer.event = event;\n    this._latestPointer.eventTarget = eventTarget;\n  }\n\n  destroy() {\n    this._latestPointer.pointer = null;\n    this._latestPointer.event = null;\n    this._latestPointer.eventTarget = null;\n  }\n\n  _createPreparedEvent(event, phase, preEnd, type) {\n    return new InteractEvent(this, event, this.prepared.name, phase, this.element, preEnd, type);\n  }\n\n  _fireEvent(iEvent) {\n    this.interactable.fire(iEvent);\n\n    if (!this.prevEvent || iEvent.timeStamp >= this.prevEvent.timeStamp) {\n      this.prevEvent = iEvent;\n    }\n  }\n\n  _doPhase(signalArg) {\n    const {\n      event,\n      phase,\n      preEnd,\n      type\n    } = signalArg;\n    const {\n      rect\n    } = this;\n\n    if (rect && phase === 'move') {\n      // update the rect changes due to pointer move\n      rectUtils.addEdges(this.edges, rect, this.coords.delta[this.interactable.options.deltaSource]);\n      rect.width = rect.right - rect.left;\n      rect.height = rect.bottom - rect.top;\n    }\n\n    const beforeResult = this._scopeFire(`interactions:before-action-${phase}`, signalArg);\n\n    if (beforeResult === false) {\n      return false;\n    }\n\n    const iEvent = signalArg.iEvent = this._createPreparedEvent(event, phase, preEnd, type);\n\n    this._scopeFire(`interactions:action-${phase}`, signalArg);\n\n    if (phase === 'start') {\n      this.prevEvent = iEvent;\n    }\n\n    this._fireEvent(iEvent);\n\n    this._scopeFire(`interactions:after-action-${phase}`, signalArg);\n\n    return true;\n  }\n\n  _now() {\n    return Date.now();\n  }\n\n}\nexport default Interaction;\nexport { PointerInfo };\n//# sourceMappingURL=Interaction.js.map","import { Interactable } from \"./Interactable.js\";\nimport { matchesSelector, nodeContains } from \"../utils/domUtils.js\";\nimport is from \"../utils/is.js\";\nimport { getWindow } from \"../utils/window.js\";\n\nfunction preventDefault(newValue) {\n  if (/^(always|never|auto)$/.test(newValue)) {\n    this.options.preventDefault = newValue;\n    return this;\n  }\n\n  if (is.bool(newValue)) {\n    this.options.preventDefault = newValue ? 'always' : 'never';\n    return this;\n  }\n\n  return this.options.preventDefault;\n}\n\nfunction checkAndPreventDefault(interactable, scope, event) {\n  const setting = interactable.options.preventDefault;\n\n  if (setting === 'never') {\n    return;\n  }\n\n  if (setting === 'always') {\n    event.preventDefault();\n    return;\n  } // setting === 'auto'\n  // if the browser supports passive event listeners and isn't running on iOS,\n  // don't preventDefault of touch{start,move} events. CSS touch-action and\n  // user-select should be used instead of calling event.preventDefault().\n\n\n  if (scope.events.supportsPassive && /^touch(start|move)$/.test(event.type)) {\n    const doc = getWindow(event.target).document;\n    const docOptions = scope.getDocOptions(doc);\n\n    if (!(docOptions && docOptions.events) || docOptions.events.passive !== false) {\n      return;\n    }\n  } // don't preventDefault of pointerdown events\n\n\n  if (/^(mouse|pointer|touch)*(down|start)/i.test(event.type)) {\n    return;\n  } // don't preventDefault on editable elements\n\n\n  if (is.element(event.target) && matchesSelector(event.target, 'input,select,textarea,[contenteditable=true],[contenteditable=true] *')) {\n    return;\n  }\n\n  event.preventDefault();\n}\n\nfunction onInteractionEvent({\n  interaction,\n  event\n}) {\n  if (interaction.interactable) {\n    interaction.interactable.checkAndPreventDefault(event);\n  }\n}\n\nexport function install(scope) {\n  /** @lends Interactable */\n  const {\n    Interactable\n  } = scope;\n  /**\n   * Returns or sets whether to prevent the browser's default behaviour in\n   * response to pointer events. Can be set to:\n   *  - `'always'` to always prevent\n   *  - `'never'` to never prevent\n   *  - `'auto'` to let interact.js try to determine what would be best\n   *\n   * @param {string} [newValue] `'always'`, `'never'` or `'auto'`\n   * @return {string | Interactable} The current setting or this Interactable\n   */\n\n  Interactable.prototype.preventDefault = preventDefault;\n\n  Interactable.prototype.checkAndPreventDefault = function (event) {\n    return checkAndPreventDefault(this, scope, event);\n  }; // prevent native HTML5 drag on interact.js target elements\n\n\n  scope.interactions.docEvents.push({\n    type: 'dragstart',\n\n    listener(event) {\n      for (const interaction of scope.interactions.list) {\n        if (interaction.element && (interaction.element === event.target || nodeContains(interaction.element, event.target))) {\n          interaction.interactable.checkAndPreventDefault(event);\n          return;\n        }\n      }\n    }\n\n  });\n}\nexport default {\n  id: 'core/interactablePreventDefault',\n  install,\n  listeners: ['down', 'move', 'up', 'cancel'].reduce((acc, eventType) => {\n    acc[`interactions:${eventType}`] = onInteractionEvent;\n    return acc;\n  }, {})\n};\n//# sourceMappingURL=interactablePreventDefault.js.map","import * as dom from \"../utils/domUtils.js\";\nconst finder = {\n  methodOrder: ['simulationResume', 'mouseOrPen', 'hasPointer', 'idle'],\n\n  search(details) {\n    for (const method of finder.methodOrder) {\n      const interaction = finder[method](details);\n\n      if (interaction) {\n        return interaction;\n      }\n    }\n\n    return null;\n  },\n\n  // try to resume simulation with a new pointer\n  simulationResume({\n    pointerType,\n    eventType,\n    eventTarget,\n    scope\n  }) {\n    if (!/down|start/i.test(eventType)) {\n      return null;\n    }\n\n    for (const interaction of scope.interactions.list) {\n      let element = eventTarget;\n\n      if (interaction.simulation && interaction.simulation.allowResume && interaction.pointerType === pointerType) {\n        while (element) {\n          // if the element is the interaction element\n          if (element === interaction.element) {\n            return interaction;\n          }\n\n          element = dom.parentNode(element);\n        }\n      }\n    }\n\n    return null;\n  },\n\n  // if it's a mouse or pen interaction\n  mouseOrPen({\n    pointerId,\n    pointerType,\n    eventType,\n    scope\n  }) {\n    if (pointerType !== 'mouse' && pointerType !== 'pen') {\n      return null;\n    }\n\n    let firstNonActive;\n\n    for (const interaction of scope.interactions.list) {\n      if (interaction.pointerType === pointerType) {\n        // if it's a down event, skip interactions with running simulations\n        if (interaction.simulation && !hasPointerId(interaction, pointerId)) {\n          continue;\n        } // if the interaction is active, return it immediately\n\n\n        if (interaction.interacting()) {\n          return interaction;\n        } // otherwise save it and look for another active interaction\n        else if (!firstNonActive) {\n            firstNonActive = interaction;\n          }\n      }\n    } // if no active mouse interaction was found use the first inactive mouse\n    // interaction\n\n\n    if (firstNonActive) {\n      return firstNonActive;\n    } // find any mouse or pen interaction.\n    // ignore the interaction if the eventType is a *down, and a simulation\n    // is active\n\n\n    for (const interaction of scope.interactions.list) {\n      if (interaction.pointerType === pointerType && !(/down/i.test(eventType) && interaction.simulation)) {\n        return interaction;\n      }\n    }\n\n    return null;\n  },\n\n  // get interaction that has this pointer\n  hasPointer({\n    pointerId,\n    scope\n  }) {\n    for (const interaction of scope.interactions.list) {\n      if (hasPointerId(interaction, pointerId)) {\n        return interaction;\n      }\n    }\n\n    return null;\n  },\n\n  // get first idle interaction with a matching pointerType\n  idle({\n    pointerType,\n    scope\n  }) {\n    for (const interaction of scope.interactions.list) {\n      // if there's already a pointer held down\n      if (interaction.pointers.length === 1) {\n        const target = interaction.interactable; // don't add this pointer if there is a target interactable and it\n        // isn't gesturable\n\n        if (target && !(target.options.gesture && target.options.gesture.enabled)) {\n          continue;\n        }\n      } // maximum of 2 pointers per interaction\n      else if (interaction.pointers.length >= 2) {\n          continue;\n        }\n\n      if (!interaction.interacting() && pointerType === interaction.pointerType) {\n        return interaction;\n      }\n    }\n\n    return null;\n  }\n\n};\n\nfunction hasPointerId(interaction, pointerId) {\n  return interaction.pointers.some(({\n    id\n  }) => id === pointerId);\n}\n\nexport default finder;\n//# sourceMappingURL=interactionFinder.js.map","import { Scope, SignalArgs } from \"./scope.js\";\nimport browser from \"../utils/browser.js\";\nimport domObjects from \"../utils/domObjects.js\";\nimport { nodeContains } from \"../utils/domUtils.js\";\nimport * as pointerUtils from \"../utils/pointerUtils.js\";\nimport InteractionBase from \"./Interaction.js\";\nimport interactablePreventDefault from \"./interactablePreventDefault.js\";\nimport finder from \"./interactionFinder.js\";\nconst methodNames = ['pointerDown', 'pointerMove', 'pointerUp', 'updatePointer', 'removePointer', 'windowBlur'];\n\nfunction install(scope) {\n  const listeners = {};\n\n  for (const method of methodNames) {\n    listeners[method] = doOnInteractions(method, scope);\n  }\n\n  const pEventTypes = browser.pEventTypes;\n  let docEvents;\n\n  if (domObjects.PointerEvent) {\n    docEvents = [{\n      type: pEventTypes.down,\n      listener: releasePointersOnRemovedEls\n    }, {\n      type: pEventTypes.down,\n      listener: listeners.pointerDown\n    }, {\n      type: pEventTypes.move,\n      listener: listeners.pointerMove\n    }, {\n      type: pEventTypes.up,\n      listener: listeners.pointerUp\n    }, {\n      type: pEventTypes.cancel,\n      listener: listeners.pointerUp\n    }];\n  } else {\n    docEvents = [{\n      type: 'mousedown',\n      listener: listeners.pointerDown\n    }, {\n      type: 'mousemove',\n      listener: listeners.pointerMove\n    }, {\n      type: 'mouseup',\n      listener: listeners.pointerUp\n    }, {\n      type: 'touchstart',\n      listener: releasePointersOnRemovedEls\n    }, {\n      type: 'touchstart',\n      listener: listeners.pointerDown\n    }, {\n      type: 'touchmove',\n      listener: listeners.pointerMove\n    }, {\n      type: 'touchend',\n      listener: listeners.pointerUp\n    }, {\n      type: 'touchcancel',\n      listener: listeners.pointerUp\n    }];\n  }\n\n  docEvents.push({\n    type: 'blur',\n\n    listener(event) {\n      for (const interaction of scope.interactions.list) {\n        interaction.documentBlur(event);\n      }\n    }\n\n  }); // for ignoring browser's simulated mouse events\n\n  scope.prevTouchTime = 0;\n  scope.Interaction = class extends InteractionBase {\n    get pointerMoveTolerance() {\n      return scope.interactions.pointerMoveTolerance;\n    }\n\n    set pointerMoveTolerance(value) {\n      scope.interactions.pointerMoveTolerance = value;\n    }\n\n    _now() {\n      return scope.now();\n    }\n\n  };\n  scope.interactions = {\n    // all active and idle interactions\n    list: [],\n\n    new(options) {\n      options.scopeFire = (name, arg) => scope.fire(name, arg);\n\n      const interaction = new scope.Interaction(options);\n      scope.interactions.list.push(interaction);\n      return interaction;\n    },\n\n    listeners,\n    docEvents,\n    pointerMoveTolerance: 1\n  };\n\n  function releasePointersOnRemovedEls() {\n    // for all inactive touch interactions with pointers down\n    for (const interaction of scope.interactions.list) {\n      if (!interaction.pointerIsDown || interaction.pointerType !== 'touch' || interaction._interacting) {\n        continue;\n      } // if a pointer is down on an element that is no longer in the DOM tree\n\n\n      for (const pointer of interaction.pointers) {\n        if (!scope.documents.some(({\n          doc\n        }) => nodeContains(doc, pointer.downTarget))) {\n          // remove the pointer from the interaction\n          interaction.removePointer(pointer.pointer, pointer.event);\n        }\n      }\n    }\n  }\n\n  scope.usePlugin(interactablePreventDefault);\n}\n\nfunction doOnInteractions(method, scope) {\n  return function (event) {\n    const interactions = scope.interactions.list;\n    const pointerType = pointerUtils.getPointerType(event);\n    const [eventTarget, curEventTarget] = pointerUtils.getEventTargets(event);\n    const matches = []; // [ [pointer, interaction], ...]\n\n    if (/^touch/.test(event.type)) {\n      scope.prevTouchTime = scope.now(); // @ts-expect-error\n\n      for (const changedTouch of event.changedTouches) {\n        const pointer = changedTouch;\n        const pointerId = pointerUtils.getPointerId(pointer);\n        const searchDetails = {\n          pointer,\n          pointerId,\n          pointerType,\n          eventType: event.type,\n          eventTarget,\n          curEventTarget,\n          scope\n        };\n        const interaction = getInteraction(searchDetails);\n        matches.push([searchDetails.pointer, searchDetails.eventTarget, searchDetails.curEventTarget, interaction]);\n      }\n    } else {\n      let invalidPointer = false;\n\n      if (!browser.supportsPointerEvent && /mouse/.test(event.type)) {\n        // ignore mouse events while touch interactions are active\n        for (let i = 0; i < interactions.length && !invalidPointer; i++) {\n          invalidPointer = interactions[i].pointerType !== 'mouse' && interactions[i].pointerIsDown;\n        } // try to ignore mouse events that are simulated by the browser\n        // after a touch event\n\n\n        invalidPointer = invalidPointer || scope.now() - scope.prevTouchTime < 500 || // on iOS and Firefox Mobile, MouseEvent.timeStamp is zero if simulated\n        event.timeStamp === 0;\n      }\n\n      if (!invalidPointer) {\n        const searchDetails = {\n          pointer: event,\n          pointerId: pointerUtils.getPointerId(event),\n          pointerType,\n          eventType: event.type,\n          curEventTarget,\n          eventTarget,\n          scope\n        };\n        const interaction = getInteraction(searchDetails);\n        matches.push([searchDetails.pointer, searchDetails.eventTarget, searchDetails.curEventTarget, interaction]);\n      }\n    } // eslint-disable-next-line no-shadow\n\n\n    for (const [pointer, eventTarget, curEventTarget, interaction] of matches) {\n      interaction[method](pointer, event, eventTarget, curEventTarget);\n    }\n  };\n}\n\nfunction getInteraction(searchDetails) {\n  const {\n    pointerType,\n    scope\n  } = searchDetails;\n  const foundInteraction = finder.search(searchDetails);\n  const signalArg = {\n    interaction: foundInteraction,\n    searchDetails\n  };\n  scope.fire('interactions:find', signalArg);\n  return signalArg.interaction || scope.interactions.new({\n    pointerType\n  });\n}\n\nfunction onDocSignal({\n  doc,\n  scope,\n  options\n}, eventMethodName) {\n  const {\n    interactions: {\n      docEvents\n    },\n    events\n  } = scope;\n  const eventMethod = events[eventMethodName];\n\n  if (scope.browser.isIOS && !options.events) {\n    options.events = {\n      passive: false\n    };\n  } // delegate event listener\n\n\n  for (const eventType in events.delegatedEvents) {\n    eventMethod(doc, eventType, events.delegateListener);\n    eventMethod(doc, eventType, events.delegateUseCapture, true);\n  }\n\n  const eventOptions = options && options.events;\n\n  for (const {\n    type,\n    listener\n  } of docEvents) {\n    eventMethod(doc, type, listener, eventOptions);\n  }\n}\n\nconst interactions = {\n  id: 'core/interactions',\n  install,\n  listeners: {\n    'scope:add-document': arg => onDocSignal(arg, 'add'),\n    'scope:remove-document': arg => onDocSignal(arg, 'remove'),\n    'interactable:unset': ({\n      interactable\n    }, scope) => {\n      // Stop and destroy related interactions when an Interactable is unset\n      for (let i = scope.interactions.list.length - 1; i >= 0; i--) {\n        const interaction = scope.interactions.list[i];\n\n        if (interaction.interactable !== interactable) {\n          continue;\n        }\n\n        interaction.stop();\n        scope.fire('interactions:destroy', {\n          interaction\n        });\n        interaction.destroy();\n\n        if (scope.interactions.list.length > 2) {\n          scope.interactions.list.splice(i, 1);\n        }\n      }\n    }\n  },\n  onDocSignal,\n  doOnInteractions,\n  methodNames\n};\nexport default interactions;\n//# sourceMappingURL=interactions.js.map","import browser from \"../utils/browser.js\";\nimport clone from \"../utils/clone.js\";\nimport domObjects from \"../utils/domObjects.js\";\nimport extend from \"../utils/extend.js\";\nimport raf from \"../utils/raf.js\";\nimport * as win from \"../utils/window.js\";\nimport { Eventable } from \"./Eventable.js\";\nimport { InteractEvent } from \"./InteractEvent.js\";\nimport { Interactable as InteractableBase } from \"./Interactable.js\";\nimport { InteractableSet } from \"./InteractableSet.js\";\nimport { defaults } from \"./defaultOptions.js\";\nimport events from \"./events.js\";\nimport { createInteractStatic } from \"./interactStatic.js\";\nimport interactions from \"./interactions.js\";\nexport class Scope {\n  // main window\n  // main document\n  // main window\n  // all documents being listened to\n  constructor() {\n    this.id = `__interact_scope_${Math.floor(Math.random() * 100)}`;\n    this.isInitialized = false;\n    this.listenerMaps = [];\n    this.browser = browser;\n    this.defaults = clone(defaults);\n    this.Eventable = Eventable;\n    this.actions = {\n      map: {},\n      phases: {\n        start: true,\n        move: true,\n        end: true\n      },\n      methodDict: {},\n      phaselessTypes: {}\n    };\n    this.interactStatic = createInteractStatic(this);\n    this.InteractEvent = InteractEvent;\n    this.Interactable = void 0;\n    this.interactables = new InteractableSet(this);\n    this._win = void 0;\n    this.document = void 0;\n    this.window = void 0;\n    this.documents = [];\n    this._plugins = {\n      list: [],\n      map: {}\n    };\n\n    this.onWindowUnload = event => this.removeDocument(event.target);\n\n    const scope = this;\n    this.Interactable = class extends InteractableBase {\n      get _defaults() {\n        return scope.defaults;\n      }\n\n      set(options) {\n        super.set(options);\n        scope.fire('interactable:set', {\n          options,\n          interactable: this\n        });\n        return this;\n      }\n\n      unset() {\n        super.unset();\n        scope.interactables.list.splice(scope.interactables.list.indexOf(this), 1);\n        scope.fire('interactable:unset', {\n          interactable: this\n        });\n      }\n\n    };\n  }\n\n  addListeners(map, id) {\n    this.listenerMaps.push({\n      id,\n      map\n    });\n  }\n\n  fire(name, arg) {\n    for (const {\n      map: {\n        [name]: listener\n      }\n    } of this.listenerMaps) {\n      if (!!listener && listener(arg, this, name) === false) {\n        return false;\n      }\n    }\n  }\n\n  init(window) {\n    return this.isInitialized ? this : initScope(this, window);\n  }\n\n  pluginIsInstalled(plugin) {\n    return this._plugins.map[plugin.id] || this._plugins.list.indexOf(plugin) !== -1;\n  }\n\n  usePlugin(plugin, options) {\n    if (!this.isInitialized) {\n      return this;\n    }\n\n    if (this.pluginIsInstalled(plugin)) {\n      return this;\n    }\n\n    if (plugin.id) {\n      this._plugins.map[plugin.id] = plugin;\n    }\n\n    this._plugins.list.push(plugin);\n\n    if (plugin.install) {\n      plugin.install(this, options);\n    }\n\n    if (plugin.listeners && plugin.before) {\n      let index = 0;\n      const len = this.listenerMaps.length;\n      const before = plugin.before.reduce((acc, id) => {\n        acc[id] = true;\n        acc[pluginIdRoot(id)] = true;\n        return acc;\n      }, {});\n\n      for (; index < len; index++) {\n        const otherId = this.listenerMaps[index].id;\n\n        if (before[otherId] || before[pluginIdRoot(otherId)]) {\n          break;\n        }\n      }\n\n      this.listenerMaps.splice(index, 0, {\n        id: plugin.id,\n        map: plugin.listeners\n      });\n    } else if (plugin.listeners) {\n      this.listenerMaps.push({\n        id: plugin.id,\n        map: plugin.listeners\n      });\n    }\n\n    return this;\n  }\n\n  addDocument(doc, options) {\n    // do nothing if document is already known\n    if (this.getDocIndex(doc) !== -1) {\n      return false;\n    }\n\n    const window = win.getWindow(doc);\n    options = options ? extend({}, options) : {};\n    this.documents.push({\n      doc,\n      options\n    });\n    this.events.documents.push(doc); // don't add an unload event for the main document\n    // so that the page may be cached in browser history\n\n    if (doc !== this.document) {\n      this.events.add(window, 'unload', this.onWindowUnload);\n    }\n\n    this.fire('scope:add-document', {\n      doc,\n      window,\n      scope: this,\n      options\n    });\n  }\n\n  removeDocument(doc) {\n    const index = this.getDocIndex(doc);\n    const window = win.getWindow(doc);\n    const options = this.documents[index].options;\n    this.events.remove(window, 'unload', this.onWindowUnload);\n    this.documents.splice(index, 1);\n    this.events.documents.splice(index, 1);\n    this.fire('scope:remove-document', {\n      doc,\n      window,\n      scope: this,\n      options\n    });\n  }\n\n  getDocIndex(doc) {\n    for (let i = 0; i < this.documents.length; i++) {\n      if (this.documents[i].doc === doc) {\n        return i;\n      }\n    }\n\n    return -1;\n  }\n\n  getDocOptions(doc) {\n    const docIndex = this.getDocIndex(doc);\n    return docIndex === -1 ? null : this.documents[docIndex].options;\n  }\n\n  now() {\n    return (this.window.Date || Date).now();\n  }\n\n}\nexport function initScope(scope, window) {\n  scope.isInitialized = true;\n  win.init(window);\n  domObjects.init(window);\n  browser.init(window);\n  raf.init(window);\n  scope.window = window;\n  scope.document = window.document;\n  scope.usePlugin(interactions);\n  scope.usePlugin(events);\n  return scope;\n}\n\nfunction pluginIdRoot(id) {\n  return id && id.replace(/\\/.*$/, '');\n}\n//# sourceMappingURL=scope.js.map","import { Scope } from \"../core/scope.js\";\nconst scope = new Scope();\nconst interact = scope.interactStatic;\nexport default interact;\nexport const init = win => scope.init(win);\n\nif (typeof window === 'object' && !!window) {\n  init(window);\n}\n//# sourceMappingURL=index.js.map","import { Interactable } from \"../core/Interactable.js\";\nimport is from \"../utils/is.js\";\nimport { warnOnce } from \"../utils/misc.js\";\n\nfunction install(scope) {\n  const {\n    /** @lends Interactable */\n    Interactable // tslint:disable-line no-shadowed-variable\n\n  } = scope;\n\n  Interactable.prototype.getAction = function getAction(pointer, event, interaction, element) {\n    const action = defaultActionChecker(this, event, interaction, element, scope);\n\n    if (this.options.actionChecker) {\n      return this.options.actionChecker(pointer, event, action, this, element, interaction);\n    }\n\n    return action;\n  };\n  /**\n   * If the target of the `mousedown`, `pointerdown` or `touchstart` event or any\n   * of it's parents match the given CSS selector or Element, no\n   * drag/resize/gesture is started.\n   *\n   * @deprecated\n   * Don't use this method. Instead set the `ignoreFrom` option for each action\n   * or for `pointerEvents`\n   *\n   * ```js\n   * interact(targett)\n   *   .draggable({\n   *     ignoreFrom: 'input, textarea, a[href]'',\n   *   })\n   *   .pointerEvents({\n   *     ignoreFrom: '[no-pointer]',\n   *   })\n   * ```\n   *\n   * @param {string | Element | null} [newValue] a CSS selector string, an\n   * Element or `null` to not ignore any elements\n   * @return {string | Element | object} The current ignoreFrom value or this\n   * Interactable\n   */\n\n\n  Interactable.prototype.ignoreFrom = warnOnce(function (newValue) {\n    return this._backCompatOption('ignoreFrom', newValue);\n  }, 'Interactable.ignoreFrom() has been deprecated. Use Interactble.draggable({ignoreFrom: newValue}).');\n  /**\n   *\n   * A drag/resize/gesture is started only If the target of the `mousedown`,\n   * `pointerdown` or `touchstart` event or any of it's parents match the given\n   * CSS selector or Element.\n   *\n   * @deprecated\n   * Don't use this method. Instead set the `allowFrom` option for each action\n   * or for `pointerEvents`\n   *\n   * ```js\n   * interact(targett)\n   *   .resizable({\n   *     allowFrom: '.resize-handle',\n   *   .pointerEvents({\n   *     allowFrom: '.handle',,\n   *   })\n   * ```\n   *\n   * @param {string | Element | null} [newValue] a CSS selector string, an\n   * Element or `null` to allow from any element\n   * @return {string | Element | object} The current allowFrom value or this\n   * Interactable\n   */\n\n  Interactable.prototype.allowFrom = warnOnce(function (newValue) {\n    return this._backCompatOption('allowFrom', newValue);\n  }, 'Interactable.allowFrom() has been deprecated. Use Interactble.draggable({allowFrom: newValue}).');\n  /**\n   * ```js\n   * interact('.resize-drag')\n   *   .resizable(true)\n   *   .draggable(true)\n   *   .actionChecker(function (pointer, event, action, interactable, element, interaction) {\n   *\n   *     if (interact.matchesSelector(event.target, '.drag-handle')) {\n   *       // force drag with handle target\n   *       action.name = drag\n   *     }\n   *     else {\n   *       // resize from the top and right edges\n   *       action.name  = 'resize'\n   *       action.edges = { top: true, right: true }\n   *     }\n   *\n   *     return action\n   * })\n   * ```\n   *\n   * Returns or sets the function used to check action to be performed on\n   * pointerDown\n   *\n   * @param {function | null} [checker] A function which takes a pointer event,\n   * defaultAction string, interactable, element and interaction as parameters\n   * and returns an object with name property 'drag' 'resize' or 'gesture' and\n   * optionally an `edges` object with boolean 'top', 'left', 'bottom' and right\n   * props.\n   * @return {Function | Interactable} The checker function or this Interactable\n   */\n\n  Interactable.prototype.actionChecker = actionChecker;\n  /**\n   * Returns or sets whether the the cursor should be changed depending on the\n   * action that would be performed if the mouse were pressed and dragged.\n   *\n   * @param {boolean} [newValue]\n   * @return {boolean | Interactable} The current setting or this Interactable\n   */\n\n  Interactable.prototype.styleCursor = styleCursor;\n}\n\nfunction defaultActionChecker(interactable, event, interaction, element, scope) {\n  const rect = interactable.getRect(element);\n  const buttons = event.buttons || {\n    0: 1,\n    1: 4,\n    3: 8,\n    4: 16\n  }[event.button];\n  const arg = {\n    action: null,\n    interactable,\n    interaction,\n    element,\n    rect,\n    buttons\n  };\n  scope.fire('auto-start:check', arg);\n  return arg.action;\n}\n\nfunction styleCursor(newValue) {\n  if (is.bool(newValue)) {\n    this.options.styleCursor = newValue;\n    return this;\n  }\n\n  if (newValue === null) {\n    delete this.options.styleCursor;\n    return this;\n  }\n\n  return this.options.styleCursor;\n}\n\nfunction actionChecker(checker) {\n  if (is.func(checker)) {\n    this.options.actionChecker = checker;\n    return this;\n  }\n\n  if (checker === null) {\n    delete this.options.actionChecker;\n    return this;\n  }\n\n  return this.options.actionChecker;\n}\n\nexport default {\n  id: 'auto-start/interactableMethods',\n  install\n};\n//# sourceMappingURL=InteractableMethods.js.map","import { Scope, SignalArgs } from \"../core/scope.js\";\nimport * as domUtils from \"../utils/domUtils.js\";\nimport extend from \"../utils/extend.js\";\nimport is from \"../utils/is.js\";\nimport { copyAction } from \"../utils/misc.js\";\nimport InteractableMethods from \"./InteractableMethods.js\";\n\nfunction install(scope) {\n  const {\n    interactStatic: interact,\n    defaults\n  } = scope;\n  scope.usePlugin(InteractableMethods);\n  defaults.base.actionChecker = null;\n  defaults.base.styleCursor = true;\n  extend(defaults.perAction, {\n    manualStart: false,\n    max: Infinity,\n    maxPerElement: 1,\n    allowFrom: null,\n    ignoreFrom: null,\n    // only allow left button by default\n    // see https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/buttons#Return_value\n    mouseButtons: 1\n  });\n  /**\n   * Returns or sets the maximum number of concurrent interactions allowed.  By\n   * default only 1 interaction is allowed at a time (for backwards\n   * compatibility). To allow multiple interactions on the same Interactables and\n   * elements, you need to enable it in the draggable, resizable and gesturable\n   * `'max'` and `'maxPerElement'` options.\n   *\n   * @alias module:interact.maxInteractions\n   *\n   * @param {number} [newValue] Any number. newValue <= 0 means no interactions.\n   */\n\n  interact.maxInteractions = newValue => maxInteractions(newValue, scope);\n\n  scope.autoStart = {\n    // Allow this many interactions to happen simultaneously\n    maxInteractions: Infinity,\n    withinInteractionLimit,\n    cursorElement: null\n  };\n}\n\nfunction prepareOnDown({\n  interaction,\n  pointer,\n  event,\n  eventTarget\n}, scope) {\n  if (interaction.interacting()) {\n    return;\n  }\n\n  const actionInfo = getActionInfo(interaction, pointer, event, eventTarget, scope);\n  prepare(interaction, actionInfo, scope);\n}\n\nfunction prepareOnMove({\n  interaction,\n  pointer,\n  event,\n  eventTarget\n}, scope) {\n  if (interaction.pointerType !== 'mouse' || interaction.pointerIsDown || interaction.interacting()) {\n    return;\n  }\n\n  const actionInfo = getActionInfo(interaction, pointer, event, eventTarget, scope);\n  prepare(interaction, actionInfo, scope);\n}\n\nfunction startOnMove(arg, scope) {\n  const {\n    interaction\n  } = arg;\n\n  if (!interaction.pointerIsDown || interaction.interacting() || !interaction.pointerWasMoved || !interaction.prepared.name) {\n    return;\n  }\n\n  scope.fire('autoStart:before-start', arg);\n  const {\n    interactable\n  } = interaction;\n  const actionName = interaction.prepared.name;\n\n  if (actionName && interactable) {\n    // check manualStart and interaction limit\n    if (interactable.options[actionName].manualStart || !withinInteractionLimit(interactable, interaction.element, interaction.prepared, scope)) {\n      interaction.stop();\n    } else {\n      interaction.start(interaction.prepared, interactable, interaction.element);\n      setInteractionCursor(interaction, scope);\n    }\n  }\n}\n\nfunction clearCursorOnStop({\n  interaction\n}, scope) {\n  const {\n    interactable\n  } = interaction;\n\n  if (interactable && interactable.options.styleCursor) {\n    setCursor(interaction.element, '', scope);\n  }\n} // Check if the current interactable supports the action.\n// If so, return the validated action. Otherwise, return null\n\n\nfunction validateAction(action, interactable, element, eventTarget, scope) {\n  if (interactable.testIgnoreAllow(interactable.options[action.name], element, eventTarget) && interactable.options[action.name].enabled && withinInteractionLimit(interactable, element, action, scope)) {\n    return action;\n  }\n\n  return null;\n}\n\nfunction validateMatches(interaction, pointer, event, matches, matchElements, eventTarget, scope) {\n  for (let i = 0, len = matches.length; i < len; i++) {\n    const match = matches[i];\n    const matchElement = matchElements[i];\n    const matchAction = match.getAction(pointer, event, interaction, matchElement);\n\n    if (!matchAction) {\n      continue;\n    }\n\n    const action = validateAction(matchAction, match, matchElement, eventTarget, scope);\n\n    if (action) {\n      return {\n        action,\n        interactable: match,\n        element: matchElement\n      };\n    }\n  }\n\n  return {\n    action: null,\n    interactable: null,\n    element: null\n  };\n}\n\nfunction getActionInfo(interaction, pointer, event, eventTarget, scope) {\n  let matches = [];\n  let matchElements = [];\n  let element = eventTarget;\n\n  function pushMatches(interactable) {\n    matches.push(interactable);\n    matchElements.push(element);\n  }\n\n  while (is.element(element)) {\n    matches = [];\n    matchElements = [];\n    scope.interactables.forEachMatch(element, pushMatches);\n    const actionInfo = validateMatches(interaction, pointer, event, matches, matchElements, eventTarget, scope);\n\n    if (actionInfo.action && !actionInfo.interactable.options[actionInfo.action.name].manualStart) {\n      return actionInfo;\n    }\n\n    element = domUtils.parentNode(element);\n  }\n\n  return {\n    action: null,\n    interactable: null,\n    element: null\n  };\n}\n\nfunction prepare(interaction, {\n  action,\n  interactable,\n  element\n}, scope) {\n  action = action || {\n    name: null\n  };\n  interaction.interactable = interactable;\n  interaction.element = element;\n  copyAction(interaction.prepared, action);\n  interaction.rect = interactable && action.name ? interactable.getRect(element) : null;\n  setInteractionCursor(interaction, scope);\n  scope.fire('autoStart:prepared', {\n    interaction\n  });\n}\n\nfunction withinInteractionLimit(interactable, element, action, scope) {\n  const options = interactable.options;\n  const maxActions = options[action.name].max;\n  const maxPerElement = options[action.name].maxPerElement;\n  const autoStartMax = scope.autoStart.maxInteractions;\n  let activeInteractions = 0;\n  let interactableCount = 0;\n  let elementCount = 0; // no actions if any of these values == 0\n\n  if (!(maxActions && maxPerElement && autoStartMax)) {\n    return false;\n  }\n\n  for (const interaction of scope.interactions.list) {\n    const otherAction = interaction.prepared.name;\n\n    if (!interaction.interacting()) {\n      continue;\n    }\n\n    activeInteractions++;\n\n    if (activeInteractions >= autoStartMax) {\n      return false;\n    }\n\n    if (interaction.interactable !== interactable) {\n      continue;\n    }\n\n    interactableCount += otherAction === action.name ? 1 : 0;\n\n    if (interactableCount >= maxActions) {\n      return false;\n    }\n\n    if (interaction.element === element) {\n      elementCount++;\n\n      if (otherAction === action.name && elementCount >= maxPerElement) {\n        return false;\n      }\n    }\n  }\n\n  return autoStartMax > 0;\n}\n\nfunction maxInteractions(newValue, scope) {\n  if (is.number(newValue)) {\n    scope.autoStart.maxInteractions = newValue;\n    return this;\n  }\n\n  return scope.autoStart.maxInteractions;\n}\n\nfunction setCursor(element, cursor, scope) {\n  const {\n    cursorElement: prevCursorElement\n  } = scope.autoStart;\n\n  if (prevCursorElement && prevCursorElement !== element) {\n    prevCursorElement.style.cursor = '';\n  }\n\n  element.ownerDocument.documentElement.style.cursor = cursor;\n  element.style.cursor = cursor;\n  scope.autoStart.cursorElement = cursor ? element : null;\n}\n\nfunction setInteractionCursor(interaction, scope) {\n  const {\n    interactable,\n    element,\n    prepared\n  } = interaction;\n\n  if (!(interaction.pointerType === 'mouse' && interactable && interactable.options.styleCursor)) {\n    // clear previous target element cursor\n    if (scope.autoStart.cursorElement) {\n      setCursor(scope.autoStart.cursorElement, '', scope);\n    }\n\n    return;\n  }\n\n  let cursor = '';\n\n  if (prepared.name) {\n    const cursorChecker = interactable.options[prepared.name].cursorChecker;\n\n    if (is.func(cursorChecker)) {\n      cursor = cursorChecker(prepared, interactable, element, interaction._interacting);\n    } else {\n      cursor = scope.actions.map[prepared.name].getCursor(prepared);\n    }\n  }\n\n  setCursor(interaction.element, cursor || '', scope);\n}\n\nconst autoStart = {\n  id: 'auto-start/base',\n  before: ['actions'],\n  install,\n  listeners: {\n    'interactions:down': prepareOnDown,\n    'interactions:move': (arg, scope) => {\n      prepareOnMove(arg, scope);\n      startOnMove(arg, scope);\n    },\n    'interactions:stop': clearCursorOnStop\n  },\n  maxInteractions,\n  withinInteractionLimit,\n  validateAction\n};\nexport default autoStart;\n//# sourceMappingURL=base.js.map","import { parentNode } from \"../utils/domUtils.js\";\nimport is from \"../utils/is.js\";\nimport autoStart from \"./base.js\";\n\nfunction beforeStart({\n  interaction,\n  eventTarget,\n  dx,\n  dy\n}, scope) {\n  if (interaction.prepared.name !== 'drag') {\n    return;\n  } // check if a drag is in the correct axis\n\n\n  const absX = Math.abs(dx);\n  const absY = Math.abs(dy);\n  const targetOptions = interaction.interactable.options.drag;\n  const startAxis = targetOptions.startAxis;\n  const currentAxis = absX > absY ? 'x' : absX < absY ? 'y' : 'xy';\n  interaction.prepared.axis = targetOptions.lockAxis === 'start' ? currentAxis[0] // always lock to one axis even if currentAxis === 'xy'\n  : targetOptions.lockAxis; // if the movement isn't in the startAxis of the interactable\n\n  if (currentAxis !== 'xy' && startAxis !== 'xy' && startAxis !== currentAxis) {\n    // cancel the prepared action\n    interaction.prepared.name = null; // then try to get a drag from another ineractable\n\n    let element = eventTarget;\n\n    const getDraggable = function (interactable) {\n      if (interactable === interaction.interactable) {\n        return;\n      }\n\n      const options = interaction.interactable.options.drag;\n\n      if (!options.manualStart && interactable.testIgnoreAllow(options, element, eventTarget)) {\n        const action = interactable.getAction(interaction.downPointer, interaction.downEvent, interaction, element);\n\n        if (action && action.name === 'drag' && checkStartAxis(currentAxis, interactable) && autoStart.validateAction(action, interactable, element, eventTarget, scope)) {\n          return interactable;\n        }\n      }\n    }; // check all interactables\n\n\n    while (is.element(element)) {\n      const interactable = scope.interactables.forEachMatch(element, getDraggable);\n\n      if (interactable) {\n        interaction.prepared.name = 'drag';\n        interaction.interactable = interactable;\n        interaction.element = element;\n        break;\n      }\n\n      element = parentNode(element);\n    }\n  }\n}\n\nfunction checkStartAxis(startAxis, interactable) {\n  if (!interactable) {\n    return false;\n  }\n\n  const thisAxis = interactable.options.drag.startAxis;\n  return startAxis === 'xy' || thisAxis === 'xy' || thisAxis === startAxis;\n}\n\nexport default {\n  id: 'auto-start/dragAxis',\n  listeners: {\n    'autoStart:before-start': beforeStart\n  }\n};\n//# sourceMappingURL=dragAxis.js.map","import Interaction from \"../core/Interaction.js\";\nimport basePlugin from \"./base.js\";\n\nfunction install(scope) {\n  const {\n    defaults\n  } = scope;\n  scope.usePlugin(basePlugin);\n  defaults.perAction.hold = 0;\n  defaults.perAction.delay = 0;\n}\n\nfunction getHoldDuration(interaction) {\n  const actionName = interaction.prepared && interaction.prepared.name;\n\n  if (!actionName) {\n    return null;\n  }\n\n  const options = interaction.interactable.options;\n  return options[actionName].hold || options[actionName].delay;\n}\n\nconst hold = {\n  id: 'auto-start/hold',\n  install,\n  listeners: {\n    'interactions:new': ({\n      interaction\n    }) => {\n      interaction.autoStartHoldTimer = null;\n    },\n    'autoStart:prepared': ({\n      interaction\n    }) => {\n      const hold = getHoldDuration(interaction);\n\n      if (hold > 0) {\n        interaction.autoStartHoldTimer = setTimeout(() => {\n          interaction.start(interaction.prepared, interaction.interactable, interaction.element);\n        }, hold);\n      }\n    },\n    'interactions:move': ({\n      interaction,\n      duplicate\n    }) => {\n      if (interaction.autoStartHoldTimer && interaction.pointerWasMoved && !duplicate) {\n        clearTimeout(interaction.autoStartHoldTimer);\n        interaction.autoStartHoldTimer = null;\n      }\n    },\n    // prevent regular down->move autoStart\n    'autoStart:before-start': ({\n      interaction\n    }) => {\n      const holdDuration = getHoldDuration(interaction);\n\n      if (holdDuration > 0) {\n        interaction.prepared.name = null;\n      }\n    }\n  },\n  getHoldDuration\n};\nexport default hold;\n//# sourceMappingURL=hold.js.map","import autoStart from \"./base.js\";\nimport dragAxis from \"./dragAxis.js\";\nimport hold from \"./hold.js\";\nexport default {\n  id: 'auto-start',\n\n  install(scope) {\n    scope.usePlugin(autoStart);\n    scope.usePlugin(hold);\n    scope.usePlugin(dragAxis);\n  }\n\n};\n//# sourceMappingURL=plugin.js.map","/* eslint-disable import/order, no-console, eol-last */\nimport interact, { init } from \"../interact/index.js\";\nimport plugin from \"./plugin.js\";\n\nif (typeof window === 'object' && !!window) {\n  init(window);\n}\n\ninteract.use(plugin);\n//# sourceMappingURL=index.js.map","import { Interactable } from \"../../core/Interactable.js\";\nimport is from \"../../utils/is.js\";\n\nfunction install(scope) {\n  const {\n    actions,\n    Interactable,\n    defaults\n  } = scope;\n  Interactable.prototype.draggable = drag.draggable;\n  actions.map.drag = drag;\n  actions.methodDict.drag = 'draggable';\n  defaults.actions.drag = drag.defaults;\n}\n\nfunction beforeMove({\n  interaction\n}) {\n  if (interaction.prepared.name !== 'drag') {\n    return;\n  }\n\n  const axis = interaction.prepared.axis;\n\n  if (axis === 'x') {\n    interaction.coords.cur.page.y = interaction.coords.start.page.y;\n    interaction.coords.cur.client.y = interaction.coords.start.client.y;\n    interaction.coords.velocity.client.y = 0;\n    interaction.coords.velocity.page.y = 0;\n  } else if (axis === 'y') {\n    interaction.coords.cur.page.x = interaction.coords.start.page.x;\n    interaction.coords.cur.client.x = interaction.coords.start.client.x;\n    interaction.coords.velocity.client.x = 0;\n    interaction.coords.velocity.page.x = 0;\n  }\n}\n\nfunction move({\n  iEvent,\n  interaction\n}) {\n  if (interaction.prepared.name !== 'drag') {\n    return;\n  }\n\n  const axis = interaction.prepared.axis;\n\n  if (axis === 'x' || axis === 'y') {\n    const opposite = axis === 'x' ? 'y' : 'x';\n    iEvent.page[opposite] = interaction.coords.start.page[opposite];\n    iEvent.client[opposite] = interaction.coords.start.client[opposite];\n    iEvent.delta[opposite] = 0;\n  }\n}\n/**\n * ```js\n * interact(element).draggable({\n *     onstart: function (event) {},\n *     onmove : function (event) {},\n *     onend  : function (event) {},\n *\n *     // the axis in which the first movement must be\n *     // for the drag sequence to start\n *     // 'xy' by default - any direction\n *     startAxis: 'x' || 'y' || 'xy',\n *\n *     // 'xy' by default - don't restrict to one axis (move in any direction)\n *     // 'x' or 'y' to restrict movement to either axis\n *     // 'start' to restrict movement to the axis the drag started in\n *     lockAxis: 'x' || 'y' || 'xy' || 'start',\n *\n *     // max number of drags that can happen concurrently\n *     // with elements of this Interactable. Infinity by default\n *     max: Infinity,\n *\n *     // max number of drags that can target the same element+Interactable\n *     // 1 by default\n *     maxPerElement: 2\n * })\n *\n * var isDraggable = interact('element').draggable(); // true\n * ```\n *\n * Get or set whether drag actions can be performed on the target\n *\n * @alias Interactable.prototype.draggable\n *\n * @param {boolean | object} [options] true/false or An object with event\n * listeners to be fired on drag events (object makes the Interactable\n * draggable)\n * @return {boolean | Interactable} boolean indicating if this can be the\n * target of drag events, or this Interctable\n */\n\n\nconst draggable = function draggable(options) {\n  if (is.object(options)) {\n    this.options.drag.enabled = options.enabled !== false;\n    this.setPerAction('drag', options);\n    this.setOnEvents('drag', options);\n\n    if (/^(xy|x|y|start)$/.test(options.lockAxis)) {\n      this.options.drag.lockAxis = options.lockAxis;\n    }\n\n    if (/^(xy|x|y)$/.test(options.startAxis)) {\n      this.options.drag.startAxis = options.startAxis;\n    }\n\n    return this;\n  }\n\n  if (is.bool(options)) {\n    this.options.drag.enabled = options;\n    return this;\n  }\n\n  return this.options.drag;\n};\n\nconst drag = {\n  id: 'actions/drag',\n  install,\n  listeners: {\n    'interactions:before-action-move': beforeMove,\n    'interactions:action-resume': beforeMove,\n    // dragmove\n    'interactions:action-move': move,\n    'auto-start:check': arg => {\n      const {\n        interaction,\n        interactable,\n        buttons\n      } = arg;\n      const dragOptions = interactable.options.drag;\n\n      if (!(dragOptions && dragOptions.enabled) || // check mouseButton setting if the pointer is down\n      interaction.pointerIsDown && /mouse|pointer/.test(interaction.pointerType) && (buttons & interactable.options.drag.mouseButtons) === 0) {\n        return undefined;\n      }\n\n      arg.action = {\n        name: 'drag',\n        axis: dragOptions.lockAxis === 'start' ? dragOptions.startAxis : dragOptions.lockAxis\n      };\n      return false;\n    }\n  },\n  draggable,\n  beforeMove,\n  move,\n  defaults: {\n    startAxis: 'xy',\n    lockAxis: 'xy'\n  },\n\n  getCursor() {\n    return 'move';\n  }\n\n};\nexport default drag;\n//# sourceMappingURL=plugin.js.map","/* eslint-disable import/order, no-console, eol-last */\nimport interact, { init } from \"../../interact/index.js\";\nimport plugin from \"./plugin.js\";\n\nif (typeof window === 'object' && !!window) {\n  init(window);\n}\n\ninteract.use(plugin);\n//# sourceMappingURL=index.js.map","import { Interactable } from \"../../core/Interactable.js\";\nimport { Interaction } from \"../../core/Interaction.js\";\nimport * as dom from \"../../utils/domUtils.js\";\nimport extend from \"../../utils/extend.js\";\nimport is from \"../../utils/is.js\";\n\nfunction install(scope) {\n  const {\n    actions,\n    browser,\n\n    /** @lends Interactable */\n    Interactable,\n    // tslint:disable-line no-shadowed-variable\n    defaults\n  } = scope; // Less Precision with touch input\n\n  resize.cursors = initCursors(browser);\n  resize.defaultMargin = browser.supportsTouch || browser.supportsPointerEvent ? 20 : 10;\n  /**\n   * ```js\n   * interact(element).resizable({\n   *   onstart: function (event) {},\n   *   onmove : function (event) {},\n   *   onend  : function (event) {},\n   *\n   *   edges: {\n   *     top   : true,       // Use pointer coords to check for resize.\n   *     left  : false,      // Disable resizing from left edge.\n   *     bottom: '.resize-s',// Resize if pointer target matches selector\n   *     right : handleEl    // Resize if pointer target is the given Element\n   *   },\n   *\n   *     // Width and height can be adjusted independently. When `true`, width and\n   *     // height are adjusted at a 1:1 ratio.\n   *     square: false,\n   *\n   *     // Width and height can be adjusted independently. When `true`, width and\n   *     // height maintain the aspect ratio they had when resizing started.\n   *     preserveAspectRatio: false,\n   *\n   *   // a value of 'none' will limit the resize rect to a minimum of 0x0\n   *   // 'negate' will allow the rect to have negative width/height\n   *   // 'reposition' will keep the width/height positive by swapping\n   *   // the top and bottom edges and/or swapping the left and right edges\n   *   invert: 'none' || 'negate' || 'reposition'\n   *\n   *   // limit multiple resizes.\n   *   // See the explanation in the {@link Interactable.draggable} example\n   *   max: Infinity,\n   *   maxPerElement: 1,\n   * })\n   *\n   * var isResizeable = interact(element).resizable()\n   * ```\n   *\n   * Gets or sets whether resize actions can be performed on the target\n   *\n   * @param {boolean | object} [options] true/false or An object with event\n   * listeners to be fired on resize events (object makes the Interactable\n   * resizable)\n   * @return {boolean | Interactable} A boolean indicating if this can be the\n   * target of resize elements, or this Interactable\n   */\n\n  Interactable.prototype.resizable = function (options) {\n    return resizable(this, options, scope);\n  };\n\n  actions.map.resize = resize;\n  actions.methodDict.resize = 'resizable';\n  defaults.actions.resize = resize.defaults;\n}\n\nfunction resizeChecker(arg) {\n  const {\n    interaction,\n    interactable,\n    element,\n    rect,\n    buttons\n  } = arg;\n\n  if (!rect) {\n    return undefined;\n  }\n\n  const page = extend({}, interaction.coords.cur.page);\n  const resizeOptions = interactable.options.resize;\n\n  if (!(resizeOptions && resizeOptions.enabled) || // check mouseButton setting if the pointer is down\n  interaction.pointerIsDown && /mouse|pointer/.test(interaction.pointerType) && (buttons & resizeOptions.mouseButtons) === 0) {\n    return undefined;\n  } // if using resize.edges\n\n\n  if (is.object(resizeOptions.edges)) {\n    const resizeEdges = {\n      left: false,\n      right: false,\n      top: false,\n      bottom: false\n    };\n\n    for (const edge in resizeEdges) {\n      resizeEdges[edge] = checkResizeEdge(edge, resizeOptions.edges[edge], page, interaction._latestPointer.eventTarget, element, rect, resizeOptions.margin || resize.defaultMargin);\n    }\n\n    resizeEdges.left = resizeEdges.left && !resizeEdges.right;\n    resizeEdges.top = resizeEdges.top && !resizeEdges.bottom;\n\n    if (resizeEdges.left || resizeEdges.right || resizeEdges.top || resizeEdges.bottom) {\n      arg.action = {\n        name: 'resize',\n        edges: resizeEdges\n      };\n    }\n  } else {\n    const right = resizeOptions.axis !== 'y' && page.x > rect.right - resize.defaultMargin;\n    const bottom = resizeOptions.axis !== 'x' && page.y > rect.bottom - resize.defaultMargin;\n\n    if (right || bottom) {\n      arg.action = {\n        name: 'resize',\n        axes: (right ? 'x' : '') + (bottom ? 'y' : '')\n      };\n    }\n  }\n\n  return arg.action ? false : undefined;\n}\n\nfunction resizable(interactable, options, scope) {\n  if (is.object(options)) {\n    interactable.options.resize.enabled = options.enabled !== false;\n    interactable.setPerAction('resize', options);\n    interactable.setOnEvents('resize', options);\n\n    if (is.string(options.axis) && /^x$|^y$|^xy$/.test(options.axis)) {\n      interactable.options.resize.axis = options.axis;\n    } else if (options.axis === null) {\n      interactable.options.resize.axis = scope.defaults.actions.resize.axis;\n    }\n\n    if (is.bool(options.preserveAspectRatio)) {\n      interactable.options.resize.preserveAspectRatio = options.preserveAspectRatio;\n    } else if (is.bool(options.square)) {\n      interactable.options.resize.square = options.square;\n    }\n\n    return interactable;\n  }\n\n  if (is.bool(options)) {\n    interactable.options.resize.enabled = options;\n    return interactable;\n  }\n\n  return interactable.options.resize;\n}\n\nfunction checkResizeEdge(name, value, page, element, interactableElement, rect, margin) {\n  // false, '', undefined, null\n  if (!value) {\n    return false;\n  } // true value, use pointer coords and element rect\n\n\n  if (value === true) {\n    // if dimensions are negative, \"switch\" edges\n    const width = is.number(rect.width) ? rect.width : rect.right - rect.left;\n    const height = is.number(rect.height) ? rect.height : rect.bottom - rect.top; // don't use margin greater than half the relevent dimension\n\n    margin = Math.min(margin, Math.abs((name === 'left' || name === 'right' ? width : height) / 2));\n\n    if (width < 0) {\n      if (name === 'left') {\n        name = 'right';\n      } else if (name === 'right') {\n        name = 'left';\n      }\n    }\n\n    if (height < 0) {\n      if (name === 'top') {\n        name = 'bottom';\n      } else if (name === 'bottom') {\n        name = 'top';\n      }\n    }\n\n    if (name === 'left') {\n      return page.x < (width >= 0 ? rect.left : rect.right) + margin;\n    }\n\n    if (name === 'top') {\n      return page.y < (height >= 0 ? rect.top : rect.bottom) + margin;\n    }\n\n    if (name === 'right') {\n      return page.x > (width >= 0 ? rect.right : rect.left) - margin;\n    }\n\n    if (name === 'bottom') {\n      return page.y > (height >= 0 ? rect.bottom : rect.top) - margin;\n    }\n  } // the remaining checks require an element\n\n\n  if (!is.element(element)) {\n    return false;\n  }\n\n  return is.element(value) // the value is an element to use as a resize handle\n  ? value === element // otherwise check if element matches value as selector\n  : dom.matchesUpTo(element, value, interactableElement);\n}\n/* eslint-disable multiline-ternary */\n\n\nfunction initCursors(browser) {\n  return browser.isIe9 ? {\n    x: 'e-resize',\n    y: 's-resize',\n    xy: 'se-resize',\n    top: 'n-resize',\n    left: 'w-resize',\n    bottom: 's-resize',\n    right: 'e-resize',\n    topleft: 'se-resize',\n    bottomright: 'se-resize',\n    topright: 'ne-resize',\n    bottomleft: 'ne-resize'\n  } : {\n    x: 'ew-resize',\n    y: 'ns-resize',\n    xy: 'nwse-resize',\n    top: 'ns-resize',\n    left: 'ew-resize',\n    bottom: 'ns-resize',\n    right: 'ew-resize',\n    topleft: 'nwse-resize',\n    bottomright: 'nwse-resize',\n    topright: 'nesw-resize',\n    bottomleft: 'nesw-resize'\n  };\n}\n/* eslint-enable multiline-ternary */\n\n\nfunction start({\n  iEvent,\n  interaction\n}) {\n  if (interaction.prepared.name !== 'resize' || !interaction.prepared.edges) {\n    return;\n  }\n\n  const resizeEvent = iEvent;\n  const rect = interaction.rect;\n  interaction._rects = {\n    start: extend({}, rect),\n    corrected: extend({}, rect),\n    previous: extend({}, rect),\n    delta: {\n      left: 0,\n      right: 0,\n      width: 0,\n      top: 0,\n      bottom: 0,\n      height: 0\n    }\n  };\n  resizeEvent.edges = interaction.prepared.edges;\n  resizeEvent.rect = interaction._rects.corrected;\n  resizeEvent.deltaRect = interaction._rects.delta;\n}\n\nfunction move({\n  iEvent,\n  interaction\n}) {\n  if (interaction.prepared.name !== 'resize' || !interaction.prepared.edges) {\n    return;\n  }\n\n  const resizeEvent = iEvent;\n  const resizeOptions = interaction.interactable.options.resize;\n  const invert = resizeOptions.invert;\n  const invertible = invert === 'reposition' || invert === 'negate';\n  const current = interaction.rect;\n  const {\n    start: startRect,\n    corrected,\n    delta: deltaRect,\n    previous\n  } = interaction._rects;\n  extend(previous, corrected);\n\n  if (invertible) {\n    // if invertible, copy the current rect\n    extend(corrected, current);\n\n    if (invert === 'reposition') {\n      // swap edge values if necessary to keep width/height positive\n      if (corrected.top > corrected.bottom) {\n        const swap = corrected.top;\n        corrected.top = corrected.bottom;\n        corrected.bottom = swap;\n      }\n\n      if (corrected.left > corrected.right) {\n        const swap = corrected.left;\n        corrected.left = corrected.right;\n        corrected.right = swap;\n      }\n    }\n  } else {\n    // if not invertible, restrict to minimum of 0x0 rect\n    corrected.top = Math.min(current.top, startRect.bottom);\n    corrected.bottom = Math.max(current.bottom, startRect.top);\n    corrected.left = Math.min(current.left, startRect.right);\n    corrected.right = Math.max(current.right, startRect.left);\n  }\n\n  corrected.width = corrected.right - corrected.left;\n  corrected.height = corrected.bottom - corrected.top;\n\n  for (const edge in corrected) {\n    deltaRect[edge] = corrected[edge] - previous[edge];\n  }\n\n  resizeEvent.edges = interaction.prepared.edges;\n  resizeEvent.rect = corrected;\n  resizeEvent.deltaRect = deltaRect;\n}\n\nfunction end({\n  iEvent,\n  interaction\n}) {\n  if (interaction.prepared.name !== 'resize' || !interaction.prepared.edges) {\n    return;\n  }\n\n  const resizeEvent = iEvent;\n  resizeEvent.edges = interaction.prepared.edges;\n  resizeEvent.rect = interaction._rects.corrected;\n  resizeEvent.deltaRect = interaction._rects.delta;\n}\n\nfunction updateEventAxes({\n  iEvent,\n  interaction\n}) {\n  if (interaction.prepared.name !== 'resize' || !interaction.resizeAxes) {\n    return;\n  }\n\n  const options = interaction.interactable.options;\n  const resizeEvent = iEvent;\n\n  if (options.resize.square) {\n    if (interaction.resizeAxes === 'y') {\n      resizeEvent.delta.x = resizeEvent.delta.y;\n    } else {\n      resizeEvent.delta.y = resizeEvent.delta.x;\n    }\n\n    resizeEvent.axes = 'xy';\n  } else {\n    resizeEvent.axes = interaction.resizeAxes;\n\n    if (interaction.resizeAxes === 'x') {\n      resizeEvent.delta.y = 0;\n    } else if (interaction.resizeAxes === 'y') {\n      resizeEvent.delta.x = 0;\n    }\n  }\n}\n\nconst resize = {\n  id: 'actions/resize',\n  before: ['actions/drag'],\n  install,\n  listeners: {\n    'interactions:new': ({\n      interaction\n    }) => {\n      interaction.resizeAxes = 'xy';\n    },\n    'interactions:action-start': arg => {\n      start(arg);\n      updateEventAxes(arg);\n    },\n    'interactions:action-move': arg => {\n      move(arg);\n      updateEventAxes(arg);\n    },\n    'interactions:action-end': end,\n    'auto-start:check': resizeChecker\n  },\n  defaults: {\n    square: false,\n    preserveAspectRatio: false,\n    axis: 'xy',\n    // use default margin\n    margin: NaN,\n    // object with props left, right, top, bottom which are\n    // true/false values to resize when the pointer is over that edge,\n    // CSS selectors to match the handles for each direction\n    // or the Elements for each handle\n    edges: null,\n    // a value of 'none' will limit the resize rect to a minimum of 0x0\n    // 'negate' will alow the rect to have negative width/height\n    // 'reposition' will keep the width/height positive by swapping\n    // the top and bottom edges and/or swapping the left and right edges\n    invert: 'none'\n  },\n  cursors: null,\n\n  getCursor({\n    edges,\n    axis,\n    name\n  }) {\n    const cursors = resize.cursors;\n    let result = null;\n\n    if (axis) {\n      result = cursors[name + axis];\n    } else if (edges) {\n      let cursorKey = '';\n\n      for (const edge of ['top', 'bottom', 'left', 'right']) {\n        if (edges[edge]) {\n          cursorKey += edge;\n        }\n      }\n\n      result = cursors[cursorKey];\n    }\n\n    return result;\n  },\n\n  defaultMargin: null\n};\nexport default resize;\n//# sourceMappingURL=plugin.js.map","/* eslint-disable import/order, no-console, eol-last */\nimport interact, { init } from \"../../interact/index.js\";\nimport plugin from \"./plugin.js\";\n\nif (typeof window === 'object' && !!window) {\n  init(window);\n}\n\ninteract.use(plugin);\n//# sourceMappingURL=index.js.map","export default (() => {});\n//# sourceMappingURL=edgeTarget.js.map","export default (() => {});\n//# sourceMappingURL=elements.js.map","export default (grid => {\n  const coordFields = [['x', 'y'], ['left', 'top'], ['right', 'bottom'], ['width', 'height']].filter(([xField, yField]) => xField in grid || yField in grid);\n\n  const gridFunc = (x, y) => {\n    const {\n      range,\n      limits = {\n        left: -Infinity,\n        right: Infinity,\n        top: -Infinity,\n        bottom: Infinity\n      },\n      offset = {\n        x: 0,\n        y: 0\n      }\n    } = grid;\n    const result = {\n      range,\n      grid,\n      x: null,\n      y: null\n    };\n\n    for (const [xField, yField] of coordFields) {\n      const gridx = Math.round((x - offset.x) / grid[xField]);\n      const gridy = Math.round((y - offset.y) / grid[yField]);\n      result[xField] = Math.max(limits.left, Math.min(limits.right, gridx * grid[xField] + offset.x));\n      result[yField] = Math.max(limits.top, Math.min(limits.bottom, gridy * grid[yField] + offset.y));\n    }\n\n    return result;\n  };\n\n  gridFunc.grid = grid;\n  gridFunc.coordFields = coordFields;\n  return gridFunc;\n});\n//# sourceMappingURL=grid.js.map","export { default as edgeTarget } from \"./edgeTarget.js\";\nexport { default as elements } from \"./elements.js\";\nexport { default as grid } from \"./grid.js\";\n//# sourceMappingURL=all.js.map","import extend from \"../utils/extend.js\";\nimport * as allSnappers from \"./all.js\";\nconst snappersPlugin = {\n  id: 'snappers',\n\n  install(scope) {\n    const {\n      interactStatic: interact\n    } = scope;\n    interact.snappers = extend(interact.snappers || {}, allSnappers);\n    interact.createSnapGrid = interact.snappers.grid;\n  }\n\n};\nexport default snappersPlugin;\n//# sourceMappingURL=plugin.js.map","import clone from \"../utils/clone.js\";\nimport extend from \"../utils/extend.js\";\nimport * as rectUtils from \"../utils/rect.js\";\nexport default class Modification {\n  constructor(interaction) {\n    this.states = [];\n    this.startOffset = {\n      left: 0,\n      right: 0,\n      top: 0,\n      bottom: 0\n    };\n    this.startDelta = null;\n    this.result = null;\n    this.endResult = null;\n    this.edges = void 0;\n    this.interaction = void 0;\n    this.interaction = interaction;\n    this.result = createResult();\n  }\n\n  start({\n    phase\n  }, pageCoords) {\n    const {\n      interaction\n    } = this;\n    const modifierList = getModifierList(interaction);\n    this.prepareStates(modifierList);\n    this.edges = extend({}, interaction.edges);\n    this.startOffset = getRectOffset(interaction.rect, pageCoords);\n    this.startDelta = {\n      x: 0,\n      y: 0\n    };\n    const arg = {\n      phase,\n      pageCoords,\n      preEnd: false\n    };\n    this.result = createResult();\n    this.startAll(arg);\n    const result = this.result = this.setAll(arg);\n    return result;\n  }\n\n  fillArg(arg) {\n    const {\n      interaction\n    } = this;\n    arg.interaction = interaction;\n    arg.interactable = interaction.interactable;\n    arg.element = interaction.element;\n    arg.rect = arg.rect || interaction.rect;\n    arg.edges = this.edges;\n    arg.startOffset = this.startOffset;\n  }\n\n  startAll(arg) {\n    this.fillArg(arg);\n\n    for (const state of this.states) {\n      if (state.methods.start) {\n        arg.state = state;\n        state.methods.start(arg);\n      }\n    }\n  }\n\n  setAll(arg) {\n    this.fillArg(arg);\n    const {\n      phase,\n      preEnd,\n      skipModifiers,\n      rect: unmodifiedRect\n    } = arg;\n    arg.coords = extend({}, arg.pageCoords);\n    arg.rect = extend({}, unmodifiedRect);\n    const states = skipModifiers ? this.states.slice(skipModifiers) : this.states;\n    const newResult = createResult(arg.coords, arg.rect);\n\n    for (const state of states) {\n      const {\n        options\n      } = state;\n      const lastModifierCoords = extend({}, arg.coords);\n      let returnValue = null;\n\n      if (state.methods.set && this.shouldDo(options, preEnd, phase)) {\n        arg.state = state;\n        returnValue = state.methods.set(arg);\n        rectUtils.addEdges(this.interaction.edges, arg.rect, {\n          x: arg.coords.x - lastModifierCoords.x,\n          y: arg.coords.y - lastModifierCoords.y\n        });\n      }\n\n      newResult.eventProps.push(returnValue);\n    }\n\n    newResult.delta.x = arg.coords.x - arg.pageCoords.x;\n    newResult.delta.y = arg.coords.y - arg.pageCoords.y;\n    newResult.rectDelta.left = arg.rect.left - unmodifiedRect.left;\n    newResult.rectDelta.right = arg.rect.right - unmodifiedRect.right;\n    newResult.rectDelta.top = arg.rect.top - unmodifiedRect.top;\n    newResult.rectDelta.bottom = arg.rect.bottom - unmodifiedRect.bottom;\n    const prevCoords = this.result.coords;\n    const prevRect = this.result.rect;\n\n    if (prevCoords && prevRect) {\n      const rectChanged = newResult.rect.left !== prevRect.left || newResult.rect.right !== prevRect.right || newResult.rect.top !== prevRect.top || newResult.rect.bottom !== prevRect.bottom;\n      newResult.changed = rectChanged || prevCoords.x !== newResult.coords.x || prevCoords.y !== newResult.coords.y;\n    }\n\n    return newResult;\n  }\n\n  applyToInteraction(arg) {\n    const {\n      interaction\n    } = this;\n    const {\n      phase\n    } = arg;\n    const curCoords = interaction.coords.cur;\n    const startCoords = interaction.coords.start;\n    const {\n      result,\n      startDelta\n    } = this;\n    const curDelta = result.delta;\n\n    if (phase === 'start') {\n      extend(this.startDelta, result.delta);\n    }\n\n    for (const [coordsSet, delta] of [[startCoords, startDelta], [curCoords, curDelta]]) {\n      coordsSet.page.x += delta.x;\n      coordsSet.page.y += delta.y;\n      coordsSet.client.x += delta.x;\n      coordsSet.client.y += delta.y;\n    }\n\n    const {\n      rectDelta\n    } = this.result;\n    const rect = arg.rect || interaction.rect;\n    rect.left += rectDelta.left;\n    rect.right += rectDelta.right;\n    rect.top += rectDelta.top;\n    rect.bottom += rectDelta.bottom;\n    rect.width = rect.right - rect.left;\n    rect.height = rect.bottom - rect.top;\n  }\n\n  setAndApply(arg) {\n    const {\n      interaction\n    } = this;\n    const {\n      phase,\n      preEnd,\n      skipModifiers\n    } = arg;\n    const result = this.setAll({\n      preEnd,\n      phase,\n      pageCoords: arg.modifiedCoords || interaction.coords.cur.page\n    });\n    this.result = result; // don't fire an action move if a modifier would keep the event in the same\n    // cordinates as before\n\n    if (!result.changed && (!skipModifiers || skipModifiers < this.states.length) && interaction.interacting()) {\n      return false;\n    }\n\n    if (arg.modifiedCoords) {\n      const {\n        page\n      } = interaction.coords.cur;\n      const adjustment = {\n        x: arg.modifiedCoords.x - page.x,\n        y: arg.modifiedCoords.y - page.y\n      };\n      result.coords.x += adjustment.x;\n      result.coords.y += adjustment.y;\n      result.delta.x += adjustment.x;\n      result.delta.y += adjustment.y;\n    }\n\n    this.applyToInteraction(arg);\n  }\n\n  beforeEnd(arg) {\n    const {\n      interaction,\n      event\n    } = arg;\n    const states = this.states;\n\n    if (!states || !states.length) {\n      return;\n    }\n\n    let doPreend = false;\n\n    for (const state of states) {\n      arg.state = state;\n      const {\n        options,\n        methods\n      } = state;\n      const endPosition = methods.beforeEnd && methods.beforeEnd(arg);\n\n      if (endPosition) {\n        this.endResult = endPosition;\n        return false;\n      }\n\n      doPreend = doPreend || !doPreend && this.shouldDo(options, true, arg.phase, true);\n    }\n\n    if (doPreend) {\n      // trigger a final modified move before ending\n      interaction.move({\n        event,\n        preEnd: true\n      });\n    }\n  }\n\n  stop(arg) {\n    const {\n      interaction\n    } = arg;\n\n    if (!this.states || !this.states.length) {\n      return;\n    }\n\n    const modifierArg = extend({\n      states: this.states,\n      interactable: interaction.interactable,\n      element: interaction.element,\n      rect: null\n    }, arg);\n    this.fillArg(modifierArg);\n\n    for (const state of this.states) {\n      modifierArg.state = state;\n\n      if (state.methods.stop) {\n        state.methods.stop(modifierArg);\n      }\n    }\n\n    this.states = null;\n    this.endResult = null;\n  }\n\n  prepareStates(modifierList) {\n    this.states = [];\n\n    for (let index = 0; index < modifierList.length; index++) {\n      const {\n        options,\n        methods,\n        name\n      } = modifierList[index];\n      this.states.push({\n        options,\n        methods,\n        index,\n        name\n      });\n    }\n\n    return this.states;\n  }\n\n  restoreInteractionCoords({\n    interaction: {\n      coords,\n      rect,\n      modification\n    }\n  }) {\n    if (!modification.result) {\n      return;\n    }\n\n    const {\n      startDelta\n    } = modification;\n    const {\n      delta: curDelta,\n      rectDelta\n    } = modification.result;\n    const coordsAndDeltas = [[coords.start, startDelta], [coords.cur, curDelta]];\n\n    for (const [coordsSet, delta] of coordsAndDeltas) {\n      coordsSet.page.x -= delta.x;\n      coordsSet.page.y -= delta.y;\n      coordsSet.client.x -= delta.x;\n      coordsSet.client.y -= delta.y;\n    }\n\n    rect.left -= rectDelta.left;\n    rect.right -= rectDelta.right;\n    rect.top -= rectDelta.top;\n    rect.bottom -= rectDelta.bottom;\n  }\n\n  shouldDo(options, preEnd, phase, requireEndOnly) {\n    if ( // ignore disabled modifiers\n    !options || options.enabled === false || // check if we require endOnly option to fire move before end\n    requireEndOnly && !options.endOnly || // don't apply endOnly modifiers when not ending\n    options.endOnly && !preEnd || // check if modifier should run be applied on start\n    phase === 'start' && !options.setStart) {\n      return false;\n    }\n\n    return true;\n  }\n\n  copyFrom(other) {\n    this.startOffset = other.startOffset;\n    this.startDelta = other.startDelta;\n    this.edges = other.edges;\n    this.states = other.states.map(s => clone(s));\n    this.result = createResult(extend({}, other.result.coords), extend({}, other.result.rect));\n  }\n\n  destroy() {\n    for (const prop in this) {\n      this[prop] = null;\n    }\n  }\n\n}\n\nfunction createResult(coords, rect) {\n  return {\n    rect,\n    coords,\n    delta: {\n      x: 0,\n      y: 0\n    },\n    rectDelta: {\n      left: 0,\n      right: 0,\n      top: 0,\n      bottom: 0\n    },\n    eventProps: [],\n    changed: true\n  };\n}\n\nfunction getModifierList(interaction) {\n  const actionOptions = interaction.interactable.options[interaction.prepared.name];\n  const actionModifiers = actionOptions.modifiers;\n\n  if (actionModifiers && actionModifiers.length) {\n    return actionModifiers;\n  }\n\n  return ['snap', 'snapSize', 'snapEdges', 'restrict', 'restrictEdges', 'restrictSize'].map(type => {\n    const options = actionOptions[type];\n    return options && options.enabled && {\n      options,\n      methods: options._methods\n    };\n  }).filter(m => !!m);\n}\n\nexport function getRectOffset(rect, coords) {\n  return rect ? {\n    left: coords.x - rect.left,\n    top: coords.y - rect.top,\n    right: rect.right - coords.x,\n    bottom: rect.bottom - coords.y\n  } : {\n    left: 0,\n    top: 0,\n    right: 0,\n    bottom: 0\n  };\n}\n//# sourceMappingURL=Modification.js.map","import { InteractEvent } from \"../core/InteractEvent.js\";\nimport Interaction from \"../core/Interaction.js\";\nimport Modification from \"./Modification.js\";\nexport function makeModifier(module, name) {\n  const {\n    defaults\n  } = module;\n  const methods = {\n    start: module.start,\n    set: module.set,\n    beforeEnd: module.beforeEnd,\n    stop: module.stop\n  };\n\n  const modifier = _options => {\n    const options = _options || {};\n    options.enabled = options.enabled !== false; // add missing defaults to options\n\n    for (const prop in defaults) {\n      if (!(prop in options)) {\n        options[prop] = defaults[prop];\n      }\n    }\n\n    const m = {\n      options,\n      methods,\n      name,\n      enable: () => {\n        options.enabled = true;\n        return m;\n      },\n      disable: () => {\n        options.enabled = false;\n        return m;\n      }\n    };\n    return m;\n  };\n\n  if (name && typeof name === 'string') {\n    // for backwrads compatibility\n    modifier._defaults = defaults;\n    modifier._methods = methods;\n  }\n\n  return modifier;\n}\nexport function addEventModifiers({\n  iEvent,\n  interaction: {\n    modification: {\n      result\n    }\n  }\n}) {\n  if (result) {\n    iEvent.modifiers = result.eventProps;\n  }\n}\nconst modifiersBase = {\n  id: 'modifiers/base',\n  before: ['actions'],\n  install: scope => {\n    scope.defaults.perAction.modifiers = [];\n  },\n  listeners: {\n    'interactions:new': ({\n      interaction\n    }) => {\n      interaction.modification = new Modification(interaction);\n    },\n    'interactions:before-action-start': arg => {\n      const {\n        modification\n      } = arg.interaction;\n      modification.start(arg, arg.interaction.coords.start.page);\n      arg.interaction.edges = modification.edges;\n      modification.applyToInteraction(arg);\n    },\n    'interactions:before-action-move': arg => arg.interaction.modification.setAndApply(arg),\n    'interactions:before-action-end': arg => arg.interaction.modification.beforeEnd(arg),\n    'interactions:action-start': addEventModifiers,\n    'interactions:action-move': addEventModifiers,\n    'interactions:action-end': addEventModifiers,\n    'interactions:after-action-start': arg => arg.interaction.modification.restoreInteractionCoords(arg),\n    'interactions:after-action-move': arg => arg.interaction.modification.restoreInteractionCoords(arg),\n    'interactions:stop': arg => arg.interaction.modification.stop(arg)\n  }\n};\nexport default modifiersBase;\n//# sourceMappingURL=base.js.map","/**\n * @module modifiers/aspectRatio\n *\n * @description\n * This module forces elements to be resized with a specified dx/dy ratio.\n *\n * ```js\n * interact(target).resizable({\n *   modifiers: [\n *     interact.modifiers.snapSize({\n *       targets: [ interact.snappers.grid({ x: 20, y: 20 }) ],\n *     }),\n *     interact.aspectRatio({ ratio: 'preserve' }),\n *   ],\n * });\n * ```\n */\nimport extend from \"../utils/extend.js\";\nimport { addEdges } from \"../utils/rect.js\";\nimport Modification from \"./Modification.js\";\nimport { makeModifier } from \"./base.js\";\nconst aspectRatio = {\n  start(arg) {\n    const {\n      state,\n      rect,\n      edges: originalEdges,\n      pageCoords: coords\n    } = arg;\n    let {\n      ratio\n    } = state.options;\n    const {\n      equalDelta,\n      modifiers\n    } = state.options;\n\n    if (ratio === 'preserve') {\n      ratio = rect.width / rect.height;\n    }\n\n    state.startCoords = extend({}, coords);\n    state.startRect = extend({}, rect);\n    state.ratio = ratio;\n    state.equalDelta = equalDelta;\n    const linkedEdges = state.linkedEdges = {\n      top: originalEdges.top || originalEdges.left && !originalEdges.bottom,\n      left: originalEdges.left || originalEdges.top && !originalEdges.right,\n      bottom: originalEdges.bottom || originalEdges.right && !originalEdges.top,\n      right: originalEdges.right || originalEdges.bottom && !originalEdges.left\n    };\n    state.xIsPrimaryAxis = !!(originalEdges.left || originalEdges.right);\n\n    if (state.equalDelta) {\n      state.edgeSign = (linkedEdges.left ? 1 : -1) * (linkedEdges.top ? 1 : -1);\n    } else {\n      const negativeSecondaryEdge = state.xIsPrimaryAxis ? linkedEdges.top : linkedEdges.left;\n      state.edgeSign = negativeSecondaryEdge ? -1 : 1;\n    }\n\n    extend(arg.edges, linkedEdges);\n\n    if (!modifiers || !modifiers.length) {\n      return;\n    }\n\n    const subModification = new Modification(arg.interaction);\n    subModification.copyFrom(arg.interaction.modification);\n    subModification.prepareStates(modifiers);\n    state.subModification = subModification;\n    subModification.startAll({ ...arg\n    });\n  },\n\n  set(arg) {\n    const {\n      state,\n      rect,\n      coords\n    } = arg;\n    const initialCoords = extend({}, coords);\n    const aspectMethod = state.equalDelta ? setEqualDelta : setRatio;\n    aspectMethod(state, state.xIsPrimaryAxis, coords, rect);\n\n    if (!state.subModification) {\n      return null;\n    }\n\n    const correctedRect = extend({}, rect);\n    addEdges(state.linkedEdges, correctedRect, {\n      x: coords.x - initialCoords.x,\n      y: coords.y - initialCoords.y\n    });\n    const result = state.subModification.setAll({ ...arg,\n      rect: correctedRect,\n      edges: state.linkedEdges,\n      pageCoords: coords,\n      prevCoords: coords,\n      prevRect: correctedRect\n    });\n    const {\n      delta\n    } = result;\n\n    if (result.changed) {\n      const xIsCriticalAxis = Math.abs(delta.x) > Math.abs(delta.y); // do aspect modification again with critical edge axis as primary\n\n      aspectMethod(state, xIsCriticalAxis, result.coords, result.rect);\n      extend(coords, result.coords);\n    }\n\n    return result.eventProps;\n  },\n\n  defaults: {\n    ratio: 'preserve',\n    equalDelta: false,\n    modifiers: [],\n    enabled: false\n  }\n};\n\nfunction setEqualDelta({\n  startCoords,\n  edgeSign\n}, xIsPrimaryAxis, coords) {\n  if (xIsPrimaryAxis) {\n    coords.y = startCoords.y + (coords.x - startCoords.x) * edgeSign;\n  } else {\n    coords.x = startCoords.x + (coords.y - startCoords.y) * edgeSign;\n  }\n}\n\nfunction setRatio({\n  startRect,\n  startCoords,\n  ratio,\n  edgeSign\n}, xIsPrimaryAxis, coords, rect) {\n  if (xIsPrimaryAxis) {\n    const newHeight = rect.width / ratio;\n    coords.y = startCoords.y + (newHeight - startRect.height) * edgeSign;\n  } else {\n    const newWidth = rect.height * ratio;\n    coords.x = startCoords.x + (newWidth - startRect.width) * edgeSign;\n  }\n}\n\nexport default makeModifier(aspectRatio, 'aspectRatio');\nexport { aspectRatio };\n//# sourceMappingURL=aspectRatio.js.map","const noop = () => {};\n\nnoop._defaults = {};\nexport default noop;\n//# sourceMappingURL=noop.js.map","import extend from \"../../utils/extend.js\";\nimport is from \"../../utils/is.js\";\nimport * as rectUtils from \"../../utils/rect.js\";\nimport { makeModifier } from \"../base.js\";\n\nfunction start({\n  rect,\n  startOffset,\n  state,\n  interaction,\n  pageCoords\n}) {\n  const {\n    options\n  } = state;\n  const {\n    elementRect\n  } = options;\n  const offset = extend({\n    left: 0,\n    top: 0,\n    right: 0,\n    bottom: 0\n  }, options.offset || {});\n\n  if (rect && elementRect) {\n    const restriction = getRestrictionRect(options.restriction, interaction, pageCoords);\n\n    if (restriction) {\n      const widthDiff = restriction.right - restriction.left - rect.width;\n      const heightDiff = restriction.bottom - restriction.top - rect.height;\n\n      if (widthDiff < 0) {\n        offset.left += widthDiff;\n        offset.right += widthDiff;\n      }\n\n      if (heightDiff < 0) {\n        offset.top += heightDiff;\n        offset.bottom += heightDiff;\n      }\n    }\n\n    offset.left += startOffset.left - rect.width * elementRect.left;\n    offset.top += startOffset.top - rect.height * elementRect.top;\n    offset.right += startOffset.right - rect.width * (1 - elementRect.right);\n    offset.bottom += startOffset.bottom - rect.height * (1 - elementRect.bottom);\n  }\n\n  state.offset = offset;\n}\n\nfunction set({\n  coords,\n  interaction,\n  state\n}) {\n  const {\n    options,\n    offset\n  } = state;\n  const restriction = getRestrictionRect(options.restriction, interaction, coords);\n\n  if (!restriction) {\n    return;\n  }\n\n  const rect = rectUtils.xywhToTlbr(restriction);\n  coords.x = Math.max(Math.min(rect.right - offset.right, coords.x), rect.left + offset.left);\n  coords.y = Math.max(Math.min(rect.bottom - offset.bottom, coords.y), rect.top + offset.top);\n}\n\nexport function getRestrictionRect(value, interaction, coords) {\n  if (is.func(value)) {\n    return rectUtils.resolveRectLike(value, interaction.interactable, interaction.element, [coords.x, coords.y, interaction]);\n  } else {\n    return rectUtils.resolveRectLike(value, interaction.interactable, interaction.element);\n  }\n}\nconst defaults = {\n  restriction: null,\n  elementRect: null,\n  offset: null,\n  endOnly: false,\n  enabled: false\n};\nconst restrict = {\n  start,\n  set,\n  defaults\n};\nexport default makeModifier(restrict, 'restrict');\nexport { restrict };\n//# sourceMappingURL=pointer.js.map","// This module adds the options.resize.restrictEdges setting which sets min and\n// max for the top, left, bottom and right edges of the target being resized.\n//\n// interact(target).resize({\n//   edges: { top: true, left: true },\n//   restrictEdges: {\n//     inner: { top: 200, left: 200, right: 400, bottom: 400 },\n//     outer: { top:   0, left:   0, right: 600, bottom: 600 },\n//   },\n// })\nimport extend from \"../../utils/extend.js\";\nimport * as rectUtils from \"../../utils/rect.js\";\nimport { makeModifier } from \"../base.js\";\nimport { getRestrictionRect } from \"./pointer.js\";\nconst noInner = {\n  top: +Infinity,\n  left: +Infinity,\n  bottom: -Infinity,\n  right: -Infinity\n};\nconst noOuter = {\n  top: -Infinity,\n  left: -Infinity,\n  bottom: +Infinity,\n  right: +Infinity\n};\n\nfunction start({\n  interaction,\n  startOffset,\n  state\n}) {\n  const {\n    options\n  } = state;\n  let offset;\n\n  if (options) {\n    const offsetRect = getRestrictionRect(options.offset, interaction, interaction.coords.start.page);\n    offset = rectUtils.rectToXY(offsetRect);\n  }\n\n  offset = offset || {\n    x: 0,\n    y: 0\n  };\n  state.offset = {\n    top: offset.y + startOffset.top,\n    left: offset.x + startOffset.left,\n    bottom: offset.y - startOffset.bottom,\n    right: offset.x - startOffset.right\n  };\n}\n\nfunction set({\n  coords,\n  edges,\n  interaction,\n  state\n}) {\n  const {\n    offset,\n    options\n  } = state;\n\n  if (!edges) {\n    return;\n  }\n\n  const page = extend({}, coords);\n  const inner = getRestrictionRect(options.inner, interaction, page) || {};\n  const outer = getRestrictionRect(options.outer, interaction, page) || {};\n  fixRect(inner, noInner);\n  fixRect(outer, noOuter);\n\n  if (edges.top) {\n    coords.y = Math.min(Math.max(outer.top + offset.top, page.y), inner.top + offset.top);\n  } else if (edges.bottom) {\n    coords.y = Math.max(Math.min(outer.bottom + offset.bottom, page.y), inner.bottom + offset.bottom);\n  }\n\n  if (edges.left) {\n    coords.x = Math.min(Math.max(outer.left + offset.left, page.x), inner.left + offset.left);\n  } else if (edges.right) {\n    coords.x = Math.max(Math.min(outer.right + offset.right, page.x), inner.right + offset.right);\n  }\n}\n\nfunction fixRect(rect, defaults) {\n  for (const edge of ['top', 'left', 'bottom', 'right']) {\n    if (!(edge in rect)) {\n      rect[edge] = defaults[edge];\n    }\n  }\n\n  return rect;\n}\n\nconst defaults = {\n  inner: null,\n  outer: null,\n  offset: null,\n  endOnly: false,\n  enabled: false\n};\nconst restrictEdges = {\n  noInner,\n  noOuter,\n  start,\n  set,\n  defaults\n};\nexport default makeModifier(restrictEdges, 'restrictEdges');\nexport { restrictEdges };\n//# sourceMappingURL=edges.js.map","import extend from \"../../utils/extend.js\";\nimport { makeModifier } from \"../base.js\";\nimport { restrict } from \"./pointer.js\";\nconst defaults = extend({\n  get elementRect() {\n    return {\n      top: 0,\n      left: 0,\n      bottom: 1,\n      right: 1\n    };\n  },\n\n  set elementRect(_) {}\n\n}, restrict.defaults);\nconst restrictRect = {\n  start: restrict.start,\n  set: restrict.set,\n  defaults\n};\nexport default makeModifier(restrictRect, 'restrictRect');\nexport { restrictRect };\n//# sourceMappingURL=rect.js.map","import extend from \"../../utils/extend.js\";\nimport * as rectUtils from \"../../utils/rect.js\";\nimport { makeModifier } from \"../base.js\";\nimport { restrictEdges } from \"./edges.js\";\nimport { getRestrictionRect } from \"./pointer.js\";\nconst noMin = {\n  width: -Infinity,\n  height: -Infinity\n};\nconst noMax = {\n  width: +Infinity,\n  height: +Infinity\n};\n\nfunction start(arg) {\n  return restrictEdges.start(arg);\n}\n\nfunction set(arg) {\n  const {\n    interaction,\n    state,\n    rect,\n    edges\n  } = arg;\n  const {\n    options\n  } = state;\n\n  if (!edges) {\n    return;\n  }\n\n  const minSize = rectUtils.tlbrToXywh(getRestrictionRect(options.min, interaction, arg.coords)) || noMin;\n  const maxSize = rectUtils.tlbrToXywh(getRestrictionRect(options.max, interaction, arg.coords)) || noMax;\n  state.options = {\n    endOnly: options.endOnly,\n    inner: extend({}, restrictEdges.noInner),\n    outer: extend({}, restrictEdges.noOuter)\n  };\n\n  if (edges.top) {\n    state.options.inner.top = rect.bottom - minSize.height;\n    state.options.outer.top = rect.bottom - maxSize.height;\n  } else if (edges.bottom) {\n    state.options.inner.bottom = rect.top + minSize.height;\n    state.options.outer.bottom = rect.top + maxSize.height;\n  }\n\n  if (edges.left) {\n    state.options.inner.left = rect.right - minSize.width;\n    state.options.outer.left = rect.right - maxSize.width;\n  } else if (edges.right) {\n    state.options.inner.right = rect.left + minSize.width;\n    state.options.outer.right = rect.left + maxSize.width;\n  }\n\n  restrictEdges.set(arg);\n  state.options = options;\n}\n\nconst defaults = {\n  min: null,\n  max: null,\n  endOnly: false,\n  enabled: false\n};\nconst restrictSize = {\n  start,\n  set,\n  defaults\n};\nexport default makeModifier(restrictSize, 'restrictSize');\nexport { restrictSize };\n//# sourceMappingURL=size.js.map","import extend from \"../../utils/extend.js\";\nimport getOriginXY from \"../../utils/getOriginXY.js\";\nimport hypot from \"../../utils/hypot.js\";\nimport is from \"../../utils/is.js\";\nimport { resolveRectLike, rectToXY } from \"../../utils/rect.js\";\nimport { makeModifier } from \"../base.js\";\n\nfunction start(arg) {\n  const {\n    interaction,\n    interactable,\n    element,\n    rect,\n    state,\n    startOffset\n  } = arg;\n  const {\n    options\n  } = state;\n  const origin = options.offsetWithOrigin ? getOrigin(arg) : {\n    x: 0,\n    y: 0\n  };\n  let snapOffset;\n\n  if (options.offset === 'startCoords') {\n    snapOffset = {\n      x: interaction.coords.start.page.x,\n      y: interaction.coords.start.page.y\n    };\n  } else {\n    const offsetRect = resolveRectLike(options.offset, interactable, element, [interaction]);\n    snapOffset = rectToXY(offsetRect) || {\n      x: 0,\n      y: 0\n    };\n    snapOffset.x += origin.x;\n    snapOffset.y += origin.y;\n  }\n\n  const {\n    relativePoints\n  } = options;\n  state.offsets = rect && relativePoints && relativePoints.length ? relativePoints.map((relativePoint, index) => ({\n    index,\n    relativePoint,\n    x: startOffset.left - rect.width * relativePoint.x + snapOffset.x,\n    y: startOffset.top - rect.height * relativePoint.y + snapOffset.y\n  })) : [extend({\n    index: 0,\n    relativePoint: null\n  }, snapOffset)];\n}\n\nfunction set(arg) {\n  const {\n    interaction,\n    coords,\n    state\n  } = arg;\n  const {\n    options,\n    offsets\n  } = state;\n  const origin = getOriginXY(interaction.interactable, interaction.element, interaction.prepared.name);\n  const page = extend({}, coords);\n  const targets = [];\n\n  if (!options.offsetWithOrigin) {\n    page.x -= origin.x;\n    page.y -= origin.y;\n  }\n\n  for (const offset of offsets) {\n    const relativeX = page.x - offset.x;\n    const relativeY = page.y - offset.y;\n\n    for (let index = 0, len = options.targets.length; index < len; index++) {\n      const snapTarget = options.targets[index];\n      let target;\n\n      if (is.func(snapTarget)) {\n        target = snapTarget(relativeX, relativeY, interaction._proxy, offset, index);\n      } else {\n        target = snapTarget;\n      }\n\n      if (!target) {\n        continue;\n      }\n\n      targets.push({\n        x: (is.number(target.x) ? target.x : relativeX) + offset.x,\n        y: (is.number(target.y) ? target.y : relativeY) + offset.y,\n        range: is.number(target.range) ? target.range : options.range,\n        source: snapTarget,\n        index,\n        offset\n      });\n    }\n  }\n\n  const closest = {\n    target: null,\n    inRange: false,\n    distance: 0,\n    range: 0,\n    delta: {\n      x: 0,\n      y: 0\n    }\n  };\n\n  for (const target of targets) {\n    const range = target.range;\n    const dx = target.x - page.x;\n    const dy = target.y - page.y;\n    const distance = hypot(dx, dy);\n    let inRange = distance <= range; // Infinite targets count as being out of range\n    // compared to non infinite ones that are in range\n\n    if (range === Infinity && closest.inRange && closest.range !== Infinity) {\n      inRange = false;\n    }\n\n    if (!closest.target || (inRange // is the closest target in range?\n    ? closest.inRange && range !== Infinity // the pointer is relatively deeper in this target\n    ? distance / range < closest.distance / closest.range // this target has Infinite range and the closest doesn't\n    : range === Infinity && closest.range !== Infinity || // OR this target is closer that the previous closest\n    distance < closest.distance : // The other is not in range and the pointer is closer to this target\n    !closest.inRange && distance < closest.distance)) {\n      closest.target = target;\n      closest.distance = distance;\n      closest.range = range;\n      closest.inRange = inRange;\n      closest.delta.x = dx;\n      closest.delta.y = dy;\n    }\n  }\n\n  if (closest.inRange) {\n    coords.x = closest.target.x;\n    coords.y = closest.target.y;\n  }\n\n  state.closest = closest;\n  return closest;\n}\n\nfunction getOrigin(arg) {\n  const {\n    element\n  } = arg.interaction;\n  const optionsOrigin = rectToXY(resolveRectLike(arg.state.options.origin, null, null, [element]));\n  const origin = optionsOrigin || getOriginXY(arg.interactable, element, arg.interaction.prepared.name);\n  return origin;\n}\n\nconst defaults = {\n  range: Infinity,\n  targets: null,\n  offset: null,\n  offsetWithOrigin: true,\n  origin: null,\n  relativePoints: null,\n  endOnly: false,\n  enabled: false\n};\nconst snap = {\n  start,\n  set,\n  defaults\n};\nexport default makeModifier(snap, 'snap');\nexport { snap };\n//# sourceMappingURL=pointer.js.map","// This module allows snapping of the size of targets during resize\n// interactions.\nimport extend from \"../../utils/extend.js\";\nimport is from \"../../utils/is.js\";\nimport { makeModifier } from \"../base.js\";\nimport { snap } from \"./pointer.js\";\n\nfunction start(arg) {\n  const {\n    state,\n    edges\n  } = arg;\n  const {\n    options\n  } = state;\n\n  if (!edges) {\n    return null;\n  }\n\n  arg.state = {\n    options: {\n      targets: null,\n      relativePoints: [{\n        x: edges.left ? 0 : 1,\n        y: edges.top ? 0 : 1\n      }],\n      offset: options.offset || 'self',\n      origin: {\n        x: 0,\n        y: 0\n      },\n      range: options.range\n    }\n  };\n  state.targetFields = state.targetFields || [['width', 'height'], ['x', 'y']];\n  snap.start(arg);\n  state.offsets = arg.state.offsets;\n  arg.state = state;\n}\n\nfunction set(arg) {\n  const {\n    interaction,\n    state,\n    coords\n  } = arg;\n  const {\n    options,\n    offsets\n  } = state;\n  const relative = {\n    x: coords.x - offsets[0].x,\n    y: coords.y - offsets[0].y\n  };\n  state.options = extend({}, options);\n  state.options.targets = [];\n\n  for (const snapTarget of options.targets || []) {\n    let target;\n\n    if (is.func(snapTarget)) {\n      target = snapTarget(relative.x, relative.y, interaction);\n    } else {\n      target = snapTarget;\n    }\n\n    if (!target) {\n      continue;\n    }\n\n    for (const [xField, yField] of state.targetFields) {\n      if (xField in target || yField in target) {\n        target.x = target[xField];\n        target.y = target[yField];\n        break;\n      }\n    }\n\n    state.options.targets.push(target);\n  }\n\n  const returnValue = snap.set(arg);\n  state.options = options;\n  return returnValue;\n}\n\nconst defaults = {\n  range: Infinity,\n  targets: null,\n  offset: null,\n  endOnly: false,\n  enabled: false\n};\nconst snapSize = {\n  start,\n  set,\n  defaults\n};\nexport default makeModifier(snapSize, 'snapSize');\nexport { snapSize };\n//# sourceMappingURL=size.js.map","/**\n * @module modifiers/snapEdges\n *\n * @description\n * WOW> This module allows snapping of the edges of targets during resize\n * interactions.\n *\n * ```js\n * interact(target).resizable({\n *   snapEdges: {\n *     targets: [interact.snappers.grid({ x: 100, y: 50 })],\n *   },\n * })\n *\n * interact(target).resizable({\n *   snapEdges: {\n *     targets: [\n *       interact.snappers.grid({\n *        top: 50,\n *        left: 50,\n *        bottom: 100,\n *        right: 100,\n *       }),\n *     ],\n *   },\n * })\n * ```\n */\nimport clone from \"../../utils/clone.js\";\nimport extend from \"../../utils/extend.js\";\nimport { makeModifier } from \"../base.js\";\nimport { snapSize } from \"./size.js\";\n\nfunction start(arg) {\n  const {\n    edges\n  } = arg;\n\n  if (!edges) {\n    return null;\n  }\n\n  arg.state.targetFields = arg.state.targetFields || [[edges.left ? 'left' : 'right', edges.top ? 'top' : 'bottom']];\n  return snapSize.start(arg);\n}\n\nconst snapEdges = {\n  start,\n  set: snapSize.set,\n  defaults: extend(clone(snapSize.defaults), {\n    targets: null,\n    range: null,\n    offset: {\n      x: 0,\n      y: 0\n    }\n  })\n};\nexport default makeModifier(snapEdges, 'snapEdges');\nexport { snapEdges };\n//# sourceMappingURL=edges.js.map","/* eslint-disable node/no-extraneous-import */\nimport aspectRatio from \"./aspectRatio.js\";\nimport avoid from \"./avoid.js\";\nimport restrictEdges from \"./restrict/edges.js\";\nimport restrict from \"./restrict/pointer.js\";\nimport restrictRect from \"./restrict/rect.js\";\nimport restrictSize from \"./restrict/size.js\";\nimport rubberband from \"./rubberband.js\";\nimport snapEdges from \"./snap/edges.js\";\nimport snap from \"./snap/pointer.js\";\nimport snapSize from \"./snap/size.js\";\nimport spring from \"./spring.js\";\nimport transform from \"./transform.js\";\nexport default {\n  aspectRatio,\n  restrictEdges,\n  restrict,\n  restrictRect,\n  restrictSize,\n  snapEdges,\n  snap,\n  snapSize,\n  spring,\n  avoid,\n  transform,\n  rubberband\n};\n//# sourceMappingURL=all.js.map","import snappers from \"../snappers/plugin.js\";\nimport all from \"./all.js\";\nimport base from \"./base.js\";\nconst modifiers = {\n  id: 'modifiers',\n\n  install(scope) {\n    const {\n      interactStatic: interact\n    } = scope;\n    scope.usePlugin(base);\n    scope.usePlugin(snappers);\n    interact.modifiers = all; // for backwrads compatibility\n\n    for (const type in all) {\n      const {\n        _defaults,\n        _methods\n      } = all[type];\n      _defaults._methods = _methods;\n      scope.defaults.perAction[type] = _defaults;\n    }\n  }\n\n};\nexport default modifiers;\n//# sourceMappingURL=plugin.js.map","/* eslint-disable import/order, no-console, eol-last */\nimport interact, { init } from \"../interact/index.js\";\nimport plugin from \"./plugin.js\";\n\nif (typeof window === 'object' && !!window) {\n  init(window);\n}\n\ninteract.use(plugin);\n//# sourceMappingURL=index.js.map","/* eslint-disable no-console */\nimport { Scope } from \"../core/scope.js\";\nimport domObjects from \"../utils/domObjects.js\";\nimport { parentNode } from \"../utils/domUtils.js\";\nimport extend from \"../utils/extend.js\";\nimport is from \"../utils/is.js\";\nimport * as win from \"../utils/window.js\";\nvar CheckName;\n\n(function (CheckName) {\n  CheckName[\"touchAction\"] = \"touchAction\";\n  CheckName[\"boxSizing\"] = \"boxSizing\";\n  CheckName[\"noListeners\"] = \"noListeners\";\n})(CheckName || (CheckName = {}));\n\nconst prefix = '[interact.js] ';\nconst links = {\n  touchAction: 'https://developer.mozilla.org/en-US/docs/Web/CSS/touch-action',\n  boxSizing: 'https://developer.mozilla.org/en-US/docs/Web/CSS/box-sizing'\n}; // eslint-disable-next-line no-undef\n\nconst isProduction = \"development\" === 'production'; // eslint-disable-next-line no-restricted-syntax\n\nfunction install(scope, {\n  logger\n} = {}) {\n  const {\n    Interactable,\n    defaults\n  } = scope;\n  scope.logger = logger || console;\n  defaults.base.devTools = {\n    ignore: {}\n  };\n\n  Interactable.prototype.devTools = function (options) {\n    if (options) {\n      extend(this.options.devTools, options);\n      return this;\n    }\n\n    return this.options.devTools;\n  };\n}\n\nconst checks = [{\n  name: CheckName.touchAction,\n\n  perform({\n    element\n  }) {\n    return !parentHasStyle(element, 'touchAction', /pan-|pinch|none/);\n  },\n\n  getInfo({\n    element\n  }) {\n    return [element, links.touchAction];\n  },\n\n  text: 'Consider adding CSS \"touch-action: none\" to this element\\n'\n}, {\n  name: CheckName.boxSizing,\n\n  perform(interaction) {\n    const {\n      element\n    } = interaction;\n    return interaction.prepared.name === 'resize' && element instanceof domObjects.HTMLElement && !hasStyle(element, 'boxSizing', /border-box/);\n  },\n\n  text: 'Consider adding CSS \"box-sizing: border-box\" to this resizable element',\n\n  getInfo({\n    element\n  }) {\n    return [element, links.boxSizing];\n  }\n\n}, {\n  name: CheckName.noListeners,\n\n  perform(interaction) {\n    const actionName = interaction.prepared.name;\n    const moveListeners = interaction.interactable.events.types[`${actionName}move`] || [];\n    return !moveListeners.length;\n  },\n\n  getInfo(interaction) {\n    return [interaction.prepared.name, interaction.interactable];\n  },\n\n  text: 'There are no listeners set for this action'\n}];\n\nfunction hasStyle(element, prop, styleRe) {\n  const value = element.style[prop] || win.window.getComputedStyle(element)[prop];\n  return styleRe.test((value || '').toString());\n}\n\nfunction parentHasStyle(element, prop, styleRe) {\n  let parent = element;\n\n  while (is.element(parent)) {\n    if (hasStyle(parent, prop, styleRe)) {\n      return true;\n    }\n\n    parent = parentNode(parent);\n  }\n\n  return false;\n}\n\nconst id = 'dev-tools';\nconst defaultExport = isProduction ? {\n  id,\n  install: () => {}\n} : {\n  id,\n  install,\n  listeners: {\n    'interactions:action-start': ({\n      interaction\n    }, scope) => {\n      for (const check of checks) {\n        const options = interaction.interactable && interaction.interactable.options;\n\n        if (!(options && options.devTools && options.devTools.ignore[check.name]) && check.perform(interaction)) {\n          scope.logger.warn(prefix + check.text, ...check.getInfo(interaction));\n        }\n      }\n    }\n  },\n  checks,\n  CheckName,\n  links,\n  prefix\n};\nexport default defaultExport;\n//# sourceMappingURL=plugin.js.map","/* eslint-disable import/order, no-console, eol-last */\nimport interact, { init } from \"../interact/index.js\";\nimport plugin from \"./plugin.js\";\n\nif (typeof window === 'object' && !!window) {\n  init(window);\n}\n\ninteract.use(plugin);\n//# sourceMappingURL=index.js.map","export { default } from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./GridItem.vue?vue&type=script&lang=js\"; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./GridItem.vue?vue&type=script&lang=js\"","import { render } from \"./GridItem.vue?vue&type=template&id=46ff2fc8\"\nimport script from \"./GridItem.vue?vue&type=script&lang=js\"\nexport * from \"./GridItem.vue?vue&type=script&lang=js\"\n\nimport \"./GridItem.vue?vue&type=style&index=0&id=46ff2fc8&lang=css\"\nscript.render = render\n\nexport default script","<template>\r\n    <div ref=\"item\" class=\"vue-grid-layout\" :style=\"mergedStyle\">\r\n        <slot></slot>\r\n        <grid-item class=\"vue-grid-placeholder\"\r\n                   v-show=\"isDragging\"\r\n                   :x=\"placeholder.x\"\r\n                   :y=\"placeholder.y\"\r\n                   :w=\"placeholder.w\"\r\n                   :h=\"placeholder.h\"\r\n                   :i=\"placeholder.i\"></grid-item>\r\n    </div>\r\n</template>\r\n<style>\r\n    .vue-grid-layout {\r\n        position: relative;\r\n        transition: height 200ms ease;\r\n    }\r\n</style>\r\n<script>\r\n    import mitt from 'mitt';\r\n    const elementResizeDetectorMaker = require(\"element-resize-detector\");\r\n\r\n    import {bottom, compact, getLayoutItem, moveElement, validateLayout, cloneLayout, getAllCollisions} from '@/helpers/utils';\r\n    import {getBreakpointFromWidth, getColsFromBreakpoint, findOrGenerateResponsiveLayout} from \"@/helpers/responsiveUtils\";\r\n    //var eventBus = require('./eventBus');\r\n\r\n    import GridItem from './GridItem.vue'\r\n    import {addWindowEventListener, removeWindowEventListener} from \"@/helpers/DOM\";\r\n\r\n    export default {\r\n        name: \"GridLayout\",\r\n        provide() {\r\n            return {\r\n                eventBus: this.eventBus,\r\n                layout: this\r\n            }\r\n        },\r\n        components: {\r\n            GridItem,\r\n        },\r\n        props: {\r\n            // If true, the container height swells and contracts to fit contents\r\n            autoSize: {\r\n                type: Boolean,\r\n                default: true\r\n            },\r\n            colNum: {\r\n                type: Number,\r\n                default: 12\r\n            },\r\n            rowHeight: {\r\n                type: Number,\r\n                default: 150\r\n            },\r\n            maxRows: {\r\n                type: Number,\r\n                default: Infinity\r\n            },\r\n            margin: {\r\n                type: Array,\r\n                default: function () {\r\n                    return [10, 10];\r\n                }\r\n            },\r\n            isDraggable: {\r\n                type: Boolean,\r\n                default: true\r\n            },\r\n            isResizable: {\r\n                type: Boolean,\r\n                default: true\r\n            },\r\n            isMirrored: {\r\n                type: Boolean,\r\n                default: false\r\n            },\r\n            useCssTransforms: {\r\n                type: Boolean,\r\n                default: true\r\n            },\r\n            verticalCompact: {\r\n                type: Boolean,\r\n                default: true\r\n            },\r\n            layout: {\r\n                type: Array,\r\n                required: true\r\n            },\r\n            responsive: {\r\n                type: Boolean,\r\n                default: false\r\n            },\r\n            responsiveLayouts: {\r\n                type: Object,\r\n                default: function() {\r\n                    return {};\r\n                }\r\n            },\r\n            breakpoints:{\r\n                type: Object,\r\n                default: function(){return{ lg: 1200, md: 996, sm: 768, xs: 480, xxs: 0 }}\r\n            },\r\n            cols:{\r\n                type: Object,\r\n                default: function(){return{ lg: 12, md: 10, sm: 6, xs: 4, xxs: 2 }},\r\n            },\r\n            preventCollision: {\r\n                type: Boolean,\r\n                default: false\r\n            },\r\n            useStyleCursor: {\r\n                type: Boolean,\r\n                default: true\r\n            }\r\n        },\r\n        data: function () {\r\n            return {\r\n                eventBus: mitt(),\r\n                width: null,\r\n                mergedStyle: {},\r\n                lastLayoutLength: 0,\r\n                isDragging: false,\r\n                placeholder: {\r\n                    x: 0,\r\n                    y: 0,\r\n                    w: 0,\r\n                    h: 0,\r\n                    i: -1\r\n                },\r\n                layouts: {}, // array to store all layouts from different breakpoints\r\n                lastBreakpoint: null, // store last active breakpoint\r\n                originalLayout: null, // store original Layout\r\n                // layout: JSON.parse(JSON.stringify(this.value)),\r\n            };\r\n        },\r\n        created () {\r\n            const self = this;\r\n\r\n            // Accessible refernces of functions for removing in beforeUnmount\r\n            self.resizeEventHandler = function({eventType, i, x, y, h, w}) {\r\n                self.resizeEvent(eventType, i, x, y, h, w);\r\n            };\r\n\r\n            self.dragEventHandler = function({eventType, i, x, y, h, w}) {\r\n                self.dragEvent(eventType, i, x, y, h, w);\r\n            };\r\n\r\n            self.eventBus.on('resizeEvent', self.resizeEventHandler);\r\n            self.eventBus.on('dragEvent', self.dragEventHandler);\r\n            self.$emit('layout-created', self.layout);\r\n        },\r\n        beforeUnmount: function(){\r\n            //Remove listeners\r\n            this.eventBus.off('resizeEvent', this.resizeEventHandler);\r\n            this.eventBus.off('dragEvent', this.dragEventHandler);\r\n            removeWindowEventListener(\"resize\", this.onWindowResize);\r\n            if (this.erd) {\r\n                this.erd.uninstall(this.$refs.item);\r\n            }\r\n        },\r\n        beforeMount: function() {\r\n            this.$emit('layout-before-mount', this.layout);\r\n        },\r\n        mounted: function() {\r\n            this.$emit('layout-mounted', this.layout);\r\n            this.$nextTick(function () {\r\n                validateLayout(this.layout);\r\n\r\n                this.originalLayout = this.layout;\r\n                const self = this;\r\n                this.$nextTick(function() {\r\n                    self.onWindowResize();\r\n\r\n                    self.initResponsiveFeatures();\r\n\r\n                    //self.width = self.$el.offsetWidth;\r\n                    addWindowEventListener('resize', self.onWindowResize);\r\n\r\n                    compact(self.layout, self.verticalCompact);\r\n\r\n                    self.$emit('layout-updated',self.layout)\r\n\r\n                    self.updateHeight();\r\n                    self.$nextTick(function () {\r\n                        this.erd = elementResizeDetectorMaker({\r\n                            strategy: \"scroll\", //<- For ultra performance.\r\n                            // See https://github.com/wnr/element-resize-detector/issues/110 about callOnAdd.\r\n                            callOnAdd: false,\r\n                        });\r\n                        this.erd.listenTo(self.$refs.item, function () {\r\n                            self.onWindowResize();\r\n                        });\r\n                    });\r\n                });\r\n            });\r\n        },\r\n        watch: {\r\n            width: function (newval, oldval) {\r\n                const self = this;\r\n                this.$nextTick(function () {\r\n                    //this.$broadcast(\"updateWidth\", this.width);\r\n                    this.eventBus.emit(\"updateWidth\", this.width);\r\n                    if (oldval === null) {\r\n                        /*\r\n                            If oldval == null is when the width has never been\r\n                            set before. That only occurs when mouting is\r\n                            finished, and onWindowResize has been called and\r\n                            this.width has been changed the first time after it\r\n                            got set to null in the constructor. It is now time\r\n                            to issue layout-ready events as the GridItems have\r\n                            their sizes configured properly.\r\n\r\n                            The reason for emitting the layout-ready events on\r\n                            the next tick is to allow for the newly-emitted\r\n                            updateWidth event (above) to have reached the\r\n                            children GridItem-s and had their effect, so we're\r\n                            sure that they have the final size before we emit\r\n                            layout-ready (for this GridLayout) and\r\n                            item-layout-ready (for the GridItem-s).\r\n\r\n                            This way any client event handlers can reliably\r\n                            invistigate stable sizes of GridItem-s.\r\n                        */\r\n                        this.$nextTick(() => {\r\n                            this.$emit('layout-ready', self.layout);\r\n                        });\r\n                    }\r\n                    this.updateHeight();\r\n                });\r\n            },\r\n            layout() {\r\n                this.layoutUpdate();\r\n            },\r\n            colNum: function (val) {\r\n                this.eventBus.emit(\"setColNum\", val);\r\n            },\r\n            rowHeight: function() {\r\n                this.eventBus.emit(\"setRowHeight\", this.rowHeight);\r\n            },\r\n            isDraggable: function() {\r\n                this.eventBus.emit(\"setDraggable\", this.isDraggable);\r\n            },\r\n            isResizable: function() {\r\n                this.eventBus.emit(\"setResizable\", this.isResizable);\r\n            },\r\n            responsive() {\r\n                if (!this.responsive) {\r\n                    this.$emit('update:layout', this.originalLayout);\r\n                    this.eventBus.emit(\"setColNum\", this.colNum);\r\n                }\r\n                this.onWindowResize();\r\n            },\r\n            maxRows: function() {\r\n                this.eventBus.emit(\"setMaxRows\", this.maxRows);\r\n            },\r\n            margin() {\r\n                this.updateHeight();\r\n            }\r\n        },\r\n        methods: {\r\n            layoutUpdate() {\r\n                if (this.layout !== undefined && this.originalLayout !== null) {\r\n                    if (this.layout.length !== this.originalLayout.length) {\r\n                        // console.log(\"### LAYOUT UPDATE!\", this.layout.length, this.originalLayout.length);\r\n\r\n                        let diff = this.findDifference(this.layout, this.originalLayout);\r\n                        if (diff.length > 0){\r\n                            // console.log(diff);\r\n                            if (this.layout.length > this.originalLayout.length) {\r\n                                this.originalLayout = this.originalLayout.concat(diff);\r\n                            } else {\r\n                                this.originalLayout = this.originalLayout.filter(obj => {\r\n                                    return !diff.some(obj2 => {\r\n                                        return obj.i === obj2.i;\r\n                                    });\r\n                                });\r\n                            }\r\n                        }\r\n\r\n                        this.lastLayoutLength = this.layout.length;\r\n                        this.initResponsiveFeatures();\r\n                    }\r\n\r\n                    compact(this.layout, this.verticalCompact);\r\n                    this.eventBus.emit(\"updateWidth\", this.width);\r\n                    this.updateHeight();\r\n\r\n                    this.$emit('layout-updated',this.layout)\r\n                }\r\n            },\r\n            updateHeight: function () {\r\n                this.mergedStyle = {\r\n                    height: this.containerHeight()\r\n                };\r\n            },\r\n            onWindowResize: function () {\r\n                if (this.$refs !== null && this.$refs.item !== null && this.$refs.item !== undefined) {\r\n                    this.width = this.$refs.item.offsetWidth;\r\n                }\r\n                this.eventBus.emit(\"resizeEvent\", {});\r\n            },\r\n            containerHeight: function () {\r\n                if (!this.autoSize) return;\r\n                // console.log(\"bottom: \" + bottom(this.layout))\r\n                // console.log(\"rowHeight + margins: \" + (this.rowHeight + this.margin[1]) + this.margin[1])\r\n                const containerHeight =  bottom(this.layout) * (this.rowHeight + this.margin[1]) + this.margin[1] + 'px';\r\n                return containerHeight;\r\n            },\r\n            dragEvent: function (eventName, id, x, y, h, w) {\r\n                //console.log(eventName + \" id=\" + id + \", x=\" + x + \", y=\" + y);\r\n                let l = getLayoutItem(this.layout, id);\r\n                //GetLayoutItem sometimes returns null object\r\n                if (l === undefined || l === null){\r\n                    l = {x:0, y:0}\r\n                }\r\n\r\n                if (eventName === \"dragmove\" || eventName === \"dragstart\") {\r\n                    this.placeholder.i = id;\r\n                    this.placeholder.x = l.x;\r\n                    this.placeholder.y = l.y;\r\n                    this.placeholder.w = w;\r\n                    this.placeholder.h = h;\r\n                    this.$nextTick(function() {\r\n                        this.isDragging = true;\r\n                    });\r\n                    //this.$broadcast(\"updateWidth\", this.width);\r\n                    this.eventBus.emit(\"updateWidth\", this.width);\r\n                } else {\r\n                    this.$nextTick(function() {\r\n                        this.isDragging = false;\r\n                    });\r\n                }\r\n\r\n                // Move the element to the dragged location.\r\n                this.$emit(\"update:layout\", moveElement(this.layout, l, x, y, true, this.preventCollision));\r\n                compact(this.layout, this.verticalCompact);\r\n                // needed because vue can't detect changes on array element properties\r\n                this.eventBus.emit(\"compact\");\r\n                this.updateHeight();\r\n                if (eventName === 'dragend') this.$emit('layout-updated', this.layout);\r\n            },\r\n            resizeEvent: function (eventName, id, x, y, h, w) {\r\n                let l = getLayoutItem(this.layout, id);\r\n                //GetLayoutItem sometimes return null object\r\n                if (l === undefined || l === null){\r\n                    l = {h:0, w:0}\r\n                }\r\n\r\n                let hasCollisions;\r\n                if (this.preventCollision) {\r\n                    const collisions = getAllCollisions(this.layout, { ...l, w, h }).filter(\r\n                        layoutItem => layoutItem.i !== l.i\r\n                    );\r\n                    hasCollisions = collisions.length > 0;\r\n\r\n                    // If we're colliding, we need adjust the placeholder.\r\n                    if (hasCollisions) {\r\n                        // adjust w && h to maximum allowed space\r\n                        let leastX = Infinity,\r\n                        leastY = Infinity;\r\n                        collisions.forEach(layoutItem => {\r\n                        if (layoutItem.x > l.x) leastX = Math.min(leastX, layoutItem.x);\r\n                        if (layoutItem.y > l.y) leastY = Math.min(leastY, layoutItem.y);\r\n                        });\r\n\r\n                        if (Number.isFinite(leastX)) l.w = leastX - l.x;\r\n                        if (Number.isFinite(leastY)) l.h = leastY - l.y;\r\n                    }\r\n                }\r\n\r\n                if (!hasCollisions) {\r\n                    // Set new width and height.\r\n                    l.w = w;\r\n                    l.h = h;\r\n                }\r\n\r\n                if (eventName === \"resizestart\" || eventName === \"resizemove\") {\r\n                    this.placeholder.i = id;\r\n                    this.placeholder.x = x;\r\n                    this.placeholder.y = y;\r\n                    this.placeholder.w = l.w;\r\n                    this.placeholder.h = l.h;\r\n                    this.$nextTick(function() {\r\n                        this.isDragging = true;\r\n                    });\r\n                    //this.$broadcast(\"updateWidth\", this.width);\r\n                    this.eventBus.emit(\"updateWidth\", this.width);\r\n\r\n                } else {\r\n                    this.$nextTick(function() {\r\n                        this.isDragging = false;\r\n                    });\r\n                }\r\n\r\n                if (this.responsive) this.responsiveGridLayout();\r\n\r\n                compact(this.layout, this.verticalCompact);\r\n                this.eventBus.emit(\"compact\");\r\n                this.updateHeight();\r\n\r\n                if (eventName === 'resizeend') this.$emit('layout-updated', this.layout);\r\n            },\r\n\r\n            // finds or generates new layouts for set breakpoints\r\n            responsiveGridLayout(){\r\n                let newBreakpoint = getBreakpointFromWidth(this.breakpoints, this.width);\r\n                let newCols = getColsFromBreakpoint(newBreakpoint, this.cols);\r\n\r\n                // save actual layout in layouts\r\n                if(this.lastBreakpoint != null && !this.layouts[this.lastBreakpoint])\r\n                    this.layouts[this.lastBreakpoint] = cloneLayout(this.layout);\r\n\r\n                // Find or generate a new layout.\r\n                let layout = findOrGenerateResponsiveLayout(\r\n                    this.originalLayout,\r\n                    this.layouts,\r\n                    this.breakpoints,\r\n                    newBreakpoint,\r\n                    this.lastBreakpoint,\r\n                    newCols,\r\n                    this.verticalCompact\r\n                );\r\n\r\n                // Store the new layout.\r\n                this.layouts[newBreakpoint] = layout;\r\n\r\n                if (this.lastBreakpoint !== newBreakpoint) {\r\n                    this.$emit('breakpoint-changed', newBreakpoint, layout);\r\n                }\r\n\r\n                // new prop sync\r\n                this.$emit('update:layout', layout);\r\n\r\n                this.lastBreakpoint = newBreakpoint;\r\n                this.eventBus.emit(\"setColNum\", getColsFromBreakpoint(newBreakpoint, this.cols));\r\n            },\r\n\r\n            // clear all responsive layouts\r\n            initResponsiveFeatures(){\r\n                // clear layouts\r\n                this.layouts = Object.assign({}, this.responsiveLayouts);\r\n            },\r\n\r\n            // find difference in layouts\r\n            findDifference(layout, originalLayout){\r\n\r\n                //Find values that are in result1 but not in result2\r\n                let uniqueResultOne = layout.filter(function(obj) {\r\n                    return !originalLayout.some(function(obj2) {\r\n                        return obj.i === obj2.i;\r\n                    });\r\n                });\r\n\r\n                //Find values that are in result2 but not in result1\r\n                let uniqueResultTwo = originalLayout.filter(function(obj) {\r\n                    return !layout.some(function(obj2) {\r\n                        return obj.i === obj2.i;\r\n                    });\r\n                });\r\n\r\n                //Combine the two arrays of unique entries#\r\n                return uniqueResultOne.concat(uniqueResultTwo);\r\n            }\r\n        },\r\n    }\r\n</script>\r\n","export default function _defineProperty(obj, key, value) {\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n\n  return obj;\n}","export default function(n){return{all:n=n||new Map,on:function(t,e){var i=n.get(t);i&&i.push(e)||n.set(t,[e])},off:function(t,e){var i=n.get(t);i&&i.splice(i.indexOf(e)>>>0,1)},emit:function(t,e){(n.get(t)||[]).slice().map(function(n){n(e)}),(n.get(\"*\")||[]).slice().map(function(n){n(t,e)})}}}\n//# sourceMappingURL=mitt.es.js.map\n","export { default } from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./GridLayout.vue?vue&type=script&lang=js\"; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./GridLayout.vue?vue&type=script&lang=js\"","import { render } from \"./GridLayout.vue?vue&type=template&id=fc5948f6\"\nimport script from \"./GridLayout.vue?vue&type=script&lang=js\"\nexport * from \"./GridLayout.vue?vue&type=script&lang=js\"\n\nimport \"./GridLayout.vue?vue&type=style&index=0&id=fc5948f6&lang=css\"\nscript.render = render\n\nexport default script","import { App } from 'vue';\r\n\r\nimport GridItem from './GridItem.vue';\r\nimport GridLayout from './GridLayout.vue';\r\n\r\nexport { GridLayout, GridItem };\r\n\r\nconst install = (app: App) => {\r\n    app.component('grid-layout', GridLayout)\r\n    app.component('grid-item', GridItem)\r\n}\r\n\r\nexport default install;","import './setPublicPath'\nimport mod from '~entry'\nexport default mod\nexport * from '~entry'\n","// 20.1.2.2 Number.isFinite(number)\nvar $export = require('./_export');\nvar _isFinite = require('./_global').isFinite;\n\n$export($export.S, 'Number', {\n  isFinite: function isFinite(it) {\n    return typeof it == 'number' && _isFinite(it);\n  }\n});\n","module.exports = '\\x09\\x0A\\x0B\\x0C\\x0D\\x20\\xA0\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003' +\n  '\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n"],"sourceRoot":""}
\ No newline at end of file
+{"version":3,"sources":["webpack://VueGridLayout/webpack/bootstrap","webpack://VueGridLayout/./node_modules/core-js/modules/_iter-define.js","webpack://VueGridLayout/./node_modules/core-js/modules/_string-at.js","webpack://VueGridLayout/./node_modules/core-js/modules/_advance-string-index.js","webpack://VueGridLayout/./node_modules/core-js/library/modules/_has.js","webpack://VueGridLayout/./src/components/GridItem.vue?d411","webpack://VueGridLayout/./node_modules/core-js/modules/_flags.js","webpack://VueGridLayout/./node_modules/core-js/modules/_object-keys.js","webpack://VueGridLayout/./node_modules/core-js/modules/_object-gopd.js","webpack://VueGridLayout/./node_modules/core-js/modules/_object-dps.js","webpack://VueGridLayout/./node_modules/element-resize-detector/src/detection-strategy/object.js","webpack://VueGridLayout/./node_modules/element-resize-detector/src/browser-detector.js","webpack://VueGridLayout/./node_modules/core-js/library/modules/_to-primitive.js","webpack://VueGridLayout/./node_modules/core-js/library/modules/_dom-create.js","webpack://VueGridLayout/./node_modules/core-js/modules/_fix-re-wks.js","webpack://VueGridLayout/./node_modules/core-js/modules/_dom-create.js","webpack://VueGridLayout/./node_modules/core-js/modules/_classof.js","webpack://VueGridLayout/./node_modules/css-loader/dist/runtime/api.js","webpack://VueGridLayout/./node_modules/core-js/modules/_object-gops.js","webpack://VueGridLayout/./node_modules/core-js/library/modules/_fails.js","webpack://VueGridLayout/./node_modules/core-js/modules/_redefine.js","webpack://VueGridLayout/./node_modules/core-js/modules/_object-create.js","webpack://VueGridLayout/./node_modules/core-js/modules/_wks.js","webpack://VueGridLayout/./node_modules/element-resize-detector/src/id-generator.js","webpack://VueGridLayout/./node_modules/core-js/modules/_library.js","webpack://VueGridLayout/./node_modules/core-js/modules/_cof.js","webpack://VueGridLayout/./node_modules/core-js/modules/_strict-method.js","webpack://VueGridLayout/./node_modules/core-js/modules/_hide.js","webpack://VueGridLayout/./node_modules/core-js/library/modules/_hide.js","webpack://VueGridLayout/./node_modules/core-js/modules/_object-gpo.js","webpack://VueGridLayout/./node_modules/core-js/modules/_iter-create.js","webpack://VueGridLayout/./node_modules/core-js/library/fn/object/define-property.js","webpack://VueGridLayout/./node_modules/core-js/modules/es6.object.keys.js","webpack://VueGridLayout/./node_modules/core-js/modules/_to-integer.js","webpack://VueGridLayout/./node_modules/core-js/modules/_property-desc.js","webpack://VueGridLayout/./node_modules/core-js/library/modules/es6.object.define-property.js","webpack://VueGridLayout/./node_modules/core-js/modules/es6.regexp.match.js","webpack://VueGridLayout/./src/components/GridItem.vue?3b34","webpack://VueGridLayout/./node_modules/vue-style-loader/lib/listToStyles.js","webpack://VueGridLayout/./node_modules/vue-style-loader/lib/addStylesClient.js","webpack://VueGridLayout/./node_modules/element-resize-detector/src/listener-handler.js","webpack://VueGridLayout/./node_modules/core-js/modules/_to-object.js","webpack://VueGridLayout/./node_modules/element-resize-detector/src/id-handler.js","webpack://VueGridLayout/./node_modules/batch-processor/src/utils.js","webpack://VueGridLayout/./node_modules/core-js/modules/_regexp-exec.js","webpack://VueGridLayout/./node_modules/core-js/modules/_object-pie.js","webpack://VueGridLayout/./node_modules/core-js/modules/_shared.js","webpack://VueGridLayout/./node_modules/core-js/modules/es6.array.sort.js","webpack://VueGridLayout/./node_modules/core-js/library/modules/_core.js","webpack://VueGridLayout/./node_modules/element-resize-detector/src/element-utils.js","webpack://VueGridLayout/./node_modules/core-js/modules/_export.js","webpack://VueGridLayout/./node_modules/core-js/modules/_inherit-if-required.js","webpack://VueGridLayout/./node_modules/core-js/modules/_object-sap.js","webpack://VueGridLayout/./node_modules/core-js/modules/_regexp-exec-abstract.js","webpack://VueGridLayout/./node_modules/core-js/modules/_shared-key.js","webpack://VueGridLayout/./node_modules/core-js/modules/_iobject.js","webpack://VueGridLayout/./node_modules/core-js/library/modules/_export.js","webpack://VueGridLayout/./src/components/GridLayout.vue?845a","webpack://VueGridLayout/./node_modules/core-js/modules/_to-iobject.js","webpack://VueGridLayout/./node_modules/core-js/modules/_has.js","webpack://VueGridLayout/./node_modules/core-js/modules/_to-primitive.js","webpack://VueGridLayout/./node_modules/vue-loader-v16/dist/exportHelper.js","webpack://VueGridLayout/./node_modules/core-js/modules/_global.js","webpack://VueGridLayout/./node_modules/core-js/modules/_to-absolute-index.js","webpack://VueGridLayout/./node_modules/core-js/library/modules/_ie8-dom-define.js","webpack://VueGridLayout/./node_modules/core-js/library/modules/_a-function.js","webpack://VueGridLayout/./node_modules/core-js/modules/_fails.js","webpack://VueGridLayout/./node_modules/core-js/modules/_set-to-string-tag.js","webpack://VueGridLayout/./node_modules/core-js/modules/_core.js","webpack://VueGridLayout/./src/components/GridLayout.vue?2bad","webpack://VueGridLayout/./node_modules/core-js/modules/_iterators.js","webpack://VueGridLayout/./node_modules/@babel/runtime-corejs2/core-js/object/define-property.js","webpack://VueGridLayout/./node_modules/core-js/modules/_object-dp.js","webpack://VueGridLayout/./node_modules/@soda/get-current-script/index.js","webpack://VueGridLayout/./node_modules/core-js/modules/_set-proto.js","webpack://VueGridLayout/external {\"commonjs\":\"vue\",\"commonjs2\":\"vue\",\"root\":\"Vue\"}","webpack://VueGridLayout/./node_modules/core-js/library/modules/_descriptors.js","webpack://VueGridLayout/./node_modules/core-js/modules/es7.object.get-own-property-descriptors.js","webpack://VueGridLayout/./node_modules/core-js/modules/_object-gopn.js","webpack://VueGridLayout/./src/components/GridLayout.vue?c712","webpack://VueGridLayout/./node_modules/core-js/modules/_own-keys.js","webpack://VueGridLayout/./node_modules/core-js/modules/_ctx.js","webpack://VueGridLayout/./node_modules/core-js/modules/_add-to-unscopables.js","webpack://VueGridLayout/./node_modules/core-js/modules/_to-length.js","webpack://VueGridLayout/./node_modules/core-js/modules/_descriptors.js","webpack://VueGridLayout/./node_modules/core-js/modules/es6.regexp.replace.js","webpack://VueGridLayout/./node_modules/core-js/modules/_string-trim.js","webpack://VueGridLayout/./node_modules/element-resize-detector/src/reporter.js","webpack://VueGridLayout/./node_modules/core-js/modules/web.dom.iterable.js","webpack://VueGridLayout/./node_modules/core-js/library/modules/_property-desc.js","webpack://VueGridLayout/./node_modules/core-js/modules/es6.regexp.exec.js","webpack://VueGridLayout/./node_modules/element-resize-detector/src/collection-utils.js","webpack://VueGridLayout/./node_modules/core-js/modules/_defined.js","webpack://VueGridLayout/./node_modules/batch-processor/src/batch-processor.js","webpack://VueGridLayout/./node_modules/core-js/modules/_array-includes.js","webpack://VueGridLayout/./src/components/GridItem.vue?1d19","webpack://VueGridLayout/./node_modules/core-js/modules/es6.number.constructor.js","webpack://VueGridLayout/./node_modules/core-js/modules/_ie8-dom-define.js","webpack://VueGridLayout/./node_modules/element-resize-detector/src/detection-strategy/scroll.js","webpack://VueGridLayout/./node_modules/core-js/modules/_uid.js","webpack://VueGridLayout/./node_modules/core-js/modules/es6.array.iterator.js","webpack://VueGridLayout/./node_modules/core-js/modules/_an-object.js","webpack://VueGridLayout/./node_modules/core-js/modules/_object-keys-internal.js","webpack://VueGridLayout/./node_modules/core-js/modules/_is-object.js","webpack://VueGridLayout/./node_modules/core-js/modules/_iter-step.js","webpack://VueGridLayout/./node_modules/element-resize-detector/src/state-handler.js","webpack://VueGridLayout/./node_modules/core-js/library/modules/_ctx.js","webpack://VueGridLayout/./node_modules/core-js/modules/_a-function.js","webpack://VueGridLayout/./node_modules/core-js/library/modules/_object-dp.js","webpack://VueGridLayout/./node_modules/core-js/modules/_enum-bug-keys.js","webpack://VueGridLayout/./node_modules/core-js/library/modules/_an-object.js","webpack://VueGridLayout/./node_modules/core-js/library/modules/_global.js","webpack://VueGridLayout/./node_modules/element-resize-detector/src/element-resize-detector.js","webpack://VueGridLayout/./node_modules/core-js/modules/_create-property.js","webpack://VueGridLayout/./node_modules/core-js/library/modules/_is-object.js","webpack://VueGridLayout/./node_modules/core-js/modules/_function-to-string.js","webpack://VueGridLayout/./node_modules/core-js/modules/_html.js","webpack://VueGridLayout/./node_modules/@vue/cli-service/lib/commands/build/setPublicPath.js","webpack://VueGridLayout/./src/components/GridItem.vue","webpack://VueGridLayout/./src/helpers/utils.js","webpack://VueGridLayout/./src/helpers/draggableUtils.js","webpack://VueGridLayout/./src/helpers/responsiveUtils.js","webpack://VueGridLayout/./src/helpers/DOM.js","webpack://VueGridLayout/./node_modules/@interactjs/utils/domObjects.js","webpack://VueGridLayout/./node_modules/@interactjs/utils/isWindow.js","webpack://VueGridLayout/./node_modules/@interactjs/utils/window.js","webpack://VueGridLayout/./node_modules/@interactjs/utils/is.js","webpack://VueGridLayout/./node_modules/@interactjs/utils/browser.js","webpack://VueGridLayout/./node_modules/@interactjs/utils/arr.js","webpack://VueGridLayout/./node_modules/@interactjs/utils/clone.js","webpack://VueGridLayout/./node_modules/@interactjs/utils/extend.js","webpack://VueGridLayout/./node_modules/@interactjs/utils/raf.js","webpack://VueGridLayout/./node_modules/@interactjs/utils/normalizeListeners.js","webpack://VueGridLayout/./node_modules/@interactjs/core/Eventable.js","webpack://VueGridLayout/./node_modules/@interactjs/utils/domUtils.js","webpack://VueGridLayout/./node_modules/@interactjs/utils/rect.js","webpack://VueGridLayout/./node_modules/@interactjs/utils/getOriginXY.js","webpack://VueGridLayout/./node_modules/@interactjs/utils/hypot.js","webpack://VueGridLayout/./node_modules/@interactjs/core/BaseEvent.js","webpack://VueGridLayout/./node_modules/@interactjs/core/defaultOptions.js","webpack://VueGridLayout/./node_modules/@interactjs/core/InteractEvent.js","webpack://VueGridLayout/./node_modules/@interactjs/core/isNonNativeEvent.js","webpack://VueGridLayout/./node_modules/@interactjs/core/Interactable.js","webpack://VueGridLayout/./node_modules/@interactjs/core/InteractableSet.js","webpack://VueGridLayout/./node_modules/@interactjs/utils/pointerExtend.js","webpack://VueGridLayout/./node_modules/@interactjs/utils/pointerUtils.js","webpack://VueGridLayout/./node_modules/@interactjs/core/events.js","webpack://VueGridLayout/./node_modules/@interactjs/utils/misc.js","webpack://VueGridLayout/./node_modules/@interactjs/core/interactStatic.js","webpack://VueGridLayout/./node_modules/@interactjs/core/PointerInfo.js","webpack://VueGridLayout/./node_modules/@interactjs/core/Interaction.js","webpack://VueGridLayout/./node_modules/@interactjs/core/interactablePreventDefault.js","webpack://VueGridLayout/./node_modules/@interactjs/core/interactionFinder.js","webpack://VueGridLayout/./node_modules/@interactjs/core/interactions.js","webpack://VueGridLayout/./node_modules/@interactjs/core/scope.js","webpack://VueGridLayout/./node_modules/@interactjs/interact/index.js","webpack://VueGridLayout/./node_modules/@interactjs/auto-start/InteractableMethods.js","webpack://VueGridLayout/./node_modules/@interactjs/auto-start/base.js","webpack://VueGridLayout/./node_modules/@interactjs/auto-start/dragAxis.js","webpack://VueGridLayout/./node_modules/@interactjs/auto-start/hold.js","webpack://VueGridLayout/./node_modules/@interactjs/auto-start/plugin.js","webpack://VueGridLayout/./node_modules/@interactjs/auto-start/index.js","webpack://VueGridLayout/./node_modules/@interactjs/actions/drag/plugin.js","webpack://VueGridLayout/./node_modules/@interactjs/actions/drag/index.js","webpack://VueGridLayout/./node_modules/@interactjs/actions/resize/plugin.js","webpack://VueGridLayout/./node_modules/@interactjs/actions/resize/index.js","webpack://VueGridLayout/./node_modules/@interactjs/snappers/edgeTarget.js","webpack://VueGridLayout/./node_modules/@interactjs/snappers/elements.js","webpack://VueGridLayout/./node_modules/@interactjs/snappers/grid.js","webpack://VueGridLayout/./node_modules/@interactjs/snappers/all.js","webpack://VueGridLayout/./node_modules/@interactjs/snappers/plugin.js","webpack://VueGridLayout/./node_modules/@interactjs/modifiers/Modification.js","webpack://VueGridLayout/./node_modules/@interactjs/modifiers/base.js","webpack://VueGridLayout/./node_modules/@interactjs/modifiers/aspectRatio.js","webpack://VueGridLayout/./node_modules/@interactjs/modifiers/noop.js","webpack://VueGridLayout/./node_modules/@interactjs/modifiers/restrict/pointer.js","webpack://VueGridLayout/./node_modules/@interactjs/modifiers/restrict/edges.js","webpack://VueGridLayout/./node_modules/@interactjs/modifiers/restrict/rect.js","webpack://VueGridLayout/./node_modules/@interactjs/modifiers/restrict/size.js","webpack://VueGridLayout/./node_modules/@interactjs/modifiers/snap/pointer.js","webpack://VueGridLayout/./node_modules/@interactjs/modifiers/snap/size.js","webpack://VueGridLayout/./node_modules/@interactjs/modifiers/snap/edges.js","webpack://VueGridLayout/./node_modules/@interactjs/modifiers/all.js","webpack://VueGridLayout/./node_modules/@interactjs/modifiers/plugin.js","webpack://VueGridLayout/./node_modules/@interactjs/modifiers/index.js","webpack://VueGridLayout/./node_modules/@interactjs/dev-tools/plugin.js","webpack://VueGridLayout/./node_modules/@interactjs/dev-tools/index.js","webpack://VueGridLayout/./src/components/GridItem.vue?b8d1","webpack://VueGridLayout/./src/components/GridItem.vue?0590","webpack://VueGridLayout/./src/components/GridLayout.vue","webpack://VueGridLayout/./node_modules/@babel/runtime-corejs2/helpers/esm/defineProperty.js","webpack://VueGridLayout/./node_modules/mitt/dist/mitt.es.js","webpack://VueGridLayout/./src/components/GridLayout.vue?373d","webpack://VueGridLayout/./src/components/GridLayout.vue?19aa","webpack://VueGridLayout/./src/components/index.js","webpack://VueGridLayout/./node_modules/@vue/cli-service/lib/commands/build/entry-lib.js","webpack://VueGridLayout/./node_modules/core-js/modules/es6.number.is-finite.js","webpack://VueGridLayout/./node_modules/core-js/modules/_string-ws.js"],"names":["bottom","layout","max","bottomY","i","len","length","y","h","cloneLayout","newLayout","Array","cloneLayoutItem","layoutItem","JSON","parse","stringify","collides","l1","l2","x","w","compact","verticalCompact","compareWith","getStatics","sorted","sortLayoutItemsByRowCol","out","l","static","compactItem","push","indexOf","moved","getFirstCollision","correctBounds","bounds","collidesWith","cols","getLayoutItem","id","getAllCollisions","filter","moveElement","isUserAction","preventCollision","oldX","oldY","movingUp","reverse","collisions","collision","moveElementAwayFromCollision","itemToMove","fakeItem","Math","undefined","perc","num","setTransform","top","left","width","height","translate","transform","WebkitTransform","MozTransform","msTransform","OTransform","position","setTransformRtl","right","setTopLeft","setTopRight","concat","sort","a","b","validateLayout","contextName","subProps","keyArr","isArray","Error","item","j","autoBindHandlers","el","fns","forEach","key","bind","createMarkup","obj","keys","Object","result","val","hyphenate","addPx","IS_UNITLESS","animationIterationCount","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridRow","gridColumn","fontWeight","lineClamp","lineHeight","opacity","order","orphans","tabSize","widows","zIndex","zoom","fillOpacity","stopOpacity","strokeDashoffset","strokeOpacity","strokeWidth","name","value","hyphenateRE","str","replace","toLowerCase","findItemInArray","array","property","findAndRemove","index","splice","getControlPosition","e","offsetXYFromParentOf","evt","offsetParent","target","document","body","offsetParentRect","getBoundingClientRect","clientX","scrollLeft","clientY","scrollTop","createCoreData","lastX","lastY","isStart","isNum","deltaX","deltaY","isNaN","getBreakpointFromWidth","breakpoints","sortBreakpoints","matching","breakpointName","getColsFromBreakpoint","breakpoint","findOrGenerateResponsiveLayout","orgLayout","layouts","lastBreakpoint","breakpointsSorted","breakpointsAbove","slice","generateResponsiveLayout","currentDir","hasDocument","hasWindow","window","getDocumentDir","direction","dir","getElementsByTagName","getAttribute","setDocumentDir","html","setAttribute","addWindowEventListener","event","callback","addEventListener","removeWindowEventListener","removeEventListener","install","app","component","GridLayout","GridItem"],"mappings":";;;QAAA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;;;QAGA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA,0CAA0C,gCAAgC;QAC1E;QACA;;QAEA;QACA;QACA;QACA,wDAAwD,kBAAkB;QAC1E;QACA,iDAAiD,cAAc;QAC/D;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA,yCAAyC,iCAAiC;QAC1E,gHAAgH,mBAAmB,EAAE;QACrI;QACA;;QAEA;QACA;QACA;QACA,2BAA2B,0BAA0B,EAAE;QACvD,iCAAiC,eAAe;QAChD;QACA;QACA;;QAEA;QACA,sDAAsD,+DAA+D;;QAErH;QACA;;;QAGA;QACA;;;;;;;;;AClFa;AACb,cAAc,mBAAO,CAAC,MAAY;AAClC,cAAc,mBAAO,CAAC,MAAW;AACjC,eAAe,mBAAO,CAAC,MAAa;AACpC,WAAW,mBAAO,CAAC,MAAS;AAC5B,gBAAgB,mBAAO,CAAC,MAAc;AACtC,kBAAkB,mBAAO,CAAC,MAAgB;AAC1C,qBAAqB,mBAAO,CAAC,MAAsB;AACnD,qBAAqB,mBAAO,CAAC,MAAe;AAC5C,eAAe,mBAAO,CAAC,MAAQ;AAC/B,8CAA8C;AAC9C;AACA;AACA;;AAEA,8BAA8B,aAAa;;AAE3C;AACA;AACA;AACA;AACA;AACA,yCAAyC,oCAAoC;AAC7E,6CAA6C,oCAAoC;AACjF,KAAK,4BAA4B,oCAAoC;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,mBAAmB;AACnC;AACA;AACA,kCAAkC,2BAA2B;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;;;;;;;ACpEA,gBAAgB,mBAAO,CAAC,MAAe;AACvC,cAAc,mBAAO,CAAC,MAAY;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AChBa;AACb,SAAS,mBAAO,CAAC,MAAc;;AAE/B;AACA;AACA;AACA;AACA;;;;;;;;ACPA,uBAAuB;AACvB;AACA;AACA;;;;;;;;;ACHA;AAAA;AAAA;;;;;;;;;ACAa;AACb;AACA,eAAe,mBAAO,CAAC,MAAc;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACZA;AACA,YAAY,mBAAO,CAAC,MAAyB;AAC7C,kBAAkB,mBAAO,CAAC,MAAkB;;AAE5C;AACA;AACA;;;;;;;;ACNA,UAAU,mBAAO,CAAC,MAAe;AACjC,iBAAiB,mBAAO,CAAC,MAAkB;AAC3C,gBAAgB,mBAAO,CAAC,MAAe;AACvC,kBAAkB,mBAAO,CAAC,MAAiB;AAC3C,UAAU,mBAAO,CAAC,MAAQ;AAC1B,qBAAqB,mBAAO,CAAC,MAAmB;AAChD;;AAEA,YAAY,mBAAO,CAAC,MAAgB;AACpC;AACA;AACA;AACA;AACA,GAAG,YAAY;AACf;AACA;;;;;;;;ACfA,SAAS,mBAAO,CAAC,MAAc;AAC/B,eAAe,mBAAO,CAAC,MAAc;AACrC,cAAc,mBAAO,CAAC,MAAgB;;AAEtC,iBAAiB,mBAAO,CAAC,MAAgB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACZA;AACA;AACA;AACA;;AAEa;;AAEb,sBAAsB,mBAAO,CAAC,MAAqB;;AAEnD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,QAAQ;AACvB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,yDAAyD,OAAO;;AAEhE;AACA;;AAEA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,QAAQ;AACvB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;;AAE7B;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACtPa;;AAEb;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;;;;;;;;ACtCA;AACA,eAAe,mBAAO,CAAC,MAAc;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACXA,eAAe,mBAAO,CAAC,MAAc;AACrC,eAAe,mBAAO,CAAC,MAAW;AAClC;AACA;AACA;AACA;AACA;;;;;;;;;ACNa;AACb,mBAAO,CAAC,MAAmB;AAC3B,eAAe,mBAAO,CAAC,MAAa;AACpC,WAAW,mBAAO,CAAC,MAAS;AAC5B,YAAY,mBAAO,CAAC,MAAU;AAC9B,cAAc,mBAAO,CAAC,MAAY;AAClC,UAAU,mBAAO,CAAC,MAAQ;AAC1B,iBAAiB,mBAAO,CAAC,MAAgB;;AAEzC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,yBAAyB,4CAA4C;AACrE;AACA;AACA,CAAC;;AAED;AACA;;AAEA;AACA;AACA;AACA,6BAA6B,UAAU;AACvC;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,2BAA2B,mBAAmB,aAAa;AAC3D;AACA;AACA;AACA;AACA,6CAA6C,WAAW;AACxD;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA,kBAAkB;AAClB;AACA,gBAAgB;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gCAAgC,qCAAqC;AACrE;AACA;AACA,2BAA2B,gCAAgC;AAC3D;AACA;AACA;;;;;;;;AC/FA,eAAe,mBAAO,CAAC,MAAc;AACrC,eAAe,mBAAO,CAAC,MAAW;AAClC;AACA;AACA;AACA;AACA;;;;;;;;ACNA;AACA,UAAU,mBAAO,CAAC,MAAQ;AAC1B,UAAU,mBAAO,CAAC,MAAQ;AAC1B;AACA,2BAA2B,kBAAkB,EAAE;;AAE/C;AACA;AACA;AACA;AACA,GAAG,YAAY;AACf;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACtBa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;;AAEhB;AACA;AACA;;AAEA;AACA,4CAA4C,qBAAqB;AACjE;;AAEA;AACA,KAAK;AACL,IAAI;AACJ;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,qBAAqB,iBAAiB;AACtC;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,oBAAoB,qBAAqB;AACzC;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,8BAA8B;;AAE9B;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA,CAAC;;;AAGD;AACA;AACA;AACA,qDAAqD,cAAc;AACnE;AACA,C;;;;;;;AC7FA;;;;;;;;ACAA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;;;;;;;ACNA,aAAa,mBAAO,CAAC,MAAW;AAChC,WAAW,mBAAO,CAAC,MAAS;AAC5B,UAAU,mBAAO,CAAC,MAAQ;AAC1B,UAAU,mBAAO,CAAC,MAAQ;AAC1B,gBAAgB,mBAAO,CAAC,MAAuB;AAC/C;AACA;;AAEA,mBAAO,CAAC,MAAS;AACjB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA,CAAC;AACD;AACA,CAAC;;;;;;;;AC9BD;AACA,eAAe,mBAAO,CAAC,MAAc;AACrC,UAAU,mBAAO,CAAC,MAAe;AACjC,kBAAkB,mBAAO,CAAC,MAAkB;AAC5C,eAAe,mBAAO,CAAC,MAAe;AACtC,yBAAyB;AACzB;;AAEA;AACA;AACA;AACA,eAAe,mBAAO,CAAC,MAAe;AACtC;AACA;AACA;AACA;AACA;AACA,EAAE,mBAAO,CAAC,MAAS;AACnB,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;;;;;;;ACxCA,YAAY,mBAAO,CAAC,MAAW;AAC/B,UAAU,mBAAO,CAAC,MAAQ;AAC1B,aAAa,mBAAO,CAAC,MAAW;AAChC;;AAEA;AACA;AACA;AACA;;AAEA;;;;;;;;;ACVa;;AAEb;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;;;;;;ACjBA;;;;;;;;ACAA,iBAAiB;;AAEjB;AACA;AACA;;;;;;;;;ACJa;AACb,YAAY,mBAAO,CAAC,MAAU;;AAE9B;AACA;AACA;AACA,yCAAyC,cAAc;AACvD,GAAG;AACH;;;;;;;;ACRA,SAAS,mBAAO,CAAC,MAAc;AAC/B,iBAAiB,mBAAO,CAAC,MAAkB;AAC3C,iBAAiB,mBAAO,CAAC,MAAgB;AACzC;AACA,CAAC;AACD;AACA;AACA;;;;;;;;ACPA,SAAS,mBAAO,CAAC,MAAc;AAC/B,iBAAiB,mBAAO,CAAC,MAAkB;AAC3C,iBAAiB,mBAAO,CAAC,MAAgB;AACzC;AACA,CAAC;AACD;AACA;AACA;;;;;;;;ACPA;AACA,UAAU,mBAAO,CAAC,MAAQ;AAC1B,eAAe,mBAAO,CAAC,MAAc;AACrC,eAAe,mBAAO,CAAC,MAAe;AACtC;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;;;;;;;;ACZa;AACb,aAAa,mBAAO,CAAC,MAAkB;AACvC,iBAAiB,mBAAO,CAAC,MAAkB;AAC3C,qBAAqB,mBAAO,CAAC,MAAsB;AACnD;;AAEA;AACA,mBAAO,CAAC,MAAS,qBAAqB,mBAAO,CAAC,MAAQ,4BAA4B,aAAa,EAAE;;AAEjG;AACA,qDAAqD,4BAA4B;AACjF;AACA;;;;;;;;ACZA,mBAAO,CAAC,MAA0C;AAClD,cAAc,mBAAO,CAAC,MAAqB;AAC3C;AACA;AACA;;;;;;;;ACJA;AACA,eAAe,mBAAO,CAAC,MAAc;AACrC,YAAY,mBAAO,CAAC,MAAgB;;AAEpC,mBAAO,CAAC,MAAe;AACvB;AACA;AACA;AACA,CAAC;;;;;;;;ACRD;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACPA,cAAc,mBAAO,CAAC,MAAW;AACjC;AACA,iCAAiC,mBAAO,CAAC,MAAgB,cAAc,iBAAiB,mBAAO,CAAC,MAAc,KAAK;;;;;;;;;ACFtG;;AAEb,eAAe,mBAAO,CAAC,MAAc;AACrC,eAAe,mBAAO,CAAC,MAAc;AACrC,yBAAyB,mBAAO,CAAC,MAAyB;AAC1D,iBAAiB,mBAAO,CAAC,MAAyB;;AAElD;AACA,mBAAO,CAAC,MAAe;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;ACvCD;AACA,kCAAkC,mBAAO,CAAC,MAAmD;AAC7F;AACA;AACA,cAAc,QAAS,kBAAkB,gCAAgC,wBAAwB,2CAA2C,mCAAmC,uCAAuC,sBAAsB,kBAAkB,6BAA6B,8CAA8C,sCAAsC,8BAA8B,gDAAgD,OAAO,WAAW,wCAAwC,UAAU,QAAQ,wBAAwB,WAAW,UAAU,sCAAsC,wBAAwB,gBAAgB,UAAU,oCAAoC,eAAe,WAAW,gCAAgC,wBAAwB,UAAU,yBAAyB,sBAAsB,qBAAqB,oBAAoB,iBAAiB,qCAAqC,kBAAkB,WAAW,YAAY,SAAS,QAAQ,oCAAoC,mNAAmN,8BAA8B,oBAAoB,4BAA4B,8BAA8B,8BAA8B,sBAAsB,iBAAiB,yCAAyC,SAAS,OAAO,kCAAkC,6hBAA6hB,2BAA2B,iBAAiB,4BAA4B,8BAA8B,iBAAiB,WAAW,kCAAkC,yBAAyB,sBAAsB,qBAAqB,iBAAiB;AAC/uE;AACA;;;;;;;;;;;;;;;;ACNA;AACA;AACA;AACA;AACe;AACf;AACA;AACA,iBAAiB,iBAAiB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,wBAAwB;AAC3D,KAAK;AACL;AACA;AACA;AACA;AACA;;;AC1BA;AACA;AACA;AACA;AACA;;AAEyC;;AAEzC;;AAEA;AACA;AACA;AACA;AACA,UAAU,iBAAiB;AAC3B;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEe;AACf;;AAEA;;AAEA,eAAe,YAAY;AAC3B;;AAEA;AACA;AACA,mBAAmB,mBAAmB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,YAAY;AAC3B;AACA,KAAK;AACL;AACA;AACA,mBAAmB,sBAAsB;AACzC;AACA;AACA,uBAAuB,2BAA2B;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iBAAiB,mBAAmB;AACpC;AACA;AACA;AACA;AACA,qBAAqB,2BAA2B;AAChD;AACA;AACA,YAAY,uBAAuB;AACnC;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,qBAAqB,uBAAuB;AAC5C;AACA;AACA,8BAA8B;AAC9B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,yDAAyD;AACzD;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC7Na;;AAEb;AACA;;AAEA;AACA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,eAAe,QAAQ;AACvB,eAAe,SAAS;AACxB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,+CAA+C,SAAS;AACx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B,mBAAO,CAAC,MAAe;AACvC,yBAAyB,mBAAO,CAAC,MAAyB;AAC1D,iBAAiB,mBAAO,CAAC,MAAyB;AAClD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,mBAAO,CAAC,MAAe;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,oBAAoB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,mBAAmB;AAC1C;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,CAAC;;;;;;;;ACrHD,cAAc,mBAAO,CAAC,MAAW;AACjC,cAAc,mBAAO,CAAC,MAAY;AAClC,YAAY,mBAAO,CAAC,MAAU;AAC9B,aAAa,mBAAO,CAAC,MAAc;AACnC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;AC7Ba;;AAEb;;AAEA;AACA;AACA;AACA,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA,iBAAiB;AACjB,mCAAmC,sBAAsB;AACzD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,E;;;;;;;AC1CA,iBAAiB,mBAAO,CAAC,MAAsB;AAC/C,cAAc,mBAAO,CAAC,MAAgB;AACtC,eAAe,mBAAO,CAAC,MAAa;AACpC,aAAa,mBAAO,CAAC,MAAW;AAChC,WAAW,mBAAO,CAAC,MAAS;AAC5B,gBAAgB,mBAAO,CAAC,MAAc;AACtC,UAAU,mBAAO,CAAC,MAAQ;AAC1B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,oDAAoD,wBAAwB;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACzDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPa;AACb,iBAAiB,mBAAO,CAAC,MAAgB;AACzC,mBAAO,CAAC,MAAW;AACnB;AACA;AACA;AACA,CAAC;AACD;AACA,CAAC;;;;;;;;;ACRY;;AAEb;;AAEA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,SAAS;AACpB,aAAa,EAAE;AACf;AACA;AACA,kBAAkB,uBAAuB;AACzC;AACA;AACA;AACA;AACA;AACA;;;;;;;;AClBA;AACA;AACA;AACA;AACA;;;;;;;;;ACJa;;AAEb,YAAY,mBAAO,CAAC,MAAS;;AAE7B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,4IAA4I,kCAAkC;AAC9K,gCAAgC,0BAA0B;AAC1D;AACA;;AAEA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,mCAAmC,iBAAiB;AACpD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,oEAAoE;AACpE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,iBAAiB;;AAEjB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,qBAAqB;AACrB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACppBA;AACA;AACA;AACA;AACA;;;;;;;;;ACJa;AACb,uBAAuB,mBAAO,CAAC,MAAuB;AACtD,WAAW,mBAAO,CAAC,MAAc;AACjC,gBAAgB,mBAAO,CAAC,MAAc;AACtC,gBAAgB,mBAAO,CAAC,MAAe;;AAEvC;AACA;AACA;AACA;AACA,iBAAiB,mBAAO,CAAC,MAAgB;AACzC,gCAAgC;AAChC,cAAc;AACd,iBAAiB;AACjB;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;;AAEA;AACA;AACA;;;;;;;;ACjCA,eAAe,mBAAO,CAAC,MAAc;AACrC;AACA;AACA;AACA;;;;;;;;ACJA,UAAU,mBAAO,CAAC,MAAQ;AAC1B,gBAAgB,mBAAO,CAAC,MAAe;AACvC,mBAAmB,mBAAO,CAAC,MAAmB;AAC9C,eAAe,mBAAO,CAAC,MAAe;;AAEtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AChBA;AACA;AACA;;;;;;;;ACFA;AACA,UAAU;AACV;;;;;;;;;ACFa;;AAEb;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;;;;;ACrBA;AACA,gBAAgB,mBAAO,CAAC,MAAe;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACnBA;AACA;AACA;AACA;;;;;;;;ACHA,eAAe,mBAAO,CAAC,MAAc;AACrC,qBAAqB,mBAAO,CAAC,MAAmB;AAChD,kBAAkB,mBAAO,CAAC,MAAiB;AAC3C;;AAEA,YAAY,mBAAO,CAAC,MAAgB;AACpC;AACA;AACA;AACA;AACA;AACA,GAAG,YAAY;AACf;AACA;AACA;AACA;;;;;;;;ACfA;AACA;AACA;AACA;;;;;;;;ACHA,eAAe,mBAAO,CAAC,MAAc;AACrC;AACA;AACA;AACA;;;;;;;;ACJA;AACA;AACA;AACA;AACA;AACA,yCAAyC;;;;;;;;;ACL5B;;AAEb,8BAA8B,mBAAO,CAAC,MAAoB;AAC1D,8BAA8B,mBAAO,CAAC,MAAiB;AACvD,8BAA8B,mBAAO,CAAC,MAAoB;AAC1D,8BAA8B,mBAAO,CAAC,MAAgB;AACtD,8BAA8B,mBAAO,CAAC,MAAc;AACpD,8BAA8B,mBAAO,CAAC,MAAY;AAClD,8BAA8B,mBAAO,CAAC,MAAoB;AAC1D,8BAA8B,mBAAO,CAAC,MAAiB;AACvD,8BAA8B,mBAAO,CAAC,MAAiB;;AAEvD;AACA,8BAA8B,mBAAO,CAAC,MAAgC;AACtE,8BAA8B,mBAAO,CAAC,MAAgC;;AAEtE;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,UAAU;AACV,cAAc,SAAS;AACvB,cAAc,SAAS;AACvB;;AAEA;AACA;AACA,UAAU;AACV,cAAc,QAAQ;AACtB;AACA;AACA,cAAc,UAAU;AACxB;AACA,cAAc,SAAS;AACvB;AACA;AACA,cAAc,QAAQ;AACtB;;AAEA;AACA;AACA;AACA,WAAW,SAAS;AACpB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,qCAAqC,6CAA6C,EAAE;AACpF;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,mFAAmF,qBAAqB;;AAExG;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,SAAS;AACxB,eAAe,kBAAkB;AACjC,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;;AAEA;AACA,8EAA8E;AAC9E;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;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AACA;;AAEA;AACA;;AAEA;AACA,0BAA0B,OAAO;AACjC,yBAAyB,OAAO,oCAAoC,OAAO;AAC3E;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,iEAAiE;;AAEjE;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;;AAEe;AACf;AACA;AACA,MAAM;AACN,CAAC,EAAC;AACF,+B;;ACzCiC;AACR;AACV;AACf;;AAEA,MAAM,EAAE;AACR;AACA;;AAEA,MAAM,EAAE;AACR,mCAAmC,MAAM;AACzC,GAAG,MAAM,WAAW,WAAW,WAAW;;;AAG1C,MAAM,EAAE;AACR;AACA;AACA;;AAEA,MAAM,EAAE;AACR;AACA;AACA,GAAG,UAAU,EAAE;AACf;AACA;AACA;AACA,GAAG,UAAU,EAAE;AACf;AACA,sDAAsD,KAAK,EAAE,EAAE;AAC/D;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,8C;;ACvCuC;AACC;AACe;;AAEvD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEO,MAAM,mBAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,MAAM,GAAG,eAAe;AAC3C;;AAEA;AACA;AACA,+BAA+B;AAC/B;;AAEA;AACA;AACA,KAAK;;;AAGL;AACA;AACA;AACA;;AAEA;AACA,sBAAsB,SAAS;;AAE/B;AACA,yBAAyB,KAAS;AAClC;AACA;;AAEA;AACA,sBAAsB,SAAS;;AAE/B;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,qC;;ACxEmC;AACM;AAChB;AACU;AAC5B;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACO,SAAS,gBAAO;AACvB,SAAS,EAAE;AACX;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACO;AACP;;AAEA,MAAM,EAAE;AACR;AACA;AACA,qCAAqC,EAAE;AACvC;AACA;;AAEA;AACA;;AAEA;AACA;AACO;AACP;AACA,MAAM,GAAU,KAAK,UAAc;AACnC;AACA;;AAEA,iBAAiB,aAAO;AACxB;;AAEA,iDAAiD;;;AAG1C;AACP;AACA;;AAEA,iBAAiB,qBAAqB;AACtC;AACA,mDAAmD;;AAEnD;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,qDAAqD;AACrD;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,OAAO;;;AAGP;AACA;AACA;AACA;;AAEA;AACA,KAAK;;;AAGL;AACA,sBAAsB;;AAEtB,+BAA+B,gBAAU,uCAAuC,gBAAU,wCAAwC,gBAAU;AAC5I;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;;AAEA;AACA,wBAAwB;;AAExB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,+BAA+B,SAAa;AAC5C,8BAA8B,SAAa;AAC3C;AACA;;AAEO;AACP,SAAS,EAAE;AACX;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACO;AACP;AACA;AACO;AACP,qCAAqC,GAAU;AAC/C;AACA;AACA;AACA;AACA;AACO;AACP,wCAAwC,gBAAU;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;;AAEA,OAAO,aAAO;AACd,+BAA+B,SAAa;AAC5C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACO;AACP;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACO;AACP,OAAO,EAAE;AACT;AACA,GAAG;;;AAGH,EAAE,gBAAU;AACZ;AACA;AACA,oC;;AC/NoE;AACnC;AACR;AAClB;AACP;AACA,WAAW,UAAU;AACrB;;AAEA;AACA;AACA;;AAEA,SAAS,gBAAO;AAChB;AACO;AACP;;AAEA,MAAM,EAAE;AACR;AACA,GAAG,UAAU,EAAE;AACf;AACA;;AAEA,MAAM,EAAE;AACR,kBAAkB,cAAc;AAChC;;AAEA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA,WAAW,MAAM,GAAG;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACO;AACP;AACA,WAAW,MAAM,GAAG;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACO;AACP;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,gC;;AC7EsD;AACvC;AACf;AACA;AACA;AACA,qBAAqB,eAAe;AACpC,SAAS,QAAQ;AACjB;AACA;AACA;AACA,CAAC;AACD,uC;;ACXgB,4EAAkC,EAAE;AACpD,iC;;ACDO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA,CAAC;AACD;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;;AAEA,CAAC;AACD,qC;;AC5CA;AACA;AACO,MAAM,uBAAQ;AACrB;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,0C;;AChBwC;AACU;AACZ;AACK;AACI;AACxC,MAAM,2BAAa,SAAS,SAAS;AAC5C;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,uBAAQ;AAC7D,mBAAmB,WAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,gBAAgB,MAAM,GAAG;AACzB,kBAAkB,MAAM,GAAG;AAC3B,gBAAgB,MAAM,GAAG;AACzB;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA,6CAA6C;;AAE7C,oBAAoB,MAAM,GAAG;AAC7B,iBAAiB,KAAK;AACtB;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA,CAAC;AACD;;AAEA,wBAAwB,2BAAa;AACrC;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA,GAAG;AACH;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA,GAAG;AACH;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA,GAAG;AACH;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA,GAAG;AACH;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA,GAAG;AACH;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA,GAAG;AACH;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA,GAAG;AACH;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA,CAAC;AACD,yC;;AC3Oe;AACf;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,4C;;ACbA;AACuC;AACG;AACJ;AACwD;AACtD;AACR;AACgC;AACjB;AACJ;AACU;;AAErD;AACO,MAAM,yBAAY;AACzB;AACA;AACA;AACA,cAAc;AACd,mBAAmB;AACnB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,sBAAsB,mBAAS;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,SAAS,CAAC,WAAW;AACrC;AACA;AACA;AACA;;AAEA;AACA,QAAQ,EAAE;AACV,iBAAiB,WAAW;AAC5B;;AAEA,QAAQ,EAAE;AACV,iBAAi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A,KAAK;AACL;AACA;AACA;;AAEA;AACA,wC;;AC/YuC;AACU;AACT;AACR;AACzB,MAAM,+BAAe;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT,+BAA+B,EAAE;AACjC,4BAA4B,SAAa;;AAEzC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;;AAEA;AACA,cAAc,MAAM,cAAc;AAClC;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,QAAQ,EAAE;AACV;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA,uBAAuB,EAAE;AACzB;;AAEA;AACA;AACA;;AAEA,kBAAkB,IAAQ;AAC1B;AACA;;AAEA;AACA;AACA;;AAEA,WAAW,EAAE;AACb,QAAQ,EAAE,kBAAkB,eAAwB;AACpD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,2C;;ACtGA;AACA;AACA;AACA,2BAA2B;;AAE3B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACe,qEAAa,EAAC;AAC7B,yC;;ACzBmC;AACD;AACQ;AACX;AACN;AACsB;AACxC;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP,4BAA4B,gBAAG,6BAA6B,gBAAG;AAC/D,CAAC;;AAEM;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,IAAI;;AAEJ,MAAM,aAAO;AACb;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACO;AACP;;AAEA,MAAM,aAAO;AACb;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACO;AACP,SAAS,EAAE;AACX;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP,qBAAqB;;AAErB,MAAM,EAAE;AACR;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,SAAS,KAAK;AACd;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,SAAS,EAAE,qDAAqD,EAAE;AAClE;AACA,qDAAqD,gBAAG;AACxD,CAAC;;AAEM;AACP,eAAe,EAAE;AACjB,UAAU,gBAAyB,iCAAiC,gBAAyB;AAC7F;AACO;AACP;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACO;AACP;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;AACyB;AACzB,wC;;ACzPmC;AACI;AACU;AACT;AACR;AACgB;AACS;;AAEzD,SAAS,cAAO;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA,GAAG;AACH;;AAEA;AACA;AACA,iBAAiB,IAAQ;;AAEzB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,yCAAyC,QAAY;AACrD;AACA;AACA;AACA;;AAEA;AACA;AACA,wBAAwB,SAAa;AACrC;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,8CAA8C,QAAQ;AACtD;AACA;;AAEA;AACA,OAAO;AACP,uBAAuB,0BAA0B;AACjD;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,iCAAiC;;AAEjC;AACA;AACA;AACA;AACA;;AAEA;AACA,mBAAmB,IAAQ;;AAE3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;;AAGL,sCAAsC,YAAY;AAClD,mCAAmC;;AAEnC;AACA;AACA;AACA,SAAS,OAAO;;AAEhB,0CAA0C,QAAQ;AAClD;AACA;AACA;AACA,WAAW,iBAAiB;;AAE5B;AACA;AACA,mCAAmC;AACnC;;AAEA;AACA,yCAAyC;;AAEzC;AACA;AACA,aAAa;;;AAGb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;;AAGA;AACA;AACA,0BAA0B,gBAAS;AACnC;AACA,0BAA0B,eAA4B;AACtD,8BAA8B;;AAE9B,WAAW,EAAE;AACb,qBAAqB,sBAAsB;AAC3C;AACA;AACA;AACA;AACA,SAAS;;AAET,YAAY,eAAwB,uBAAuB,YAAqB,0BAA0B,YAAqB;AAC/H;AACA;AACA,WAAW;AACX;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;;AAEA,gBAAgB,UAAmB;AACnC;AACA;;AAEA;AACA;AACA,GAAG;;;AAGH;AACA;;AAEA,MAAM,gBAAS;AACf;AACA;AACA;AACA;AACA,uCAAuC;;AAEvC,IAAI,mBAAO;AACX;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,OAAO,EAAE;AACT;AACA;AACA;AACA;AACA;;AAEA,kBAAkB,MAAM,GAAG;AAC3B;AACA;AACA;AACA;;AAEe;AACf;AACA,SAAS;AACT,CAAC,EAAC;AACF,kC;;ACpRqC;AAC9B;AACP;AACA;AACA;AACA,MAAM,GAAM;AACZ;AACA;;AAEA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,gC;;AClBA;AAC0C;AACO;AACjB;AACyB;AACb;AACS;AAC9C;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,iBAAiB;AAC9B;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,IAAI;;;AAGJ,+BAA+B,cAA2B;AAC1D,0BAA0B,SAAsB;AAChD,8BAA8B,aAA0B;AACxD,2BAA2B,UAAuB;AAClD,4BAA4B,cAAuB;AACnD,kCAAkC,oBAA6B;AAC/D,6BAA6B,eAAwB;AACrD,qBAAqB,gBAAgB;AACrC,6BAA6B;;AAE7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,4DAA4D;AAC5D;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,cAAc,QAAQ;AACtB;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,wBAAwB;AACrC,aAAa,SAAS;AACtB,aAAa,iBAAiB;AAC9B;AACA,cAAc,OAAO;AACrB;;;AAGA,gBAAgB,QAAQ;AACxB,QAAQ,EAAE;AACV;AACA;;AAEA,QAAQ,EAAE;AACV;AACA;AACA;;AAEA;AACA;;AAEA,QAAQ,EAAE;AACV;AACA;AACA;;AAEA;AACA,KAAK;;;AAGL,QAAQ,gBAAgB;AACxB;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,wBAAwB;AACrC;AACA,aAAa,SAAS;AACtB,aAAa,iBAAiB;AAC9B;AACA,cAAc,OAAO;AACrB;;AAEA,iBAAiB,QAAQ;AACzB,QAAQ,EAAE;AACV;AACA;;AAEA,QAAQ,EAAE;AACV;AACA;AACA;;AAEA;AACA;;AAEA,QAAQ,EAAE;AACV;AACA;AACA;;AAEA;AACA;;AAEA,QAAQ,gBAAgB;AACxB;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,QAAQ;AACtB;;;AAGA;AACA,WAAW,aAAO;AAClB;AACA;AACA;AACA;AACA,cAAc,QAAQ;AACtB;;;AAGA;AACA,WAAW,aAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,OAAO;AACrB;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,cAAc;AACd;;;AAGA;AACA,QAAQ,EAAE;AACV;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,0C;;AC7PO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,uC;;ACfuC;AACC;AACF;AACkB;AACC;AACX;AACK;AACJ;AACxC;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,oCAAoC;;AAE9B;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,sCAAsC;;AAEvC;AACO,MAAM,uBAAW;AACxB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,QAAQ;AAC1B;AACA,KAAK;AACL;AACA;AACA,aAAa,SAAsB;AACnC;AACA,YAAY,SAAsB;AAClC;AACA,WAAW,SAAsB;AACjC;AACA,aAAa,SAAsB;AACnC;AACA,gBAAgB,SAAsB;AACtC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,OAAO;AACP;;AAEA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA,8BAA8B,eAAe;AAC7C;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,qBAAqB;AAClE;AACA;AACA,aAAa,OAAO;AACpB,aAAa,aAAa;AAC1B,aAAa,QAAQ;AACrB,cAAc,QAAQ;AACtB;;;AAGA;AACA;AACA;AACA;;AAEA,IAAI,UAAU;AACd;AACA;AACA;AACA,uCAAuC,MAAM,GAAG;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW;;AAEX;AACA;AACA;AACA,6BAA6B,KAAK;AAClC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAM,gBAA6B;AACnC;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,QAAQ,UAAuB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,QAAQ,eAAe;AAChE;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,MAAM,aAA0B;AAChC;;AAEA,gBAAgB,MAAM;AACtB;AACA;AACA;AACA;AACA,KAAK,iBAAiB;AACtB;;AAEA;AACA,GAAG;;;AAGH;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA,oCAAoC,KAAK;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA,aAAa,aAAa;AAC1B;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA,sBAAsB,YAAyB,UAAU;;AAEzD,mGAAmG,SAAa;AAChH;;AAEA;AACA;AACA;;AAEA;AACA,eAAe,YAAyB;AACxC;AACA;AACA;;AAEA;AACA,wBAAwB,WAAW;AACnC;AACA;AACA,KAAK;AACL;AACA;;AAEA,IAAI,SAAsB;AAC1B,IAAI,cAA2B;;AAE/B;AACA;AACA;AACA;AACA,MAAM,mBAA0B;;AAEhC;AACA,QAAQ,UAAuB;AAC/B,QAAQ,UAAuB;AAC/B;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,eAAe,2BAAa;AAC5B;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;;AAEL;AACA;AACA,MAAM,QAAkB;AACxB;AACA;AACA;;AAEA,uEAAuE,MAAM;;AAE7E;AACA;AACA;;AAEA;;AAEA,2CAA2C,MAAM;;AAEjD;AACA;AACA;;AAEA;;AAEA,iDAAiD,MAAM;;AAEvD;AACA;;AAEA;AACA;AACA;;AAEA;AACe,4EAAW,EAAC;AACJ;AACvB,uC;;ACxgBiD;AACoB;AACrC;AACe;;AAE/C;AACA;AACA;AACA;AACA;;AAEA,MAAM,EAAE;AACR;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA,mCAAmC,WAAW;AAC9C;;;AAGA;AACA,gBAAgB,SAAS;AACzB;;AAEA;AACA;AACA;AACA,GAAG;;;AAGH;AACA;AACA,GAAG;;;AAGH,MAAM,EAAE,0BAA0B,eAAe;AACjD;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;;AAEO,SAAS,kCAAO;AACvB;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,cAAc,sBAAsB;AACpC;;AAEA;;AAEA;AACA;AACA,IAAI;;;AAGJ;AACA;;AAEA;AACA;AACA,4EAA4E,YAAY;AACxF;AACA;AACA;AACA;AACA;;AAEA,GAAG;AACH;AACe;AACf;AACA,SAAS;AACT;AACA,wBAAwB,UAAU;AAClC;AACA,GAAG,IAAI;AACP,CAAC,EAAC;AACF,sD;;AC/G4C;AAC5C;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,oBAAoB,UAAc;AAClC;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;;;AAGT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,KAAK;AACL;;;AAGA;AACA;AACA,KAAK;AACL;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,gDAAgD;AAChD;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEe,4DAAM,EAAC;AACtB,6C;;AC/I+C;AACL;AACM;AACI;AACK;AACV;AAC0B;AAC7B;AAC5C;;AAEA,SAAS,oBAAO;AAChB;;AAEA;AACA;AACA;;AAEA,sBAAsB,aAAO;AAC7B;;AAEA,MAAM,gBAAU;AAChB;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,GAAG,EAAE;;AAEL;AACA,oCAAoC,gBAAe;AACnD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;;;AAGP;AACA;AACA;AACA,SAAS,KAAK,YAAY;AAC1B;AACA;AACA;AACA;AACA;AACA;;AAEA,kBAAkB,0BAA0B;AAC5C;;AAEA;AACA;AACA;AACA,wBAAwB,cAA2B;AACnD,0CAA0C,eAA4B;AACtE,uBAAuB;;AAEvB;AACA,wCAAwC;;AAExC;AACA;AACA,0BAA0B,YAAyB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA,WAAW,aAAO;AAClB;AACA,uBAAuB,4CAA4C;AACnE;AACA,SAAS;AACT;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA,qBAAqB,YAAyB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;;AAGL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH,2BAA2B,iBAAM;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,GAAG;;;AAGH;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA,MAAM,yBAAY;AAClB;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,sDAAsD,QAAQ;AAC9D;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACe,+EAAY,EAAC;AAC5B,wC;;ACrR0C;AACJ;AACU;AACR;AACN;AACQ;AACC;AACQ;AACkB;AACd;AACR;AACd;AAC0B;AACd;AACtC,MAAM,WAAK;AAClB;AACA;AACA;AACA;AACA;AACA,kCAAkC,gCAAgC;AAClE;AACA;AACA,mBAAmB,aAAO;AAC1B,oBAAoB,KAAK,CAAC,uBAAQ;AAClC,qBAAqB,mBAAS;AAC9B;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,OAAO;AACP,oBAAoB;AACpB;AACA;AACA,0BAA0B,oBAAoB;AAC9C,yBAAyB,2BAAa;AACtC;AACA,6BAA6B,+BAAe;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,sCAAsC,yBAAgB;AACtD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,IAAI;;AAEX,YAAY,aAAa;AACzB;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,SAAa;AAChC,wBAAwB,MAAM,GAAG;AACjC;AACA;AACA;AACA,KAAK;AACL,oCAAoC;AACpC;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA,mBAAmB,SAAa;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA,mBAAmB,2BAA2B;AAC9C;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACO;AACP;AACA,EAAE,WAAQ;AACV,EAAE,gBAAU;AACZ,EAAE,aAAO;AACT,EAAE,GAAG;AACL;AACA;AACA,kBAAkB,iBAAY;AAC9B,kBAAkB,MAAM;AACxB;AACA;;AAEA;AACA;AACA;AACA,iC;;ACxOyC;AACzC,MAAM,cAAK,OAAO,WAAK;AACvB,MAAM,iBAAQ,GAAG,cAAK;AACP,0EAAQ,EAAC;AACjB,MAAM,aAAI,UAAU,cAAK;;AAEhC;AACA,EAAE,aAAI;AACN;AACA,iC;;ACTuD;AACvB;AACY;;AAE5C,SAAS,2BAAO;AAChB;AACA;AACA;;AAEA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA,QAAQ;AACR;AACA;AACA,aAAa,wBAAwB;AACrC;AACA,cAAc,0BAA0B;AACxC;AACA;;;AAGA,sCAAsC,QAAQ;AAC9C;AACA,GAAG,6EAA6E,qBAAqB;AACrG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA,aAAa,wBAAwB;AACrC;AACA,cAAc,0BAA0B;AACxC;AACA;;AAEA,qCAAqC,QAAQ;AAC7C;AACA,GAAG,4EAA4E,oBAAoB;AACnG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA,aAAa,gBAAgB;AAC7B;AACA;AACA;AACA;AACA,cAAc,wBAAwB;AACtC;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,cAAc,uBAAuB;AACrC;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,MAAM,EAAE;AACR;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,MAAM,EAAE;AACR;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEe;AACf;AACA,SAAS;AACT,CAAC,EAAC;AACF,+C;;AC7KqD;AACJ;AACT;AACR;AACc;AACa;;AAE3D,SAAS,YAAO;AAChB;AACA;AACA;AACA,GAAG;AACH,kBAAkB,mBAAmB;AACrC;AACA;AACA,EAAE,MAAM;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC;AACD;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,CAAC;AACD;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,uCAAuC,SAAS;AAChD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,SAAS,EAAE;AACX;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,cAAc,UAAmB;AACjC;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,EAAE,UAAU;AACZ;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;;AAEvB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,MAAM,EAAE;AACR;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA,QAAQ,EAAE;AACV;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;AACA;AACA;AACA;AACe,kDAAS,EAAC;AACzB,gC;;AC9TkD;AAClB;AACE;;AAElC;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA,GAAG;;;AAGH;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;;AAE3B;AACA;AACA,qCAAqC;;AAErC;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA,6FAA6F,IAAS;AACtG;AACA;AACA;AACA,MAAM;;;AAGN,WAAW,EAAE;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,gBAAgB,UAAU;AAC1B;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEe;AACf;AACA;AACA;AACA;AACA,CAAC,EAAC;AACF,oC;;AC5EiD;AACd;;AAEnC,SAAS,YAAO;AAChB;AACA;AACA,GAAG;AACH,kBAAkB,IAAU;AAC5B;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACe,wDAAI,EAAC;AACpB,gC;;AClEkC;AACG;AACR;AACd;AACf;;AAEA;AACA,oBAAoB,IAAS;AAC7B,oBAAoB,eAAI;AACxB,oBAAoB,QAAQ;AAC5B;;AAEA,CAAC,EAAC;AACF,kC;;ACbA;AACsD;AACrB;;AAEjC;AACA,EAAE,aAAI;AACN;;AAEA,oBAAQ,KAAK,iBAAM;AACnB,iC;;ACT0D;AACvB;;AAEnC,SAAS,cAAO;AAChB;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC;AACD;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC;AACnC,mCAAmC;AACnC,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA,qDAAqD;AACrD;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,iBAAiB;AAC5B;AACA;AACA,YAAY,uBAAuB;AACnC;AACA;;;AAGA,MAAM,gBAAS;AACf,MAAM,EAAE;AACR;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,MAAM,EAAE;AACR;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,WAAW;AACX;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACe,oDAAI,EAAC;AACpB,kC;;AClKA;AACyD;AACxB;;AAEjC;AACA,EAAE,aAAI;AACN;;AAEA,oBAAQ,KAAK,WAAM;AACnB,iC;;ACT0D;AACF;AACT;AACJ;AACR;;AAEnC,SAAS,qBAAO;AAChB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG,SAAS;;AAEZ;AACA;AACA;AACA;AACA;AACA,mCAAmC;AACnC,mCAAmC;AACnC,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,6BAA6B;AACnE;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,iBAAiB;AAC9B;AACA;AACA,cAAc,uBAAuB;AACrC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA,eAAe,MAAM,GAAG;AACxB;;AAEA;AACA;AACA;AACA,GAAG;;;AAGH,MAAM,EAAE;AACR;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,MAAM,EAAE;AACR;AACA;AACA;;AAEA,QAAQ,EAAE;AACV;AACA,KAAK;AACL;AACA;;AAEA,QAAQ,EAAE;AACV;AACA,KAAK,UAAU,EAAE;AACjB;AACA;;AAEA;AACA;;AAEA,MAAM,EAAE;AACR;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;;AAGH;AACA;AACA,kBAAkB,EAAE;AACpB,mBAAmB,EAAE,4DAA4D;;AAEjF;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;;AAGH,OAAO,EAAE;AACT;AACA;;AAEA,SAAS,EAAE;AACX;AACA,IAAI,WAAe;AACnB;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,MAAM,GAAG;AACpB,eAAe,MAAM,GAAG;AACxB,cAAc,MAAM,GAAG;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS,WAAI;AACb;AACA;AACA,CAAC;AACD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE,MAAM;;AAER;AACA;AACA,IAAI,MAAM;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA,GAAG;AACH;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA,MAAM,WAAI;AACV;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACe,wDAAM,EAAC;AACtB,kC;;ACjcA;AACyD;AACxB;;AAEjC;AACA,EAAE,aAAI;AACN;;AAEA,oBAAQ,KAAK,aAAM;AACnB,iC;;ACTgB,uDAAQ,EAAE;AAC1B,sC;;ACDgB,8DAAQ,EAAE;AAC1B,oC;;ACDgB;AAChB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,CAAC,EAAE;AACH,gC;;ACtCwD;AACJ;AACR;AAC5C,+B;;ACHwC;AACA;AACxC;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL,wBAAwB,MAAM,wBAAwB,EAAE,mBAAW;AACnE;AACA;;AAEA;AACe,kEAAc,EAAC;AAC9B,kC;;ACfsC;AACE;AACM;AAC/B,MAAM,yBAAY;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA,KAAK;AACL;AACA;AACA,iBAAiB,MAAM,GAAG;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,iBAAiB,MAAM,GAAG;AAC1B,eAAe,MAAM,GAAG;AACxB;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP,iCAAiC,MAAM,GAAG;AAC1C;;AAEA;AACA;AACA;AACA,QAAQ,QAAkB;AAC1B;AACA;AACA,SAAS;AACT;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA,MAAM,MAAM;AACZ;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL,yBAAyB;AACzB;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA,wBAAwB,MAAM;AAC9B;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,uBAAuB,6BAA6B;AACpD;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,wCAAwC,KAAK;AAC7C,+BAA+B,MAAM,GAAG,wBAAwB,MAAM,GAAG;AACzE;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,wC;;ACvYyD;AACR;AACJ;AACtC;AACP;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,gDAAgD;;AAEhD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,KAAK;AACL,qCAAqC,yBAAY;AACjD,KAAK;AACL;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,gEAAa,EAAC;AAC7B,gC;;AC3FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,eAAe;AAC3D,QAAQ;AACR,6BAA6B,oBAAoB;AACjD;AACA,IAAI;AACJ;AACA;AACwC;AACI;AACC;AACJ;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA,wBAAwB,MAAM,GAAG;AACjC,sBAAsB,MAAM,GAAG;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA,IAAI,MAAM;;AAEV;AACA;AACA;;AAEA,gCAAgC,yBAAY;AAC5C;AACA;AACA;AACA,8BAA8B;AAC9B,KAAK;AACL,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,0BAA0B,MAAM,GAAG;AACnC;AACA;;AAEA;AACA;AACA;;AAEA,0BAA0B,MAAM,GAAG;AACnC,IAAI,QAAQ;AACZ;AACA;AACA,KAAK;AACL,iDAAiD;AACjD;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;;AAEL;AACA,oEAAoE;;AAEpE;AACA,MAAM,MAAM;AACZ;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEe,sEAAY,4BAA4B,EAAC;AACjC;AACvB,uC;;ACtJA;;AAEA;AACe,uDAAI,EAAC;AACpB,gC;;ACJ2C;AACR;AACc;AACP;;AAE1C,SAAS,aAAK;AACd;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH,iBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA,GAAG,sBAAsB;;AAEzB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA,eAAe,UAAoB;AACnC;AACA;AACA;;AAEO;AACP,MAAM,EAAE;AACR,WAAW,eAAyB;AACpC,GAAG;AACH,WAAW,eAAyB;AACpC;AACA;AACA,MAAM,gBAAQ;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,UAAU;AACV;AACe,iEAAY,sBAAsB,EAAC;AAC9B;AACpB,mC;;AC7FA;AACA;AACA;AACA;AACA,aAAa,wBAAwB;AACrC;AACA,eAAe,+CAA+C;AAC9D,eAAe,+CAA+C;AAC9D,MAAM;AACN,IAAI;AACuC;AACM;AACP;AACQ;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS,WAAK;AACd;AACA;AACA;AACA,CAAC;AACD;AACA;AACA,GAAG;AACH;;AAEA;AACA,uBAAuB,kBAAkB;AACzC,aAAa,QAAkB;AAC/B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS,SAAG;AACZ;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA,eAAe,MAAM,GAAG;AACxB,gBAAgB,kBAAkB;AAClC,gBAAgB,kBAAkB;AAClC;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,MAAM,cAAQ;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL,UAAU;AACV;AACe,+DAAY,gCAAgC,EAAC;AACnC;AACzB,iC;;AClH2C;AACD;AACF;AACxC,MAAM,aAAQ,GAAG,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;;AAEA,CAAC,EAAE,QAAQ;AACX;AACA,SAAS,QAAQ;AACjB,OAAO,QAAQ;AACf,UAAU;AACV;AACe,8DAAY,8BAA8B,EAAC;AAClC;AACxB,gC;;ACvB2C;AACM;AACP;AACC;AACO;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS,UAAK;AACd,SAAS,aAAa;AACtB;;AAEA,SAAS,QAAG;AACZ;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA,kBAAkB,UAAoB,CAAC,kBAAkB;AACzD,kBAAkB,UAAoB,CAAC,kBAAkB;AACzD;AACA;AACA,WAAW,MAAM,GAAG,EAAE,aAAa;AACnC,WAAW,MAAM,GAAG,EAAE,aAAa;AACnC;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA,EAAE,aAAa;AACf;AACA;;AAEA,MAAM,aAAQ;AACd;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL,UAAU;AACV;AACe,qDAAY,8BAA8B,EAAC;AAClC;AACxB,gC;;AC1E2C;AACU;AACZ;AACN;AAC6B;AACtB;;AAE1C,SAAS,kBAAK;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,uBAAuB,eAAe;AACtC,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG,MAAM,MAAM;AACf;AACA;AACA,GAAG;AACH;;AAEA,SAAS,WAAG;AACZ;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH,iBAAiB,WAAW;AAC5B,eAAe,MAAM,GAAG;AACxB;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,qDAAqD,aAAa;AAClE;AACA;;AAEA,UAAU,EAAE;AACZ;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA,YAAY,EAAE;AACd,YAAY,EAAE;AACd,eAAe,EAAE;AACjB;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,qBAAqB,KAAK;AAC1B,oCAAoC;AACpC;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH,wBAAwB,QAAQ,CAAC,eAAe;AAChD,kCAAkC,WAAW;AAC7C;AACA;;AAEA,MAAM,qBAAQ;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL,UAAU;AACV;AACe,6DAAY,cAAc,EAAC;AAC1B;AAChB,mC;;AC/KA;AACA;AAC2C;AACR;AACO;AACN;;AAEpC,SAAS,eAAK;AACd;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,EAAE,IAAI;AACN;AACA;AACA;;AAEA,SAAS,aAAG;AACZ;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,kBAAkB,MAAM,GAAG;AAC3B;;AAEA;AACA;;AAEA,QAAQ,EAAE;AACV;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,sBAAsB,IAAI;AAC1B;AACA;AACA;;AAEA,MAAM,kBAAQ;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL,UAAU;AACV;AACe,0DAAY,sBAAsB,EAAC;AAC9B;AACpB,gC;;ACrGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,gBAAgB;AACzD,MAAM;AACN,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA,MAAM;AACN,IAAI;AACJ;AACA;AACyC;AACE;AACD;AACL;;AAErC,SAAS,gBAAK;AACd;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA,SAAS,QAAQ;AACjB;;AAEA;AACA,OAAO;AACP,OAAO,QAAQ;AACf,YAAY,MAAM,CAAC,KAAK,CAAC,QAAQ;AACjC;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACe,2DAAY,wBAAwB,EAAC;AAC/B;AACrB,iC;;AC5DA;AAC2C;AACZ;AACiB;AACH;AACC;AACA;AACL;AACD;AACH;AACC;AACL;AACM;AACxB;AACf,EAAE,kCAAW;AACb,EAAE,6BAAa;AAC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","file":"vue-grid-layout.common.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"fb15\");\n","'use strict';\nvar LIBRARY = require('./_library');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar $iterCreate = require('./_iter-create');\nvar setToStringTag = require('./_set-to-string-tag');\nvar getPrototypeOf = require('./_object-gpo');\nvar ITERATOR = require('./_wks')('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n  $iterCreate(Constructor, NAME, next);\n  var getMethod = function (kind) {\n    if (!BUGGY && kind in proto) return proto[kind];\n    switch (kind) {\n      case KEYS: return function keys() { return new Constructor(this, kind); };\n      case VALUES: return function values() { return new Constructor(this, kind); };\n    } return function entries() { return new Constructor(this, kind); };\n  };\n  var TAG = NAME + ' Iterator';\n  var DEF_VALUES = DEFAULT == VALUES;\n  var VALUES_BUG = false;\n  var proto = Base.prototype;\n  var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n  var $default = $native || getMethod(DEFAULT);\n  var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n  var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n  var methods, key, IteratorPrototype;\n  // Fix native\n  if ($anyNative) {\n    IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n    if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n      // Set @@toStringTag to native iterators\n      setToStringTag(IteratorPrototype, TAG, true);\n      // fix for some old engines\n      if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);\n    }\n  }\n  // fix Array#{values, @@iterator}.name in V8 / FF\n  if (DEF_VALUES && $native && $native.name !== VALUES) {\n    VALUES_BUG = true;\n    $default = function values() { return $native.call(this); };\n  }\n  // Define iterator\n  if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n    hide(proto, ITERATOR, $default);\n  }\n  // Plug for library\n  Iterators[NAME] = $default;\n  Iterators[TAG] = returnThis;\n  if (DEFAULT) {\n    methods = {\n      values: DEF_VALUES ? $default : getMethod(VALUES),\n      keys: IS_SET ? $default : getMethod(KEYS),\n      entries: $entries\n    };\n    if (FORCED) for (key in methods) {\n      if (!(key in proto)) redefine(proto, key, methods[key]);\n    } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n  }\n  return methods;\n};\n","var toInteger = require('./_to-integer');\nvar defined = require('./_defined');\n// true  -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n  return function (that, pos) {\n    var s = String(defined(that));\n    var i = toInteger(pos);\n    var l = s.length;\n    var a, b;\n    if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n    a = s.charCodeAt(i);\n    return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n      ? TO_STRING ? s.charAt(i) : a\n      : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n  };\n};\n","'use strict';\nvar at = require('./_string-at')(true);\n\n // `AdvanceStringIndex` abstract operation\n// https://tc39.github.io/ecma262/#sec-advancestringindex\nmodule.exports = function (S, index, unicode) {\n  return index + (unicode ? at(S, index).length : 1);\n};\n","var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n  return hasOwnProperty.call(it, key);\n};\n","export * from \"-!../../node_modules/vue-style-loader/index.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./GridItem.vue?vue&type=style&index=0&id=46ff2fc8&lang=css\"","'use strict';\n// 21.2.5.3 get RegExp.prototype.flags\nvar anObject = require('./_an-object');\nmodule.exports = function () {\n  var that = anObject(this);\n  var result = '';\n  if (that.global) result += 'g';\n  if (that.ignoreCase) result += 'i';\n  if (that.multiline) result += 'm';\n  if (that.unicode) result += 'u';\n  if (that.sticky) result += 'y';\n  return result;\n};\n","// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = require('./_object-keys-internal');\nvar enumBugKeys = require('./_enum-bug-keys');\n\nmodule.exports = Object.keys || function keys(O) {\n  return $keys(O, enumBugKeys);\n};\n","var pIE = require('./_object-pie');\nvar createDesc = require('./_property-desc');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar has = require('./_has');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nexports.f = require('./_descriptors') ? gOPD : function getOwnPropertyDescriptor(O, P) {\n  O = toIObject(O);\n  P = toPrimitive(P, true);\n  if (IE8_DOM_DEFINE) try {\n    return gOPD(O, P);\n  } catch (e) { /* empty */ }\n  if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);\n};\n","var dP = require('./_object-dp');\nvar anObject = require('./_an-object');\nvar getKeys = require('./_object-keys');\n\nmodule.exports = require('./_descriptors') ? Object.defineProperties : function defineProperties(O, Properties) {\n  anObject(O);\n  var keys = getKeys(Properties);\n  var length = keys.length;\n  var i = 0;\n  var P;\n  while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n  return O;\n};\n","/**\n * Resize detection strategy that injects objects to elements in order to detect resize events.\n * Heavily inspired by: http://www.backalleycoder.com/2013/03/18/cross-browser-event-based-element-resize-detection/\n */\n\n\"use strict\";\n\nvar browserDetector = require(\"../browser-detector\");\n\nmodule.exports = function(options) {\n    options             = options || {};\n    var reporter        = options.reporter;\n    var batchProcessor  = options.batchProcessor;\n    var getState        = options.stateHandler.getState;\n\n    if(!reporter) {\n        throw new Error(\"Missing required dependency: reporter.\");\n    }\n\n    /**\n     * Adds a resize event listener to the element.\n     * @public\n     * @param {element} element The element that should have the listener added.\n     * @param {function} listener The listener callback to be called for each resize event of the element. The element will be given as a parameter to the listener callback.\n     */\n    function addListener(element, listener) {\n        function listenerProxy() {\n            listener(element);\n        }\n\n        if(browserDetector.isIE(8)) {\n            //IE 8 does not support object, but supports the resize event directly on elements.\n            getState(element).object = {\n                proxy: listenerProxy\n            };\n            element.attachEvent(\"onresize\", listenerProxy);\n        } else {\n            var object = getObject(element);\n\n            if(!object) {\n                throw new Error(\"Element is not detectable by this strategy.\");\n            }\n\n            object.contentDocument.defaultView.addEventListener(\"resize\", listenerProxy);\n        }\n    }\n\n    function buildCssTextString(rules) {\n        var seperator = options.important ? \" !important; \" : \"; \";\n\n        return (rules.join(seperator) + seperator).trim();\n    }\n\n    /**\n     * Makes an element detectable and ready to be listened for resize events. Will call the callback when the element is ready to be listened for resize changes.\n     * @private\n     * @param {object} options Optional options object.\n     * @param {element} element The element to make detectable\n     * @param {function} callback The callback to be called when the element is ready to be listened for resize changes. Will be called with the element as first parameter.\n     */\n    function makeDetectable(options, element, callback) {\n        if (!callback) {\n            callback = element;\n            element = options;\n            options = null;\n        }\n\n        options = options || {};\n        var debug = options.debug;\n\n        function injectObject(element, callback) {\n            var OBJECT_STYLE = buildCssTextString([\"display: block\", \"position: absolute\", \"top: 0\", \"left: 0\", \"width: 100%\", \"height: 100%\", \"border: none\", \"padding: 0\", \"margin: 0\", \"opacity: 0\", \"z-index: -1000\", \"pointer-events: none\"]);\n\n            //The target element needs to be positioned (everything except static) so the absolute positioned object will be positioned relative to the target element.\n\n            // Position altering may be performed directly or on object load, depending on if style resolution is possible directly or not.\n            var positionCheckPerformed = false;\n\n            // The element may not yet be attached to the DOM, and therefore the style object may be empty in some browsers.\n            // Since the style object is a reference, it will be updated as soon as the element is attached to the DOM.\n            var style = window.getComputedStyle(element);\n            var width = element.offsetWidth;\n            var height = element.offsetHeight;\n\n            getState(element).startSize = {\n                width: width,\n                height: height\n            };\n\n            function mutateDom() {\n                function alterPositionStyles() {\n                    if(style.position === \"static\") {\n                        element.style.setProperty(\"position\", \"relative\", options.important ? \"important\" : \"\");\n\n                        var removeRelativeStyles = function(reporter, element, style, property) {\n                            function getNumericalValue(value) {\n                                return value.replace(/[^-\\d\\.]/g, \"\");\n                            }\n\n                            var value = style[property];\n\n                            if(value !== \"auto\" && getNumericalValue(value) !== \"0\") {\n                                reporter.warn(\"An element that is positioned static has style.\" + property + \"=\" + value + \" which is ignored due to the static positioning. The element will need to be positioned relative, so the style.\" + property + \" will be set to 0. Element: \", element);\n                                element.style.setProperty(property, \"0\", options.important ? \"important\" : \"\");\n                            }\n                        };\n\n                        //Check so that there are no accidental styles that will make the element styled differently now that is is relative.\n                        //If there are any, set them to 0 (this should be okay with the user since the style properties did nothing before [since the element was positioned static] anyway).\n                        removeRelativeStyles(reporter, element, style, \"top\");\n                        removeRelativeStyles(reporter, element, style, \"right\");\n                        removeRelativeStyles(reporter, element, style, \"bottom\");\n                        removeRelativeStyles(reporter, element, style, \"left\");\n                    }\n                }\n\n                function onObjectLoad() {\n                    // The object has been loaded, which means that the element now is guaranteed to be attached to the DOM.\n                    if (!positionCheckPerformed) {\n                        alterPositionStyles();\n                    }\n\n                    /*jshint validthis: true */\n\n                    function getDocument(element, callback) {\n                        //Opera 12 seem to call the object.onload before the actual document has been created.\n                        //So if it is not present, poll it with an timeout until it is present.\n                        //TODO: Could maybe be handled better with object.onreadystatechange or similar.\n                        if(!element.contentDocument) {\n                            var state = getState(element);\n                            if (state.checkForObjectDocumentTimeoutId) {\n                                window.clearTimeout(state.checkForObjectDocumentTimeoutId);\n                            }\n                            state.checkForObjectDocumentTimeoutId = setTimeout(function checkForObjectDocument() {\n                                state.checkForObjectDocumentTimeoutId = 0;\n                                getDocument(element, callback);\n                            }, 100);\n\n                            return;\n                        }\n\n                        callback(element.contentDocument);\n                    }\n\n                    //Mutating the object element here seems to fire another load event.\n                    //Mutating the inner document of the object element is fine though.\n                    var objectElement = this;\n\n                    //Create the style element to be added to the object.\n                    getDocument(objectElement, function onObjectDocumentReady(objectDocument) {\n                        //Notify that the element is ready to be listened to.\n                        callback(element);\n                    });\n                }\n\n                // The element may be detached from the DOM, and some browsers does not support style resolving of detached elements.\n                // The alterPositionStyles needs to be delayed until we know the element has been attached to the DOM (which we are sure of when the onObjectLoad has been fired), if style resolution is not possible.\n                if (style.position !== \"\") {\n                    alterPositionStyles(style);\n                    positionCheckPerformed = true;\n                }\n\n                //Add an object element as a child to the target element that will be listened to for resize events.\n                var object = document.createElement(\"object\");\n                object.style.cssText = OBJECT_STYLE;\n                object.tabIndex = -1;\n                object.type = \"text/html\";\n                object.setAttribute(\"aria-hidden\", \"true\");\n                object.onload = onObjectLoad;\n\n                //Safari: This must occur before adding the object to the DOM.\n                //IE: Does not like that this happens before, even if it is also added after.\n                if(!browserDetector.isIE()) {\n                    object.data = \"about:blank\";\n                }\n\n                if (!getState(element)) {\n                    // The element has been uninstalled before the actual loading happened.\n                    return;\n                }\n\n                element.appendChild(object);\n                getState(element).object = object;\n\n                //IE: This must occur after adding the object to the DOM.\n                if(browserDetector.isIE()) {\n                    object.data = \"about:blank\";\n                }\n            }\n\n            if(batchProcessor) {\n                batchProcessor.add(mutateDom);\n            } else {\n                mutateDom();\n            }\n        }\n\n        if(browserDetector.isIE(8)) {\n            //IE 8 does not support objects properly. Luckily they do support the resize event.\n            //So do not inject the object and notify that the element is already ready to be listened to.\n            //The event handler for the resize event is attached in the utils.addListener instead.\n            callback(element);\n        } else {\n            injectObject(element, callback);\n        }\n    }\n\n    /**\n     * Returns the child object of the target element.\n     * @private\n     * @param {element} element The target element.\n     * @returns The object element of the target.\n     */\n    function getObject(element) {\n        return getState(element).object;\n    }\n\n    function uninstall(element) {\n        if (!getState(element)) {\n            return;\n        }\n\n        var object = getObject(element);\n\n        if (!object) {\n            return;\n        }\n\n        if (browserDetector.isIE(8)) {\n            element.detachEvent(\"onresize\", object.proxy);\n        } else {\n            element.removeChild(object);\n        }\n\n        if (getState(element).checkForObjectDocumentTimeoutId) {\n            window.clearTimeout(getState(element).checkForObjectDocumentTimeoutId);\n        }\n\n        delete getState(element).object;\n    }\n\n    return {\n        makeDetectable: makeDetectable,\n        addListener: addListener,\n        uninstall: uninstall\n    };\n};\n","\"use strict\";\n\nvar detector = module.exports = {};\n\ndetector.isIE = function(version) {\n    function isAnyIeVersion() {\n        var agent = navigator.userAgent.toLowerCase();\n        return agent.indexOf(\"msie\") !== -1 || agent.indexOf(\"trident\") !== -1 || agent.indexOf(\" edge/\") !== -1;\n    }\n\n    if(!isAnyIeVersion()) {\n        return false;\n    }\n\n    if(!version) {\n        return true;\n    }\n\n    //Shamelessly stolen from https://gist.github.com/padolsey/527683\n    var ieVersion = (function(){\n        var undef,\n            v = 3,\n            div = document.createElement(\"div\"),\n            all = div.getElementsByTagName(\"i\");\n\n        do {\n            div.innerHTML = \"<!--[if gt IE \" + (++v) + \"]><i></i><![endif]-->\";\n        }\n        while (all[0]);\n\n        return v > 4 ? v : undef;\n    }());\n\n    return version === ieVersion;\n};\n\ndetector.isLegacyOpera = function() {\n    return !!window.opera;\n};\n","// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n  if (!isObject(it)) return it;\n  var fn, val;\n  if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n  if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n  if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n  throw TypeError(\"Can't convert object to primitive value\");\n};\n","var isObject = require('./_is-object');\nvar document = require('./_global').document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n  return is ? document.createElement(it) : {};\n};\n","'use strict';\nrequire('./es6.regexp.exec');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar fails = require('./_fails');\nvar defined = require('./_defined');\nvar wks = require('./_wks');\nvar regexpExec = require('./_regexp-exec');\n\nvar SPECIES = wks('species');\n\nvar REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {\n  // #replace needs built-in support for named groups.\n  // #match works fine because it just return the exec results, even if it has\n  // a \"grops\" property.\n  var re = /./;\n  re.exec = function () {\n    var result = [];\n    result.groups = { a: '7' };\n    return result;\n  };\n  return ''.replace(re, '$<a>') !== '7';\n});\n\nvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = (function () {\n  // Chrome 51 has a buggy \"split\" implementation when RegExp#exec !== nativeExec\n  var re = /(?:)/;\n  var originalExec = re.exec;\n  re.exec = function () { return originalExec.apply(this, arguments); };\n  var result = 'ab'.split(re);\n  return result.length === 2 && result[0] === 'a' && result[1] === 'b';\n})();\n\nmodule.exports = function (KEY, length, exec) {\n  var SYMBOL = wks(KEY);\n\n  var DELEGATES_TO_SYMBOL = !fails(function () {\n    // String methods call symbol-named RegEp methods\n    var O = {};\n    O[SYMBOL] = function () { return 7; };\n    return ''[KEY](O) != 7;\n  });\n\n  var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL ? !fails(function () {\n    // Symbol-named RegExp methods call .exec\n    var execCalled = false;\n    var re = /a/;\n    re.exec = function () { execCalled = true; return null; };\n    if (KEY === 'split') {\n      // RegExp[@@split] doesn't call the regex's exec method, but first creates\n      // a new one. We need to return the patched regex when creating the new one.\n      re.constructor = {};\n      re.constructor[SPECIES] = function () { return re; };\n    }\n    re[SYMBOL]('');\n    return !execCalled;\n  }) : undefined;\n\n  if (\n    !DELEGATES_TO_SYMBOL ||\n    !DELEGATES_TO_EXEC ||\n    (KEY === 'replace' && !REPLACE_SUPPORTS_NAMED_GROUPS) ||\n    (KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC)\n  ) {\n    var nativeRegExpMethod = /./[SYMBOL];\n    var fns = exec(\n      defined,\n      SYMBOL,\n      ''[KEY],\n      function maybeCallNative(nativeMethod, regexp, str, arg2, forceStringMethod) {\n        if (regexp.exec === regexpExec) {\n          if (DELEGATES_TO_SYMBOL && !forceStringMethod) {\n            // The native String method already delegates to @@method (this\n            // polyfilled function), leasing to infinite recursion.\n            // We avoid it by directly calling the native @@method method.\n            return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) };\n          }\n          return { done: true, value: nativeMethod.call(str, regexp, arg2) };\n        }\n        return { done: false };\n      }\n    );\n    var strfn = fns[0];\n    var rxfn = fns[1];\n\n    redefine(String.prototype, KEY, strfn);\n    hide(RegExp.prototype, SYMBOL, length == 2\n      // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)\n      // 21.2.5.11 RegExp.prototype[@@split](string, limit)\n      ? function (string, arg) { return rxfn.call(string, this, arg); }\n      // 21.2.5.6 RegExp.prototype[@@match](string)\n      // 21.2.5.9 RegExp.prototype[@@search](string)\n      : function (string) { return rxfn.call(string, this); }\n    );\n  }\n};\n","var isObject = require('./_is-object');\nvar document = require('./_global').document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n  return is ? document.createElement(it) : {};\n};\n","// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = require('./_cof');\nvar TAG = require('./_wks')('toStringTag');\n// ES3 wrong here\nvar ARG = cof(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n  try {\n    return it[key];\n  } catch (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n  var O, T, B;\n  return it === undefined ? 'Undefined' : it === null ? 'Null'\n    // @@toStringTag case\n    : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n    // builtinTag case\n    : ARG ? cof(O)\n    // ES3 arguments fallback\n    : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n","\"use strict\";\n\n/*\n  MIT License http://www.opensource.org/licenses/mit-license.php\n  Author Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\n// eslint-disable-next-line func-names\nmodule.exports = function (useSourceMap) {\n  var list = []; // return the list of modules as css string\n\n  list.toString = function toString() {\n    return this.map(function (item) {\n      var content = cssWithMappingToString(item, useSourceMap);\n\n      if (item[2]) {\n        return \"@media \".concat(item[2], \" {\").concat(content, \"}\");\n      }\n\n      return content;\n    }).join('');\n  }; // import a list of modules into the list\n  // eslint-disable-next-line func-names\n\n\n  list.i = function (modules, mediaQuery, dedupe) {\n    if (typeof modules === 'string') {\n      // eslint-disable-next-line no-param-reassign\n      modules = [[null, modules, '']];\n    }\n\n    var alreadyImportedModules = {};\n\n    if (dedupe) {\n      for (var i = 0; i < this.length; i++) {\n        // eslint-disable-next-line prefer-destructuring\n        var id = this[i][0];\n\n        if (id != null) {\n          alreadyImportedModules[id] = true;\n        }\n      }\n    }\n\n    for (var _i = 0; _i < modules.length; _i++) {\n      var item = [].concat(modules[_i]);\n\n      if (dedupe && alreadyImportedModules[item[0]]) {\n        // eslint-disable-next-line no-continue\n        continue;\n      }\n\n      if (mediaQuery) {\n        if (!item[2]) {\n          item[2] = mediaQuery;\n        } else {\n          item[2] = \"\".concat(mediaQuery, \" and \").concat(item[2]);\n        }\n      }\n\n      list.push(item);\n    }\n  };\n\n  return list;\n};\n\nfunction cssWithMappingToString(item, useSourceMap) {\n  var content = item[1] || ''; // eslint-disable-next-line prefer-destructuring\n\n  var cssMapping = item[3];\n\n  if (!cssMapping) {\n    return content;\n  }\n\n  if (useSourceMap && typeof btoa === 'function') {\n    var sourceMapping = toComment(cssMapping);\n    var sourceURLs = cssMapping.sources.map(function (source) {\n      return \"/*# sourceURL=\".concat(cssMapping.sourceRoot || '').concat(source, \" */\");\n    });\n    return [content].concat(sourceURLs).concat([sourceMapping]).join('\\n');\n  }\n\n  return [content].join('\\n');\n} // Adapted from convert-source-map (MIT)\n\n\nfunction toComment(sourceMap) {\n  // eslint-disable-next-line no-undef\n  var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));\n  var data = \"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(base64);\n  return \"/*# \".concat(data, \" */\");\n}","exports.f = Object.getOwnPropertySymbols;\n","module.exports = function (exec) {\n  try {\n    return !!exec();\n  } catch (e) {\n    return true;\n  }\n};\n","var global = require('./_global');\nvar hide = require('./_hide');\nvar has = require('./_has');\nvar SRC = require('./_uid')('src');\nvar $toString = require('./_function-to-string');\nvar TO_STRING = 'toString';\nvar TPL = ('' + $toString).split(TO_STRING);\n\nrequire('./_core').inspectSource = function (it) {\n  return $toString.call(it);\n};\n\n(module.exports = function (O, key, val, safe) {\n  var isFunction = typeof val == 'function';\n  if (isFunction) has(val, 'name') || hide(val, 'name', key);\n  if (O[key] === val) return;\n  if (isFunction) has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key)));\n  if (O === global) {\n    O[key] = val;\n  } else if (!safe) {\n    delete O[key];\n    hide(O, key, val);\n  } else if (O[key]) {\n    O[key] = val;\n  } else {\n    hide(O, key, val);\n  }\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, TO_STRING, function toString() {\n  return typeof this == 'function' && this[SRC] || $toString.call(this);\n});\n","// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = require('./_an-object');\nvar dPs = require('./_object-dps');\nvar enumBugKeys = require('./_enum-bug-keys');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n  // Thrash, waste and sodomy: IE GC bug\n  var iframe = require('./_dom-create')('iframe');\n  var i = enumBugKeys.length;\n  var lt = '<';\n  var gt = '>';\n  var iframeDocument;\n  iframe.style.display = 'none';\n  require('./_html').appendChild(iframe);\n  iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n  // createDict = iframe.contentWindow.Object;\n  // html.removeChild(iframe);\n  iframeDocument = iframe.contentWindow.document;\n  iframeDocument.open();\n  iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n  iframeDocument.close();\n  createDict = iframeDocument.F;\n  while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n  return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n  var result;\n  if (O !== null) {\n    Empty[PROTOTYPE] = anObject(O);\n    result = new Empty();\n    Empty[PROTOTYPE] = null;\n    // add \"__proto__\" for Object.getPrototypeOf polyfill\n    result[IE_PROTO] = O;\n  } else result = createDict();\n  return Properties === undefined ? result : dPs(result, Properties);\n};\n","var store = require('./_shared')('wks');\nvar uid = require('./_uid');\nvar Symbol = require('./_global').Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n  return store[name] || (store[name] =\n    USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n","\"use strict\";\n\nmodule.exports = function() {\n    var idCount = 1;\n\n    /**\n     * Generates a new unique id in the context.\n     * @public\n     * @returns {number} A unique id in the context.\n     */\n    function generate() {\n        return idCount++;\n    }\n\n    return {\n        generate: generate\n    };\n};\n","module.exports = false;\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n  return toString.call(it).slice(8, -1);\n};\n","'use strict';\nvar fails = require('./_fails');\n\nmodule.exports = function (method, arg) {\n  return !!method && fails(function () {\n    // eslint-disable-next-line no-useless-call\n    arg ? method.call(null, function () { /* empty */ }, 1) : method.call(null);\n  });\n};\n","var dP = require('./_object-dp');\nvar createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function (object, key, value) {\n  return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n  object[key] = value;\n  return object;\n};\n","var dP = require('./_object-dp');\nvar createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function (object, key, value) {\n  return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n  object[key] = value;\n  return object;\n};\n","// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = require('./_has');\nvar toObject = require('./_to-object');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n  O = toObject(O);\n  if (has(O, IE_PROTO)) return O[IE_PROTO];\n  if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n    return O.constructor.prototype;\n  } return O instanceof Object ? ObjectProto : null;\n};\n","'use strict';\nvar create = require('./_object-create');\nvar descriptor = require('./_property-desc');\nvar setToStringTag = require('./_set-to-string-tag');\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nrequire('./_hide')(IteratorPrototype, require('./_wks')('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n  Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n  setToStringTag(Constructor, NAME + ' Iterator');\n};\n","require('../../modules/es6.object.define-property');\nvar $Object = require('../../modules/_core').Object;\nmodule.exports = function defineProperty(it, key, desc) {\n  return $Object.defineProperty(it, key, desc);\n};\n","// 19.1.2.14 Object.keys(O)\nvar toObject = require('./_to-object');\nvar $keys = require('./_object-keys');\n\nrequire('./_object-sap')('keys', function () {\n  return function keys(it) {\n    return $keys(toObject(it));\n  };\n});\n","// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n  return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n","module.exports = function (bitmap, value) {\n  return {\n    enumerable: !(bitmap & 1),\n    configurable: !(bitmap & 2),\n    writable: !(bitmap & 4),\n    value: value\n  };\n};\n","var $export = require('./_export');\n// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)\n$export($export.S + $export.F * !require('./_descriptors'), 'Object', { defineProperty: require('./_object-dp').f });\n","'use strict';\n\nvar anObject = require('./_an-object');\nvar toLength = require('./_to-length');\nvar advanceStringIndex = require('./_advance-string-index');\nvar regExpExec = require('./_regexp-exec-abstract');\n\n// @@match logic\nrequire('./_fix-re-wks')('match', 1, function (defined, MATCH, $match, maybeCallNative) {\n  return [\n    // `String.prototype.match` method\n    // https://tc39.github.io/ecma262/#sec-string.prototype.match\n    function match(regexp) {\n      var O = defined(this);\n      var fn = regexp == undefined ? undefined : regexp[MATCH];\n      return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[MATCH](String(O));\n    },\n    // `RegExp.prototype[@@match]` method\n    // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@match\n    function (regexp) {\n      var res = maybeCallNative($match, regexp, this);\n      if (res.done) return res.value;\n      var rx = anObject(regexp);\n      var S = String(this);\n      if (!rx.global) return regExpExec(rx, S);\n      var fullUnicode = rx.unicode;\n      rx.lastIndex = 0;\n      var A = [];\n      var n = 0;\n      var result;\n      while ((result = regExpExec(rx, S)) !== null) {\n        var matchStr = String(result[0]);\n        A[n] = matchStr;\n        if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n        n++;\n      }\n      return n === 0 ? null : A;\n    }\n  ];\n});\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".vue-grid-item{-webkit-transition:all .2s ease;transition:all .2s ease;-webkit-transition-property:left,top,right;transition-property:left,top,right}.vue-grid-item,.vue-grid-item.no-touch{-ms-touch-action:none;touch-action:none}.vue-grid-item.cssTransforms{-webkit-transition-property:-webkit-transform;transition-property:-webkit-transform;transition-property:transform;transition-property:transform,-webkit-transform;left:0;right:auto}.vue-grid-item.cssTransforms.render-rtl{left:auto;right:0}.vue-grid-item.resizing{opacity:.6;z-index:3}.vue-grid-item.vue-draggable-dragging{-webkit-transition:none;transition:none;z-index:3}.vue-grid-item.vue-grid-placeholder{background:red;opacity:.2;-webkit-transition-duration:.1s;transition-duration:.1s;z-index:2;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none}.vue-grid-item>.vue-resizable-handle{position:absolute;width:20px;height:20px;bottom:0;right:0;background:url(\\\"data:image/svg+xml;base64,PHN2ZyBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjojZmZmZmZmMDAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjYiIGhlaWdodD0iNiI+PHBhdGggZD0iTTYgNkgwVjQuMmg0LjJWMEg2djZ6IiBvcGFjaXR5PSIuMzAyIi8+PC9zdmc+\\\");background-position:100% 100%;padding:0 3px 3px 0;background-repeat:no-repeat;background-origin:content-box;-webkit-box-sizing:border-box;box-sizing:border-box;cursor:se-resize}.vue-grid-item>.vue-rtl-resizable-handle{bottom:0;left:0;background:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTAiIGhlaWdodD0iMTAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbD0ibm9uZSIgZD0iTS0xLTFoMTJ2MTJILTF6Ii8+PGc+PHBhdGggc3Ryb2tlLWxpbmVjYXA9InVuZGVmaW5lZCIgc3Ryb2tlLWxpbmVqb2luPSJ1bmRlZmluZWQiIHN0cm9rZS13aWR0aD0iMS41IiBzdHJva2U9IiMwMDAiIGZpbGw9Im5vbmUiIGQ9Ik0xNDQuODIxLTM4LjM5M2wtMjAuMzU3LTMxLjc4NSIvPjxwYXRoIHN0cm9rZT0iIzY2NiIgc3Ryb2tlLWxpbmVjYXA9InVuZGVmaW5lZCIgc3Ryb2tlLWxpbmVqb2luPSJ1bmRlZmluZWQiIHN0cm9rZS13aWR0aD0iMiIgZmlsbD0ibm9uZSIgZD0iTS45NDctLjAxOHY5LjEyNU0tLjY1NiA5aDEwLjczIi8+PC9nPjwvc3ZnPg==);background-position:0 100%;padding-left:3px;background-repeat:no-repeat;background-origin:content-box;cursor:sw-resize;right:auto}.vue-grid-item.disable-userselect{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}\", \"\"]);\n// Exports\nmodule.exports = exports;\n","/**\n * Translates the list format produced by css-loader into something\n * easier to manipulate.\n */\nexport default function listToStyles (parentId, list) {\n  var styles = []\n  var newStyles = {}\n  for (var i = 0; i < list.length; i++) {\n    var item = list[i]\n    var id = item[0]\n    var css = item[1]\n    var media = item[2]\n    var sourceMap = item[3]\n    var part = {\n      id: parentId + ':' + i,\n      css: css,\n      media: media,\n      sourceMap: sourceMap\n    }\n    if (!newStyles[id]) {\n      styles.push(newStyles[id] = { id: id, parts: [part] })\n    } else {\n      newStyles[id].parts.push(part)\n    }\n  }\n  return styles\n}\n","/*\n  MIT License http://www.opensource.org/licenses/mit-license.php\n  Author Tobias Koppers @sokra\n  Modified by Evan You @yyx990803\n*/\n\nimport listToStyles from './listToStyles'\n\nvar hasDocument = typeof document !== 'undefined'\n\nif (typeof DEBUG !== 'undefined' && DEBUG) {\n  if (!hasDocument) {\n    throw new Error(\n    'vue-style-loader cannot be used in a non-browser environment. ' +\n    \"Use { target: 'node' } in your Webpack config to indicate a server-rendering environment.\"\n  ) }\n}\n\n/*\ntype StyleObject = {\n  id: number;\n  parts: Array<StyleObjectPart>\n}\n\ntype StyleObjectPart = {\n  css: string;\n  media: string;\n  sourceMap: ?string\n}\n*/\n\nvar stylesInDom = {/*\n  [id: number]: {\n    id: number,\n    refs: number,\n    parts: Array<(obj?: StyleObjectPart) => void>\n  }\n*/}\n\nvar head = hasDocument && (document.head || document.getElementsByTagName('head')[0])\nvar singletonElement = null\nvar singletonCounter = 0\nvar isProduction = false\nvar noop = function () {}\nvar options = null\nvar ssrIdKey = 'data-vue-ssr-id'\n\n// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>\n// tags it will allow on a page\nvar isOldIE = typeof navigator !== 'undefined' && /msie [6-9]\\b/.test(navigator.userAgent.toLowerCase())\n\nexport default function addStylesClient (parentId, list, _isProduction, _options) {\n  isProduction = _isProduction\n\n  options = _options || {}\n\n  var styles = listToStyles(parentId, list)\n  addStylesToDom(styles)\n\n  return function update (newList) {\n    var mayRemove = []\n    for (var i = 0; i < styles.length; i++) {\n      var item = styles[i]\n      var domStyle = stylesInDom[item.id]\n      domStyle.refs--\n      mayRemove.push(domStyle)\n    }\n    if (newList) {\n      styles = listToStyles(parentId, newList)\n      addStylesToDom(styles)\n    } else {\n      styles = []\n    }\n    for (var i = 0; i < mayRemove.length; i++) {\n      var domStyle = mayRemove[i]\n      if (domStyle.refs === 0) {\n        for (var j = 0; j < domStyle.parts.length; j++) {\n          domStyle.parts[j]()\n        }\n        delete stylesInDom[domStyle.id]\n      }\n    }\n  }\n}\n\nfunction addStylesToDom (styles /* Array<StyleObject> */) {\n  for (var i = 0; i < styles.length; i++) {\n    var item = styles[i]\n    var domStyle = stylesInDom[item.id]\n    if (domStyle) {\n      domStyle.refs++\n      for (var j = 0; j < domStyle.parts.length; j++) {\n        domStyle.parts[j](item.parts[j])\n      }\n      for (; j < item.parts.length; j++) {\n        domStyle.parts.push(addStyle(item.parts[j]))\n      }\n      if (domStyle.parts.length > item.parts.length) {\n        domStyle.parts.length = item.parts.length\n      }\n    } else {\n      var parts = []\n      for (var j = 0; j < item.parts.length; j++) {\n        parts.push(addStyle(item.parts[j]))\n      }\n      stylesInDom[item.id] = { id: item.id, refs: 1, parts: parts }\n    }\n  }\n}\n\nfunction createStyleElement () {\n  var styleElement = document.createElement('style')\n  styleElement.type = 'text/css'\n  head.appendChild(styleElement)\n  return styleElement\n}\n\nfunction addStyle (obj /* StyleObjectPart */) {\n  var update, remove\n  var styleElement = document.querySelector('style[' + ssrIdKey + '~=\"' + obj.id + '\"]')\n\n  if (styleElement) {\n    if (isProduction) {\n      // has SSR styles and in production mode.\n      // simply do nothing.\n      return noop\n    } else {\n      // has SSR styles but in dev mode.\n      // for some reason Chrome can't handle source map in server-rendered\n      // style tags - source maps in <style> only works if the style tag is\n      // created and inserted dynamically. So we remove the server rendered\n      // styles and inject new ones.\n      styleElement.parentNode.removeChild(styleElement)\n    }\n  }\n\n  if (isOldIE) {\n    // use singleton mode for IE9.\n    var styleIndex = singletonCounter++\n    styleElement = singletonElement || (singletonElement = createStyleElement())\n    update = applyToSingletonTag.bind(null, styleElement, styleIndex, false)\n    remove = applyToSingletonTag.bind(null, styleElement, styleIndex, true)\n  } else {\n    // use multi-style-tag mode in all other cases\n    styleElement = createStyleElement()\n    update = applyToTag.bind(null, styleElement)\n    remove = function () {\n      styleElement.parentNode.removeChild(styleElement)\n    }\n  }\n\n  update(obj)\n\n  return function updateStyle (newObj /* StyleObjectPart */) {\n    if (newObj) {\n      if (newObj.css === obj.css &&\n          newObj.media === obj.media &&\n          newObj.sourceMap === obj.sourceMap) {\n        return\n      }\n      update(obj = newObj)\n    } else {\n      remove()\n    }\n  }\n}\n\nvar replaceText = (function () {\n  var textStore = []\n\n  return function (index, replacement) {\n    textStore[index] = replacement\n    return textStore.filter(Boolean).join('\\n')\n  }\n})()\n\nfunction applyToSingletonTag (styleElement, index, remove, obj) {\n  var css = remove ? '' : obj.css\n\n  if (styleElement.styleSheet) {\n    styleElement.styleSheet.cssText = replaceText(index, css)\n  } else {\n    var cssNode = document.createTextNode(css)\n    var childNodes = styleElement.childNodes\n    if (childNodes[index]) styleElement.removeChild(childNodes[index])\n    if (childNodes.length) {\n      styleElement.insertBefore(cssNode, childNodes[index])\n    } else {\n      styleElement.appendChild(cssNode)\n    }\n  }\n}\n\nfunction applyToTag (styleElement, obj) {\n  var css = obj.css\n  var media = obj.media\n  var sourceMap = obj.sourceMap\n\n  if (media) {\n    styleElement.setAttribute('media', media)\n  }\n  if (options.ssrId) {\n    styleElement.setAttribute(ssrIdKey, obj.id)\n  }\n\n  if (sourceMap) {\n    // https://developer.chrome.com/devtools/docs/javascript-debugging\n    // this makes source maps inside style tags work properly in Chrome\n    css += '\\n/*# sourceURL=' + sourceMap.sources[0] + ' */'\n    // http://stackoverflow.com/a/26603875\n    css += '\\n/*# sourceMappingURL=data:application/json;base64,' + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + ' */'\n  }\n\n  if (styleElement.styleSheet) {\n    styleElement.styleSheet.cssText = css\n  } else {\n    while (styleElement.firstChild) {\n      styleElement.removeChild(styleElement.firstChild)\n    }\n    styleElement.appendChild(document.createTextNode(css))\n  }\n}\n","\"use strict\";\n\nmodule.exports = function(idHandler) {\n    var eventListeners = {};\n\n    /**\n     * Gets all listeners for the given element.\n     * @public\n     * @param {element} element The element to get all listeners for.\n     * @returns All listeners for the given element.\n     */\n    function getListeners(element) {\n        var id = idHandler.get(element);\n\n        if (id === undefined) {\n            return [];\n        }\n\n        return eventListeners[id] || [];\n    }\n\n    /**\n     * Stores the given listener for the given element. Will not actually add the listener to the element.\n     * @public\n     * @param {element} element The element that should have the listener added.\n     * @param {function} listener The callback that the element has added.\n     */\n    function addListener(element, listener) {\n        var id = idHandler.get(element);\n\n        if(!eventListeners[id]) {\n            eventListeners[id] = [];\n        }\n\n        eventListeners[id].push(listener);\n    }\n\n    function removeListener(element, listener) {\n        var listeners = getListeners(element);\n        for (var i = 0, len = listeners.length; i < len; ++i) {\n            if (listeners[i] === listener) {\n              listeners.splice(i, 1);\n              break;\n            }\n        }\n    }\n\n    function removeAllListeners(element) {\n      var listeners = getListeners(element);\n      if (!listeners) { return; }\n      listeners.length = 0;\n    }\n\n    return {\n        get: getListeners,\n        add: addListener,\n        removeListener: removeListener,\n        removeAllListeners: removeAllListeners\n    };\n};\n","// 7.1.13 ToObject(argument)\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n  return Object(defined(it));\n};\n","\"use strict\";\n\nmodule.exports = function(options) {\n    var idGenerator     = options.idGenerator;\n    var getState        = options.stateHandler.getState;\n\n    /**\n     * Gets the resize detector id of the element.\n     * @public\n     * @param {element} element The target element to get the id of.\n     * @returns {string|number|null} The id of the element. Null if it has no id.\n     */\n    function getId(element) {\n        var state = getState(element);\n\n        if (state && state.id !== undefined) {\n            return state.id;\n        }\n\n        return null;\n    }\n\n    /**\n     * Sets the resize detector id of the element. Requires the element to have a resize detector state initialized.\n     * @public\n     * @param {element} element The target element to set the id of.\n     * @returns {string|number|null} The id of the element.\n     */\n    function setId(element) {\n        var state = getState(element);\n\n        if (!state) {\n            throw new Error(\"setId required the element to have a resize detection state.\");\n        }\n\n        var id = idGenerator.generate();\n\n        state.id = id;\n\n        return id;\n    }\n\n    return {\n        get: getId,\n        set: setId\n    };\n};\n","\"use strict\";\n\nvar utils = module.exports = {};\n\nutils.getOption = getOption;\n\nfunction getOption(options, name, defaultValue) {\n    var value = options[name];\n\n    if((value === undefined || value === null) && defaultValue !== undefined) {\n        return defaultValue;\n    }\n\n    return value;\n}\n","'use strict';\n\nvar regexpFlags = require('./_flags');\n\nvar nativeExec = RegExp.prototype.exec;\n// This always refers to the native implementation, because the\n// String#replace polyfill uses ./fix-regexp-well-known-symbol-logic.js,\n// which loads this file before patching the method.\nvar nativeReplace = String.prototype.replace;\n\nvar patchedExec = nativeExec;\n\nvar LAST_INDEX = 'lastIndex';\n\nvar UPDATES_LAST_INDEX_WRONG = (function () {\n  var re1 = /a/,\n      re2 = /b*/g;\n  nativeExec.call(re1, 'a');\n  nativeExec.call(re2, 'a');\n  return re1[LAST_INDEX] !== 0 || re2[LAST_INDEX] !== 0;\n})();\n\n// nonparticipating capturing group, copied from es5-shim's String#split patch.\nvar NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;\n\nvar PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED;\n\nif (PATCH) {\n  patchedExec = function exec(str) {\n    var re = this;\n    var lastIndex, reCopy, match, i;\n\n    if (NPCG_INCLUDED) {\n      reCopy = new RegExp('^' + re.source + '$(?!\\\\s)', regexpFlags.call(re));\n    }\n    if (UPDATES_LAST_INDEX_WRONG) lastIndex = re[LAST_INDEX];\n\n    match = nativeExec.call(re, str);\n\n    if (UPDATES_LAST_INDEX_WRONG && match) {\n      re[LAST_INDEX] = re.global ? match.index + match[0].length : lastIndex;\n    }\n    if (NPCG_INCLUDED && match && match.length > 1) {\n      // Fix browsers whose `exec` methods don't consistently return `undefined`\n      // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/\n      // eslint-disable-next-line no-loop-func\n      nativeReplace.call(match[0], reCopy, function () {\n        for (i = 1; i < arguments.length - 2; i++) {\n          if (arguments[i] === undefined) match[i] = undefined;\n        }\n      });\n    }\n\n    return match;\n  };\n}\n\nmodule.exports = patchedExec;\n","exports.f = {}.propertyIsEnumerable;\n","var core = require('./_core');\nvar global = require('./_global');\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n  return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n  version: core.version,\n  mode: require('./_library') ? 'pure' : 'global',\n  copyright: '© 2020 Denis Pushkarev (zloirock.ru)'\n});\n","'use strict';\nvar $export = require('./_export');\nvar aFunction = require('./_a-function');\nvar toObject = require('./_to-object');\nvar fails = require('./_fails');\nvar $sort = [].sort;\nvar test = [1, 2, 3];\n\n$export($export.P + $export.F * (fails(function () {\n  // IE8-\n  test.sort(undefined);\n}) || !fails(function () {\n  // V8 bug\n  test.sort(null);\n  // Old WebKit\n}) || !require('./_strict-method')($sort)), 'Array', {\n  // 22.1.3.25 Array.prototype.sort(comparefn)\n  sort: function sort(comparefn) {\n    return comparefn === undefined\n      ? $sort.call(toObject(this))\n      : $sort.call(toObject(this), aFunction(comparefn));\n  }\n});\n","var core = module.exports = { version: '2.6.12' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n","\"use strict\";\n\nmodule.exports = function(options) {\n    var getState = options.stateHandler.getState;\n\n    /**\n     * Tells if the element has been made detectable and ready to be listened for resize events.\n     * @public\n     * @param {element} The element to check.\n     * @returns {boolean} True or false depending on if the element is detectable or not.\n     */\n    function isDetectable(element) {\n        var state = getState(element);\n        return state && !!state.isDetectable;\n    }\n\n    /**\n     * Marks the element that it has been made detectable and ready to be listened for resize events.\n     * @public\n     * @param {element} The element to mark.\n     */\n    function markAsDetectable(element) {\n        getState(element).isDetectable = true;\n    }\n\n    /**\n     * Tells if the element is busy or not.\n     * @public\n     * @param {element} The element to check.\n     * @returns {boolean} True or false depending on if the element is busy or not.\n     */\n    function isBusy(element) {\n        return !!getState(element).busy;\n    }\n\n    /**\n     * Marks the object is busy and should not be made detectable.\n     * @public\n     * @param {element} element The element to mark.\n     * @param {boolean} busy If the element is busy or not.\n     */\n    function markBusy(element, busy) {\n        getState(element).busy = !!busy;\n    }\n\n    return {\n        isDetectable: isDetectable,\n        markAsDetectable: markAsDetectable,\n        isBusy: isBusy,\n        markBusy: markBusy\n    };\n};\n","var global = require('./_global');\nvar core = require('./_core');\nvar hide = require('./_hide');\nvar redefine = require('./_redefine');\nvar ctx = require('./_ctx');\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n  var IS_FORCED = type & $export.F;\n  var IS_GLOBAL = type & $export.G;\n  var IS_STATIC = type & $export.S;\n  var IS_PROTO = type & $export.P;\n  var IS_BIND = type & $export.B;\n  var target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE];\n  var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n  var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {});\n  var key, own, out, exp;\n  if (IS_GLOBAL) source = name;\n  for (key in source) {\n    // contains in native\n    own = !IS_FORCED && target && target[key] !== undefined;\n    // export native or passed\n    out = (own ? target : source)[key];\n    // bind timers to global for call from export context\n    exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n    // extend global\n    if (target) redefine(target, key, out, type & $export.U);\n    // export\n    if (exports[key] != out) hide(exports, key, exp);\n    if (IS_PROTO && expProto[key] != out) expProto[key] = out;\n  }\n};\nglobal.core = core;\n// type bitmap\n$export.F = 1;   // forced\n$export.G = 2;   // global\n$export.S = 4;   // static\n$export.P = 8;   // proto\n$export.B = 16;  // bind\n$export.W = 32;  // wrap\n$export.U = 64;  // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n","var isObject = require('./_is-object');\nvar setPrototypeOf = require('./_set-proto').set;\nmodule.exports = function (that, target, C) {\n  var S = target.constructor;\n  var P;\n  if (S !== C && typeof S == 'function' && (P = S.prototype) !== C.prototype && isObject(P) && setPrototypeOf) {\n    setPrototypeOf(that, P);\n  } return that;\n};\n","// most Object methods by ES6 should accept primitives\nvar $export = require('./_export');\nvar core = require('./_core');\nvar fails = require('./_fails');\nmodule.exports = function (KEY, exec) {\n  var fn = (core.Object || {})[KEY] || Object[KEY];\n  var exp = {};\n  exp[KEY] = exec(fn);\n  $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);\n};\n","'use strict';\n\nvar classof = require('./_classof');\nvar builtinExec = RegExp.prototype.exec;\n\n // `RegExpExec` abstract operation\n// https://tc39.github.io/ecma262/#sec-regexpexec\nmodule.exports = function (R, S) {\n  var exec = R.exec;\n  if (typeof exec === 'function') {\n    var result = exec.call(R, S);\n    if (typeof result !== 'object') {\n      throw new TypeError('RegExp exec method returned something other than an Object or null');\n    }\n    return result;\n  }\n  if (classof(R) !== 'RegExp') {\n    throw new TypeError('RegExp#exec called on incompatible receiver');\n  }\n  return builtinExec.call(R, S);\n};\n","var shared = require('./_shared')('keys');\nvar uid = require('./_uid');\nmodule.exports = function (key) {\n  return shared[key] || (shared[key] = uid(key));\n};\n","// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = require('./_cof');\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n  return cof(it) == 'String' ? it.split('') : Object(it);\n};\n","var global = require('./_global');\nvar core = require('./_core');\nvar ctx = require('./_ctx');\nvar hide = require('./_hide');\nvar has = require('./_has');\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n  var IS_FORCED = type & $export.F;\n  var IS_GLOBAL = type & $export.G;\n  var IS_STATIC = type & $export.S;\n  var IS_PROTO = type & $export.P;\n  var IS_BIND = type & $export.B;\n  var IS_WRAP = type & $export.W;\n  var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n  var expProto = exports[PROTOTYPE];\n  var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE];\n  var key, own, out;\n  if (IS_GLOBAL) source = name;\n  for (key in source) {\n    // contains in native\n    own = !IS_FORCED && target && target[key] !== undefined;\n    if (own && has(exports, key)) continue;\n    // export native or passed\n    out = own ? target[key] : source[key];\n    // prevent global pollution for namespaces\n    exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]\n    // bind timers to global for call from export context\n    : IS_BIND && own ? ctx(out, global)\n    // wrap global constructors for prevent change them in library\n    : IS_WRAP && target[key] == out ? (function (C) {\n      var F = function (a, b, c) {\n        if (this instanceof C) {\n          switch (arguments.length) {\n            case 0: return new C();\n            case 1: return new C(a);\n            case 2: return new C(a, b);\n          } return new C(a, b, c);\n        } return C.apply(this, arguments);\n      };\n      F[PROTOTYPE] = C[PROTOTYPE];\n      return F;\n    // make static versions for prototype methods\n    })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n    // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%\n    if (IS_PROTO) {\n      (exports.virtual || (exports.virtual = {}))[key] = out;\n      // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%\n      if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out);\n    }\n  }\n};\n// type bitmap\n$export.F = 1;   // forced\n$export.G = 2;   // global\n$export.S = 4;   // static\n$export.P = 8;   // proto\n$export.B = 16;  // bind\n$export.W = 32;  // wrap\n$export.U = 64;  // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n","export * from \"-!../../node_modules/vue-style-loader/index.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./GridLayout.vue?vue&type=style&index=0&id=fc5948f6&lang=css\"","// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = require('./_iobject');\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n  return IObject(defined(it));\n};\n","var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n  return hasOwnProperty.call(it, key);\n};\n","// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n  if (!isObject(it)) return it;\n  var fn, val;\n  if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n  if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n  if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n  throw TypeError(\"Can't convert object to primitive value\");\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n// runtime helper for setting properties on components\n// in a tree-shakable way\nexports.default = (sfc, props) => {\n    const target = sfc.__vccOpts || sfc;\n    for (const [key, val] of props) {\n        target[key] = val;\n    }\n    return target;\n};\n","// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n  ? window : typeof self != 'undefined' && self.Math == Math ? self\n  // eslint-disable-next-line no-new-func\n  : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n","var toInteger = require('./_to-integer');\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n  index = toInteger(index);\n  return index < 0 ? max(index + length, 0) : min(index, length);\n};\n","module.exports = !require('./_descriptors') && !require('./_fails')(function () {\n  return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n","module.exports = function (it) {\n  if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n  return it;\n};\n","module.exports = function (exec) {\n  try {\n    return !!exec();\n  } catch (e) {\n    return true;\n  }\n};\n","var def = require('./_object-dp').f;\nvar has = require('./_has');\nvar TAG = require('./_wks')('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n  if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n","var core = module.exports = { version: '2.6.12' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".vue-grid-layout{position:relative;-webkit-transition:height .2s ease;transition:height .2s ease}\", \"\"]);\n// Exports\nmodule.exports = exports;\n","module.exports = {};\n","module.exports = require(\"core-js/library/fn/object/define-property\");","var anObject = require('./_an-object');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar toPrimitive = require('./_to-primitive');\nvar dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n  anObject(O);\n  P = toPrimitive(P, true);\n  anObject(Attributes);\n  if (IE8_DOM_DEFINE) try {\n    return dP(O, P, Attributes);\n  } catch (e) { /* empty */ }\n  if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n  if ('value' in Attributes) O[P] = Attributes.value;\n  return O;\n};\n","// addapted from the document.currentScript polyfill by Adam Miller\n// MIT license\n// source: https://github.com/amiller-gh/currentScript-polyfill\n\n// added support for Firefox https://bugzilla.mozilla.org/show_bug.cgi?id=1620505\n\n(function (root, factory) {\n  if (typeof define === 'function' && define.amd) {\n    define([], factory);\n  } else if (typeof module === 'object' && module.exports) {\n    module.exports = factory();\n  } else {\n    root.getCurrentScript = factory();\n  }\n}(typeof self !== 'undefined' ? self : this, function () {\n  function getCurrentScript () {\n    var descriptor = Object.getOwnPropertyDescriptor(document, 'currentScript')\n    // for chrome\n    if (!descriptor && 'currentScript' in document && document.currentScript) {\n      return document.currentScript\n    }\n\n    // for other browsers with native support for currentScript\n    if (descriptor && descriptor.get !== getCurrentScript && document.currentScript) {\n      return document.currentScript\n    }\n  \n    // IE 8-10 support script readyState\n    // IE 11+ & Firefox support stack trace\n    try {\n      throw new Error();\n    }\n    catch (err) {\n      // Find the second match for the \"at\" string to get file src url from stack.\n      var ieStackRegExp = /.*at [^(]*\\((.*):(.+):(.+)\\)$/ig,\n        ffStackRegExp = /@([^@]*):(\\d+):(\\d+)\\s*$/ig,\n        stackDetails = ieStackRegExp.exec(err.stack) || ffStackRegExp.exec(err.stack),\n        scriptLocation = (stackDetails && stackDetails[1]) || false,\n        line = (stackDetails && stackDetails[2]) || false,\n        currentLocation = document.location.href.replace(document.location.hash, ''),\n        pageSource,\n        inlineScriptSourceRegExp,\n        inlineScriptSource,\n        scripts = document.getElementsByTagName('script'); // Live NodeList collection\n  \n      if (scriptLocation === currentLocation) {\n        pageSource = document.documentElement.outerHTML;\n        inlineScriptSourceRegExp = new RegExp('(?:[^\\\\n]+?\\\\n){0,' + (line - 2) + '}[^<]*<script>([\\\\d\\\\D]*?)<\\\\/script>[\\\\d\\\\D]*', 'i');\n        inlineScriptSource = pageSource.replace(inlineScriptSourceRegExp, '$1').trim();\n      }\n  \n      for (var i = 0; i < scripts.length; i++) {\n        // If ready state is interactive, return the script tag\n        if (scripts[i].readyState === 'interactive') {\n          return scripts[i];\n        }\n  \n        // If src matches, return the script tag\n        if (scripts[i].src === scriptLocation) {\n          return scripts[i];\n        }\n  \n        // If inline source matches, return the script tag\n        if (\n          scriptLocation === currentLocation &&\n          scripts[i].innerHTML &&\n          scripts[i].innerHTML.trim() === inlineScriptSource\n        ) {\n          return scripts[i];\n        }\n      }\n  \n      // If no match, return null\n      return null;\n    }\n  };\n\n  return getCurrentScript\n}));\n","// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nvar isObject = require('./_is-object');\nvar anObject = require('./_an-object');\nvar check = function (O, proto) {\n  anObject(O);\n  if (!isObject(proto) && proto !== null) throw TypeError(proto + \": can't set as prototype!\");\n};\nmodule.exports = {\n  set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line\n    function (test, buggy, set) {\n      try {\n        set = require('./_ctx')(Function.call, require('./_object-gopd').f(Object.prototype, '__proto__').set, 2);\n        set(test, []);\n        buggy = !(test instanceof Array);\n      } catch (e) { buggy = true; }\n      return function setPrototypeOf(O, proto) {\n        check(O, proto);\n        if (buggy) O.__proto__ = proto;\n        else set(O, proto);\n        return O;\n      };\n    }({}, false) : undefined),\n  check: check\n};\n","module.exports = require(\"vue\");","// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function () {\n  return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n","// https://github.com/tc39/proposal-object-getownpropertydescriptors\nvar $export = require('./_export');\nvar ownKeys = require('./_own-keys');\nvar toIObject = require('./_to-iobject');\nvar gOPD = require('./_object-gopd');\nvar createProperty = require('./_create-property');\n\n$export($export.S, 'Object', {\n  getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object) {\n    var O = toIObject(object);\n    var getDesc = gOPD.f;\n    var keys = ownKeys(O);\n    var result = {};\n    var i = 0;\n    var key, desc;\n    while (keys.length > i) {\n      desc = getDesc(O, key = keys[i++]);\n      if (desc !== undefined) createProperty(result, key, desc);\n    }\n    return result;\n  }\n});\n","// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)\nvar $keys = require('./_object-keys-internal');\nvar hiddenKeys = require('./_enum-bug-keys').concat('length', 'prototype');\n\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n  return $keys(O, hiddenKeys);\n};\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./GridLayout.vue?vue&type=style&index=0&id=fc5948f6&lang=css\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"ff1827d0\", content, true, {\"sourceMap\":false,\"shadowMode\":false});","// all object keys, includes non-enumerable and symbols\nvar gOPN = require('./_object-gopn');\nvar gOPS = require('./_object-gops');\nvar anObject = require('./_an-object');\nvar Reflect = require('./_global').Reflect;\nmodule.exports = Reflect && Reflect.ownKeys || function ownKeys(it) {\n  var keys = gOPN.f(anObject(it));\n  var getSymbols = gOPS.f;\n  return getSymbols ? keys.concat(getSymbols(it)) : keys;\n};\n","// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function (fn, that, length) {\n  aFunction(fn);\n  if (that === undefined) return fn;\n  switch (length) {\n    case 1: return function (a) {\n      return fn.call(that, a);\n    };\n    case 2: return function (a, b) {\n      return fn.call(that, a, b);\n    };\n    case 3: return function (a, b, c) {\n      return fn.call(that, a, b, c);\n    };\n  }\n  return function (/* ...args */) {\n    return fn.apply(that, arguments);\n  };\n};\n","// 22.1.3.31 Array.prototype[@@unscopables]\nvar UNSCOPABLES = require('./_wks')('unscopables');\nvar ArrayProto = Array.prototype;\nif (ArrayProto[UNSCOPABLES] == undefined) require('./_hide')(ArrayProto, UNSCOPABLES, {});\nmodule.exports = function (key) {\n  ArrayProto[UNSCOPABLES][key] = true;\n};\n","// 7.1.15 ToLength\nvar toInteger = require('./_to-integer');\nvar min = Math.min;\nmodule.exports = function (it) {\n  return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n","// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function () {\n  return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n","'use strict';\n\nvar anObject = require('./_an-object');\nvar toObject = require('./_to-object');\nvar toLength = require('./_to-length');\nvar toInteger = require('./_to-integer');\nvar advanceStringIndex = require('./_advance-string-index');\nvar regExpExec = require('./_regexp-exec-abstract');\nvar max = Math.max;\nvar min = Math.min;\nvar floor = Math.floor;\nvar SUBSTITUTION_SYMBOLS = /\\$([$&`']|\\d\\d?|<[^>]*>)/g;\nvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\$([$&`']|\\d\\d?)/g;\n\nvar maybeToString = function (it) {\n  return it === undefined ? it : String(it);\n};\n\n// @@replace logic\nrequire('./_fix-re-wks')('replace', 2, function (defined, REPLACE, $replace, maybeCallNative) {\n  return [\n    // `String.prototype.replace` method\n    // https://tc39.github.io/ecma262/#sec-string.prototype.replace\n    function replace(searchValue, replaceValue) {\n      var O = defined(this);\n      var fn = searchValue == undefined ? undefined : searchValue[REPLACE];\n      return fn !== undefined\n        ? fn.call(searchValue, O, replaceValue)\n        : $replace.call(String(O), searchValue, replaceValue);\n    },\n    // `RegExp.prototype[@@replace]` method\n    // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@replace\n    function (regexp, replaceValue) {\n      var res = maybeCallNative($replace, regexp, this, replaceValue);\n      if (res.done) return res.value;\n\n      var rx = anObject(regexp);\n      var S = String(this);\n      var functionalReplace = typeof replaceValue === 'function';\n      if (!functionalReplace) replaceValue = String(replaceValue);\n      var global = rx.global;\n      if (global) {\n        var fullUnicode = rx.unicode;\n        rx.lastIndex = 0;\n      }\n      var results = [];\n      while (true) {\n        var result = regExpExec(rx, S);\n        if (result === null) break;\n        results.push(result);\n        if (!global) break;\n        var matchStr = String(result[0]);\n        if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n      }\n      var accumulatedResult = '';\n      var nextSourcePosition = 0;\n      for (var i = 0; i < results.length; i++) {\n        result = results[i];\n        var matched = String(result[0]);\n        var position = max(min(toInteger(result.index), S.length), 0);\n        var captures = [];\n        // NOTE: This is equivalent to\n        //   captures = result.slice(1).map(maybeToString)\n        // but for some reason `nativeSlice.call(result, 1, result.length)` (called in\n        // the slice polyfill when slicing native arrays) \"doesn't work\" in safari 9 and\n        // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.\n        for (var j = 1; j < result.length; j++) captures.push(maybeToString(result[j]));\n        var namedCaptures = result.groups;\n        if (functionalReplace) {\n          var replacerArgs = [matched].concat(captures, position, S);\n          if (namedCaptures !== undefined) replacerArgs.push(namedCaptures);\n          var replacement = String(replaceValue.apply(undefined, replacerArgs));\n        } else {\n          replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);\n        }\n        if (position >= nextSourcePosition) {\n          accumulatedResult += S.slice(nextSourcePosition, position) + replacement;\n          nextSourcePosition = position + matched.length;\n        }\n      }\n      return accumulatedResult + S.slice(nextSourcePosition);\n    }\n  ];\n\n    // https://tc39.github.io/ecma262/#sec-getsubstitution\n  function getSubstitution(matched, str, position, captures, namedCaptures, replacement) {\n    var tailPos = position + matched.length;\n    var m = captures.length;\n    var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;\n    if (namedCaptures !== undefined) {\n      namedCaptures = toObject(namedCaptures);\n      symbols = SUBSTITUTION_SYMBOLS;\n    }\n    return $replace.call(replacement, symbols, function (match, ch) {\n      var capture;\n      switch (ch.charAt(0)) {\n        case '$': return '$';\n        case '&': return matched;\n        case '`': return str.slice(0, position);\n        case \"'\": return str.slice(tailPos);\n        case '<':\n          capture = namedCaptures[ch.slice(1, -1)];\n          break;\n        default: // \\d\\d?\n          var n = +ch;\n          if (n === 0) return match;\n          if (n > m) {\n            var f = floor(n / 10);\n            if (f === 0) return match;\n            if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1);\n            return match;\n          }\n          capture = captures[n - 1];\n      }\n      return capture === undefined ? '' : capture;\n    });\n  }\n});\n","var $export = require('./_export');\nvar defined = require('./_defined');\nvar fails = require('./_fails');\nvar spaces = require('./_string-ws');\nvar space = '[' + spaces + ']';\nvar non = '\\u200b\\u0085';\nvar ltrim = RegExp('^' + space + space + '*');\nvar rtrim = RegExp(space + space + '*$');\n\nvar exporter = function (KEY, exec, ALIAS) {\n  var exp = {};\n  var FORCE = fails(function () {\n    return !!spaces[KEY]() || non[KEY]() != non;\n  });\n  var fn = exp[KEY] = FORCE ? exec(trim) : spaces[KEY];\n  if (ALIAS) exp[ALIAS] = fn;\n  $export($export.P + $export.F * FORCE, 'String', exp);\n};\n\n// 1 -> String#trimLeft\n// 2 -> String#trimRight\n// 3 -> String#trim\nvar trim = exporter.trim = function (string, TYPE) {\n  string = String(defined(string));\n  if (TYPE & 1) string = string.replace(ltrim, '');\n  if (TYPE & 2) string = string.replace(rtrim, '');\n  return string;\n};\n\nmodule.exports = exporter;\n","\"use strict\";\n\n/* global console: false */\n\n/**\n * Reporter that handles the reporting of logs, warnings and errors.\n * @public\n * @param {boolean} quiet Tells if the reporter should be quiet or not.\n */\nmodule.exports = function(quiet) {\n    function noop() {\n        //Does nothing.\n    }\n\n    var reporter = {\n        log: noop,\n        warn: noop,\n        error: noop\n    };\n\n    if(!quiet && window.console) {\n        var attachFunction = function(reporter, name) {\n            //The proxy is needed to be able to call the method with the console context,\n            //since we cannot use bind.\n            reporter[name] = function reporterProxy() {\n                var f = console[name];\n                if (f.apply) { //IE9 does not support console.log.apply :)\n                    f.apply(console, arguments);\n                } else {\n                    for (var i = 0; i < arguments.length; i++) {\n                        f(arguments[i]);\n                    }\n                }\n            };\n        };\n\n        attachFunction(reporter, \"log\");\n        attachFunction(reporter, \"warn\");\n        attachFunction(reporter, \"error\");\n    }\n\n    return reporter;\n};","var $iterators = require('./es6.array.iterator');\nvar getKeys = require('./_object-keys');\nvar redefine = require('./_redefine');\nvar global = require('./_global');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar wks = require('./_wks');\nvar ITERATOR = wks('iterator');\nvar TO_STRING_TAG = wks('toStringTag');\nvar ArrayValues = Iterators.Array;\n\nvar DOMIterables = {\n  CSSRuleList: true, // TODO: Not spec compliant, should be false.\n  CSSStyleDeclaration: false,\n  CSSValueList: false,\n  ClientRectList: false,\n  DOMRectList: false,\n  DOMStringList: false,\n  DOMTokenList: true,\n  DataTransferItemList: false,\n  FileList: false,\n  HTMLAllCollection: false,\n  HTMLCollection: false,\n  HTMLFormElement: false,\n  HTMLSelectElement: false,\n  MediaList: true, // TODO: Not spec compliant, should be false.\n  MimeTypeArray: false,\n  NamedNodeMap: false,\n  NodeList: true,\n  PaintRequestList: false,\n  Plugin: false,\n  PluginArray: false,\n  SVGLengthList: false,\n  SVGNumberList: false,\n  SVGPathSegList: false,\n  SVGPointList: false,\n  SVGStringList: false,\n  SVGTransformList: false,\n  SourceBufferList: false,\n  StyleSheetList: true, // TODO: Not spec compliant, should be false.\n  TextTrackCueList: false,\n  TextTrackList: false,\n  TouchList: false\n};\n\nfor (var collections = getKeys(DOMIterables), i = 0; i < collections.length; i++) {\n  var NAME = collections[i];\n  var explicit = DOMIterables[NAME];\n  var Collection = global[NAME];\n  var proto = Collection && Collection.prototype;\n  var key;\n  if (proto) {\n    if (!proto[ITERATOR]) hide(proto, ITERATOR, ArrayValues);\n    if (!proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n    Iterators[NAME] = ArrayValues;\n    if (explicit) for (key in $iterators) if (!proto[key]) redefine(proto, key, $iterators[key], true);\n  }\n}\n","module.exports = function (bitmap, value) {\n  return {\n    enumerable: !(bitmap & 1),\n    configurable: !(bitmap & 2),\n    writable: !(bitmap & 4),\n    value: value\n  };\n};\n","'use strict';\nvar regexpExec = require('./_regexp-exec');\nrequire('./_export')({\n  target: 'RegExp',\n  proto: true,\n  forced: regexpExec !== /./.exec\n}, {\n  exec: regexpExec\n});\n","\"use strict\";\n\nvar utils = module.exports = {};\n\n/**\n * Loops through the collection and calls the callback for each element. if the callback returns truthy, the loop is broken and returns the same value.\n * @public\n * @param {*} collection The collection to loop through. Needs to have a length property set and have indices set from 0 to length - 1.\n * @param {function} callback The callback to be called for each element. The element will be given as a parameter to the callback. If this callback returns truthy, the loop is broken and the same value is returned.\n * @returns {*} The value that a callback has returned (if truthy). Otherwise nothing.\n */\nutils.forEach = function(collection, callback) {\n    for(var i = 0; i < collection.length; i++) {\n        var result = callback(collection[i]);\n        if(result) {\n            return result;\n        }\n    }\n};\n","// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n  if (it == undefined) throw TypeError(\"Can't call method on  \" + it);\n  return it;\n};\n","\"use strict\";\n\nvar utils = require(\"./utils\");\n\nmodule.exports = function batchProcessorMaker(options) {\n    options             = options || {};\n    var reporter        = options.reporter;\n    var asyncProcess    = utils.getOption(options, \"async\", true);\n    var autoProcess     = utils.getOption(options, \"auto\", true);\n\n    if(autoProcess && !asyncProcess) {\n        reporter && reporter.warn(\"Invalid options combination. auto=true and async=false is invalid. Setting async=true.\");\n        asyncProcess = true;\n    }\n\n    var batch = Batch();\n    var asyncFrameHandler;\n    var isProcessing = false;\n\n    function addFunction(level, fn) {\n        if(!isProcessing && autoProcess && asyncProcess && batch.size() === 0) {\n            // Since this is async, it is guaranteed to be executed after that the fn is added to the batch.\n            // This needs to be done before, since we're checking the size of the batch to be 0.\n            processBatchAsync();\n        }\n\n        batch.add(level, fn);\n    }\n\n    function processBatch() {\n        // Save the current batch, and create a new batch so that incoming functions are not added into the currently processing batch.\n        // Continue processing until the top-level batch is empty (functions may be added to the new batch while processing, and so on).\n        isProcessing = true;\n        while (batch.size()) {\n            var processingBatch = batch;\n            batch = Batch();\n            processingBatch.process();\n        }\n        isProcessing = false;\n    }\n\n    function forceProcessBatch(localAsyncProcess) {\n        if (isProcessing) {\n            return;\n        }\n\n        if(localAsyncProcess === undefined) {\n            localAsyncProcess = asyncProcess;\n        }\n\n        if(asyncFrameHandler) {\n            cancelFrame(asyncFrameHandler);\n            asyncFrameHandler = null;\n        }\n\n        if(localAsyncProcess) {\n            processBatchAsync();\n        } else {\n            processBatch();\n        }\n    }\n\n    function processBatchAsync() {\n        asyncFrameHandler = requestFrame(processBatch);\n    }\n\n    function clearBatch() {\n        batch           = {};\n        batchSize       = 0;\n        topLevel        = 0;\n        bottomLevel     = 0;\n    }\n\n    function cancelFrame(listener) {\n        // var cancel = window.cancelAnimationFrame || window.mozCancelAnimationFrame || window.webkitCancelAnimationFrame || window.clearTimeout;\n        var cancel = clearTimeout;\n        return cancel(listener);\n    }\n\n    function requestFrame(callback) {\n        // var raf = window.requestAnimationFrame || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame || function(fn) { return window.setTimeout(fn, 20); };\n        var raf = function(fn) { return setTimeout(fn, 0); };\n        return raf(callback);\n    }\n\n    return {\n        add: addFunction,\n        force: forceProcessBatch\n    };\n};\n\nfunction Batch() {\n    var batch       = {};\n    var size        = 0;\n    var topLevel    = 0;\n    var bottomLevel = 0;\n\n    function add(level, fn) {\n        if(!fn) {\n            fn = level;\n            level = 0;\n        }\n\n        if(level > topLevel) {\n            topLevel = level;\n        } else if(level < bottomLevel) {\n            bottomLevel = level;\n        }\n\n        if(!batch[level]) {\n            batch[level] = [];\n        }\n\n        batch[level].push(fn);\n        size++;\n    }\n\n    function process() {\n        for(var level = bottomLevel; level <= topLevel; level++) {\n            var fns = batch[level];\n\n            for(var i = 0; i < fns.length; i++) {\n                var fn = fns[i];\n                fn();\n            }\n        }\n    }\n\n    function getSize() {\n        return size;\n    }\n\n    return {\n        add: add,\n        process: process,\n        size: getSize\n    };\n}\n","// false -> Array#indexOf\n// true  -> Array#includes\nvar toIObject = require('./_to-iobject');\nvar toLength = require('./_to-length');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nmodule.exports = function (IS_INCLUDES) {\n  return function ($this, el, fromIndex) {\n    var O = toIObject($this);\n    var length = toLength(O.length);\n    var index = toAbsoluteIndex(fromIndex, length);\n    var value;\n    // Array#includes uses SameValueZero equality algorithm\n    // eslint-disable-next-line no-self-compare\n    if (IS_INCLUDES && el != el) while (length > index) {\n      value = O[index++];\n      // eslint-disable-next-line no-self-compare\n      if (value != value) return true;\n    // Array#indexOf ignores holes, Array#includes - not\n    } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n      if (O[index] === el) return IS_INCLUDES || index || 0;\n    } return !IS_INCLUDES && -1;\n  };\n};\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./GridItem.vue?vue&type=style&index=0&id=46ff2fc8&lang=css\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"40158674\", content, true, {\"sourceMap\":false,\"shadowMode\":false});","'use strict';\nvar global = require('./_global');\nvar has = require('./_has');\nvar cof = require('./_cof');\nvar inheritIfRequired = require('./_inherit-if-required');\nvar toPrimitive = require('./_to-primitive');\nvar fails = require('./_fails');\nvar gOPN = require('./_object-gopn').f;\nvar gOPD = require('./_object-gopd').f;\nvar dP = require('./_object-dp').f;\nvar $trim = require('./_string-trim').trim;\nvar NUMBER = 'Number';\nvar $Number = global[NUMBER];\nvar Base = $Number;\nvar proto = $Number.prototype;\n// Opera ~12 has broken Object#toString\nvar BROKEN_COF = cof(require('./_object-create')(proto)) == NUMBER;\nvar TRIM = 'trim' in String.prototype;\n\n// 7.1.3 ToNumber(argument)\nvar toNumber = function (argument) {\n  var it = toPrimitive(argument, false);\n  if (typeof it == 'string' && it.length > 2) {\n    it = TRIM ? it.trim() : $trim(it, 3);\n    var first = it.charCodeAt(0);\n    var third, radix, maxCode;\n    if (first === 43 || first === 45) {\n      third = it.charCodeAt(2);\n      if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix\n    } else if (first === 48) {\n      switch (it.charCodeAt(1)) {\n        case 66: case 98: radix = 2; maxCode = 49; break; // fast equal /^0b[01]+$/i\n        case 79: case 111: radix = 8; maxCode = 55; break; // fast equal /^0o[0-7]+$/i\n        default: return +it;\n      }\n      for (var digits = it.slice(2), i = 0, l = digits.length, code; i < l; i++) {\n        code = digits.charCodeAt(i);\n        // parseInt parses a string to a first unavailable symbol\n        // but ToNumber should return NaN if a string contains unavailable symbols\n        if (code < 48 || code > maxCode) return NaN;\n      } return parseInt(digits, radix);\n    }\n  } return +it;\n};\n\nif (!$Number(' 0o1') || !$Number('0b1') || $Number('+0x1')) {\n  $Number = function Number(value) {\n    var it = arguments.length < 1 ? 0 : value;\n    var that = this;\n    return that instanceof $Number\n      // check on 1..constructor(foo) case\n      && (BROKEN_COF ? fails(function () { proto.valueOf.call(that); }) : cof(that) != NUMBER)\n        ? inheritIfRequired(new Base(toNumber(it)), that, $Number) : toNumber(it);\n  };\n  for (var keys = require('./_descriptors') ? gOPN(Base) : (\n    // ES3:\n    'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' +\n    // ES6 (in case, if modules with ES6 Number statics required before):\n    'EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,' +\n    'MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger'\n  ).split(','), j = 0, key; keys.length > j; j++) {\n    if (has(Base, key = keys[j]) && !has($Number, key)) {\n      dP($Number, key, gOPD(Base, key));\n    }\n  }\n  $Number.prototype = proto;\n  proto.constructor = $Number;\n  require('./_redefine')(global, NUMBER, $Number);\n}\n","module.exports = !require('./_descriptors') && !require('./_fails')(function () {\n  return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n","/**\n * Resize detection strategy that injects divs to elements in order to detect resize events on scroll events.\n * Heavily inspired by: https://github.com/marcj/css-element-queries/blob/master/src/ResizeSensor.js\n */\n\n\"use strict\";\n\nvar forEach = require(\"../collection-utils\").forEach;\n\nmodule.exports = function(options) {\n    options             = options || {};\n    var reporter        = options.reporter;\n    var batchProcessor  = options.batchProcessor;\n    var getState        = options.stateHandler.getState;\n    var hasState        = options.stateHandler.hasState;\n    var idHandler       = options.idHandler;\n\n    if (!batchProcessor) {\n        throw new Error(\"Missing required dependency: batchProcessor\");\n    }\n\n    if (!reporter) {\n        throw new Error(\"Missing required dependency: reporter.\");\n    }\n\n    //TODO: Could this perhaps be done at installation time?\n    var scrollbarSizes = getScrollbarSizes();\n\n    var styleId = \"erd_scroll_detection_scrollbar_style\";\n    var detectionContainerClass = \"erd_scroll_detection_container\";\n\n    function initDocument(targetDocument) {\n        // Inject the scrollbar styling that prevents them from appearing sometimes in Chrome.\n        // The injected container needs to have a class, so that it may be styled with CSS (pseudo elements).\n        injectScrollStyle(targetDocument, styleId, detectionContainerClass);\n    }\n\n    initDocument(window.document);\n\n    function buildCssTextString(rules) {\n        var seperator = options.important ? \" !important; \" : \"; \";\n\n        return (rules.join(seperator) + seperator).trim();\n    }\n\n    function getScrollbarSizes() {\n        var width = 500;\n        var height = 500;\n\n        var child = document.createElement(\"div\");\n        child.style.cssText = buildCssTextString([\"position: absolute\", \"width: \" + width*2 + \"px\", \"height: \" + height*2 + \"px\", \"visibility: hidden\", \"margin: 0\", \"padding: 0\"]);\n\n        var container = document.createElement(\"div\");\n        container.style.cssText = buildCssTextString([\"position: absolute\", \"width: \" + width + \"px\", \"height: \" + height + \"px\", \"overflow: scroll\", \"visibility: none\", \"top: \" + -width*3 + \"px\", \"left: \" + -height*3 + \"px\", \"visibility: hidden\", \"margin: 0\", \"padding: 0\"]);\n\n        container.appendChild(child);\n\n        document.body.insertBefore(container, document.body.firstChild);\n\n        var widthSize = width - container.clientWidth;\n        var heightSize = height - container.clientHeight;\n\n        document.body.removeChild(container);\n\n        return {\n            width: widthSize,\n            height: heightSize\n        };\n    }\n\n    function injectScrollStyle(targetDocument, styleId, containerClass) {\n        function injectStyle(style, method) {\n            method = method || function (element) {\n                targetDocument.head.appendChild(element);\n            };\n\n            var styleElement = targetDocument.createElement(\"style\");\n            styleElement.innerHTML = style;\n            styleElement.id = styleId;\n            method(styleElement);\n            return styleElement;\n        }\n\n        if (!targetDocument.getElementById(styleId)) {\n            var containerAnimationClass = containerClass + \"_animation\";\n            var containerAnimationActiveClass = containerClass + \"_animation_active\";\n            var style = \"/* Created by the element-resize-detector library. */\\n\";\n            style += \".\" + containerClass + \" > div::-webkit-scrollbar { \" + buildCssTextString([\"display: none\"]) + \" }\\n\\n\";\n            style += \".\" + containerAnimationActiveClass + \" { \" + buildCssTextString([\"-webkit-animation-duration: 0.1s\", \"animation-duration: 0.1s\", \"-webkit-animation-name: \" + containerAnimationClass, \"animation-name: \" + containerAnimationClass]) + \" }\\n\";\n            style += \"@-webkit-keyframes \" + containerAnimationClass +  \" { 0% { opacity: 1; } 50% { opacity: 0; } 100% { opacity: 1; } }\\n\";\n            style += \"@keyframes \" + containerAnimationClass +          \" { 0% { opacity: 1; } 50% { opacity: 0; } 100% { opacity: 1; } }\";\n            injectStyle(style);\n        }\n    }\n\n    function addAnimationClass(element) {\n        element.className += \" \" + detectionContainerClass + \"_animation_active\";\n    }\n\n    function addEvent(el, name, cb) {\n        if (el.addEventListener) {\n            el.addEventListener(name, cb);\n        } else if(el.attachEvent) {\n            el.attachEvent(\"on\" + name, cb);\n        } else {\n            return reporter.error(\"[scroll] Don't know how to add event listeners.\");\n        }\n    }\n\n    function removeEvent(el, name, cb) {\n        if (el.removeEventListener) {\n            el.removeEventListener(name, cb);\n        } else if(el.detachEvent) {\n            el.detachEvent(\"on\" + name, cb);\n        } else {\n            return reporter.error(\"[scroll] Don't know how to remove event listeners.\");\n        }\n    }\n\n    function getExpandElement(element) {\n        return getState(element).container.childNodes[0].childNodes[0].childNodes[0];\n    }\n\n    function getShrinkElement(element) {\n        return getState(element).container.childNodes[0].childNodes[0].childNodes[1];\n    }\n\n    /**\n     * Adds a resize event listener to the element.\n     * @public\n     * @param {element} element The element that should have the listener added.\n     * @param {function} listener The listener callback to be called for each resize event of the element. The element will be given as a parameter to the listener callback.\n     */\n    function addListener(element, listener) {\n        var listeners = getState(element).listeners;\n\n        if (!listeners.push) {\n            throw new Error(\"Cannot add listener to an element that is not detectable.\");\n        }\n\n        getState(element).listeners.push(listener);\n    }\n\n    /**\n     * Makes an element detectable and ready to be listened for resize events. Will call the callback when the element is ready to be listened for resize changes.\n     * @private\n     * @param {object} options Optional options object.\n     * @param {element} element The element to make detectable\n     * @param {function} callback The callback to be called when the element is ready to be listened for resize changes. Will be called with the element as first parameter.\n     */\n    function makeDetectable(options, element, callback) {\n        if (!callback) {\n            callback = element;\n            element = options;\n            options = null;\n        }\n\n        options = options || {};\n\n        function debug() {\n            if (options.debug) {\n                var args = Array.prototype.slice.call(arguments);\n                args.unshift(idHandler.get(element), \"Scroll: \");\n                if (reporter.log.apply) {\n                    reporter.log.apply(null, args);\n                } else {\n                    for (var i = 0; i < args.length; i++) {\n                        reporter.log(args[i]);\n                    }\n                }\n            }\n        }\n\n        function isDetached(element) {\n            function isInDocument(element) {\n                return element === element.ownerDocument.body || element.ownerDocument.body.contains(element);\n            }\n\n            if (!isInDocument(element)) {\n                return true;\n            }\n\n            // FireFox returns null style in hidden iframes. See https://github.com/wnr/element-resize-detector/issues/68 and https://bugzilla.mozilla.org/show_bug.cgi?id=795520\n            if (window.getComputedStyle(element) === null) {\n                return true;\n            }\n\n            return false;\n        }\n\n        function isUnrendered(element) {\n            // Check the absolute positioned container since the top level container is display: inline.\n            var container = getState(element).container.childNodes[0];\n            var style = window.getComputedStyle(container);\n            return !style.width || style.width.indexOf(\"px\") === -1; //Can only compute pixel value when rendered.\n        }\n\n        function getStyle() {\n            // Some browsers only force layouts when actually reading the style properties of the style object, so make sure that they are all read here,\n            // so that the user of the function can be sure that it will perform the layout here, instead of later (important for batching).\n            var elementStyle            = window.getComputedStyle(element);\n            var style                   = {};\n            style.position              = elementStyle.position;\n            style.width                 = element.offsetWidth;\n            style.height                = element.offsetHeight;\n            style.top                   = elementStyle.top;\n            style.right                 = elementStyle.right;\n            style.bottom                = elementStyle.bottom;\n            style.left                  = elementStyle.left;\n            style.widthCSS              = elementStyle.width;\n            style.heightCSS             = elementStyle.height;\n            return style;\n        }\n\n        function storeStartSize() {\n            var style = getStyle();\n            getState(element).startSize = {\n                width: style.width,\n                height: style.height\n            };\n            debug(\"Element start size\", getState(element).startSize);\n        }\n\n        function initListeners() {\n            getState(element).listeners = [];\n        }\n\n        function storeStyle() {\n            debug(\"storeStyle invoked.\");\n            if (!getState(element)) {\n                debug(\"Aborting because element has been uninstalled\");\n                return;\n            }\n\n            var style = getStyle();\n            getState(element).style = style;\n        }\n\n        function storeCurrentSize(element, width, height) {\n            getState(element).lastWidth = width;\n            getState(element).lastHeight  = height;\n        }\n\n        function getExpandChildElement(element) {\n            return getExpandElement(element).childNodes[0];\n        }\n\n        function getWidthOffset() {\n            return 2 * scrollbarSizes.width + 1;\n        }\n\n        function getHeightOffset() {\n            return 2 * scrollbarSizes.height + 1;\n        }\n\n        function getExpandWidth(width) {\n            return width + 10 + getWidthOffset();\n        }\n\n        function getExpandHeight(height) {\n            return height + 10 + getHeightOffset();\n        }\n\n        function getShrinkWidth(width) {\n            return width * 2 + getWidthOffset();\n        }\n\n        function getShrinkHeight(height) {\n            return height * 2 + getHeightOffset();\n        }\n\n        function positionScrollbars(element, width, height) {\n            var expand          = getExpandElement(element);\n            var shrink          = getShrinkElement(element);\n            var expandWidth     = getExpandWidth(width);\n            var expandHeight    = getExpandHeight(height);\n            var shrinkWidth     = getShrinkWidth(width);\n            var shrinkHeight    = getShrinkHeight(height);\n            expand.scrollLeft   = expandWidth;\n            expand.scrollTop    = expandHeight;\n            shrink.scrollLeft   = shrinkWidth;\n            shrink.scrollTop    = shrinkHeight;\n        }\n\n        function injectContainerElement() {\n            var container = getState(element).container;\n\n            if (!container) {\n                container                   = document.createElement(\"div\");\n                container.className         = detectionContainerClass;\n                container.style.cssText     = buildCssTextString([\"visibility: hidden\", \"display: inline\", \"width: 0px\", \"height: 0px\", \"z-index: -1\", \"overflow: hidden\", \"margin: 0\", \"padding: 0\"]);\n                getState(element).container = container;\n                addAnimationClass(container);\n                element.appendChild(container);\n\n                var onAnimationStart = function () {\n                    getState(element).onRendered && getState(element).onRendered();\n                };\n\n                addEvent(container, \"animationstart\", onAnimationStart);\n\n                // Store the event handler here so that they may be removed when uninstall is called.\n                // See uninstall function for an explanation why it is needed.\n                getState(element).onAnimationStart = onAnimationStart;\n            }\n\n            return container;\n        }\n\n        function injectScrollElements() {\n            function alterPositionStyles() {\n                var style = getState(element).style;\n\n                if(style.position === \"static\") {\n                    element.style.setProperty(\"position\", \"relative\",options.important ? \"important\" : \"\");\n\n                    var removeRelativeStyles = function(reporter, element, style, property) {\n                        function getNumericalValue(value) {\n                            return value.replace(/[^-\\d\\.]/g, \"\");\n                        }\n\n                        var value = style[property];\n\n                        if(value !== \"auto\" && getNumericalValue(value) !== \"0\") {\n                            reporter.warn(\"An element that is positioned static has style.\" + property + \"=\" + value + \" which is ignored due to the static positioning. The element will need to be positioned relative, so the style.\" + property + \" will be set to 0. Element: \", element);\n                            element.style[property] = 0;\n                        }\n                    };\n\n                    //Check so that there are no accidental styles that will make the element styled differently now that is is relative.\n                    //If there are any, set them to 0 (this should be okay with the user since the style properties did nothing before [since the element was positioned static] anyway).\n                    removeRelativeStyles(reporter, element, style, \"top\");\n                    removeRelativeStyles(reporter, element, style, \"right\");\n                    removeRelativeStyles(reporter, element, style, \"bottom\");\n                    removeRelativeStyles(reporter, element, style, \"left\");\n                }\n            }\n\n            function getLeftTopBottomRightCssText(left, top, bottom, right) {\n                left = (!left ? \"0\" : (left + \"px\"));\n                top = (!top ? \"0\" : (top + \"px\"));\n                bottom = (!bottom ? \"0\" : (bottom + \"px\"));\n                right = (!right ? \"0\" : (right + \"px\"));\n\n                return [\"left: \" + left, \"top: \" + top, \"right: \" + right, \"bottom: \" + bottom];\n            }\n\n            debug(\"Injecting elements\");\n\n            if (!getState(element)) {\n                debug(\"Aborting because element has been uninstalled\");\n                return;\n            }\n\n            alterPositionStyles();\n\n            var rootContainer = getState(element).container;\n\n            if (!rootContainer) {\n                rootContainer = injectContainerElement();\n            }\n\n            // Due to this WebKit bug https://bugs.webkit.org/show_bug.cgi?id=80808 (currently fixed in Blink, but still present in WebKit browsers such as Safari),\n            // we need to inject two containers, one that is width/height 100% and another that is left/top -1px so that the final container always is 1x1 pixels bigger than\n            // the targeted element.\n            // When the bug is resolved, \"containerContainer\" may be removed.\n\n            // The outer container can occasionally be less wide than the targeted when inside inline elements element in WebKit (see https://bugs.webkit.org/show_bug.cgi?id=152980).\n            // This should be no problem since the inner container either way makes sure the injected scroll elements are at least 1x1 px.\n\n            var scrollbarWidth          = scrollbarSizes.width;\n            var scrollbarHeight         = scrollbarSizes.height;\n            var containerContainerStyle = buildCssTextString([\"position: absolute\", \"flex: none\", \"overflow: hidden\", \"z-index: -1\", \"visibility: hidden\", \"width: 100%\", \"height: 100%\", \"left: 0px\", \"top: 0px\"]);\n            var containerStyle          = buildCssTextString([\"position: absolute\", \"flex: none\", \"overflow: hidden\", \"z-index: -1\", \"visibility: hidden\"].concat(getLeftTopBottomRightCssText(-(1 + scrollbarWidth), -(1 + scrollbarHeight), -scrollbarHeight, -scrollbarWidth)));\n            var expandStyle             = buildCssTextString([\"position: absolute\", \"flex: none\", \"overflow: scroll\", \"z-index: -1\", \"visibility: hidden\", \"width: 100%\", \"height: 100%\"]);\n            var shrinkStyle             = buildCssTextString([\"position: absolute\", \"flex: none\", \"overflow: scroll\", \"z-index: -1\", \"visibility: hidden\", \"width: 100%\", \"height: 100%\"]);\n            var expandChildStyle        = buildCssTextString([\"position: absolute\", \"left: 0\", \"top: 0\"]);\n            var shrinkChildStyle        = buildCssTextString([\"position: absolute\", \"width: 200%\", \"height: 200%\"]);\n\n            var containerContainer      = document.createElement(\"div\");\n            var container               = document.createElement(\"div\");\n            var expand                  = document.createElement(\"div\");\n            var expandChild             = document.createElement(\"div\");\n            var shrink                  = document.createElement(\"div\");\n            var shrinkChild             = document.createElement(\"div\");\n\n            // Some browsers choke on the resize system being rtl, so force it to ltr. https://github.com/wnr/element-resize-detector/issues/56\n            // However, dir should not be set on the top level container as it alters the dimensions of the target element in some browsers.\n            containerContainer.dir              = \"ltr\";\n\n            containerContainer.style.cssText    = containerContainerStyle;\n            containerContainer.className        = detectionContainerClass;\n            container.className                 = detectionContainerClass;\n            container.style.cssText             = containerStyle;\n            expand.style.cssText                = expandStyle;\n            expandChild.style.cssText           = expandChildStyle;\n            shrink.style.cssText                = shrinkStyle;\n            shrinkChild.style.cssText           = shrinkChildStyle;\n\n            expand.appendChild(expandChild);\n            shrink.appendChild(shrinkChild);\n            container.appendChild(expand);\n            container.appendChild(shrink);\n            containerContainer.appendChild(container);\n            rootContainer.appendChild(containerContainer);\n\n            function onExpandScroll() {\n                getState(element).onExpand && getState(element).onExpand();\n            }\n\n            function onShrinkScroll() {\n                getState(element).onShrink && getState(element).onShrink();\n            }\n\n            addEvent(expand, \"scroll\", onExpandScroll);\n            addEvent(shrink, \"scroll\", onShrinkScroll);\n\n            // Store the event handlers here so that they may be removed when uninstall is called.\n            // See uninstall function for an explanation why it is needed.\n            getState(element).onExpandScroll = onExpandScroll;\n            getState(element).onShrinkScroll = onShrinkScroll;\n        }\n\n        function registerListenersAndPositionElements() {\n            function updateChildSizes(element, width, height) {\n                var expandChild             = getExpandChildElement(element);\n                var expandWidth             = getExpandWidth(width);\n                var expandHeight            = getExpandHeight(height);\n                expandChild.style.setProperty(\"width\", expandWidth + \"px\", options.important ? \"important\" : \"\");\n                expandChild.style.setProperty(\"height\", expandHeight + \"px\", options.important ? \"important\" : \"\");\n            }\n\n            function updateDetectorElements(done) {\n                var width           = element.offsetWidth;\n                var height          = element.offsetHeight;\n\n                // Check whether the size has actually changed since last time the algorithm ran. If not, some steps may be skipped.\n                var sizeChanged = width !== getState(element).lastWidth || height !== getState(element).lastHeight;\n\n                debug(\"Storing current size\", width, height);\n\n                // Store the size of the element sync here, so that multiple scroll events may be ignored in the event listeners.\n                // Otherwise the if-check in handleScroll is useless.\n                storeCurrentSize(element, width, height);\n\n                // Since we delay the processing of the batch, there is a risk that uninstall has been called before the batch gets to execute.\n                // Since there is no way to cancel the fn executions, we need to add an uninstall guard to all fns of the batch.\n\n                batchProcessor.add(0, function performUpdateChildSizes() {\n                    if (!sizeChanged) {\n                        return;\n                    }\n\n                    if (!getState(element)) {\n                        debug(\"Aborting because element has been uninstalled\");\n                        return;\n                    }\n\n                    if (!areElementsInjected()) {\n                        debug(\"Aborting because element container has not been initialized\");\n                        return;\n                    }\n\n                    if (options.debug) {\n                        var w = element.offsetWidth;\n                        var h = element.offsetHeight;\n\n                        if (w !== width || h !== height) {\n                            reporter.warn(idHandler.get(element), \"Scroll: Size changed before updating detector elements.\");\n                        }\n                    }\n\n                    updateChildSizes(element, width, height);\n                });\n\n                batchProcessor.add(1, function updateScrollbars() {\n                    // This function needs to be invoked event though the size is unchanged. The element could have been resized very quickly and then\n                    // been restored to the original size, which will have changed the scrollbar positions.\n\n                    if (!getState(element)) {\n                        debug(\"Aborting because element has been uninstalled\");\n                        return;\n                    }\n\n                    if (!areElementsInjected()) {\n                        debug(\"Aborting because element container has not been initialized\");\n                        return;\n                    }\n\n                    positionScrollbars(element, width, height);\n                });\n\n                if (sizeChanged && done) {\n                    batchProcessor.add(2, function () {\n                        if (!getState(element)) {\n                            debug(\"Aborting because element has been uninstalled\");\n                            return;\n                        }\n\n                        if (!areElementsInjected()) {\n                          debug(\"Aborting because element container has not been initialized\");\n                          return;\n                        }\n\n                        done();\n                    });\n                }\n            }\n\n            function areElementsInjected() {\n                return !!getState(element).container;\n            }\n\n            function notifyListenersIfNeeded() {\n                function isFirstNotify() {\n                    return getState(element).lastNotifiedWidth === undefined;\n                }\n\n                debug(\"notifyListenersIfNeeded invoked\");\n\n                var state = getState(element);\n\n                // Don't notify if the current size is the start size, and this is the first notification.\n                if (isFirstNotify() && state.lastWidth === state.startSize.width && state.lastHeight === state.startSize.height) {\n                    return debug(\"Not notifying: Size is the same as the start size, and there has been no notification yet.\");\n                }\n\n                // Don't notify if the size already has been notified.\n                if (state.lastWidth === state.lastNotifiedWidth && state.lastHeight === state.lastNotifiedHeight) {\n                    return debug(\"Not notifying: Size already notified\");\n                }\n\n\n                debug(\"Current size not notified, notifying...\");\n                state.lastNotifiedWidth = state.lastWidth;\n                state.lastNotifiedHeight = state.lastHeight;\n                forEach(getState(element).listeners, function (listener) {\n                    listener(element);\n                });\n            }\n\n            function handleRender() {\n                debug(\"startanimation triggered.\");\n\n                if (isUnrendered(element)) {\n                    debug(\"Ignoring since element is still unrendered...\");\n                    return;\n                }\n\n                debug(\"Element rendered.\");\n                var expand = getExpandElement(element);\n                var shrink = getShrinkElement(element);\n                if (expand.scrollLeft === 0 || expand.scrollTop === 0 || shrink.scrollLeft === 0 || shrink.scrollTop === 0) {\n                    debug(\"Scrollbars out of sync. Updating detector elements...\");\n                    updateDetectorElements(notifyListenersIfNeeded);\n                }\n            }\n\n            function handleScroll() {\n                debug(\"Scroll detected.\");\n\n                if (isUnrendered(element)) {\n                    // Element is still unrendered. Skip this scroll event.\n                    debug(\"Scroll event fired while unrendered. Ignoring...\");\n                    return;\n                }\n\n                updateDetectorElements(notifyListenersIfNeeded);\n            }\n\n            debug(\"registerListenersAndPositionElements invoked.\");\n\n            if (!getState(element)) {\n                debug(\"Aborting because element has been uninstalled\");\n                return;\n            }\n\n            getState(element).onRendered = handleRender;\n            getState(element).onExpand = handleScroll;\n            getState(element).onShrink = handleScroll;\n\n            var style = getState(element).style;\n            updateChildSizes(element, style.width, style.height);\n        }\n\n        function finalizeDomMutation() {\n            debug(\"finalizeDomMutation invoked.\");\n\n            if (!getState(element)) {\n                debug(\"Aborting because element has been uninstalled\");\n                return;\n            }\n\n            var style = getState(element).style;\n            storeCurrentSize(element, style.width, style.height);\n            positionScrollbars(element, style.width, style.height);\n        }\n\n        function ready() {\n            callback(element);\n        }\n\n        function install() {\n            debug(\"Installing...\");\n            initListeners();\n            storeStartSize();\n\n            batchProcessor.add(0, storeStyle);\n            batchProcessor.add(1, injectScrollElements);\n            batchProcessor.add(2, registerListenersAndPositionElements);\n            batchProcessor.add(3, finalizeDomMutation);\n            batchProcessor.add(4, ready);\n        }\n\n        debug(\"Making detectable...\");\n\n        if (isDetached(element)) {\n            debug(\"Element is detached\");\n\n            injectContainerElement();\n\n            debug(\"Waiting until element is attached...\");\n\n            getState(element).onRendered = function () {\n                debug(\"Element is now attached\");\n                install();\n            };\n        } else {\n            install();\n        }\n    }\n\n    function uninstall(element) {\n        var state = getState(element);\n\n        if (!state) {\n            // Uninstall has been called on a non-erd element.\n            return;\n        }\n\n        // Uninstall may have been called in the following scenarios:\n        // (1) Right between the sync code and async batch (here state.busy = true, but nothing have been registered or injected).\n        // (2) In the ready callback of the last level of the batch by another element (here, state.busy = true, but all the stuff has been injected).\n        // (3) After the installation process (here, state.busy = false and all the stuff has been injected).\n        // So to be on the safe side, let's check for each thing before removing.\n\n        // We need to remove the event listeners, because otherwise the event might fire on an uninstall element which results in an error when trying to get the state of the element.\n        state.onExpandScroll && removeEvent(getExpandElement(element), \"scroll\", state.onExpandScroll);\n        state.onShrinkScroll && removeEvent(getShrinkElement(element), \"scroll\", state.onShrinkScroll);\n        state.onAnimationStart && removeEvent(state.container, \"animationstart\", state.onAnimationStart);\n\n        state.container && element.removeChild(state.container);\n    }\n\n    return {\n        makeDetectable: makeDetectable,\n        addListener: addListener,\n        uninstall: uninstall,\n        initDocument: initDocument\n    };\n};\n","var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n  return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n","'use strict';\nvar addToUnscopables = require('./_add-to-unscopables');\nvar step = require('./_iter-step');\nvar Iterators = require('./_iterators');\nvar toIObject = require('./_to-iobject');\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = require('./_iter-define')(Array, 'Array', function (iterated, kind) {\n  this._t = toIObject(iterated); // target\n  this._i = 0;                   // next index\n  this._k = kind;                // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n  var O = this._t;\n  var kind = this._k;\n  var index = this._i++;\n  if (!O || index >= O.length) {\n    this._t = undefined;\n    return step(1);\n  }\n  if (kind == 'keys') return step(0, index);\n  if (kind == 'values') return step(0, O[index]);\n  return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n","var isObject = require('./_is-object');\nmodule.exports = function (it) {\n  if (!isObject(it)) throw TypeError(it + ' is not an object!');\n  return it;\n};\n","var has = require('./_has');\nvar toIObject = require('./_to-iobject');\nvar arrayIndexOf = require('./_array-includes')(false);\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\n\nmodule.exports = function (object, names) {\n  var O = toIObject(object);\n  var i = 0;\n  var result = [];\n  var key;\n  for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n  // Don't enum bug & hidden keys\n  while (names.length > i) if (has(O, key = names[i++])) {\n    ~arrayIndexOf(result, key) || result.push(key);\n  }\n  return result;\n};\n","module.exports = function (it) {\n  return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","module.exports = function (done, value) {\n  return { value: value, done: !!done };\n};\n","\"use strict\";\n\nvar prop = \"_erd\";\n\nfunction initState(element) {\n    element[prop] = {};\n    return getState(element);\n}\n\nfunction getState(element) {\n    return element[prop];\n}\n\nfunction cleanState(element) {\n    delete element[prop];\n}\n\nmodule.exports = {\n    initState: initState,\n    getState: getState,\n    cleanState: cleanState\n};\n","// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function (fn, that, length) {\n  aFunction(fn);\n  if (that === undefined) return fn;\n  switch (length) {\n    case 1: return function (a) {\n      return fn.call(that, a);\n    };\n    case 2: return function (a, b) {\n      return fn.call(that, a, b);\n    };\n    case 3: return function (a, b, c) {\n      return fn.call(that, a, b, c);\n    };\n  }\n  return function (/* ...args */) {\n    return fn.apply(that, arguments);\n  };\n};\n","module.exports = function (it) {\n  if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n  return it;\n};\n","var anObject = require('./_an-object');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar toPrimitive = require('./_to-primitive');\nvar dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n  anObject(O);\n  P = toPrimitive(P, true);\n  anObject(Attributes);\n  if (IE8_DOM_DEFINE) try {\n    return dP(O, P, Attributes);\n  } catch (e) { /* empty */ }\n  if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n  if ('value' in Attributes) O[P] = Attributes.value;\n  return O;\n};\n","// IE 8- don't enum bug keys\nmodule.exports = (\n  'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n","var isObject = require('./_is-object');\nmodule.exports = function (it) {\n  if (!isObject(it)) throw TypeError(it + ' is not an object!');\n  return it;\n};\n","// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n  ? window : typeof self != 'undefined' && self.Math == Math ? self\n  // eslint-disable-next-line no-new-func\n  : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n","\"use strict\";\n\nvar forEach                 = require(\"./collection-utils\").forEach;\nvar elementUtilsMaker       = require(\"./element-utils\");\nvar listenerHandlerMaker    = require(\"./listener-handler\");\nvar idGeneratorMaker        = require(\"./id-generator\");\nvar idHandlerMaker          = require(\"./id-handler\");\nvar reporterMaker           = require(\"./reporter\");\nvar browserDetector         = require(\"./browser-detector\");\nvar batchProcessorMaker     = require(\"batch-processor\");\nvar stateHandler            = require(\"./state-handler\");\n\n//Detection strategies.\nvar objectStrategyMaker     = require(\"./detection-strategy/object.js\");\nvar scrollStrategyMaker     = require(\"./detection-strategy/scroll.js\");\n\nfunction isCollection(obj) {\n    return Array.isArray(obj) || obj.length !== undefined;\n}\n\nfunction toArray(collection) {\n    if (!Array.isArray(collection)) {\n        var array = [];\n        forEach(collection, function (obj) {\n            array.push(obj);\n        });\n        return array;\n    } else {\n        return collection;\n    }\n}\n\nfunction isElement(obj) {\n    return obj && obj.nodeType === 1;\n}\n\n/**\n * @typedef idHandler\n * @type {object}\n * @property {function} get Gets the resize detector id of the element.\n * @property {function} set Generate and sets the resize detector id of the element.\n */\n\n/**\n * @typedef Options\n * @type {object}\n * @property {boolean} callOnAdd    Determines if listeners should be called when they are getting added.\n                                    Default is true. If true, the listener is guaranteed to be called when it has been added.\n                                    If false, the listener will not be guarenteed to be called when it has been added (does not prevent it from being called).\n * @property {idHandler} idHandler  A custom id handler that is responsible for generating, setting and retrieving id's for elements.\n                                    If not provided, a default id handler will be used.\n * @property {reporter} reporter    A custom reporter that handles reporting logs, warnings and errors.\n                                    If not provided, a default id handler will be used.\n                                    If set to false, then nothing will be reported.\n * @property {boolean} debug        If set to true, the the system will report debug messages as default for the listenTo method.\n */\n\n/**\n * Creates an element resize detector instance.\n * @public\n * @param {Options?} options Optional global options object that will decide how this instance will work.\n */\nmodule.exports = function(options) {\n    options = options || {};\n\n    //idHandler is currently not an option to the listenTo function, so it should not be added to globalOptions.\n    var idHandler;\n\n    if (options.idHandler) {\n        // To maintain compatability with idHandler.get(element, readonly), make sure to wrap the given idHandler\n        // so that readonly flag always is true when it's used here. This may be removed next major version bump.\n        idHandler = {\n            get: function (element) { return options.idHandler.get(element, true); },\n            set: options.idHandler.set\n        };\n    } else {\n        var idGenerator = idGeneratorMaker();\n        var defaultIdHandler = idHandlerMaker({\n            idGenerator: idGenerator,\n            stateHandler: stateHandler\n        });\n        idHandler = defaultIdHandler;\n    }\n\n    //reporter is currently not an option to the listenTo function, so it should not be added to globalOptions.\n    var reporter = options.reporter;\n\n    if(!reporter) {\n        //If options.reporter is false, then the reporter should be quiet.\n        var quiet = reporter === false;\n        reporter = reporterMaker(quiet);\n    }\n\n    //batchProcessor is currently not an option to the listenTo function, so it should not be added to globalOptions.\n    var batchProcessor = getOption(options, \"batchProcessor\", batchProcessorMaker({ reporter: reporter }));\n\n    //Options to be used as default for the listenTo function.\n    var globalOptions = {};\n    globalOptions.callOnAdd     = !!getOption(options, \"callOnAdd\", true);\n    globalOptions.debug         = !!getOption(options, \"debug\", false);\n\n    var eventListenerHandler    = listenerHandlerMaker(idHandler);\n    var elementUtils            = elementUtilsMaker({\n        stateHandler: stateHandler\n    });\n\n    //The detection strategy to be used.\n    var detectionStrategy;\n    var desiredStrategy = getOption(options, \"strategy\", \"object\");\n    var importantCssRules = getOption(options, \"important\", false);\n    var strategyOptions = {\n        reporter: reporter,\n        batchProcessor: batchProcessor,\n        stateHandler: stateHandler,\n        idHandler: idHandler,\n        important: importantCssRules\n    };\n\n    if(desiredStrategy === \"scroll\") {\n        if (browserDetector.isLegacyOpera()) {\n            reporter.warn(\"Scroll strategy is not supported on legacy Opera. Changing to object strategy.\");\n            desiredStrategy = \"object\";\n        } else if (browserDetector.isIE(9)) {\n            reporter.warn(\"Scroll strategy is not supported on IE9. Changing to object strategy.\");\n            desiredStrategy = \"object\";\n        }\n    }\n\n    if(desiredStrategy === \"scroll\") {\n        detectionStrategy = scrollStrategyMaker(strategyOptions);\n    } else if(desiredStrategy === \"object\") {\n        detectionStrategy = objectStrategyMaker(strategyOptions);\n    } else {\n        throw new Error(\"Invalid strategy name: \" + desiredStrategy);\n    }\n\n    //Calls can be made to listenTo with elements that are still being installed.\n    //Also, same elements can occur in the elements list in the listenTo function.\n    //With this map, the ready callbacks can be synchronized between the calls\n    //so that the ready callback can always be called when an element is ready - even if\n    //it wasn't installed from the function itself.\n    var onReadyCallbacks = {};\n\n    /**\n     * Makes the given elements resize-detectable and starts listening to resize events on the elements. Calls the event callback for each event for each element.\n     * @public\n     * @param {Options?} options Optional options object. These options will override the global options. Some options may not be overriden, such as idHandler.\n     * @param {element[]|element} elements The given array of elements to detect resize events of. Single element is also valid.\n     * @param {function} listener The callback to be executed for each resize event for each element.\n     */\n    function listenTo(options, elements, listener) {\n        function onResizeCallback(element) {\n            var listeners = eventListenerHandler.get(element);\n            forEach(listeners, function callListenerProxy(listener) {\n                listener(element);\n            });\n        }\n\n        function addListener(callOnAdd, element, listener) {\n            eventListenerHandler.add(element, listener);\n\n            if(callOnAdd) {\n                listener(element);\n            }\n        }\n\n        //Options object may be omitted.\n        if(!listener) {\n            listener = elements;\n            elements = options;\n            options = {};\n        }\n\n        if(!elements) {\n            throw new Error(\"At least one element required.\");\n        }\n\n        if(!listener) {\n            throw new Error(\"Listener required.\");\n        }\n\n        if (isElement(elements)) {\n            // A single element has been passed in.\n            elements = [elements];\n        } else if (isCollection(elements)) {\n            // Convert collection to array for plugins.\n            // TODO: May want to check so that all the elements in the collection are valid elements.\n            elements = toArray(elements);\n        } else {\n            return reporter.error(\"Invalid arguments. Must be a DOM element or a collection of DOM elements.\");\n        }\n\n        var elementsReady = 0;\n\n        var callOnAdd = getOption(options, \"callOnAdd\", globalOptions.callOnAdd);\n        var onReadyCallback = getOption(options, \"onReady\", function noop() {});\n        var debug = getOption(options, \"debug\", globalOptions.debug);\n\n        forEach(elements, function attachListenerToElement(element) {\n            if (!stateHandler.getState(element)) {\n                stateHandler.initState(element);\n                idHandler.set(element);\n            }\n\n            var id = idHandler.get(element);\n\n            debug && reporter.log(\"Attaching listener to element\", id, element);\n\n            if(!elementUtils.isDetectable(element)) {\n                debug && reporter.log(id, \"Not detectable.\");\n                if(elementUtils.isBusy(element)) {\n                    debug && reporter.log(id, \"System busy making it detectable\");\n\n                    //The element is being prepared to be detectable. Do not make it detectable.\n                    //Just add the listener, because the element will soon be detectable.\n                    addListener(callOnAdd, element, listener);\n                    onReadyCallbacks[id] = onReadyCallbacks[id] || [];\n                    onReadyCallbacks[id].push(function onReady() {\n                        elementsReady++;\n\n                        if(elementsReady === elements.length) {\n                            onReadyCallback();\n                        }\n                    });\n                    return;\n                }\n\n                debug && reporter.log(id, \"Making detectable...\");\n                //The element is not prepared to be detectable, so do prepare it and add a listener to it.\n                elementUtils.markBusy(element, true);\n                return detectionStrategy.makeDetectable({ debug: debug, important: importantCssRules }, element, function onElementDetectable(element) {\n                    debug && reporter.log(id, \"onElementDetectable\");\n\n                    if (stateHandler.getState(element)) {\n                        elementUtils.markAsDetectable(element);\n                        elementUtils.markBusy(element, false);\n                        detectionStrategy.addListener(element, onResizeCallback);\n                        addListener(callOnAdd, element, listener);\n\n                        // Since the element size might have changed since the call to \"listenTo\", we need to check for this change,\n                        // so that a resize event may be emitted.\n                        // Having the startSize object is optional (since it does not make sense in some cases such as unrendered elements), so check for its existance before.\n                        // Also, check the state existance before since the element may have been uninstalled in the installation process.\n                        var state = stateHandler.getState(element);\n                        if (state && state.startSize) {\n                            var width = element.offsetWidth;\n                            var height = element.offsetHeight;\n                            if (state.startSize.width !== width || state.startSize.height !== height) {\n                                onResizeCallback(element);\n                            }\n                        }\n\n                        if(onReadyCallbacks[id]) {\n                            forEach(onReadyCallbacks[id], function(callback) {\n                                callback();\n                            });\n                        }\n                    } else {\n                        // The element has been unisntalled before being detectable.\n                        debug && reporter.log(id, \"Element uninstalled before being detectable.\");\n                    }\n\n                    delete onReadyCallbacks[id];\n\n                    elementsReady++;\n                    if(elementsReady === elements.length) {\n                        onReadyCallback();\n                    }\n                });\n            }\n\n            debug && reporter.log(id, \"Already detecable, adding listener.\");\n\n            //The element has been prepared to be detectable and is ready to be listened to.\n            addListener(callOnAdd, element, listener);\n            elementsReady++;\n        });\n\n        if(elementsReady === elements.length) {\n            onReadyCallback();\n        }\n    }\n\n    function uninstall(elements) {\n        if(!elements) {\n            return reporter.error(\"At least one element is required.\");\n        }\n\n        if (isElement(elements)) {\n            // A single element has been passed in.\n            elements = [elements];\n        } else if (isCollection(elements)) {\n            // Convert collection to array for plugins.\n            // TODO: May want to check so that all the elements in the collection are valid elements.\n            elements = toArray(elements);\n        } else {\n            return reporter.error(\"Invalid arguments. Must be a DOM element or a collection of DOM elements.\");\n        }\n\n        forEach(elements, function (element) {\n            eventListenerHandler.removeAllListeners(element);\n            detectionStrategy.uninstall(element);\n            stateHandler.cleanState(element);\n        });\n    }\n\n    function initDocument(targetDocument) {\n        detectionStrategy.initDocument && detectionStrategy.initDocument(targetDocument);\n    }\n\n    return {\n        listenTo: listenTo,\n        removeListener: eventListenerHandler.removeListener,\n        removeAllListeners: eventListenerHandler.removeAllListeners,\n        uninstall: uninstall,\n        initDocument: initDocument\n    };\n};\n\nfunction getOption(options, name, defaultValue) {\n    var value = options[name];\n\n    if((value === undefined || value === null) && defaultValue !== undefined) {\n        return defaultValue;\n    }\n\n    return value;\n}\n","'use strict';\nvar $defineProperty = require('./_object-dp');\nvar createDesc = require('./_property-desc');\n\nmodule.exports = function (object, index, value) {\n  if (index in object) $defineProperty.f(object, index, createDesc(0, value));\n  else object[index] = value;\n};\n","module.exports = function (it) {\n  return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","module.exports = require('./_shared')('native-function-to-string', Function.toString);\n","var document = require('./_global').document;\nmodule.exports = document && document.documentElement;\n","// This file is imported into lib/wc client bundles.\n\nif (typeof window !== 'undefined') {\n  var currentScript = window.document.currentScript\n  if (process.env.NEED_CURRENTSCRIPT_POLYFILL) {\n    var getCurrentScript = require('@soda/get-current-script')\n    currentScript = getCurrentScript()\n\n    // for backward compatibility, because previously we directly included the polyfill\n    if (!('currentScript' in document)) {\n      Object.defineProperty(document, 'currentScript', { get: getCurrentScript })\n    }\n  }\n\n  var src = currentScript && currentScript.src.match(/(.+\\/)[^/]+\\.js(\\?.*)?$/)\n  if (src) {\n    __webpack_public_path__ = src[1] // eslint-disable-line\n  }\n}\n\n// Indicate to webpack that this file can be concatenated\nexport default null\n","<template>\n    <div ref=\"item\"\n         class=\"vue-grid-item\"\n         :class=\"classObj\"\n         :style=\"style\"\n    >\n        <slot></slot>\n        <span v-if=\"resizableAndNotStatic\" ref=\"handle\" :class=\"resizableHandleClass\"></span>\n        <!--<span v-if=\"draggable\" ref=\"dragHandle\" class=\"vue-draggable-handle\"></span>-->\n    </div>\n</template>\n<style>\n    .vue-grid-item {\n        touch-action: none;\n        transition: all 200ms ease;\n        transition-property: left, top, right;\n        /* add right for rtl */\n    }\n\n    .vue-grid-item.no-touch {\n        -ms-touch-action: none;\n        touch-action: none;\n    }\n\n    .vue-grid-item.cssTransforms {\n        transition-property: transform;\n        left: 0;\n        right: auto;\n    }\n\n    .vue-grid-item.cssTransforms.render-rtl {\n        left: auto;\n        right: 0;\n    }\n\n    .vue-grid-item.resizing {\n        opacity: 0.6;\n        z-index: 3;\n    }\n\n    .vue-grid-item.vue-draggable-dragging {\n        transition:none;\n        z-index: 3;\n    }\n\n    .vue-grid-item.vue-grid-placeholder {\n        background: red;\n        opacity: 0.2;\n        transition-duration: 100ms;\n        z-index: 2;\n        -webkit-user-select: none;\n        -moz-user-select: none;\n        -ms-user-select: none;\n        -o-user-select: none;\n        user-select: none;\n    }\n\n    .vue-grid-item > .vue-resizable-handle {\n        position: absolute;\n        width: 20px;\n        height: 20px;\n        bottom: 0;\n        right: 0;\n        background: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/Pg08IS0tIEdlbmVyYXRvcjogQWRvYmUgRmlyZXdvcmtzIENTNiwgRXhwb3J0IFNWRyBFeHRlbnNpb24gYnkgQWFyb24gQmVhbGwgKGh0dHA6Ly9maXJld29ya3MuYWJlYWxsLmNvbSkgLiBWZXJzaW9uOiAwLjYuMSAgLS0+DTwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+DTxzdmcgaWQ9IlVudGl0bGVkLVBhZ2UlMjAxIiB2aWV3Qm94PSIwIDAgNiA2IiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjojZmZmZmZmMDAiIHZlcnNpb249IjEuMSINCXhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhtbDpzcGFjZT0icHJlc2VydmUiDQl4PSIwcHgiIHk9IjBweCIgd2lkdGg9IjZweCIgaGVpZ2h0PSI2cHgiDT4NCTxnIG9wYWNpdHk9IjAuMzAyIj4NCQk8cGF0aCBkPSJNIDYgNiBMIDAgNiBMIDAgNC4yIEwgNCA0LjIgTCA0LjIgNC4yIEwgNC4yIDAgTCA2IDAgTCA2IDYgTCA2IDYgWiIgZmlsbD0iIzAwMDAwMCIvPg0JPC9nPg08L3N2Zz4=');\n        background-position: bottom right;\n        padding: 0 3px 3px 0;\n        background-repeat: no-repeat;\n        background-origin: content-box;\n        box-sizing: border-box;\n        cursor: se-resize;\n    }\n\n    .vue-grid-item > .vue-rtl-resizable-handle {\n        bottom: 0;\n        left: 0;\n        background: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTAuMDAwMDAwMDAwMDAwMDAyIiBoZWlnaHQ9IjEwLjAwMDAwMDAwMDAwMDAwMiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KIDwhLS0gQ3JlYXRlZCB3aXRoIE1ldGhvZCBEcmF3IC0gaHR0cDovL2dpdGh1Yi5jb20vZHVvcGl4ZWwvTWV0aG9kLURyYXcvIC0tPgogPGc+CiAgPHRpdGxlPmJhY2tncm91bmQ8L3RpdGxlPgogIDxyZWN0IGZpbGw9Im5vbmUiIGlkPSJjYW52YXNfYmFja2dyb3VuZCIgaGVpZ2h0PSIxMiIgd2lkdGg9IjEyIiB5PSItMSIgeD0iLTEiLz4KICA8ZyBkaXNwbGF5PSJub25lIiBvdmVyZmxvdz0idmlzaWJsZSIgeT0iMCIgeD0iMCIgaGVpZ2h0PSIxMDAlIiB3aWR0aD0iMTAwJSIgaWQ9ImNhbnZhc0dyaWQiPgogICA8cmVjdCBmaWxsPSJ1cmwoI2dyaWRwYXR0ZXJuKSIgc3Ryb2tlLXdpZHRoPSIwIiB5PSIwIiB4PSIwIiBoZWlnaHQ9IjEwMCUiIHdpZHRoPSIxMDAlIi8+CiAgPC9nPgogPC9nPgogPGc+CiAgPHRpdGxlPkxheWVyIDE8L3RpdGxlPgogIDxsaW5lIGNhbnZhcz0iI2ZmZmZmZiIgY2FudmFzLW9wYWNpdHk9IjEiIHN0cm9rZS1saW5lY2FwPSJ1bmRlZmluZWQiIHN0cm9rZS1saW5lam9pbj0idW5kZWZpbmVkIiBpZD0ic3ZnXzEiIHkyPSItNzAuMTc4NDA3IiB4Mj0iMTI0LjQ2NDE3NSIgeTE9Ii0zOC4zOTI3MzciIHgxPSIxNDQuODIxMjg5IiBzdHJva2Utd2lkdGg9IjEuNSIgc3Ryb2tlPSIjMDAwIiBmaWxsPSJub25lIi8+CiAgPGxpbmUgc3Ryb2tlPSIjNjY2NjY2IiBzdHJva2UtbGluZWNhcD0idW5kZWZpbmVkIiBzdHJva2UtbGluZWpvaW49InVuZGVmaW5lZCIgaWQ9InN2Z181IiB5Mj0iOS4xMDY5NTciIHgyPSIwLjk0NzI0NyIgeTE9Ii0wLjAxODEyOCIgeDE9IjAuOTQ3MjQ3IiBzdHJva2Utd2lkdGg9IjIiIGZpbGw9Im5vbmUiLz4KICA8bGluZSBzdHJva2UtbGluZWNhcD0idW5kZWZpbmVkIiBzdHJva2UtbGluZWpvaW49InVuZGVmaW5lZCIgaWQ9InN2Z183IiB5Mj0iOSIgeDI9IjEwLjA3MzUyOSIgeTE9IjkiIHgxPSItMC42NTU2NCIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2U9IiM2NjY2NjYiIGZpbGw9Im5vbmUiLz4KIDwvZz4KPC9zdmc+);\n        background-position: bottom left;\n        padding-left: 3px;\n        background-repeat: no-repeat;\n        background-origin: content-box;\n        cursor: sw-resize;\n        right: auto;\n    }\n\n    .vue-grid-item.disable-userselect {\n        user-select: none;\n    }\n</style>\n<script>\n    import {setTopLeft, setTopRight, setTransformRtl, setTransform} from '@/helpers/utils';\n    import {getControlPosition, createCoreData} from '@/helpers/draggableUtils';\n    import {getColsFromBreakpoint} from '@/helpers/responsiveUtils';\n    import {getDocumentDir} from \"@/helpers/DOM\";\n    //    var eventBus = require('./eventBus');\n\n    import '@interactjs/auto-start'\n    import '@interactjs/actions/drag'\n    import '@interactjs/actions/resize'\n    import '@interactjs/modifiers'\n    import '@interactjs/dev-tools'\n    import interact from '@interactjs/interact'\n\n    export default {\n        name: \"GridItem\",\n        props: {\n            /*cols: {\n             type: Number,\n             required: true\n             },*/\n            /*containerWidth: {\n             type: Number,\n             required: true\n\n             },\n             rowHeight: {\n             type: Number,\n             required: true\n             },\n             margin: {\n             type: Array,\n             required: true\n             },\n             maxRows: {\n             type: Number,\n             required: true\n             },*/\n            isDraggable: {\n                type: Boolean,\n                required: false,\n                default: null\n            },\n            isResizable: {\n                type: Boolean,\n                required: false,\n                default: null\n            },\n            /*useCssTransforms: {\n             type: Boolean,\n             required: true\n             },\n             */\n            static: {\n                type: Boolean,\n                required: false,\n                default: false\n            },\n            minH: {\n                type: Number,\n                required: false,\n                default: 1\n            },\n            minW: {\n                type: Number,\n                required: false,\n                default: 1\n            },\n            maxH: {\n                type: Number,\n                required: false,\n                default: Infinity\n            },\n            maxW: {\n                type: Number,\n                required: false,\n                default: Infinity\n            },\n            x: {\n                type: Number,\n                required: true\n            },\n            y: {\n                type: Number,\n                required: true\n            },\n            w: {\n                type: Number,\n                required: true\n            },\n            h: {\n                type: Number,\n                required: true\n            },\n            i: {\n                required: true\n            },\n            dragIgnoreFrom: {\n                type: String,\n                required: false,\n                default: 'a, button'\n            },\n            dragAllowFrom: {\n                type: String,\n                required: false,\n                default: null\n            },\n            resizeIgnoreFrom: {\n                type: String,\n                required: false,\n                default: 'a, button'\n            },\n            preserveAspectRatio: {\n                type: Boolean,\n                required: false,\n                default: false,\n            }\n        },\n        inject: [\"eventBus\", \"layout\"],\n        data: function () {\n            return {\n                cols: 1,\n                containerWidth: 100,\n                rowHeight: 30,\n                margin: [10, 10],\n                maxRows: Infinity,\n                draggable: null,\n                resizable: null,\n                useCssTransforms: true,\n                useStyleCursor: true,\n\n                isDragging: false,\n                dragging: null,\n                isResizing: false,\n                resizing: null,\n                lastX: NaN,\n                lastY: NaN,\n                lastW: NaN,\n                lastH: NaN,\n                style: {},\n                rtl: false,\n\n                dragEventSet: false,\n                resizeEventSet: false,\n\n                previousW: null,\n                previousH: null,\n                previousX: null,\n                previousY: null,\n                innerX: this.x,\n                innerY: this.y,\n                innerW: this.w,\n                innerH: this.h\n            }\n        },\n        created () {\n            let self = this;\n\n            // Accessible refernces of functions for removing in beforeUnmount\n            self.updateWidthHandler = function (width) {\n                self.updateWidth(width);\n            };\n\n            self.compactHandler = function (layout) {\n                self.compact(layout);\n            };\n\n            self.setDraggableHandler = function (isDraggable) {\n                if (self.isDraggable === null) {\n                    self.draggable = isDraggable;\n                }\n            };\n\n            self.setResizableHandler = function (isResizable) {\n                if (self.isResizable === null) {\n                    self.resizable = isResizable;\n                }\n            };\n\n            self.setRowHeightHandler = function (rowHeight) {\n                self.rowHeight = rowHeight;\n            };\n\n            self.setMaxRowsHandler = function (maxRows) {\n                self.maxRows = maxRows;\n            };\n\n            self.directionchangeHandler = () => {\n                this.rtl = getDocumentDir() === 'rtl';\n                this.compact();\n            };\n\n            self.setColNum = (colNum) => {\n               self.cols = parseInt(colNum);\n            }\n\n            this.eventBus.on('updateWidth', self.updateWidthHandler);\n            this.eventBus.on('compact', self.compactHandler);\n            this.eventBus.on('setDraggable', self.setDraggableHandler);\n            this.eventBus.on('setResizable', self.setResizableHandler);\n            this.eventBus.on('setRowHeight', self.setRowHeightHandler);\n            this.eventBus.on('setMaxRows', self.setMaxRowsHandler);\n            this.eventBus.on('directionchange', self.directionchangeHandler);\n            this.eventBus.on('setColNum', self.setColNum)\n\n            this.rtl = getDocumentDir() === 'rtl';\n        },\n        beforeUnmount: function(){\n            let self = this;\n            //Remove listeners\n            this.eventBus.off('updateWidth', self.updateWidthHandler);\n            this.eventBus.off('compact', self.compactHandler);\n            this.eventBus.off('setDraggable', self.setDraggableHandler);\n            this.eventBus.off('setResizable', self.setResizableHandler);\n            this.eventBus.off('setRowHeight', self.setRowHeightHandler);\n            this.eventBus.off('setMaxRows', self.setMaxRowsHandler);\n            this.eventBus.off('directionchange', self.directionchangeHandler);\n            this.eventBus.off('setColNum', self.setColNum);\n            if (this.interactObj) {\n                this.interactObj.unset() // destroy interact intance\n            }\n        },\n        mounted: function () {\n            if (this.layout.responsive && this.layout.lastBreakpoint) {\n                this.cols = getColsFromBreakpoint(this.layout.lastBreakpoint, this.layout.cols);\n            } else {\n                this.cols = this.layout.colNum;\n            }\n            this.rowHeight = this.layout.rowHeight;\n            this.containerWidth = this.layout.width !== null ? this.layout.width : 100;\n            this.margin = this.layout.margin !== undefined ? this.layout.margin : [10, 10];\n            this.maxRows = this.layout.maxRows;\n\n            if (this.isDraggable === null) {\n                this.draggable = this.layout.isDraggable;\n            } else {\n                this.draggable = this.isDraggable;\n            }\n            if (this.isResizable === null) {\n                this.resizable = this.layout.isResizable;\n            } else {\n                this.resizable = this.isResizable;\n            }\n            this.useCssTransforms = this.layout.useCssTransforms;\n            this.useStyleCursor = this.layout.useStyleCursor;\n            this.createStyle();\n        },\n        watch: {\n            isDraggable: function () {\n                this.draggable = this.isDraggable;\n            },\n            static: function () {\n                this.tryMakeDraggable();\n                this.tryMakeResizable();\n            },\n            draggable: function () {\n                this.tryMakeDraggable();\n            },\n            isResizable: function () {\n                this.resizable = this.isResizable;\n            },\n            resizable: function () {\n                this.tryMakeResizable();\n            },\n            rowHeight: function () {\n                this.createStyle();\n                this.emitContainerResized();\n            },\n            cols: function () {\n                this.tryMakeResizable();\n                this.createStyle();\n                this.emitContainerResized();\n            },\n            containerWidth: function () {\n                this.tryMakeResizable();\n                this.createStyle();\n                this.emitContainerResized();\n            },\n            x: function (newVal) {\n                this.innerX = newVal;\n                this.createStyle();\n            },\n            y: function (newVal) {\n                this.innerY = newVal;\n                this.createStyle();\n            },\n            h: function (newVal) {\n                this.innerH = newVal\n                this.createStyle();\n                // this.emitContainerResized();\n            },\n            w: function (newVal) {\n                this.innerW = newVal;\n                this.createStyle();\n                // this.emitContainerResized();\n            },\n            renderRtl: function () {\n                // console.log(\"### renderRtl\");\n                this.tryMakeResizable();\n                this.createStyle();\n            },\n            minH: function () {\n                this.tryMakeResizable();\n            },\n            maxH: function () {\n                this.tryMakeResizable();\n            },\n            minW: function () {\n                this.tryMakeResizable();\n            },\n            maxW: function () {\n                this.tryMakeResizable();\n            },\n            \"$parent.margin\": function (margin) {\n                if (!margin || (margin[0] == this.margin[0] && margin[1] == this.margin[1])) {\n                    return;\n                }\n                this.margin = margin.map(m => Number(m));\n                this.createStyle();\n                this.emitContainerResized();\n            },\n        },\n        computed: {\n            classObj() {\n                return {\n                    'vue-resizable' : this.resizableAndNotStatic,\n                    'static': this.static,\n                    'resizing' : this.isResizing,\n                    'vue-draggable-dragging' : this.isDragging,\n                    'cssTransforms' : this.useCssTransforms,\n                    'render-rtl' : this.renderRtl,\n                    'disable-userselect': this.isDragging,\n                    'no-touch': this.isAndroid && this.draggableOrResizableAndNotStatic\n                }\n            },\n            resizableAndNotStatic(){\n                return this.resizable && !this.static;\n            },\n            draggableOrResizableAndNotStatic(){\n                return (this.draggable || this.resizable) && !this.static;\n            },\n            isAndroid() {\n                return navigator.userAgent.toLowerCase().indexOf(\"android\") !== -1;\n            },\n            renderRtl() {\n                return (this.layout.isMirrored) ? !this.rtl : this.rtl;\n            },\n            resizableHandleClass() {\n                if (this.renderRtl) {\n                    return 'vue-resizable-handle vue-rtl-resizable-handle';\n                } else {\n                    return 'vue-resizable-handle';\n                }\n            }\n        },\n        methods: {\n            createStyle: function () {\n                if (this.x + this.w > this.cols) {\n                    this.innerX = 0;\n                    this.innerW = (this.w > this.cols) ? this.cols : this.w\n                } else {\n                  this.innerX = this.x;\n                  this.innerW = this.w;\n                }\n                let pos = this.calcPosition(this.innerX, this.innerY, this.innerW, this.innerH);\n\n\n                if (this.isDragging) {\n                    pos.top = this.dragging.top;\n//                    Add rtl support\n                    if (this.renderRtl) {\n                        pos.right = this.dragging.left;\n                    } else {\n                        pos.left = this.dragging.left;\n                    }\n                }\n                if (this.isResizing) {\n                    pos.width = this.resizing.width;\n                    pos.height = this.resizing.height;\n                }\n\n                let style;\n                // CSS Transforms support (default)\n                if (this.useCssTransforms) {\n//                    Add rtl support\n                    if (this.renderRtl) {\n                        style = setTransformRtl(pos.top, pos.right, pos.width, pos.height);\n                    } else {\n                        style = setTransform(pos.top, pos.left, pos.width, pos.height);\n                    }\n\n                } else { // top,left (slow)\n//                    Add rtl support\n                    if (this.renderRtl) {\n                        style = setTopRight(pos.top, pos.right, pos.width, pos.height);\n                    } else {\n                        style = setTopLeft(pos.top, pos.left, pos.width, pos.height);\n                    }\n                }\n                this.style = style;\n            },\n            emitContainerResized() {\n                // this.style has width and height with trailing 'px'. The\n                // resized event is without them\n                let styleProps = {};\n                for (let prop of ['width', 'height']) {\n                    let val = this.style[prop];\n                    let matches = val.match(/^(\\d+)px$/);\n                    if (! matches)\n                        return;\n                    styleProps[prop] = matches[1];\n                }\n                this.$emit(\"container-resized\", this.i, this.h, this.w, styleProps.height, styleProps.width);\n            },\n            handleResize: function (event) {\n                if (this.static) return;\n                const position = getControlPosition(event);\n                // Get the current drag point from the event. This is used as the offset.\n                if (position == null) return; // not possible but satisfies flow\n                const {x, y} = position;\n\n                const newSize = {width: 0, height: 0};\n                let pos;\n                switch (event.type) {\n                    case \"resizestart\": {\n                        this.previousW = this.innerW;\n                        this.previousH = this.innerH;\n                        pos = this.calcPosition(this.innerX, this.innerY, this.innerW, this.innerH);\n                        newSize.width = pos.width;\n                        newSize.height = pos.height;\n                        this.resizing = newSize;\n                        this.isResizing = true;\n                        break;\n                    }\n                    case \"resizemove\": {\n//                        console.log(\"### resize => \" + event.type + \", lastW=\" + this.lastW + \", lastH=\" + this.lastH);\n                        const coreEvent = createCoreData(this.lastW, this.lastH, x, y);\n                        if (this.renderRtl) {\n                            newSize.width = this.resizing.width - coreEvent.deltaX;\n                        } else {\n                            newSize.width = this.resizing.width + coreEvent.deltaX;\n                        }\n                        newSize.height = this.resizing.height + coreEvent.deltaY;\n\n                        ///console.log(\"### resize => \" + event.type + \", deltaX=\" + coreEvent.deltaX + \", deltaY=\" + coreEvent.deltaY);\n                        this.resizing = newSize;\n                        break;\n                    }\n                    case \"resizeend\": {\n                        //console.log(\"### resize end => x=\" +this.innerX + \" y=\" + this.innerY + \" w=\" + this.innerW + \" h=\" + this.innerH);\n                        pos = this.calcPosition(this.innerX, this.innerY, this.innerW, this.innerH);\n                        newSize.width = pos.width;\n                        newSize.height = pos.height;\n//                        console.log(\"### resize end => \" + JSON.stringify(newSize));\n                        this.resizing = null;\n                        this.isResizing = false;\n                        break;\n                    }\n                }\n\n                // Get new WH\n                pos = this.calcWH(newSize.height, newSize.width);\n                if (pos.w < this.minW) {\n                    pos.w = this.minW;\n                }\n                if (pos.w > this.maxW) {\n                    pos.w = this.maxW;\n                }\n                if (pos.h < this.minH) {\n                    pos.h = this.minH;\n                }\n                if (pos.h > this.maxH) {\n                    pos.h = this.maxH;\n                }\n\n                if (pos.h < 1) {\n                    pos.h = 1;\n                }\n                if (pos.w < 1) {\n                    pos.w = 1;\n                }\n\n                this.lastW = x;\n                this.lastH = y;\n\n                if (this.innerW !== pos.w || this.innerH !== pos.h) {\n                    this.$emit(\"resize\", this.i, pos.h, pos.w, newSize.height, newSize.width);\n                }\n                if (event.type === \"resizeend\" && (this.previousW !== this.innerW || this.previousH !== this.innerH)) {\n                    this.$emit(\"resized\", this.i, pos.h, pos.w, newSize.height, newSize.width);\n                }\n                this.eventBus.emit(\"resizeEvent\", {eventType: event.type, i: this.i, x: this.innerX, y: this.innerY, h: pos.h, w: pos.w});\n            },\n            handleDrag(event) {\n                if (this.static) return;\n                if (this.isResizing) return;\n\n                const position = getControlPosition(event);\n\n                // Get the current drag point from the event. This is used as the offset.\n                if (position === null) return; // not possible but satisfies flow\n                const {x, y} = position;\n\n                // let shouldUpdate = false;\n                let newPosition = {top: 0, left: 0};\n                switch (event.type) {\n                    case \"dragstart\": {\n                        this.previousX = this.innerX;\n                        this.previousY = this.innerY;\n\n                        let parentRect = event.target.offsetParent.getBoundingClientRect();\n                        let clientRect = event.target.getBoundingClientRect();\n                        if (this.renderRtl) {\n                            newPosition.left = (clientRect.right - parentRect.right) * -1;\n                        } else {\n                            newPosition.left = clientRect.left - parentRect.left;\n                        }\n                        newPosition.top = clientRect.top - parentRect.top;\n                        this.dragging = newPosition;\n                        this.isDragging = true;\n                        break;\n                    }\n                    case \"dragend\": {\n                        if (!this.isDragging) return;\n                        let parentRect = event.target.offsetParent.getBoundingClientRect();\n                        let clientRect = event.target.getBoundingClientRect();\n//                        Add rtl support\n                        if (this.renderRtl) {\n                            newPosition.left = (clientRect.right - parentRect.right) * -1;\n                        } else {\n                            newPosition.left = clientRect.left - parentRect.left;\n                        }\n                        newPosition.top = clientRect.top - parentRect.top;\n//                        console.log(\"### drag end => \" + JSON.stringify(newPosition));\n//                        console.log(\"### DROP: \" + JSON.stringify(newPosition));\n                        this.dragging = null;\n                        this.isDragging = false;\n                        // shouldUpdate = true;\n                        break;\n                    }\n                    case \"dragmove\": {\n                        const coreEvent = createCoreData(this.lastX, this.lastY, x, y);\n//                        Add rtl support\n                        if (this.renderRtl) {\n                            newPosition.left = this.dragging.left - coreEvent.deltaX;\n                        } else {\n                            newPosition.left = this.dragging.left + coreEvent.deltaX;\n                        }\n                        newPosition.top = this.dragging.top + coreEvent.deltaY;\n//                        console.log(\"### drag => \" + event.type + \", x=\" + x + \", y=\" + y);\n//                        console.log(\"### drag => \" + event.type + \", deltaX=\" + coreEvent.deltaX + \", deltaY=\" + coreEvent.deltaY);\n//                        console.log(\"### drag end => \" + JSON.stringify(newPosition));\n                        this.dragging = newPosition;\n                        break;\n                    }\n                }\n\n                // Get new XY\n                let pos;\n                if (this.renderRtl) {\n                    pos = this.calcXY(newPosition.top, newPosition.left);\n                } else {\n                    pos = this.calcXY(newPosition.top, newPosition.left);\n                }\n\n                this.lastX = x;\n                this.lastY = y;\n\n                if (this.innerX !== pos.x || this.innerY !== pos.y) {\n                    this.$emit(\"move\", this.i, pos.x, pos.y);\n                }\n                if (event.type === \"dragend\" && (this.previousX !== this.innerX || this.previousY !== this.innerY)) {\n                    this.$emit(\"moved\", this.i, pos.x, pos.y);\n                }\n                this.eventBus.emit(\"dragEvent\", {eventType: event.type, i: this.i, x: pos.x, y: pos.y, h: this.innerH, w: this.innerW});\n            },\n            calcPosition: function (x, y, w, h) {\n                const colWidth = this.calcColWidth();\n                // add rtl support\n                let out;\n                if (this.renderRtl) {\n                    out = {\n                        right: Math.round(colWidth * x + (x + 1) * this.margin[0]),\n                        top: Math.round(this.rowHeight * y + (y + 1) * this.margin[1]),\n                        // 0 * Infinity === NaN, which causes problems with resize constriants;\n                        // Fix this if it occurs.\n                        // Note we do it here rather than later because Math.round(Infinity) causes deopt\n                        width: w === Infinity ? w : Math.round(colWidth * w + Math.max(0, w - 1) * this.margin[0]),\n                        height: h === Infinity ? h : Math.round(this.rowHeight * h + Math.max(0, h - 1) * this.margin[1])\n                    };\n                } else {\n                    out = {\n                        left: Math.round(colWidth * x + (x + 1) * this.margin[0]),\n                        top: Math.round(this.rowHeight * y + (y + 1) * this.margin[1]),\n                        // 0 * Infinity === NaN, which causes problems with resize constriants;\n                        // Fix this if it occurs.\n                        // Note we do it here rather than later because Math.round(Infinity) causes deopt\n                        width: w === Infinity ? w : Math.round(colWidth * w + Math.max(0, w - 1) * this.margin[0]),\n                        height: h === Infinity ? h : Math.round(this.rowHeight * h + Math.max(0, h - 1) * this.margin[1])\n                    };\n                }\n\n\n                return out;\n            },\n            /**\n             * Translate x and y coordinates from pixels to grid units.\n             * @param  {Number} top  Top position (relative to parent) in pixels.\n             * @param  {Number} left Left position (relative to parent) in pixels.\n             * @return {Object} x and y in grid units.\n             */\n            // TODO check if this function needs change in order to support rtl.\n            calcXY(top, left) {\n                const colWidth = this.calcColWidth();\n\n                // left = colWidth * x + margin * (x + 1)\n                // l = cx + m(x+1)\n                // l = cx + mx + m\n                // l - m = cx + mx\n                // l - m = x(c + m)\n                // (l - m) / (c + m) = x\n                // x = (left - margin) / (coldWidth + margin)\n                let x = Math.round((left - this.margin[0]) / (colWidth + this.margin[0]));\n                let y = Math.round((top - this.margin[1]) / (this.rowHeight + this.margin[1]));\n\n                // Capping\n                x = Math.max(Math.min(x, this.cols - this.innerW), 0);\n                y = Math.max(Math.min(y, this.maxRows - this.innerH), 0);\n\n                return {x, y};\n            },\n            // Helper for generating column width\n            calcColWidth() {\n                const colWidth = (this.containerWidth - (this.margin[0] * (this.cols + 1))) / this.cols;\n               // console.log(\"### COLS=\" + this.cols + \" COL WIDTH=\" + colWidth + \" MARGIN \" + this.margin[0]);\n                return colWidth;\n            },\n\n            /**\n             * Given a height and width in pixel values, calculate grid units.\n             * @param  {Number} height Height in pixels.\n             * @param  {Number} width  Width in pixels.\n             * @param  {Boolean} autoSizeFlag  function autoSize identifier.\n             * @return {Object} w, h as grid units.\n             */\n            calcWH(height, width, autoSizeFlag = false) {\n                const colWidth = this.calcColWidth();\n\n                // width = colWidth * w - (margin * (w - 1))\n                // ...\n                // w = (width + margin) / (colWidth + margin)\n                let w = Math.round((width + this.margin[0]) / (colWidth + this.margin[0]));\n                let h = 0;\n                if (!autoSizeFlag) {\n                    h = Math.round((height + this.margin[1]) / (this.rowHeight + this.margin[1]));\n                } else {\n                    h = Math.ceil((height + this.margin[1]) / (this.rowHeight + this.margin[1]));\n                }\n\n                // Capping\n                w = Math.max(Math.min(w, this.cols - this.innerX), 0);\n                h = Math.max(Math.min(h, this.maxRows - this.innerY), 0);\n                return {w, h};\n            },\n            updateWidth: function (width, colNum) {\n                this.containerWidth = width;\n                if (colNum !== undefined && colNum !== null) {\n                    this.cols = colNum;\n                }\n            },\n            compact: function () {\n                this.createStyle();\n            },\n            tryMakeDraggable: function(){\n                const self = this;\n                if (this.interactObj === null || this.interactObj === undefined) {\n                    this.interactObj = interact(this.$refs.item);\n                    if (!this.useStyleCursor) {\n                        this.interactObj.styleCursor(false);\n                    }\n                }\n                if (this.draggable && !this.static) {\n                    const opts = {\n                        ignoreFrom: this.dragIgnoreFrom,\n                        allowFrom: this.dragAllowFrom\n                    };\n                    this.interactObj.draggable(opts);\n                    /*this.interactObj.draggable({allowFrom: '.vue-draggable-handle'});*/\n                    if (!this.dragEventSet) {\n                        this.dragEventSet = true;\n                        this.interactObj.on('dragstart dragmove dragend', function (event) {\n                            self.handleDrag(event);\n                        });\n                    }\n                } else {\n                    this.interactObj.draggable({\n                        enabled: false\n                    });\n                }\n            },\n            tryMakeResizable: function(){\n                const self = this;\n                if (this.interactObj === null || this.interactObj === undefined) {\n                    this.interactObj = interact(this.$refs.item);\n                    if (!this.useStyleCursor) {\n                        this.interactObj.styleCursor(false);\n                    }\n                }\n                if (this.resizable && !this.static) {\n                    let maximum = this.calcPosition(0,0,this.maxW, this.maxH);\n                    let minimum = this.calcPosition(0,0, this.minW, this.minH);\n\n                    // console.log(\"### MAX \" + JSON.stringify(maximum));\n                    // console.log(\"### MIN \" + JSON.stringify(minimum));\n\n                    const opts = {\n                        // allowFrom: \".\" + this.resizableHandleClass.trim().replace(\" \", \".\"),\n                        edges: {\n                            left: false,\n                            right: \".\" + this.resizableHandleClass.trim().replace(\" \", \".\"),\n                            bottom: \".\" + this.resizableHandleClass.trim().replace(\" \", \".\"),\n                            top: false\n                        },\n                        ignoreFrom: this.resizeIgnoreFrom,\n                        restrictSize: {\n                            min: {\n                                height: minimum.height,\n                                width: minimum.width\n                            },\n                            max: {\n                                height: maximum.height,\n                                width: maximum.width\n                            }\n                        }\n                    };\n\n                    if (this.preserveAspectRatio) {\n                        opts.modifiers = [\n                            interact.modifiers.aspectRatio({\n                                ratio: 'preserve'\n                            }),\n                        ]\n                    }\n\n                    this.interactObj.resizable(opts);\n                    if (!this.resizeEventSet) {\n                        this.resizeEventSet = true;\n                        this.interactObj\n                            .on('resizestart resizemove resizeend', function (event) {\n                                self.handleResize(event);\n                            });\n                    }\n                } else {\n                    this.interactObj.resizable({\n                        enabled: false\n                    });\n                }\n            },\n            autoSize: function() {\n                // ok here we want to calculate if a resize is needed\n                this.previousW = this.innerW;\n                this.previousH = this.innerH;\n\n                let newSize=this.$slots().default[0].elm.getBoundingClientRect();\n                let pos = this.calcWH(newSize.height, newSize.width, true);\n                if (pos.w < this.minW) {\n                    pos.w = this.minW;\n                }\n                if (pos.w > this.maxW) {\n                    pos.w = this.maxW;\n                }\n                if (pos.h < this.minH) {\n                    pos.h = this.minH;\n                }\n                if (pos.h > this.maxH) {\n                    pos.h = this.maxH;\n                }\n\n                if (pos.h < 1) {\n                    pos.h = 1;\n                }\n                if (pos.w < 1) {\n                    pos.w = 1;\n                }\n\n                // this.lastW = x; // basically, this is copied from resizehandler, but shouldn't be needed\n                // this.lastH = y;\n\n                if (this.innerW !== pos.w || this.innerH !== pos.h) {\n                    this.$emit(\"resize\", this.i, pos.h, pos.w, newSize.height, newSize.width);\n                }\n                if (this.previousW !== pos.w || this.previousH !== pos.h) {\n                    this.$emit(\"resized\", this.i, pos.h, pos.w, newSize.height, newSize.width);\n                    this.eventBus.emit(\"resizeEvent\", {eventType: \"resizeend\", i: this.i, x: this.innerX, y: this.innerY, h: pos.h, w: pos.w});\n                }\n            }\n        },\n    }\n</script>\n","// @flow\nexport type LayoutItemRequired = {w: number, h: number, x: number, y: number, i: string};\nexport type LayoutItem = LayoutItemRequired &\n                         {minW?: number, minH?: number, maxW?: number, maxH?: number,\n                          moved?: boolean, static?: boolean,\n                          isDraggable?: ?boolean, isResizable?: ?boolean};\nexport type Layout = Array<LayoutItem>;\n// export type Position = {left: number, top: number, width: number, height: number};\n/*\nexport type DragCallbackData = {\n  node: HTMLElement,\n  x: number, y: number,\n  deltaX: number, deltaY: number,\n  lastX: number, lastY: number\n};\n*/\n// export type DragEvent = {e: Event} & DragCallbackData;\nexport type Size = {width: number, height: number};\n// export type ResizeEvent = {e: Event, node: HTMLElement, size: Size};\n\n// const isProduction = process.env.NODE_ENV === 'production';\n/**\n * Return the bottom coordinate of the layout.\n *\n * @param  {Array} layout Layout array.\n * @return {Number}       Bottom coordinate.\n */\nexport function bottom(layout: Layout): number {\n  let max = 0, bottomY;\n  for (let i = 0, len = layout.length; i < len; i++) {\n    bottomY = layout[i]. y + layout[i].h;\n    if (bottomY > max) max = bottomY;\n  }\n  return max;\n}\n\nexport function cloneLayout(layout: Layout): Layout {\n  const newLayout = Array(layout.length);\n  for (let i = 0, len = layout.length; i < len; i++) {\n    newLayout[i] = cloneLayoutItem(layout[i]);\n  }\n  return newLayout;\n}\n\n// Fast path to cloning, since this is monomorphic\nexport function cloneLayoutItem(layoutItem: LayoutItem): LayoutItem {\n  /*return {\n    w: layoutItem.w, h: layoutItem.h, x: layoutItem.x, y: layoutItem.y, i: layoutItem.i,\n    minW: layoutItem.minW, maxW: layoutItem.maxW, minH: layoutItem.minH, maxH: layoutItem.maxH,\n    moved: Boolean(layoutItem.moved), static: Boolean(layoutItem.static),\n    // These can be null\n    isDraggable: layoutItem.isDraggable, isResizable: layoutItem.isResizable\n  };*/\n    return JSON.parse(JSON.stringify(layoutItem));\n}\n\n/**\n * Given two layoutitems, check if they collide.\n *\n * @return {Boolean}   True if colliding.\n */\nexport function collides(l1: LayoutItem, l2: LayoutItem): boolean {\n  if (l1 === l2) return false; // same element\n  if (l1.x + l1.w <= l2.x) return false; // l1 is left of l2\n  if (l1.x >= l2.x + l2.w) return false; // l1 is right of l2\n  if (l1.y + l1.h <= l2.y) return false; // l1 is above l2\n  if (l1.y >= l2.y + l2.h) return false; // l1 is below l2\n  return true; // boxes overlap\n}\n\n/**\n * Given a layout, compact it. This involves going down each y coordinate and removing gaps\n * between items.\n *\n * @param  {Array} layout Layout.\n * @param  {Boolean} verticalCompact Whether or not to compact the layout\n *   vertically.\n * @return {Array}       Compacted Layout.\n */\nexport function compact(layout: Layout, verticalCompact: Boolean): Layout {\n    // Statics go in the compareWith array right away so items flow around them.\n  const compareWith = getStatics(layout);\n  // We go through the items by row and column.\n  const sorted = sortLayoutItemsByRowCol(layout);\n  // Holding for new items.\n  const out = Array(layout.length);\n\n  for (let i = 0, len = sorted.length; i < len; i++) {\n    let l = sorted[i];\n\n    // Don't move static elements\n    if (!l.static) {\n      l = compactItem(compareWith, l, verticalCompact);\n\n      // Add to comparison array. We only collide with items before this one.\n      // Statics are already in this array.\n      compareWith.push(l);\n    }\n\n    // Add to output array to make sure they still come out in the right order.\n    out[layout.indexOf(l)] = l;\n\n    // Clear moved flag, if it exists.\n    l.moved = false;\n  }\n\n  return out;\n}\n\n/**\n * Compact an item in the layout.\n */\nexport function compactItem(compareWith: Layout, l: LayoutItem, verticalCompact: boolean): LayoutItem {\n  if (verticalCompact) {\n    // Move the element up as far as it can go without colliding.\n    while (l.y > 0 && !getFirstCollision(compareWith, l)) {\n      l.y--;\n    }\n  }\n\n  // Move it down, and keep moving it down if it's colliding.\n  let collides;\n  while((collides = getFirstCollision(compareWith, l))) {\n    l.y = collides.y + collides.h;\n  }\n  return l;\n}\n\n/**\n * Given a layout, make sure all elements fit within its bounds.\n *\n * @param  {Array} layout Layout array.\n * @param  {Number} bounds Number of columns.\n */\nexport function correctBounds(layout: Layout, bounds: {cols: number}): Layout {\n  const collidesWith = getStatics(layout);\n  for (let i = 0, len = layout.length; i < len; i++) {\n    const l = layout[i];\n    // Overflows right\n    if (l.x + l.w > bounds.cols) l.x = bounds.cols - l.w;\n    // Overflows left\n    if (l.x < 0) {\n      l.x = 0;\n      l.w = bounds.cols;\n    }\n    if (!l.static) collidesWith.push(l);\n    else {\n      // If this is static and collides with other statics, we must move it down.\n      // We have to do something nicer than just letting them overlap.\n      while(getFirstCollision(collidesWith, l)) {\n        l.y++;\n      }\n    }\n  }\n  return layout;\n}\n\n/**\n * Get a layout item by ID. Used so we can override later on if necessary.\n *\n * @param  {Array}  layout Layout array.\n * @param  {String} id     ID\n * @return {LayoutItem}    Item at ID.\n */\nexport function getLayoutItem(layout: Layout, id: string): ?LayoutItem {\n  for (let i = 0, len = layout.length; i < len; i++) {\n    if (layout[i].i === id) return layout[i];\n  }\n}\n\n/**\n * Returns the first item this layout collides with.\n * It doesn't appear to matter which order we approach this from, although\n * perhaps that is the wrong thing to do.\n *\n * @param  {Object} layoutItem Layout item.\n * @return {Object|undefined}  A colliding layout item, or undefined.\n */\nexport function getFirstCollision(layout: Layout, layoutItem: LayoutItem): ?LayoutItem {\n  for (let i = 0, len = layout.length; i < len; i++) {\n    if (collides(layout[i], layoutItem)) return layout[i];\n  }\n}\n\nexport function getAllCollisions(layout: Layout, layoutItem: LayoutItem): Array<LayoutItem> {\n  return layout.filter((l) => collides(l, layoutItem));\n}\n\n/**\n * Get all static elements.\n * @param  {Array} layout Array of layout objects.\n * @return {Array}        Array of static layout items..\n */\nexport function getStatics(layout: Layout): Array<LayoutItem> {\n    //return [];\n    return layout.filter((l) => l.static);\n}\n\n/**\n * Move an element. Responsible for doing cascading movements of other elements.\n *\n * @param  {Array}      layout Full layout to modify.\n * @param  {LayoutItem} l      element to move.\n * @param  {Number}     [x]    X position in grid units.\n * @param  {Number}     [y]    Y position in grid units.\n * @param  {Boolean}    [isUserAction] If true, designates that the item we're moving is\n *                                     being dragged/resized by th euser.\n */\nexport function moveElement(layout: Layout, l: LayoutItem, x: Number, y: Number, isUserAction: Boolean, preventCollision: Boolean): Layout {\n  if (l.static) return layout;\n\n  // Short-circuit if nothing to do.\n  //if (l.y === y && l.x === x) return layout;\n\n  const oldX = l.x;\n  const oldY = l.y;\n\n  const movingUp = y && l.y > y;\n  // This is quite a bit faster than extending the object\n  if (typeof x === 'number') l.x = x;\n  if (typeof y === 'number') l.y = y;\n  l.moved = true;\n\n  // If this collides with anything, move it.\n  // When doing this comparison, we have to sort the items we compare with\n  // to ensure, in the case of multiple collisions, that we're getting the\n  // nearest collision.\n  let sorted = sortLayoutItemsByRowCol(layout);\n  if (movingUp) sorted = sorted.reverse();\n  const collisions = getAllCollisions(sorted, l);\n\n  if (preventCollision && collisions.length) {\n    l.x = oldX;\n    l.y = oldY;\n    l.moved = false;\n    return layout;\n  }\n\n  // Move each item that collides away from this element.\n  for (let i = 0, len = collisions.length; i < len; i++) {\n    const collision = collisions[i];\n    // console.log('resolving collision between', l.i, 'at', l.y, 'and', collision.i, 'at', collision.y);\n\n    // Short circuit so we can't infinite loop\n    if (collision.moved) continue;\n\n    // This makes it feel a bit more precise by waiting to swap for just a bit when moving up.\n    if (l.y > collision.y && l.y - collision.y > collision.h / 4) continue;\n\n    // Don't move static items - we have to move *this* element away\n    if (collision.static) {\n      layout = moveElementAwayFromCollision(layout, collision, l, isUserAction);\n    } else {\n      layout = moveElementAwayFromCollision(layout, l, collision, isUserAction);\n    }\n  }\n\n  return layout;\n}\n\n/**\n * This is where the magic needs to happen - given a collision, move an element away from the collision.\n * We attempt to move it up if there's room, otherwise it goes below.\n *\n * @param  {Array} layout            Full layout to modify.\n * @param  {LayoutItem} collidesWith Layout item we're colliding with.\n * @param  {LayoutItem} itemToMove   Layout item we're moving.\n * @param  {Boolean} [isUserAction]  If true, designates that the item we're moving is being dragged/resized\n *                                   by the user.\n */\nexport function moveElementAwayFromCollision(layout: Layout, collidesWith: LayoutItem,\n                                             itemToMove: LayoutItem, isUserAction: ?boolean): Layout {\n\n  const preventCollision = false // we're already colliding\n  // If there is enough space above the collision to put this element, move it there.\n  // We only do this on the main collision as this can get funky in cascades and cause\n  // unwanted swapping behavior.\n  if (isUserAction) {\n    // Make a mock item so we don't modify the item here, only modify in moveElement.\n    const fakeItem: LayoutItem = {\n      x: itemToMove.x,\n      y: itemToMove.y,\n      w: itemToMove.w,\n      h: itemToMove.h,\n      i: '-1'\n    };\n    fakeItem.y = Math.max(collidesWith.y - itemToMove.h, 0);\n    if (!getFirstCollision(layout, fakeItem)) {\n      return moveElement(layout, itemToMove, undefined, fakeItem.y, preventCollision);\n    }\n  }\n\n  // Previously this was optimized to move below the collision directly, but this can cause problems\n  // with cascading moves, as an item may actually leapflog a collision and cause a reversal in order.\n  return moveElement(layout, itemToMove, undefined, itemToMove.y + 1, preventCollision);\n}\n\n/**\n * Helper to convert a number to a percentage string.\n *\n * @param  {Number} num Any number\n * @return {String}     That number as a percentage.\n */\nexport function perc(num: number): string {\n  return num * 100 + '%';\n}\n\nexport function setTransform(top, left, width, height): Object {\n  // Replace unitless items with px\n  const translate = \"translate3d(\" + left + \"px,\" + top + \"px, 0)\";\n  return {\n    transform: translate,\n    WebkitTransform: translate,\n    MozTransform: translate,\n    msTransform: translate,\n    OTransform: translate,\n    width: width + \"px\",\n    height: height + \"px\",\n    position: 'absolute'\n  };\n}\n/**\n * Just like the setTransform method, but instead it will return a negative value of right.\n *\n * @param top\n * @param right\n * @param width\n * @param height\n * @returns {{transform: string, WebkitTransform: string, MozTransform: string, msTransform: string, OTransform: string, width: string, height: string, position: string}}\n */\nexport function setTransformRtl(top, right, width, height): Object {\n    // Replace unitless items with px\n    const translate = \"translate3d(\" + right * -1 + \"px,\" + top + \"px, 0)\";\n    return {\n        transform: translate,\n        WebkitTransform: translate,\n        MozTransform: translate,\n        msTransform: translate,\n        OTransform: translate,\n        width: width + \"px\",\n        height: height + \"px\",\n        position: 'absolute'\n    };\n}\n\nexport function setTopLeft(top, left, width, height): Object {\n    return {\n        top: top + \"px\",\n        left: left + \"px\",\n        width: width + \"px\",\n        height: height + \"px\",\n        position: 'absolute'\n    };\n}\n/**\n * Just like the setTopLeft method, but instead, it will return a right property instead of left.\n *\n * @param top\n * @param right\n * @param width\n * @param height\n * @returns {{top: string, right: string, width: string, height: string, position: string}}\n */\nexport function setTopRight(top, right, width, height): Object {\n    return {\n        top: top + \"px\",\n        right: right+ \"px\",\n        width: width + \"px\",\n        height: height + \"px\",\n        position: 'absolute'\n    };\n}\n\n\n/**\n * Get layout items sorted from top left to right and down.\n *\n * @return {Array} Array of layout objects.\n * @return {Array}        Layout, sorted static items first.\n */\nexport function sortLayoutItemsByRowCol(layout: Layout): Layout {\n  return [].concat(layout).sort(function(a, b) {\n    if (a.y === b.y && a.x === b.x) {\n      return 0;\n    }\n\n    if (a.y > b.y || (a.y === b.y && a.x > b.x)) {\n      return 1;\n    }\n\n    return -1;\n  });\n}\n\n/**\n * Generate a layout using the initialLayout and children as a template.\n * Missing entries will be added, extraneous ones will be truncated.\n *\n * @param  {Array}  initialLayout Layout passed in through props.\n * @param  {String} breakpoint    Current responsive breakpoint.\n * @param  {Boolean} verticalCompact Whether or not to compact the layout vertically.\n * @return {Array}                Working layout.\n */\n/*\nexport function synchronizeLayoutWithChildren(initialLayout: Layout, children: Array<React.Element>|React.Element,\n                                              cols: number, verticalCompact: boolean): Layout {\n  // ensure 'children' is always an array\n  if (!Array.isArray(children)) {\n    children = [children];\n  }\n  initialLayout = initialLayout || [];\n\n  // Generate one layout item per child.\n  let layout: Layout = [];\n  for (let i = 0, len = children.length; i < len; i++) {\n    let newItem;\n    const child = children[i];\n\n    // Don't overwrite if it already exists.\n    const exists = getLayoutItem(initialLayout, child.key || \"1\" /!* FIXME satisfies Flow *!/);\n    if (exists) {\n      newItem = exists;\n    } else {\n      const g = child.props._grid;\n\n      // Hey, this item has a _grid property, use it.\n      if (g) {\n        if (!isProduction) {\n          validateLayout([g], 'ReactGridLayout.children');\n        }\n        // Validated; add it to the layout. Bottom 'y' possible is the bottom of the layout.\n        // This allows you to do nice stuff like specify {y: Infinity}\n        if (verticalCompact) {\n          newItem = cloneLayoutItem({...g, y: Math.min(bottom(layout), g.y), i: child.key});\n        } else {\n          newItem = cloneLayoutItem({...g, y: g.y, i: child.key});\n        }\n      }\n      // Nothing provided: ensure this is added to the bottom\n      else {\n        newItem = cloneLayoutItem({w: 1, h: 1, x: 0, y: bottom(layout), i: child.key || \"1\"});\n      }\n    }\n    layout[i] = newItem;\n  }\n\n  // Correct the layout.\n  layout = correctBounds(layout, {cols: cols});\n  layout = compact(layout, verticalCompact);\n\n  return layout;\n}\n*/\n\n/**\n * Validate a layout. Throws errors.\n *\n * @param  {Array}  layout        Array of layout items.\n * @param  {String} [contextName] Context name for errors.\n * @throw  {Error}                Validation error.\n */\nexport function validateLayout(layout: Layout, contextName: string): void {\n  contextName = contextName || \"Layout\";\n  const subProps = ['x', 'y', 'w', 'h'];\n  let keyArr = [];\n  if (!Array.isArray(layout)) throw new Error(contextName + \" must be an array!\");\n  for (let i = 0, len = layout.length; i < len; i++) {\n    const item = layout[i];\n    for (let j = 0; j < subProps.length; j++) {\n      if (typeof item[subProps[j]] !== 'number') {\n        throw new Error('VueGridLayout: ' + contextName + '[' + i + '].' + subProps[j] + ' must be a number!');\n      }\n    }\n\n    if (item.i === undefined || item.i === null) {\n      throw new Error('VueGridLayout: ' + contextName + '[' + i + '].i cannot be null!');\n    }\n\n    if (typeof item.i !== 'number' && typeof item.i !== 'string') {\n      throw new Error('VueGridLayout: ' + contextName + '[' + i + '].i must be a string or number!');\n    }\n\n    if (keyArr.indexOf(item.i) >= 0) {\n      throw new Error('VueGridLayout: ' + contextName + '[' + i + '].i must be unique!');\n    }\n    keyArr.push(item.i);\n\n    if (item.static !== undefined && typeof item.static !== 'boolean') {\n      throw new Error('VueGridLayout: ' + contextName + '[' + i + '].static must be a boolean!');\n    }\n  }\n}\n\n// Flow can't really figure this out, so we just use Object\nexport function autoBindHandlers(el: Object, fns: Array<string>): void {\n  fns.forEach((key) => el[key] = el[key].bind(el));\n}\n\n\n\n/**\n * Convert a JS object to CSS string. Similar to React's output of CSS.\n * @param obj\n * @returns {string}\n */\nexport function createMarkup(obj) {\n    var keys = Object.keys(obj);\n    if (!keys.length) return '';\n    var i, len = keys.length;\n    var result = '';\n\n    for (i = 0; i < len; i++) {\n        var key = keys[i];\n        var val = obj[key];\n        result += hyphenate(key) + ':' + addPx(key, val) + ';';\n    }\n\n    return result;\n}\n\n\n/* The following list is defined in React's core */\nexport var IS_UNITLESS = {\n    animationIterationCount: true,\n    boxFlex: true,\n    boxFlexGroup: true,\n    boxOrdinalGroup: true,\n    columnCount: true,\n    flex: true,\n    flexGrow: true,\n    flexPositive: true,\n    flexShrink: true,\n    flexNegative: true,\n    flexOrder: true,\n    gridRow: true,\n    gridColumn: true,\n    fontWeight: true,\n    lineClamp: true,\n    lineHeight: true,\n    opacity: true,\n    order: true,\n    orphans: true,\n    tabSize: true,\n    widows: true,\n    zIndex: true,\n    zoom: true,\n\n    // SVG-related properties\n    fillOpacity: true,\n    stopOpacity: true,\n    strokeDashoffset: true,\n    strokeOpacity: true,\n    strokeWidth: true\n};\n\n\n/**\n * Will add px to the end of style values which are Numbers.\n * @param name\n * @param value\n * @returns {*}\n */\nexport function addPx(name, value) {\n    if(typeof value === 'number' && !IS_UNITLESS[ name ]) {\n        return value + 'px';\n    } else {\n        return value;\n    }\n}\n\n\n/**\n * Hyphenate a camelCase string.\n *\n * @param {String} str\n * @return {String}\n */\n\nexport var hyphenateRE = /([a-z\\d])([A-Z])/g;\n\nexport function hyphenate(str) {\n    return str.replace(hyphenateRE, '$1-$2').toLowerCase();\n}\n\n\nexport function findItemInArray(array, property, value) {\n    for (var i=0; i < array.length; i++)\n        if (array[i][property] == value)\n            return true;\n\n    return false;\n}\n\nexport function findAndRemove(array, property, value) {\n    array.forEach(function (result, index) {\n        if (result[property] === value) {\n            //Remove from array\n            array.splice(index, 1);\n        }\n    });\n}\n","// Get {x, y} positions from event.\nexport function getControlPosition(e) {\n    return offsetXYFromParentOf(e);\n}\n\n\n// Get from offsetParent\nexport function offsetXYFromParentOf(evt) {\n    const offsetParent = evt.target.offsetParent || document.body;\n    const offsetParentRect = evt.offsetParent === document.body ? {left: 0, top: 0} : offsetParent.getBoundingClientRect();\n\n    const x = evt.clientX + offsetParent.scrollLeft - offsetParentRect.left;\n    const y = evt.clientY + offsetParent.scrollTop - offsetParentRect.top;\n\n    /*const x = Math.round(evt.clientX + offsetParent.scrollLeft - offsetParentRect.left);\n    const y = Math.round(evt.clientY + offsetParent.scrollTop - offsetParentRect.top);*/\n\n\n    return {x, y};\n}\n\n\n// Create an data object exposed by <DraggableCore>'s events\nexport function createCoreData(lastX, lastY, x, y) {\n    // State changes are often (but not always!) async. We want the latest value.\n    const isStart = !isNum(lastX);\n\n    if (isStart) {\n        // If this is our first move, use the x and y as last coords.\n        return {\n            deltaX: 0, deltaY: 0,\n            lastX: x, lastY: y,\n            x: x, y: y\n        };\n    } else {\n        // Otherwise calculate proper values.\n        return {\n            deltaX: x - lastX, deltaY: y - lastY,\n            lastX: lastX, lastY: lastY,\n            x: x, y: y\n        };\n    }\n}\n\n\nfunction isNum(num)  {\n    return typeof num === 'number' && !isNaN(num);\n}\n\n","// @flow\n\nimport {cloneLayout, compact, correctBounds} from './utils';\n\nimport type {Layout} from './utils';\nexport type ResponsiveLayout = {lg?: Layout, md?: Layout, sm?: Layout, xs?: Layout, xxs?: Layout};\ntype Breakpoint = string;\ntype Breakpoints = {lg?: number, md?: number, sm?: number, xs?: number, xxs?: number};\n\n/**\n * Given a width, find the highest breakpoint that matches is valid for it (width > breakpoint).\n *\n * @param  {Object} breakpoints Breakpoints object (e.g. {lg: 1200, md: 960, ...})\n * @param  {Number} width Screen width.\n * @return {String}       Highest breakpoint that is less than width.\n */\nexport function getBreakpointFromWidth(breakpoints: Breakpoints, width: number): Breakpoint {\n  const sorted = sortBreakpoints(breakpoints);\n  let matching = sorted[0];\n  for (let i = 1, len = sorted.length; i < len; i++) {\n    const breakpointName = sorted[i];\n    if (width > breakpoints[breakpointName]) matching = breakpointName;\n  }\n  return matching;\n}\n\n\n/**\n * Given a breakpoint, get the # of cols set for it.\n * @param  {String} breakpoint Breakpoint name.\n * @param  {Object} cols       Map of breakpoints to cols.\n * @return {Number}            Number of cols.\n */\nexport function getColsFromBreakpoint(breakpoint: Breakpoint, cols: Breakpoints): number {\n  if (!cols[breakpoint]) {\n    throw new Error(\"ResponsiveGridLayout: `cols` entry for breakpoint \" + breakpoint + \" is missing!\");\n  }\n  return cols[breakpoint];\n}\n\n/**\n * Given existing layouts and a new breakpoint, find or generate a new layout.\n *\n * This finds the layout above the new one and generates from it, if it exists.\n *\n * @param  {Array} orgLayout     Original layout.\n * @param  {Object} layouts     Existing layouts.\n * @param  {Array} breakpoints All breakpoints.\n * @param  {String} breakpoint New breakpoint.\n * @param  {String} breakpoint Last breakpoint (for fallback).\n * @param  {Number} cols       Column count at new breakpoint.\n * @param  {Boolean} verticalCompact Whether or not to compact the layout\n *   vertically.\n * @return {Array}             New layout.\n */\nexport function findOrGenerateResponsiveLayout(orgLayout: Layout, layouts: ResponsiveLayout, breakpoints: Breakpoints,\n                                               breakpoint: Breakpoint, lastBreakpoint: Breakpoint,\n                                               cols: number, verticalCompact: boolean): Layout {\n  // If it already exists, just return it.\n  if (layouts[breakpoint]) return cloneLayout(layouts[breakpoint]);\n  // Find or generate the next layout\n  let layout = orgLayout;\n\n  const breakpointsSorted = sortBreakpoints(breakpoints);\n  const breakpointsAbove = breakpointsSorted.slice(breakpointsSorted.indexOf(breakpoint));\n  for (let i = 0, len = breakpointsAbove.length; i < len; i++) {\n    const b = breakpointsAbove[i];\n    if (layouts[b]) {\n      layout = layouts[b];\n      break;\n    }\n  }\n  layout = cloneLayout(layout || []); // clone layout so we don't modify existing items\n  return compact(correctBounds(layout, {cols: cols}), verticalCompact);\n}\n\nexport function generateResponsiveLayout(layout: Layout, breakpoints: Breakpoints,\n                                               breakpoint: Breakpoint, lastBreakpoint: Breakpoint,\n                                               cols: number, verticalCompact: boolean): Layout {\n  // If it already exists, just return it.\n  /*if (layouts[breakpoint]) return cloneLayout(layouts[breakpoint]);\n  // Find or generate the next layout\n  let layout = layouts[lastBreakpoint];*/\n    /*const breakpointsSorted = sortBreakpoints(breakpoints);\n  const breakpointsAbove = breakpointsSorted.slice(breakpointsSorted.indexOf(breakpoint));\n  for (let i = 0, len = breakpointsAbove.length; i < len; i++) {\n    const b = breakpointsAbove[i];\n    if (layouts[b]) {\n      layout = layouts[b];\n      break;\n    }\n  }*/\n  layout = cloneLayout(layout || []); // clone layout so we don't modify existing items\n  return compact(correctBounds(layout, {cols: cols}), verticalCompact);\n}\n\n/**\n * Given breakpoints, return an array of breakpoints sorted by width. This is usually\n * e.g. ['xxs', 'xs', 'sm', ...]\n *\n * @param  {Object} breakpoints Key/value pair of breakpoint names to widths.\n * @return {Array}              Sorted breakpoints.\n */\nexport function sortBreakpoints(breakpoints: Breakpoints): Array<Breakpoint> {\n  const keys: Array<string> = Object.keys(breakpoints);\n  return keys.sort(function(a, b) {\n    return breakpoints[a] - breakpoints[b];\n  });\n}\n","let currentDir: \"ltr\" | \"rtl\" | \"auto\"  = \"auto\";\n// let currentDir = \"auto\";\n\nfunction hasDocument(){\n    return (typeof document !== \"undefined\");\n}\n\nfunction hasWindow(){\n    return (typeof window !== \"undefined\");\n}\n\nexport function getDocumentDir(){\n    if(!hasDocument()){\n        return currentDir;\n    }\n    const direction = (typeof document.dir !== \"undefined\") ?\n        document.dir :\n        document.getElementsByTagName(\"html\")[0].getAttribute(\"dir\");\n    return direction;\n}\n\nexport function setDocumentDir(dir: \"ltr\" | \"rtl\" | \"auto\"){\n// export function setDocumentDir(dir){\n    if(!hasDocument){\n        currentDir = dir;\n        return;\n    }\n\n    const html = document.getElementsByTagName(\"html\")[0];\n    html.setAttribute(\"dir\", dir);\n}\n\nexport function addWindowEventListener(event:string, callback: () => mixed){\n    if(!hasWindow){\n\n        callback();\n        return;\n    }\n    window.addEventListener(event, callback);\n}\n\nexport function removeWindowEventListener(event:string, callback: () => mixed){\n    if(!hasWindow){\n        return;\n    }\n    window.removeEventListener(event, callback);\n}\n\n\n\n","const domObjects = {\n  init,\n  document: null,\n  DocumentFragment: null,\n  SVGElement: null,\n  SVGSVGElement: null,\n  SVGElementInstance: null,\n  Element: null,\n  HTMLElement: null,\n  Event: null,\n  Touch: null,\n  PointerEvent: null\n};\n\nfunction blank() {}\n\nexport default domObjects;\n\nfunction init(window) {\n  const win = window;\n  domObjects.document = win.document;\n  domObjects.DocumentFragment = win.DocumentFragment || blank;\n  domObjects.SVGElement = win.SVGElement || blank;\n  domObjects.SVGSVGElement = win.SVGSVGElement || blank;\n  domObjects.SVGElementInstance = win.SVGElementInstance || blank;\n  domObjects.Element = win.Element || blank;\n  domObjects.HTMLElement = win.HTMLElement || domObjects.Element;\n  domObjects.Event = win.Event;\n  domObjects.Touch = win.Touch || blank;\n  domObjects.PointerEvent = win.PointerEvent || win.MSPointerEvent;\n}\n//# sourceMappingURL=domObjects.js.map","export default (thing => !!(thing && thing.Window) && thing instanceof thing.Window);\n//# sourceMappingURL=isWindow.js.map","import isWindow from \"./isWindow.js\";\nexport let realWindow = undefined;\nlet win = undefined;\nexport { win as window };\nexport function init(window) {\n  // get wrapped window if using Shadow DOM polyfill\n  realWindow = window; // create a TextNode\n\n  const el = window.document.createTextNode(''); // check if it's wrapped by a polyfill\n\n  if (el.ownerDocument !== window.document && typeof window.wrap === 'function' && window.wrap(el) === el) {\n    // use wrapped window\n    window = window.wrap(window);\n  }\n\n  win = window;\n}\n\nif (typeof window !== 'undefined' && !!window) {\n  init(window);\n}\n\nexport function getWindow(node) {\n  if (isWindow(node)) {\n    return node;\n  }\n\n  const rootNode = node.ownerDocument || node;\n  return rootNode.defaultView || win.window;\n}\n//# sourceMappingURL=window.js.map","import isWindow from \"./isWindow.js\";\nimport * as win from \"./window.js\";\n\nconst window = thing => thing === win.window || isWindow(thing);\n\nconst docFrag = thing => object(thing) && thing.nodeType === 11;\n\nconst object = thing => !!thing && typeof thing === 'object';\n\nconst func = thing => typeof thing === 'function';\n\nconst number = thing => typeof thing === 'number';\n\nconst bool = thing => typeof thing === 'boolean';\n\nconst string = thing => typeof thing === 'string';\n\nconst element = thing => {\n  if (!thing || typeof thing !== 'object') {\n    return false;\n  } // eslint-disable-next-line import/no-named-as-default-member\n\n\n  const _window = win.getWindow(thing) || win.window;\n\n  return /object|function/.test(typeof _window.Element) ? thing instanceof _window.Element // DOM2\n  : thing.nodeType === 1 && typeof thing.nodeName === 'string';\n};\n\nconst plainObject = thing => object(thing) && !!thing.constructor && /function Object\\b/.test(thing.constructor.toString());\n\nconst array = thing => object(thing) && typeof thing.length !== 'undefined' && func(thing.splice);\n\nexport default {\n  window,\n  docFrag,\n  object,\n  func,\n  number,\n  bool,\n  string,\n  element,\n  plainObject,\n  array\n};\n//# sourceMappingURL=is.js.map","import domObjects from \"./domObjects.js\";\nimport is from \"./is.js\";\nimport * as win from \"./window.js\";\nconst browser = {\n  init,\n  supportsTouch: null,\n  supportsPointerEvent: null,\n  isIOS7: null,\n  isIOS: null,\n  isIe9: null,\n  isOperaMobile: null,\n  prefixedMatchesSelector: null,\n  pEventTypes: null,\n  wheelEvent: null\n};\n\nfunction init(window) {\n  const Element = domObjects.Element;\n  const navigator = win.window.navigator; // Does the browser support touch input?\n\n  browser.supportsTouch = 'ontouchstart' in window || is.func(window.DocumentTouch) && domObjects.document instanceof window.DocumentTouch; // Does the browser support PointerEvents\n\n  browser.supportsPointerEvent = navigator.pointerEnabled !== false && !!domObjects.PointerEvent;\n  browser.isIOS = /iP(hone|od|ad)/.test(navigator.platform); // scrolling doesn't change the result of getClientRects on iOS 7\n\n  browser.isIOS7 = /iP(hone|od|ad)/.test(navigator.platform) && /OS 7[^\\d]/.test(navigator.appVersion);\n  browser.isIe9 = /MSIE 9/.test(navigator.userAgent); // Opera Mobile must be handled differently\n\n  browser.isOperaMobile = navigator.appName === 'Opera' && browser.supportsTouch && /Presto/.test(navigator.userAgent); // prefix matchesSelector\n\n  browser.prefixedMatchesSelector = 'matches' in Element.prototype ? 'matches' : 'webkitMatchesSelector' in Element.prototype ? 'webkitMatchesSelector' : 'mozMatchesSelector' in Element.prototype ? 'mozMatchesSelector' : 'oMatchesSelector' in Element.prototype ? 'oMatchesSelector' : 'msMatchesSelector';\n  browser.pEventTypes = browser.supportsPointerEvent ? domObjects.PointerEvent === window.MSPointerEvent ? {\n    up: 'MSPointerUp',\n    down: 'MSPointerDown',\n    over: 'mouseover',\n    out: 'mouseout',\n    move: 'MSPointerMove',\n    cancel: 'MSPointerCancel'\n  } : {\n    up: 'pointerup',\n    down: 'pointerdown',\n    over: 'pointerover',\n    out: 'pointerout',\n    move: 'pointermove',\n    cancel: 'pointercancel'\n  } : null; // because Webkit and Opera still use 'mousewheel' event type\n\n  browser.wheelEvent = 'onmousewheel' in domObjects.document ? 'mousewheel' : 'wheel';\n}\n\nexport default browser;\n//# sourceMappingURL=browser.js.map","export const contains = (array, target) => array.indexOf(target) !== -1;\nexport const remove = (array, target) => array.splice(array.indexOf(target), 1);\nexport const merge = (target, source) => {\n  for (const item of source) {\n    target.push(item);\n  }\n\n  return target;\n};\nexport const from = source => merge([], source);\nexport const findIndex = (array, func) => {\n  for (let i = 0; i < array.length; i++) {\n    if (func(array[i], i, array)) {\n      return i;\n    }\n  }\n\n  return -1;\n};\nexport const find = (array, func) => array[findIndex(array, func)];\n//# sourceMappingURL=arr.js.map","import * as arr from \"./arr.js\";\nimport is from \"./is.js\"; // tslint:disable-next-line ban-types\n\nexport default function clone(source) {\n  const dest = {};\n\n  for (const prop in source) {\n    const value = source[prop];\n\n    if (is.plainObject(value)) {\n      dest[prop] = clone(value);\n    } else if (is.array(value)) {\n      dest[prop] = arr.from(value);\n    } else {\n      dest[prop] = value;\n    }\n  }\n\n  return dest;\n}\n//# sourceMappingURL=clone.js.map","export default function extend(dest, source) {\n  for (const prop in source) {\n    dest[prop] = source[prop];\n  }\n\n  const ret = dest;\n  return ret;\n}\n//# sourceMappingURL=extend.js.map","let lastTime = 0;\nlet request;\nlet cancel;\n\nfunction init(window) {\n  request = window.requestAnimationFrame;\n  cancel = window.cancelAnimationFrame;\n\n  if (!request) {\n    const vendors = ['ms', 'moz', 'webkit', 'o'];\n\n    for (const vendor of vendors) {\n      request = window[`${vendor}RequestAnimationFrame`];\n      cancel = window[`${vendor}CancelAnimationFrame`] || window[`${vendor}CancelRequestAnimationFrame`];\n    }\n  }\n\n  request = request && request.bind(window);\n  cancel = cancel && cancel.bind(window);\n\n  if (!request) {\n    request = callback => {\n      const currTime = Date.now();\n      const timeToCall = Math.max(0, 16 - (currTime - lastTime)); // eslint-disable-next-line node/no-callback-literal\n\n      const token = window.setTimeout(() => {\n        callback(currTime + timeToCall);\n      }, timeToCall);\n      lastTime = currTime + timeToCall;\n      return token;\n    };\n\n    cancel = token => clearTimeout(token);\n  }\n}\n\nexport default {\n  request: callback => request(callback),\n  cancel: token => cancel(token),\n  init\n};\n//# sourceMappingURL=raf.js.map","import extend from \"./extend.js\";\nimport is from \"./is.js\";\nexport default function normalize(type, listeners, result) {\n  result = result || {};\n\n  if (is.string(type) && type.search(' ') !== -1) {\n    type = split(type);\n  }\n\n  if (is.array(type)) {\n    return type.reduce((acc, t) => extend(acc, normalize(t, listeners, result)), result);\n  } // ({ type: fn }) -> ('', { type: fn })\n\n\n  if (is.object(type)) {\n    listeners = type;\n    type = '';\n  }\n\n  if (is.func(listeners)) {\n    result[type] = result[type] || [];\n    result[type].push(listeners);\n  } else if (is.array(listeners)) {\n    for (const l of listeners) {\n      normalize(type, l, result);\n    }\n  } else if (is.object(listeners)) {\n    for (const prefix in listeners) {\n      const combinedTypes = split(prefix).map(p => `${type}${p}`);\n      normalize(combinedTypes, listeners[prefix], result);\n    }\n  }\n\n  return result;\n}\n\nfunction split(type) {\n  return type.trim().split(/ +/);\n}\n//# sourceMappingURL=normalizeListeners.js.map","import * as arr from \"../utils/arr.js\";\nimport extend from \"../utils/extend.js\";\nimport normalize from \"../utils/normalizeListeners.js\";\n\nfunction fireUntilImmediateStopped(event, listeners) {\n  for (const listener of listeners) {\n    if (event.immediatePropagationStopped) {\n      break;\n    }\n\n    listener(event);\n  }\n}\n\nexport class Eventable {\n  constructor(options) {\n    this.options = void 0;\n    this.types = {};\n    this.propagationStopped = false;\n    this.immediatePropagationStopped = false;\n    this.global = void 0;\n    this.options = extend({}, options || {});\n  }\n\n  fire(event) {\n    let listeners;\n    const global = this.global; // Interactable#on() listeners\n    // tslint:disable no-conditional-assignment\n\n    if (listeners = this.types[event.type]) {\n      fireUntilImmediateStopped(event, listeners);\n    } // interact.on() listeners\n\n\n    if (!event.propagationStopped && global && (listeners = global[event.type])) {\n      fireUntilImmediateStopped(event, listeners);\n    }\n  }\n\n  on(type, listener) {\n    const listeners = normalize(type, listener);\n\n    for (type in listeners) {\n      this.types[type] = arr.merge(this.types[type] || [], listeners[type]);\n    }\n  }\n\n  off(type, listener) {\n    const listeners = normalize(type, listener);\n\n    for (type in listeners) {\n      const eventList = this.types[type];\n\n      if (!eventList || !eventList.length) {\n        continue;\n      }\n\n      for (const subListener of listeners[type]) {\n        const index = eventList.indexOf(subListener);\n\n        if (index !== -1) {\n          eventList.splice(index, 1);\n        }\n      }\n    }\n  }\n\n  getRect(_element) {\n    return null;\n  }\n\n}\n//# sourceMappingURL=Eventable.js.map","import browser from \"./browser.js\";\nimport domObjects from \"./domObjects.js\";\nimport is from \"./is.js\";\nimport * as win from \"./window.js\";\nexport function nodeContains(parent, child) {\n  if (parent.contains) {\n    return parent.contains(child);\n  }\n\n  while (child) {\n    if (child === parent) {\n      return true;\n    }\n\n    child = child.parentNode;\n  }\n\n  return false;\n}\nexport function closest(element, selector) {\n  while (is.element(element)) {\n    if (matchesSelector(element, selector)) {\n      return element;\n    }\n\n    element = parentNode(element);\n  }\n\n  return null;\n}\nexport function parentNode(node) {\n  let parent = node.parentNode;\n\n  if (is.docFrag(parent)) {\n    // skip past #shado-root fragments\n    // tslint:disable-next-line\n    while ((parent = parent.host) && is.docFrag(parent)) {\n      continue;\n    }\n\n    return parent;\n  }\n\n  return parent;\n}\nexport function matchesSelector(element, selector) {\n  // remove /deep/ from selectors if shadowDOM polyfill is used\n  if (win.window !== win.realWindow) {\n    selector = selector.replace(/\\/deep\\//g, ' ');\n  }\n\n  return element[browser.prefixedMatchesSelector](selector);\n}\n\nconst getParent = el => el.parentNode || el.host; // Test for the element that's \"above\" all other qualifiers\n\n\nexport function indexOfDeepestElement(elements) {\n  let deepestNodeParents = [];\n  let deepestNodeIndex;\n\n  for (let i = 0; i < elements.length; i++) {\n    const currentNode = elements[i];\n    const deepestNode = elements[deepestNodeIndex]; // node may appear in elements array multiple times\n\n    if (!currentNode || i === deepestNodeIndex) {\n      continue;\n    }\n\n    if (!deepestNode) {\n      deepestNodeIndex = i;\n      continue;\n    }\n\n    const currentNodeParent = getParent(currentNode);\n    const deepestNodeParent = getParent(deepestNode); // check if the deepest or current are document.documentElement/rootElement\n    // - if the current node is, do nothing and continue\n\n    if (currentNodeParent === currentNode.ownerDocument) {\n      continue;\n    } // - if deepest is, update with the current node and continue to next\n    else if (deepestNodeParent === currentNode.ownerDocument) {\n        deepestNodeIndex = i;\n        continue;\n      } // compare zIndex of siblings\n\n\n    if (currentNodeParent === deepestNodeParent) {\n      if (zIndexIsHigherThan(currentNode, deepestNode)) {\n        deepestNodeIndex = i;\n      }\n\n      continue;\n    } // populate the ancestry array for the latest deepest node\n\n\n    deepestNodeParents = deepestNodeParents.length ? deepestNodeParents : getNodeParents(deepestNode);\n    let ancestryStart; // if the deepest node is an HTMLElement and the current node is a non root svg element\n\n    if (deepestNode instanceof domObjects.HTMLElement && currentNode instanceof domObjects.SVGElement && !(currentNode instanceof domObjects.SVGSVGElement)) {\n      // TODO: is this check necessary? Was this for HTML elements embedded in SVG?\n      if (currentNode === deepestNodeParent) {\n        continue;\n      }\n\n      ancestryStart = currentNode.ownerSVGElement;\n    } else {\n      ancestryStart = currentNode;\n    }\n\n    const currentNodeParents = getNodeParents(ancestryStart, deepestNode.ownerDocument);\n    let commonIndex = 0; // get (position of closest common ancestor) + 1\n\n    while (currentNodeParents[commonIndex] && currentNodeParents[commonIndex] === deepestNodeParents[commonIndex]) {\n      commonIndex++;\n    }\n\n    const parents = [currentNodeParents[commonIndex - 1], currentNodeParents[commonIndex], deepestNodeParents[commonIndex]];\n    let child = parents[0].lastChild;\n\n    while (child) {\n      if (child === parents[1]) {\n        deepestNodeIndex = i;\n        deepestNodeParents = currentNodeParents;\n        break;\n      } else if (child === parents[2]) {\n        break;\n      }\n\n      child = child.previousSibling;\n    }\n  }\n\n  return deepestNodeIndex;\n}\n\nfunction getNodeParents(node, limit) {\n  const parents = [];\n  let parent = node;\n  let parentParent;\n\n  while ((parentParent = getParent(parent)) && parent !== limit && parentParent !== parent.ownerDocument) {\n    parents.unshift(parent);\n    parent = parentParent;\n  }\n\n  return parents;\n}\n\nfunction zIndexIsHigherThan(higherNode, lowerNode) {\n  const higherIndex = parseInt(win.getWindow(higherNode).getComputedStyle(higherNode).zIndex, 10) || 0;\n  const lowerIndex = parseInt(win.getWindow(lowerNode).getComputedStyle(lowerNode).zIndex, 10) || 0;\n  return higherIndex >= lowerIndex;\n}\n\nexport function matchesUpTo(element, selector, limit) {\n  while (is.element(element)) {\n    if (matchesSelector(element, selector)) {\n      return true;\n    }\n\n    element = parentNode(element);\n\n    if (element === limit) {\n      return matchesSelector(element, selector);\n    }\n  }\n\n  return false;\n}\nexport function getActualElement(element) {\n  return element.correspondingUseElement || element;\n}\nexport function getScrollXY(relevantWindow) {\n  relevantWindow = relevantWindow || win.window;\n  return {\n    x: relevantWindow.scrollX || relevantWindow.document.documentElement.scrollLeft,\n    y: relevantWindow.scrollY || relevantWindow.document.documentElement.scrollTop\n  };\n}\nexport function getElementClientRect(element) {\n  const clientRect = element instanceof domObjects.SVGElement ? element.getBoundingClientRect() : element.getClientRects()[0];\n  return clientRect && {\n    left: clientRect.left,\n    right: clientRect.right,\n    top: clientRect.top,\n    bottom: clientRect.bottom,\n    width: clientRect.width || clientRect.right - clientRect.left,\n    height: clientRect.height || clientRect.bottom - clientRect.top\n  };\n}\nexport function getElementRect(element) {\n  const clientRect = getElementClientRect(element);\n\n  if (!browser.isIOS7 && clientRect) {\n    const scroll = getScrollXY(win.getWindow(element));\n    clientRect.left += scroll.x;\n    clientRect.right += scroll.x;\n    clientRect.top += scroll.y;\n    clientRect.bottom += scroll.y;\n  }\n\n  return clientRect;\n}\nexport function getPath(node) {\n  const path = [];\n\n  while (node) {\n    path.push(node);\n    node = parentNode(node);\n  }\n\n  return path;\n}\nexport function trySelector(value) {\n  if (!is.string(value)) {\n    return false;\n  } // an exception will be raised if it is invalid\n\n\n  domObjects.document.querySelector(value);\n  return true;\n}\n//# sourceMappingURL=domUtils.js.map","import { closest, getElementRect, parentNode } from \"./domUtils.js\";\nimport extend from \"./extend.js\";\nimport is from \"./is.js\";\nexport function getStringOptionResult(value, target, element) {\n  if (value === 'parent') {\n    return parentNode(element);\n  }\n\n  if (value === 'self') {\n    return target.getRect(element);\n  }\n\n  return closest(element, value);\n}\nexport function resolveRectLike(value, target, element, functionArgs) {\n  let returnValue = value;\n\n  if (is.string(returnValue)) {\n    returnValue = getStringOptionResult(returnValue, target, element);\n  } else if (is.func(returnValue)) {\n    returnValue = returnValue(...functionArgs);\n  }\n\n  if (is.element(returnValue)) {\n    returnValue = getElementRect(returnValue);\n  }\n\n  return returnValue;\n}\nexport function rectToXY(rect) {\n  return rect && {\n    x: 'x' in rect ? rect.x : rect.left,\n    y: 'y' in rect ? rect.y : rect.top\n  };\n}\nexport function xywhToTlbr(rect) {\n  if (rect && !('left' in rect && 'top' in rect)) {\n    rect = extend({}, rect);\n    rect.left = rect.x || 0;\n    rect.top = rect.y || 0;\n    rect.right = rect.right || rect.left + rect.width;\n    rect.bottom = rect.bottom || rect.top + rect.height;\n  }\n\n  return rect;\n}\nexport function tlbrToXywh(rect) {\n  if (rect && !('x' in rect && 'y' in rect)) {\n    rect = extend({}, rect);\n    rect.x = rect.left || 0;\n    rect.y = rect.top || 0;\n    rect.width = rect.width || (rect.right || 0) - rect.x;\n    rect.height = rect.height || (rect.bottom || 0) - rect.y;\n  }\n\n  return rect;\n}\nexport function addEdges(edges, rect, delta) {\n  if (edges.left) {\n    rect.left += delta.x;\n  }\n\n  if (edges.right) {\n    rect.right += delta.x;\n  }\n\n  if (edges.top) {\n    rect.top += delta.y;\n  }\n\n  if (edges.bottom) {\n    rect.bottom += delta.y;\n  }\n\n  rect.width = rect.right - rect.left;\n  rect.height = rect.bottom - rect.top;\n}\n//# sourceMappingURL=rect.js.map","import { rectToXY, resolveRectLike } from \"./rect.js\";\nexport default function (target, element, actionName) {\n  const actionOptions = target.options[actionName];\n  const actionOrigin = actionOptions && actionOptions.origin;\n  const origin = actionOrigin || target.options.origin;\n  const originRect = resolveRectLike(origin, target, element, [target && element]);\n  return rectToXY(originRect) || {\n    x: 0,\n    y: 0\n  };\n}\n//# sourceMappingURL=getOriginXY.js.map","export default ((x, y) => Math.sqrt(x * x + y * y));\n//# sourceMappingURL=hypot.js.map","export class BaseEvent {\n  constructor(interaction) {\n    this.type = void 0;\n    this.target = void 0;\n    this.currentTarget = void 0;\n    this.interactable = void 0;\n    this._interaction = void 0;\n    this.timeStamp = void 0;\n    this.immediatePropagationStopped = false;\n    this.propagationStopped = false;\n    this._interaction = interaction;\n  }\n\n  preventDefault() {}\n  /**\n   * Don't call any other listeners (even on the current target)\n   */\n\n\n  stopPropagation() {\n    this.propagationStopped = true;\n  }\n  /**\n   * Don't call listeners on the remaining targets\n   */\n\n\n  stopImmediatePropagation() {\n    this.immediatePropagationStopped = this.propagationStopped = true;\n  }\n\n} // defined outside of class definition to avoid assignment of undefined during\n// construction\n\n// getters and setters defined here to support typescript 3.6 and below which\n// don't support getter and setters in .d.ts files\nObject.defineProperty(BaseEvent.prototype, 'interaction', {\n  get() {\n    return this._interaction._proxy;\n  },\n\n  set() {}\n\n});\n//# sourceMappingURL=BaseEvent.js.map","// eslint-disable-next-line @typescript-eslint/no-empty-interface\n// export interface Options extends BaseDefaults, PerActionDefaults {}\nexport const defaults = {\n  base: {\n    preventDefault: 'auto',\n    deltaSource: 'page'\n  },\n  perAction: {\n    enabled: false,\n    origin: {\n      x: 0,\n      y: 0\n    }\n  },\n  actions: {}\n};\n//# sourceMappingURL=defaultOptions.js.map","import extend from \"../utils/extend.js\";\nimport getOriginXY from \"../utils/getOriginXY.js\";\nimport hypot from \"../utils/hypot.js\";\nimport { BaseEvent } from \"./BaseEvent.js\";\nimport { defaults } from \"./defaultOptions.js\";\nexport class InteractEvent extends BaseEvent {\n  // resize\n\n  /** */\n  constructor(interaction, event, actionName, phase, element, preEnd, type) {\n    super(interaction);\n    this.target = void 0;\n    this.currentTarget = void 0;\n    this.relatedTarget = null;\n    this.screenX = void 0;\n    this.screenY = void 0;\n    this.button = void 0;\n    this.buttons = void 0;\n    this.ctrlKey = void 0;\n    this.shiftKey = void 0;\n    this.altKey = void 0;\n    this.metaKey = void 0;\n    this.page = void 0;\n    this.client = void 0;\n    this.delta = void 0;\n    this.rect = void 0;\n    this.x0 = void 0;\n    this.y0 = void 0;\n    this.t0 = void 0;\n    this.dt = void 0;\n    this.duration = void 0;\n    this.clientX0 = void 0;\n    this.clientY0 = void 0;\n    this.velocity = void 0;\n    this.speed = void 0;\n    this.swipe = void 0;\n    this.timeStamp = void 0;\n    this.axes = void 0;\n    this.preEnd = void 0;\n    element = element || interaction.element;\n    const target = interaction.interactable;\n    const deltaSource = (target && target.options || defaults).deltaSource;\n    const origin = getOriginXY(target, element, actionName);\n    const starting = phase === 'start';\n    const ending = phase === 'end';\n    const prevEvent = starting ? this : interaction.prevEvent;\n    const coords = starting ? interaction.coords.start : ending ? {\n      page: prevEvent.page,\n      client: prevEvent.client,\n      timeStamp: interaction.coords.cur.timeStamp\n    } : interaction.coords.cur;\n    this.page = extend({}, coords.page);\n    this.client = extend({}, coords.client);\n    this.rect = extend({}, interaction.rect);\n    this.timeStamp = coords.timeStamp;\n\n    if (!ending) {\n      this.page.x -= origin.x;\n      this.page.y -= origin.y;\n      this.client.x -= origin.x;\n      this.client.y -= origin.y;\n    }\n\n    this.ctrlKey = event.ctrlKey;\n    this.altKey = event.altKey;\n    this.shiftKey = event.shiftKey;\n    this.metaKey = event.metaKey;\n    this.button = event.button;\n    this.buttons = event.buttons;\n    this.target = element;\n    this.currentTarget = element;\n    this.preEnd = preEnd;\n    this.type = type || actionName + (phase || '');\n    this.interactable = target;\n    this.t0 = starting ? interaction.pointers[interaction.pointers.length - 1].downTime : prevEvent.t0;\n    this.x0 = interaction.coords.start.page.x - origin.x;\n    this.y0 = interaction.coords.start.page.y - origin.y;\n    this.clientX0 = interaction.coords.start.client.x - origin.x;\n    this.clientY0 = interaction.coords.start.client.y - origin.y;\n\n    if (starting || ending) {\n      this.delta = {\n        x: 0,\n        y: 0\n      };\n    } else {\n      this.delta = {\n        x: this[deltaSource].x - prevEvent[deltaSource].x,\n        y: this[deltaSource].y - prevEvent[deltaSource].y\n      };\n    }\n\n    this.dt = interaction.coords.delta.timeStamp;\n    this.duration = this.timeStamp - this.t0; // velocity and speed in pixels per second\n\n    this.velocity = extend({}, interaction.coords.velocity[deltaSource]);\n    this.speed = hypot(this.velocity.x, this.velocity.y);\n    this.swipe = ending || phase === 'inertiastart' ? this.getSwipe() : null;\n  }\n\n  getSwipe() {\n    const interaction = this._interaction;\n\n    if (interaction.prevEvent.speed < 600 || this.timeStamp - interaction.prevEvent.timeStamp > 150) {\n      return null;\n    }\n\n    let angle = 180 * Math.atan2(interaction.prevEvent.velocityY, interaction.prevEvent.velocityX) / Math.PI;\n    const overlap = 22.5;\n\n    if (angle < 0) {\n      angle += 360;\n    }\n\n    const left = 135 - overlap <= angle && angle < 225 + overlap;\n    const up = 225 - overlap <= angle && angle < 315 + overlap;\n    const right = !left && (315 - overlap <= angle || angle < 45 + overlap);\n    const down = !up && 45 - overlap <= angle && angle < 135 + overlap;\n    return {\n      up,\n      down,\n      left,\n      right,\n      angle,\n      speed: interaction.prevEvent.speed,\n      velocity: {\n        x: interaction.prevEvent.velocityX,\n        y: interaction.prevEvent.velocityY\n      }\n    };\n  }\n\n  preventDefault() {}\n  /**\n   * Don't call listeners on the remaining targets\n   */\n\n\n  stopImmediatePropagation() {\n    this.immediatePropagationStopped = this.propagationStopped = true;\n  }\n  /**\n   * Don't call any other listeners (even on the current target)\n   */\n\n\n  stopPropagation() {\n    this.propagationStopped = true;\n  }\n\n} // getters and setters defined here to support typescript 3.6 and below which\n// don't support getter and setters in .d.ts files\n\nObject.defineProperties(InteractEvent.prototype, {\n  pageX: {\n    get() {\n      return this.page.x;\n    },\n\n    set(value) {\n      this.page.x = value;\n    }\n\n  },\n  pageY: {\n    get() {\n      return this.page.y;\n    },\n\n    set(value) {\n      this.page.y = value;\n    }\n\n  },\n  clientX: {\n    get() {\n      return this.client.x;\n    },\n\n    set(value) {\n      this.client.x = value;\n    }\n\n  },\n  clientY: {\n    get() {\n      return this.client.y;\n    },\n\n    set(value) {\n      this.client.y = value;\n    }\n\n  },\n  dx: {\n    get() {\n      return this.delta.x;\n    },\n\n    set(value) {\n      this.delta.x = value;\n    }\n\n  },\n  dy: {\n    get() {\n      return this.delta.y;\n    },\n\n    set(value) {\n      this.delta.y = value;\n    }\n\n  },\n  velocityX: {\n    get() {\n      return this.velocity.x;\n    },\n\n    set(value) {\n      this.velocity.x = value;\n    }\n\n  },\n  velocityY: {\n    get() {\n      return this.velocity.y;\n    },\n\n    set(value) {\n      this.velocity.y = value;\n    }\n\n  }\n});\n//# sourceMappingURL=InteractEvent.js.map","export default function isNonNativeEvent(type, actions) {\n  if (actions.phaselessTypes[type]) {\n    return true;\n  }\n\n  for (const name in actions.map) {\n    if (type.indexOf(name) === 0 && type.substr(name.length) in actions.phases) {\n      return true;\n    }\n  }\n\n  return false;\n}\n//# sourceMappingURL=isNonNativeEvent.js.map","/* eslint-disable no-dupe-class-members */\nimport * as arr from \"../utils/arr.js\";\nimport browser from \"../utils/browser.js\";\nimport clone from \"../utils/clone.js\";\nimport { getElementRect, matchesUpTo, nodeContains, trySelector } from \"../utils/domUtils.js\";\nimport extend from \"../utils/extend.js\";\nimport is from \"../utils/is.js\";\nimport normalizeListeners from \"../utils/normalizeListeners.js\";\nimport { getWindow } from \"../utils/window.js\";\nimport { Eventable } from \"./Eventable.js\";\nimport isNonNativeEvent from \"./isNonNativeEvent.js\";\n\n/** */\nexport class Interactable {\n  /** @internal */\n  get _defaults() {\n    return {\n      base: {},\n      perAction: {},\n      actions: {}\n    };\n  }\n\n  /** */\n  constructor(target, options, defaultContext, scopeEvents) {\n    this.options = void 0;\n    this._actions = void 0;\n    this.target = void 0;\n    this.events = new Eventable();\n    this._context = void 0;\n    this._win = void 0;\n    this._doc = void 0;\n    this._scopeEvents = void 0;\n    this._rectChecker = void 0;\n    this._actions = options.actions;\n    this.target = target;\n    this._context = options.context || defaultContext;\n    this._win = getWindow(trySelector(target) ? this._context : target);\n    this._doc = this._win.document;\n    this._scopeEvents = scopeEvents;\n    this.set(options);\n  }\n\n  setOnEvents(actionName, phases) {\n    if (is.func(phases.onstart)) {\n      this.on(`${actionName}start`, phases.onstart);\n    }\n\n    if (is.func(phases.onmove)) {\n      this.on(`${actionName}move`, phases.onmove);\n    }\n\n    if (is.func(phases.onend)) {\n      this.on(`${actionName}end`, phases.onend);\n    }\n\n    if (is.func(phases.oninertiastart)) {\n      this.on(`${actionName}inertiastart`, phases.oninertiastart);\n    }\n\n    return this;\n  }\n\n  updatePerActionListeners(actionName, prev, cur) {\n    if (is.array(prev) || is.object(prev)) {\n      this.off(actionName, prev);\n    }\n\n    if (is.array(cur) || is.object(cur)) {\n      this.on(actionName, cur);\n    }\n  }\n\n  setPerAction(actionName, options) {\n    const defaults = this._defaults; // for all the default per-action options\n\n    for (const optionName_ in options) {\n      const optionName = optionName_;\n      const actionOptions = this.options[actionName];\n      const optionValue = options[optionName]; // remove old event listeners and add new ones\n\n      if (optionName === 'listeners') {\n        this.updatePerActionListeners(actionName, actionOptions.listeners, optionValue);\n      } // if the option value is an array\n\n\n      if (is.array(optionValue)) {\n        actionOptions[optionName] = arr.from(optionValue);\n      } // if the option value is an object\n      else if (is.plainObject(optionValue)) {\n          // copy the object\n          actionOptions[optionName] = extend(actionOptions[optionName] || {}, clone(optionValue)); // set anabled field to true if it exists in the defaults\n\n          if (is.object(defaults.perAction[optionName]) && 'enabled' in defaults.perAction[optionName]) {\n            actionOptions[optionName].enabled = optionValue.enabled !== false;\n          }\n        } // if the option value is a boolean and the default is an object\n        else if (is.bool(optionValue) && is.object(defaults.perAction[optionName])) {\n            actionOptions[optionName].enabled = optionValue;\n          } // if it's anything else, do a plain assignment\n          else {\n              actionOptions[optionName] = optionValue;\n            }\n    }\n  }\n  /**\n   * The default function to get an Interactables bounding rect. Can be\n   * overridden using {@link Interactable.rectChecker}.\n   *\n   * @param {Element} [element] The element to measure.\n   * @return {Rect} The object's bounding rectangle.\n   */\n\n\n  getRect(element) {\n    element = element || (is.element(this.target) ? this.target : null);\n\n    if (is.string(this.target)) {\n      element = element || this._context.querySelector(this.target);\n    }\n\n    return getElementRect(element);\n  }\n  /**\n   * Returns or sets the function used to calculate the interactable's\n   * element's rectangle\n   *\n   * @param {function} [checker] A function which returns this Interactable's\n   * bounding rectangle. See {@link Interactable.getRect}\n   * @return {function | object} The checker function or this Interactable\n   */\n\n\n  rectChecker(checker) {\n    if (is.func(checker)) {\n      this._rectChecker = checker;\n\n      this.getRect = element => {\n        const rect = extend({}, this._rectChecker(element));\n\n        if (!('width' in rect)) {\n          rect.width = rect.right - rect.left;\n          rect.height = rect.bottom - rect.top;\n        }\n\n        return rect;\n      };\n\n      return this;\n    }\n\n    if (checker === null) {\n      delete this.getRect;\n      delete this._rectChecker;\n      return this;\n    }\n\n    return this.getRect;\n  }\n\n  _backCompatOption(optionName, newValue) {\n    if (trySelector(newValue) || is.object(newValue)) {\n      this.options[optionName] = newValue;\n\n      for (const action in this._actions.map) {\n        this.options[action][optionName] = newValue;\n      }\n\n      return this;\n    }\n\n    return this.options[optionName];\n  }\n  /**\n   * Gets or sets the origin of the Interactable's element.  The x and y\n   * of the origin will be subtracted from action event coordinates.\n   *\n   * @param {Element | object | string} [origin] An HTML or SVG Element whose\n   * rect will be used, an object eg. { x: 0, y: 0 } or string 'parent', 'self'\n   * or any CSS selector\n   *\n   * @return {object} The current origin or this Interactable\n   */\n\n\n  origin(newValue) {\n    return this._backCompatOption('origin', newValue);\n  }\n  /**\n   * Returns or sets the mouse coordinate types used to calculate the\n   * movement of the pointer.\n   *\n   * @param {string} [newValue] Use 'client' if you will be scrolling while\n   * interacting; Use 'page' if you want autoScroll to work\n   * @return {string | object} The current deltaSource or this Interactable\n   */\n\n\n  deltaSource(newValue) {\n    if (newValue === 'page' || newValue === 'client') {\n      this.options.deltaSource = newValue;\n      return this;\n    }\n\n    return this.options.deltaSource;\n  }\n  /**\n   * Gets the selector context Node of the Interactable. The default is\n   * `window.document`.\n   *\n   * @return {Node} The context Node of this Interactable\n   */\n\n\n  context() {\n    return this._context;\n  }\n\n  inContext(element) {\n    return this._context === element.ownerDocument || nodeContains(this._context, element);\n  }\n\n  testIgnoreAllow(options, targetNode, eventTarget) {\n    return !this.testIgnore(options.ignoreFrom, targetNode, eventTarget) && this.testAllow(options.allowFrom, targetNode, eventTarget);\n  }\n\n  testAllow(allowFrom, targetNode, element) {\n    if (!allowFrom) {\n      return true;\n    }\n\n    if (!is.element(element)) {\n      return false;\n    }\n\n    if (is.string(allowFrom)) {\n      return matchesUpTo(element, allowFrom, targetNode);\n    } else if (is.element(allowFrom)) {\n      return nodeContains(allowFrom, element);\n    }\n\n    return false;\n  }\n\n  testIgnore(ignoreFrom, targetNode, element) {\n    if (!ignoreFrom || !is.element(element)) {\n      return false;\n    }\n\n    if (is.string(ignoreFrom)) {\n      return matchesUpTo(element, ignoreFrom, targetNode);\n    } else if (is.element(ignoreFrom)) {\n      return nodeContains(ignoreFrom, element);\n    }\n\n    return false;\n  }\n  /**\n   * Calls listeners for the given InteractEvent type bound globally\n   * and directly to this Interactable\n   *\n   * @param {InteractEvent} iEvent The InteractEvent object to be fired on this\n   * Interactable\n   * @return {Interactable} this Interactable\n   */\n\n\n  fire(iEvent) {\n    this.events.fire(iEvent);\n    return this;\n  }\n\n  _onOff(method, typeArg, listenerArg, options) {\n    if (is.object(typeArg) && !is.array(typeArg)) {\n      options = listenerArg;\n      listenerArg = null;\n    }\n\n    const addRemove = method === 'on' ? 'add' : 'remove';\n    const listeners = normalizeListeners(typeArg, listenerArg);\n\n    for (let type in listeners) {\n      if (type === 'wheel') {\n        type = browser.wheelEvent;\n      }\n\n      for (const listener of listeners[type]) {\n        // if it is an action event type\n        if (isNonNativeEvent(type, this._actions)) {\n          this.events[method](type, listener);\n        } // delegated event\n        else if (is.string(this.target)) {\n            this._scopeEvents[`${addRemove}Delegate`](this.target, this._context, type, listener, options);\n          } // remove listener from this Interactable's element\n          else {\n              this._scopeEvents[addRemove](this.target, type, listener, options);\n            }\n      }\n    }\n\n    return this;\n  }\n  /**\n   * Binds a listener for an InteractEvent, pointerEvent or DOM event.\n   *\n   * @param {string | array | object} types The types of events to listen\n   * for\n   * @param {function | array | object} [listener] The event listener function(s)\n   * @param {object | boolean} [options] options object or useCapture flag for\n   * addEventListener\n   * @return {Interactable} This Interactable\n   */\n\n\n  on(types, listener, options) {\n    return this._onOff('on', types, listener, options);\n  }\n  /**\n   * Removes an InteractEvent, pointerEvent or DOM event listener.\n   *\n   * @param {string | array | object} types The types of events that were\n   * listened for\n   * @param {function | array | object} [listener] The event listener function(s)\n   * @param {object | boolean} [options] options object or useCapture flag for\n   * removeEventListener\n   * @return {Interactable} This Interactable\n   */\n\n\n  off(types, listener, options) {\n    return this._onOff('off', types, listener, options);\n  }\n  /**\n   * Reset the options of this Interactable\n   *\n   * @param {object} options The new settings to apply\n   * @return {object} This Interactable\n   */\n\n\n  set(options) {\n    const defaults = this._defaults;\n\n    if (!is.object(options)) {\n      options = {};\n    }\n\n    this.options = clone(defaults.base);\n\n    for (const actionName_ in this._actions.methodDict) {\n      const actionName = actionName_;\n      const methodName = this._actions.methodDict[actionName];\n      this.options[actionName] = {};\n      this.setPerAction(actionName, extend(extend({}, defaults.perAction), defaults.actions[actionName]));\n      this[methodName](options[actionName]);\n    }\n\n    for (const setting in options) {\n      if (is.func(this[setting])) {\n        this[setting](options[setting]);\n      }\n    }\n\n    return this;\n  }\n  /**\n   * Remove this interactable from the list of interactables and remove it's\n   * action capabilities and event listeners\n   */\n\n\n  unset() {\n    if (is.string(this.target)) {\n      // remove delegated events\n      for (const type in this._scopeEvents.delegatedEvents) {\n        const delegated = this._scopeEvents.delegatedEvents[type];\n\n        for (let i = delegated.length - 1; i >= 0; i--) {\n          const {\n            selector,\n            context,\n            listeners\n          } = delegated[i];\n\n          if (selector === this.target && context === this._context) {\n            delegated.splice(i, 1);\n          }\n\n          for (let l = listeners.length - 1; l >= 0; l--) {\n            this._scopeEvents.removeDelegate(this.target, this._context, type, listeners[l][0], listeners[l][1]);\n          }\n        }\n      }\n    } else {\n      this._scopeEvents.remove(this.target, 'all');\n    }\n  }\n\n}\n//# sourceMappingURL=Interactable.js.map","import * as arr from \"../utils/arr.js\";\nimport * as domUtils from \"../utils/domUtils.js\";\nimport extend from \"../utils/extend.js\";\nimport is from \"../utils/is.js\";\nexport class InteractableSet {\n  // all set interactables\n  constructor(scope) {\n    this.list = [];\n    this.selectorMap = {};\n    this.scope = void 0;\n    this.scope = scope;\n    scope.addListeners({\n      'interactable:unset': ({\n        interactable\n      }) => {\n        const {\n          target,\n          _context: context\n        } = interactable;\n        const targetMappings = is.string(target) ? this.selectorMap[target] : target[this.scope.id];\n        const targetIndex = arr.findIndex(targetMappings, m => m.context === context);\n\n        if (targetMappings[targetIndex]) {\n          // Destroying mappingInfo's context and interactable\n          targetMappings[targetIndex].context = null;\n          targetMappings[targetIndex].interactable = null;\n        }\n\n        targetMappings.splice(targetIndex, 1);\n      }\n    });\n  }\n\n  new(target, options) {\n    options = extend(options || {}, {\n      actions: this.scope.actions\n    });\n    const interactable = new this.scope.Interactable(target, options, this.scope.document, this.scope.events);\n    const mappingInfo = {\n      context: interactable._context,\n      interactable\n    };\n    this.scope.addDocument(interactable._doc);\n    this.list.push(interactable);\n\n    if (is.string(target)) {\n      if (!this.selectorMap[target]) {\n        this.selectorMap[target] = [];\n      }\n\n      this.selectorMap[target].push(mappingInfo);\n    } else {\n      if (!interactable.target[this.scope.id]) {\n        Object.defineProperty(target, this.scope.id, {\n          value: [],\n          configurable: true\n        });\n      }\n\n      target[this.scope.id].push(mappingInfo);\n    }\n\n    this.scope.fire('interactable:new', {\n      target,\n      options,\n      interactable,\n      win: this.scope._win\n    });\n    return interactable;\n  }\n\n  get(target, options) {\n    const context = options && options.context || this.scope.document;\n    const isSelector = is.string(target);\n    const targetMappings = isSelector ? this.selectorMap[target] : target[this.scope.id];\n\n    if (!targetMappings) {\n      return null;\n    }\n\n    const found = arr.find(targetMappings, m => m.context === context && (isSelector || m.interactable.inContext(target)));\n    return found && found.interactable;\n  }\n\n  forEachMatch(node, callback) {\n    for (const interactable of this.list) {\n      let ret;\n\n      if ((is.string(interactable.target) // target is a selector and the element matches\n      ? is.element(node) && domUtils.matchesSelector(node, interactable.target) : // target is the element\n      node === interactable.target) && // the element is in context\n      interactable.inContext(node)) {\n        ret = callback(interactable);\n      }\n\n      if (ret !== undefined) {\n        return ret;\n      }\n    }\n  }\n\n}\n//# sourceMappingURL=InteractableSet.js.map","function pointerExtend(dest, source) {\n  for (const prop in source) {\n    const prefixedPropREs = pointerExtend.prefixedPropREs;\n    let deprecated = false; // skip deprecated prefixed properties\n\n    for (const vendor in prefixedPropREs) {\n      if (prop.indexOf(vendor) === 0 && prefixedPropREs[vendor].test(prop)) {\n        deprecated = true;\n        break;\n      }\n    }\n\n    if (!deprecated && typeof source[prop] !== 'function') {\n      dest[prop] = source[prop];\n    }\n  }\n\n  return dest;\n}\n\npointerExtend.prefixedPropREs = {\n  webkit: /(Movement[XY]|Radius[XY]|RotationAngle|Force)$/,\n  moz: /(Pressure)$/\n};\nexport default pointerExtend;\n//# sourceMappingURL=pointerExtend.js.map","import browser from \"./browser.js\";\nimport dom from \"./domObjects.js\";\nimport * as domUtils from \"./domUtils.js\";\nimport hypot from \"./hypot.js\";\nimport is from \"./is.js\";\nimport pointerExtend from \"./pointerExtend.js\";\nexport function copyCoords(dest, src) {\n  dest.page = dest.page || {};\n  dest.page.x = src.page.x;\n  dest.page.y = src.page.y;\n  dest.client = dest.client || {};\n  dest.client.x = src.client.x;\n  dest.client.y = src.client.y;\n  dest.timeStamp = src.timeStamp;\n}\nexport function setCoordDeltas(targetObj, prev, cur) {\n  targetObj.page.x = cur.page.x - prev.page.x;\n  targetObj.page.y = cur.page.y - prev.page.y;\n  targetObj.client.x = cur.client.x - prev.client.x;\n  targetObj.client.y = cur.client.y - prev.client.y;\n  targetObj.timeStamp = cur.timeStamp - prev.timeStamp;\n}\nexport function setCoordVelocity(targetObj, delta) {\n  const dt = Math.max(delta.timeStamp / 1000, 0.001);\n  targetObj.page.x = delta.page.x / dt;\n  targetObj.page.y = delta.page.y / dt;\n  targetObj.client.x = delta.client.x / dt;\n  targetObj.client.y = delta.client.y / dt;\n  targetObj.timeStamp = dt;\n}\nexport function setZeroCoords(targetObj) {\n  targetObj.page.x = 0;\n  targetObj.page.y = 0;\n  targetObj.client.x = 0;\n  targetObj.client.y = 0;\n}\nexport function isNativePointer(pointer) {\n  return pointer instanceof dom.Event || pointer instanceof dom.Touch;\n} // Get specified X/Y coords for mouse or event.touches[0]\n\nexport function getXY(type, pointer, xy) {\n  xy = xy || {};\n  type = type || 'page';\n  xy.x = pointer[type + 'X'];\n  xy.y = pointer[type + 'Y'];\n  return xy;\n}\nexport function getPageXY(pointer, page) {\n  page = page || {\n    x: 0,\n    y: 0\n  }; // Opera Mobile handles the viewport and scrolling oddly\n\n  if (browser.isOperaMobile && isNativePointer(pointer)) {\n    getXY('screen', pointer, page);\n    page.x += window.scrollX;\n    page.y += window.scrollY;\n  } else {\n    getXY('page', pointer, page);\n  }\n\n  return page;\n}\nexport function getClientXY(pointer, client) {\n  client = client || {};\n\n  if (browser.isOperaMobile && isNativePointer(pointer)) {\n    // Opera Mobile handles the viewport and scrolling oddly\n    getXY('screen', pointer, client);\n  } else {\n    getXY('client', pointer, client);\n  }\n\n  return client;\n}\nexport function getPointerId(pointer) {\n  return is.number(pointer.pointerId) ? pointer.pointerId : pointer.identifier;\n}\nexport function setCoords(dest, pointers, timeStamp) {\n  const pointer = pointers.length > 1 ? pointerAverage(pointers) : pointers[0];\n  getPageXY(pointer, dest.page);\n  getClientXY(pointer, dest.client);\n  dest.timeStamp = timeStamp;\n}\nexport function getTouchPair(event) {\n  const touches = []; // array of touches is supplied\n\n  if (is.array(event)) {\n    touches[0] = event[0];\n    touches[1] = event[1];\n  } // an event\n  else {\n      if (event.type === 'touchend') {\n        if (event.touches.length === 1) {\n          touches[0] = event.touches[0];\n          touches[1] = event.changedTouches[0];\n        } else if (event.touches.length === 0) {\n          touches[0] = event.changedTouches[0];\n          touches[1] = event.changedTouches[1];\n        }\n      } else {\n        touches[0] = event.touches[0];\n        touches[1] = event.touches[1];\n      }\n    }\n\n  return touches;\n}\nexport function pointerAverage(pointers) {\n  const average = {\n    pageX: 0,\n    pageY: 0,\n    clientX: 0,\n    clientY: 0,\n    screenX: 0,\n    screenY: 0\n  };\n\n  for (const pointer of pointers) {\n    for (const prop in average) {\n      average[prop] += pointer[prop];\n    }\n  }\n\n  for (const prop in average) {\n    average[prop] /= pointers.length;\n  }\n\n  return average;\n}\nexport function touchBBox(event) {\n  if (!event.length) {\n    return null;\n  }\n\n  const touches = getTouchPair(event);\n  const minX = Math.min(touches[0].pageX, touches[1].pageX);\n  const minY = Math.min(touches[0].pageY, touches[1].pageY);\n  const maxX = Math.max(touches[0].pageX, touches[1].pageX);\n  const maxY = Math.max(touches[0].pageY, touches[1].pageY);\n  return {\n    x: minX,\n    y: minY,\n    left: minX,\n    top: minY,\n    right: maxX,\n    bottom: maxY,\n    width: maxX - minX,\n    height: maxY - minY\n  };\n}\nexport function touchDistance(event, deltaSource) {\n  const sourceX = deltaSource + 'X';\n  const sourceY = deltaSource + 'Y';\n  const touches = getTouchPair(event);\n  const dx = touches[0][sourceX] - touches[1][sourceX];\n  const dy = touches[0][sourceY] - touches[1][sourceY];\n  return hypot(dx, dy);\n}\nexport function touchAngle(event, deltaSource) {\n  const sourceX = deltaSource + 'X';\n  const sourceY = deltaSource + 'Y';\n  const touches = getTouchPair(event);\n  const dx = touches[1][sourceX] - touches[0][sourceX];\n  const dy = touches[1][sourceY] - touches[0][sourceY];\n  const angle = 180 * Math.atan2(dy, dx) / Math.PI;\n  return angle;\n}\nexport function getPointerType(pointer) {\n  return is.string(pointer.pointerType) ? pointer.pointerType : is.number(pointer.pointerType) ? [undefined, undefined, 'touch', 'pen', 'mouse'][pointer.pointerType] // if the PointerEvent API isn't available, then the \"pointer\" must\n  // be either a MouseEvent, TouchEvent, or Touch object\n  : /touch/.test(pointer.type) || pointer instanceof dom.Touch ? 'touch' : 'mouse';\n} // [ event.target, event.currentTarget ]\n\nexport function getEventTargets(event) {\n  const path = is.func(event.composedPath) ? event.composedPath() : event.path;\n  return [domUtils.getActualElement(path ? path[0] : event.target), domUtils.getActualElement(event.currentTarget)];\n}\nexport function newCoords() {\n  return {\n    page: {\n      x: 0,\n      y: 0\n    },\n    client: {\n      x: 0,\n      y: 0\n    },\n    timeStamp: 0\n  };\n}\nexport function coordsToEvent(coords) {\n  const event = {\n    coords,\n\n    get page() {\n      return this.coords.page;\n    },\n\n    get client() {\n      return this.coords.client;\n    },\n\n    get timeStamp() {\n      return this.coords.timeStamp;\n    },\n\n    get pageX() {\n      return this.coords.page.x;\n    },\n\n    get pageY() {\n      return this.coords.page.y;\n    },\n\n    get clientX() {\n      return this.coords.client.x;\n    },\n\n    get clientY() {\n      return this.coords.client.y;\n    },\n\n    get pointerId() {\n      return this.coords.pointerId;\n    },\n\n    get target() {\n      return this.coords.target;\n    },\n\n    get type() {\n      return this.coords.type;\n    },\n\n    get pointerType() {\n      return this.coords.pointerType;\n    },\n\n    get buttons() {\n      return this.coords.buttons;\n    },\n\n    preventDefault() {}\n\n  };\n  return event;\n}\nexport { pointerExtend };\n//# sourceMappingURL=pointerUtils.js.map","import { Scope } from \"./scope.js\";\nimport * as arr from \"../utils/arr.js\";\nimport * as domUtils from \"../utils/domUtils.js\";\nimport extend from \"../utils/extend.js\";\nimport is from \"../utils/is.js\";\nimport pExtend from \"../utils/pointerExtend.js\";\nimport * as pointerUtils from \"../utils/pointerUtils.js\";\n\nfunction install(scope) {\n  const targets = [];\n  const delegatedEvents = {};\n  const documents = [];\n  const eventsMethods = {\n    add,\n    remove,\n    addDelegate,\n    removeDelegate,\n    delegateListener,\n    delegateUseCapture,\n    delegatedEvents,\n    documents,\n    targets,\n    supportsOptions: false,\n    supportsPassive: false\n  }; // check if browser supports passive events and options arg\n\n  scope.document.createElement('div').addEventListener('test', null, {\n    get capture() {\n      return eventsMethods.supportsOptions = true;\n    },\n\n    get passive() {\n      return eventsMethods.supportsPassive = true;\n    }\n\n  });\n  scope.events = eventsMethods;\n\n  function add(eventTarget, type, listener, optionalArg) {\n    const options = getOptions(optionalArg);\n    let target = arr.find(targets, t => t.eventTarget === eventTarget);\n\n    if (!target) {\n      target = {\n        eventTarget,\n        events: {}\n      };\n      targets.push(target);\n    }\n\n    if (!target.events[type]) {\n      target.events[type] = [];\n    }\n\n    if (eventTarget.addEventListener && !arr.contains(target.events[type], listener)) {\n      eventTarget.addEventListener(type, listener, eventsMethods.supportsOptions ? options : options.capture);\n      target.events[type].push(listener);\n    }\n  }\n\n  function remove(eventTarget, type, listener, optionalArg) {\n    const options = getOptions(optionalArg);\n    const targetIndex = arr.findIndex(targets, t => t.eventTarget === eventTarget);\n    const target = targets[targetIndex];\n\n    if (!target || !target.events) {\n      return;\n    }\n\n    if (type === 'all') {\n      for (type in target.events) {\n        if (target.events.hasOwnProperty(type)) {\n          remove(eventTarget, type, 'all');\n        }\n      }\n\n      return;\n    }\n\n    let typeIsEmpty = false;\n    const typeListeners = target.events[type];\n\n    if (typeListeners) {\n      if (listener === 'all') {\n        for (let i = typeListeners.length - 1; i >= 0; i--) {\n          remove(eventTarget, type, typeListeners[i], options);\n        }\n\n        return;\n      } else {\n        for (let i = 0; i < typeListeners.length; i++) {\n          if (typeListeners[i] === listener) {\n            eventTarget.removeEventListener(type, listener, eventsMethods.supportsOptions ? options : options.capture);\n            typeListeners.splice(i, 1);\n\n            if (typeListeners.length === 0) {\n              delete target.events[type];\n              typeIsEmpty = true;\n            }\n\n            break;\n          }\n        }\n      }\n    }\n\n    if (typeIsEmpty && !Object.keys(target.events).length) {\n      targets.splice(targetIndex, 1);\n    }\n  }\n\n  function addDelegate(selector, context, type, listener, optionalArg) {\n    const options = getOptions(optionalArg);\n\n    if (!delegatedEvents[type]) {\n      delegatedEvents[type] = []; // add delegate listener functions\n\n      for (const doc of documents) {\n        add(doc, type, delegateListener);\n        add(doc, type, delegateUseCapture, true);\n      }\n    }\n\n    const delegates = delegatedEvents[type];\n    let delegate = arr.find(delegates, d => d.selector === selector && d.context === context);\n\n    if (!delegate) {\n      delegate = {\n        selector,\n        context,\n        listeners: []\n      };\n      delegates.push(delegate);\n    }\n\n    delegate.listeners.push([listener, options]);\n  }\n\n  function removeDelegate(selector, context, type, listener, optionalArg) {\n    const options = getOptions(optionalArg);\n    const delegates = delegatedEvents[type];\n    let matchFound = false;\n    let index;\n\n    if (!delegates) {\n      return;\n    } // count from last index of delegated to 0\n\n\n    for (index = delegates.length - 1; index >= 0; index--) {\n      const cur = delegates[index]; // look for matching selector and context Node\n\n      if (cur.selector === selector && cur.context === context) {\n        const {\n          listeners\n        } = cur; // each item of the listeners array is an array: [function, capture, passive]\n\n        for (let i = listeners.length - 1; i >= 0; i--) {\n          const [fn, {\n            capture,\n            passive\n          }] = listeners[i]; // check if the listener functions and capture and passive flags match\n\n          if (fn === listener && capture === options.capture && passive === options.passive) {\n            // remove the listener from the array of listeners\n            listeners.splice(i, 1); // if all listeners for this target have been removed\n            // remove the target from the delegates array\n\n            if (!listeners.length) {\n              delegates.splice(index, 1); // remove delegate function from context\n\n              remove(context, type, delegateListener);\n              remove(context, type, delegateUseCapture, true);\n            } // only remove one listener\n\n\n            matchFound = true;\n            break;\n          }\n        }\n\n        if (matchFound) {\n          break;\n        }\n      }\n    }\n  } // bound to the interactable context when a DOM event\n  // listener is added to a selector interactable\n\n\n  function delegateListener(event, optionalArg) {\n    const options = getOptions(optionalArg);\n    const fakeEvent = new FakeEvent(event);\n    const delegates = delegatedEvents[event.type];\n    const [eventTarget] = pointerUtils.getEventTargets(event);\n    let element = eventTarget; // climb up document tree looking for selector matches\n\n    while (is.element(element)) {\n      for (let i = 0; i < delegates.length; i++) {\n        const cur = delegates[i];\n        const {\n          selector,\n          context\n        } = cur;\n\n        if (domUtils.matchesSelector(element, selector) && domUtils.nodeContains(context, eventTarget) && domUtils.nodeContains(context, element)) {\n          const {\n            listeners\n          } = cur;\n          fakeEvent.currentTarget = element;\n\n          for (const [fn, {\n            capture,\n            passive\n          }] of listeners) {\n            if (capture === options.capture && passive === options.passive) {\n              fn(fakeEvent);\n            }\n          }\n        }\n      }\n\n      element = domUtils.parentNode(element);\n    }\n  }\n\n  function delegateUseCapture(event) {\n    return delegateListener.call(this, event, true);\n  } // for type inferrence\n\n\n  return eventsMethods;\n}\n\nclass FakeEvent {\n  constructor(originalEvent) {\n    this.currentTarget = void 0;\n    this.originalEvent = void 0;\n    this.type = void 0;\n    this.originalEvent = originalEvent; // duplicate the event so that currentTarget can be changed\n\n    pExtend(this, originalEvent);\n  }\n\n  preventOriginalDefault() {\n    this.originalEvent.preventDefault();\n  }\n\n  stopPropagation() {\n    this.originalEvent.stopPropagation();\n  }\n\n  stopImmediatePropagation() {\n    this.originalEvent.stopImmediatePropagation();\n  }\n\n}\n\nfunction getOptions(param) {\n  if (!is.object(param)) {\n    return {\n      capture: !!param,\n      passive: false\n    };\n  }\n\n  const options = extend({}, param);\n  options.capture = !!param.capture;\n  options.passive = !!param.passive;\n  return options;\n}\n\nexport default {\n  id: 'events',\n  install\n};\n//# sourceMappingURL=events.js.map","import { window } from \"./window.js\";\nexport function warnOnce(method, message) {\n  let warned = false;\n  return function () {\n    if (!warned) {\n      window.console.warn(message);\n      warned = true;\n    }\n\n    return method.apply(this, arguments);\n  };\n}\nexport function copyAction(dest, src) {\n  dest.name = src.name;\n  dest.axis = src.axis;\n  dest.edges = src.edges;\n  return dest;\n}\n//# sourceMappingURL=misc.js.map","/** @module interact */\nimport browser from \"../utils/browser.js\";\nimport * as domUtils from \"../utils/domUtils.js\";\nimport is from \"../utils/is.js\";\nimport * as pointerUtils from \"../utils/pointerUtils.js\";\nimport { warnOnce } from \"../utils/misc.js\";\nimport isNonNativeEvent from \"./isNonNativeEvent.js\";\nexport function createInteractStatic(scope) {\n  /**\n   * ```js\n   * interact('#draggable').draggable(true)\n   *\n   * var rectables = interact('rect')\n   * rectables\n   *   .gesturable(true)\n   *   .on('gesturemove', function (event) {\n   *       // ...\n   *   })\n   * ```\n   *\n   * The methods of this variable can be used to set elements as interactables\n   * and also to change various default settings.\n   *\n   * Calling it as a function and passing an element or a valid CSS selector\n   * string returns an Interactable object which has various methods to configure\n   * it.\n   *\n   * @global\n   *\n   * @param {Element | string} target The HTML or SVG Element to interact with\n   * or CSS selector\n   * @return {Interactable}\n   */\n  const interact = (target, options) => {\n    let interactable = scope.interactables.get(target, options);\n\n    if (!interactable) {\n      interactable = scope.interactables.new(target, options);\n      interactable.events.global = interact.globalEvents;\n    }\n\n    return interactable;\n  }; // expose the functions used to calculate multi-touch properties\n\n\n  interact.getPointerAverage = pointerUtils.pointerAverage;\n  interact.getTouchBBox = pointerUtils.touchBBox;\n  interact.getTouchDistance = pointerUtils.touchDistance;\n  interact.getTouchAngle = pointerUtils.touchAngle;\n  interact.getElementRect = domUtils.getElementRect;\n  interact.getElementClientRect = domUtils.getElementClientRect;\n  interact.matchesSelector = domUtils.matchesSelector;\n  interact.closest = domUtils.closest;\n  interact.globalEvents = {}; // eslint-disable-next-line no-undef\n\n  interact.version = \"1.10.2\";\n  interact.scope = scope;\n  /**\n  * Use a plugin\n  *\n  * @alias module:interact.use\n  *\n   */\n\n  interact.use = function (plugin, options) {\n    this.scope.usePlugin(plugin, options);\n    return this;\n  };\n  /**\n   * Check if an element or selector has been set with the {@link interact}\n   * function\n   *\n   * @alias module:interact.isSet\n   *\n   * @param {Target} target The Element or string being searched for\n   * @param {object} options\n   * @return {boolean} Indicates if the element or CSS selector was previously\n   * passed to interact\n   */\n\n\n  interact.isSet = function (target, options) {\n    return !!this.scope.interactables.get(target, options && options.context);\n  };\n  /**\n   * @deprecated\n   * Add a global listener for an InteractEvent or adds a DOM event to `document`\n   *\n   * @alias module:interact.on\n   *\n   * @param {string | array | object} type The types of events to listen for\n   * @param {function} listener The function event (s)\n   * @param {object | boolean} [options] object or useCapture flag for\n   * addEventListener\n   * @return {object} interact\n   */\n\n\n  interact.on = warnOnce(function on(type, listener, options) {\n    if (is.string(type) && type.search(' ') !== -1) {\n      type = type.trim().split(/ +/);\n    }\n\n    if (is.array(type)) {\n      for (const eventType of type) {\n        this.on(eventType, listener, options);\n      }\n\n      return this;\n    }\n\n    if (is.object(type)) {\n      for (const prop in type) {\n        this.on(prop, type[prop], listener);\n      }\n\n      return this;\n    } // if it is an InteractEvent type, add listener to globalEvents\n\n\n    if (isNonNativeEvent(type, this.scope.actions)) {\n      // if this type of event was never bound\n      if (!this.globalEvents[type]) {\n        this.globalEvents[type] = [listener];\n      } else {\n        this.globalEvents[type].push(listener);\n      }\n    } // If non InteractEvent type, addEventListener to document\n    else {\n        this.scope.events.add(this.scope.document, type, listener, {\n          options\n        });\n      }\n\n    return this;\n  }, 'The interact.on() method is being deprecated');\n  /**\n   * @deprecated\n   * Removes a global InteractEvent listener or DOM event from `document`\n   *\n   * @alias module:interact.off\n   *\n   * @param {string | array | object} type The types of events that were listened\n   * for\n   * @param {function} listener The listener function to be removed\n   * @param {object | boolean} options [options] object or useCapture flag for\n   * removeEventListener\n   * @return {object} interact\n   */\n\n  interact.off = warnOnce(function off(type, listener, options) {\n    if (is.string(type) && type.search(' ') !== -1) {\n      type = type.trim().split(/ +/);\n    }\n\n    if (is.array(type)) {\n      for (const eventType of type) {\n        this.off(eventType, listener, options);\n      }\n\n      return this;\n    }\n\n    if (is.object(type)) {\n      for (const prop in type) {\n        this.off(prop, type[prop], listener);\n      }\n\n      return this;\n    }\n\n    if (isNonNativeEvent(type, this.scope.actions)) {\n      let index;\n\n      if (type in this.globalEvents && (index = this.globalEvents[type].indexOf(listener)) !== -1) {\n        this.globalEvents[type].splice(index, 1);\n      }\n    } else {\n      this.scope.events.remove(this.scope.document, type, listener, options);\n    }\n\n    return this;\n  }, 'The interact.off() method is being deprecated');\n\n  interact.debug = function () {\n    return this.scope;\n  };\n  /**\n   * @alias module:interact.supportsTouch\n   *\n   * @return {boolean} Whether or not the browser supports touch input\n   */\n\n\n  interact.supportsTouch = function () {\n    return browser.supportsTouch;\n  };\n  /**\n   * @alias module:interact.supportsPointerEvent\n   *\n   * @return {boolean} Whether or not the browser supports PointerEvents\n   */\n\n\n  interact.supportsPointerEvent = function () {\n    return browser.supportsPointerEvent;\n  };\n  /**\n   * Cancels all interactions (end events are not fired)\n   *\n   * @alias module:interact.stop\n   *\n   * @return {object} interact\n   */\n\n\n  interact.stop = function () {\n    for (const interaction of this.scope.interactions.list) {\n      interaction.stop();\n    }\n\n    return this;\n  };\n  /**\n   * Returns or sets the distance the pointer must be moved before an action\n   * sequence occurs. This also affects tolerance for tap events.\n   *\n   * @alias module:interact.pointerMoveTolerance\n   *\n   * @param {number} [newValue] The movement from the start position must be greater than this value\n   * @return {interact | number}\n   */\n\n\n  interact.pointerMoveTolerance = function (newValue) {\n    if (is.number(newValue)) {\n      this.scope.interactions.pointerMoveTolerance = newValue;\n      return this;\n    }\n\n    return this.scope.interactions.pointerMoveTolerance;\n  };\n\n  interact.addDocument = function (doc, options) {\n    this.scope.addDocument(doc, options);\n  };\n\n  interact.removeDocument = function (doc) {\n    this.scope.removeDocument(doc);\n  };\n\n  return interact;\n}\n//# sourceMappingURL=interactStatic.js.map","export class PointerInfo {\n  constructor(id, pointer, event, downTime, downTarget) {\n    this.id = void 0;\n    this.pointer = void 0;\n    this.event = void 0;\n    this.downTime = void 0;\n    this.downTarget = void 0;\n    this.id = id;\n    this.pointer = pointer;\n    this.event = event;\n    this.downTime = downTime;\n    this.downTarget = downTarget;\n  }\n\n}\n//# sourceMappingURL=PointerInfo.js.map","import * as arr from \"../utils/arr.js\";\nimport extend from \"../utils/extend.js\";\nimport hypot from \"../utils/hypot.js\";\nimport { warnOnce, copyAction } from \"../utils/misc.js\";\nimport * as pointerUtils from \"../utils/pointerUtils.js\";\nimport * as rectUtils from \"../utils/rect.js\";\nimport { InteractEvent } from \"./InteractEvent.js\";\nimport { PointerInfo } from \"./PointerInfo.js\";\nexport let _ProxyValues;\n\n(function (_ProxyValues) {\n  _ProxyValues[\"interactable\"] = \"\";\n  _ProxyValues[\"element\"] = \"\";\n  _ProxyValues[\"prepared\"] = \"\";\n  _ProxyValues[\"pointerIsDown\"] = \"\";\n  _ProxyValues[\"pointerWasMoved\"] = \"\";\n  _ProxyValues[\"_proxy\"] = \"\";\n})(_ProxyValues || (_ProxyValues = {}));\n\nexport let _ProxyMethods;\n\n(function (_ProxyMethods) {\n  _ProxyMethods[\"start\"] = \"\";\n  _ProxyMethods[\"move\"] = \"\";\n  _ProxyMethods[\"end\"] = \"\";\n  _ProxyMethods[\"stop\"] = \"\";\n  _ProxyMethods[\"interacting\"] = \"\";\n})(_ProxyMethods || (_ProxyMethods = {}));\n\nlet idCounter = 0;\nexport class Interaction {\n  // current interactable being interacted with\n  // the target element of the interactable\n  // action that's ready to be fired on next move event\n  // keep track of added pointers\n  // pointerdown/mousedown/touchstart event\n  // previous action event\n\n  /** @internal */\n  get pointerMoveTolerance() {\n    return 1;\n  }\n  /**\n   * @alias Interaction.prototype.move\n   */\n\n\n  /** */\n  constructor({\n    pointerType,\n    scopeFire\n  }) {\n    this.interactable = null;\n    this.element = null;\n    this.rect = void 0;\n    this._rects = void 0;\n    this.edges = void 0;\n    this._scopeFire = void 0;\n    this.prepared = {\n      name: null,\n      axis: null,\n      edges: null\n    };\n    this.pointerType = void 0;\n    this.pointers = [];\n    this.downEvent = null;\n    this.downPointer = {};\n    this._latestPointer = {\n      pointer: null,\n      event: null,\n      eventTarget: null\n    };\n    this.prevEvent = null;\n    this.pointerIsDown = false;\n    this.pointerWasMoved = false;\n    this._interacting = false;\n    this._ending = false;\n    this._stopped = true;\n    this._proxy = null;\n    this.simulation = null;\n    this.doMove = warnOnce(function (signalArg) {\n      this.move(signalArg);\n    }, 'The interaction.doMove() method has been renamed to interaction.move()');\n    this.coords = {\n      // Starting InteractEvent pointer coordinates\n      start: pointerUtils.newCoords(),\n      // Previous native pointer move event coordinates\n      prev: pointerUtils.newCoords(),\n      // current native pointer move event coordinates\n      cur: pointerUtils.newCoords(),\n      // Change in coordinates and time of the pointer\n      delta: pointerUtils.newCoords(),\n      // pointer velocity\n      velocity: pointerUtils.newCoords()\n    };\n    this._id = idCounter++;\n    this._scopeFire = scopeFire;\n    this.pointerType = pointerType;\n    const that = this;\n    this._proxy = {};\n\n    for (const key in _ProxyValues) {\n      Object.defineProperty(this._proxy, key, {\n        get() {\n          return that[key];\n        }\n\n      });\n    }\n\n    for (const key in _ProxyMethods) {\n      Object.defineProperty(this._proxy, key, {\n        value: (...args) => that[key](...args)\n      });\n    }\n\n    this._scopeFire('interactions:new', {\n      interaction: this\n    });\n  }\n\n  pointerDown(pointer, event, eventTarget) {\n    const pointerIndex = this.updatePointer(pointer, event, eventTarget, true);\n    const pointerInfo = this.pointers[pointerIndex];\n\n    this._scopeFire('interactions:down', {\n      pointer,\n      event,\n      eventTarget,\n      pointerIndex,\n      pointerInfo,\n      type: 'down',\n      interaction: this\n    });\n  }\n  /**\n   * ```js\n   * interact(target)\n   *   .draggable({\n   *     // disable the default drag start by down->move\n   *     manualStart: true\n   *   })\n   *   // start dragging after the user holds the pointer down\n   *   .on('hold', function (event) {\n   *     var interaction = event.interaction\n   *\n   *     if (!interaction.interacting()) {\n   *       interaction.start({ name: 'drag' },\n   *                         event.interactable,\n   *                         event.currentTarget)\n   *     }\n   * })\n   * ```\n   *\n   * Start an action with the given Interactable and Element as tartgets. The\n   * action must be enabled for the target Interactable and an appropriate\n   * number of pointers must be held down - 1 for drag/resize, 2 for gesture.\n   *\n   * Use it with `interactable.<action>able({ manualStart: false })` to always\n   * [start actions manually](https://github.com/taye/interact.js/issues/114)\n   *\n   * @param {object} action   The action to be performed - drag, resize, etc.\n   * @param {Interactable} target  The Interactable to target\n   * @param {Element} element The DOM Element to target\n   * @return {Boolean} Whether the interaction was successfully started\n   */\n\n\n  start(action, interactable, element) {\n    if (this.interacting() || !this.pointerIsDown || this.pointers.length < (action.name === 'gesture' ? 2 : 1) || !interactable.options[action.name].enabled) {\n      return false;\n    }\n\n    copyAction(this.prepared, action);\n    this.interactable = interactable;\n    this.element = element;\n    this.rect = interactable.getRect(element);\n    this.edges = this.prepared.edges ? extend({}, this.prepared.edges) : {\n      left: true,\n      right: true,\n      top: true,\n      bottom: true\n    };\n    this._stopped = false;\n    this._interacting = this._doPhase({\n      interaction: this,\n      event: this.downEvent,\n      phase: 'start'\n    }) && !this._stopped;\n    return this._interacting;\n  }\n\n  pointerMove(pointer, event, eventTarget) {\n    if (!this.simulation && !(this.modification && this.modification.endResult)) {\n      this.updatePointer(pointer, event, eventTarget, false);\n    }\n\n    const duplicateMove = this.coords.cur.page.x === this.coords.prev.page.x && this.coords.cur.page.y === this.coords.prev.page.y && this.coords.cur.client.x === this.coords.prev.client.x && this.coords.cur.client.y === this.coords.prev.client.y;\n    let dx;\n    let dy; // register movement greater than pointerMoveTolerance\n\n    if (this.pointerIsDown && !this.pointerWasMoved) {\n      dx = this.coords.cur.client.x - this.coords.start.client.x;\n      dy = this.coords.cur.client.y - this.coords.start.client.y;\n      this.pointerWasMoved = hypot(dx, dy) > this.pointerMoveTolerance;\n    }\n\n    const pointerIndex = this.getPointerIndex(pointer);\n    const signalArg = {\n      pointer,\n      pointerIndex,\n      pointerInfo: this.pointers[pointerIndex],\n      event,\n      type: 'move',\n      eventTarget,\n      dx,\n      dy,\n      duplicate: duplicateMove,\n      interaction: this\n    };\n\n    if (!duplicateMove) {\n      // set pointer coordinate, time changes and velocity\n      pointerUtils.setCoordVelocity(this.coords.velocity, this.coords.delta);\n    }\n\n    this._scopeFire('interactions:move', signalArg);\n\n    if (!duplicateMove && !this.simulation) {\n      // if interacting, fire an 'action-move' signal etc\n      if (this.interacting()) {\n        signalArg.type = null;\n        this.move(signalArg);\n      }\n\n      if (this.pointerWasMoved) {\n        pointerUtils.copyCoords(this.coords.prev, this.coords.cur);\n      }\n    }\n  }\n  /**\n   * ```js\n   * interact(target)\n   *   .draggable(true)\n   *   .on('dragmove', function (event) {\n   *     if (someCondition) {\n   *       // change the snap settings\n   *       event.interactable.draggable({ snap: { targets: [] }})\n   *       // fire another move event with re-calculated snap\n   *       event.interaction.move()\n   *     }\n   *   })\n   * ```\n   *\n   * Force a move of the current action at the same coordinates. Useful if\n   * snap/restrict has been changed and you want a movement with the new\n   * settings.\n   */\n\n\n  move(signalArg) {\n    if (!signalArg || !signalArg.event) {\n      pointerUtils.setZeroCoords(this.coords.delta);\n    }\n\n    signalArg = extend({\n      pointer: this._latestPointer.pointer,\n      event: this._latestPointer.event,\n      eventTarget: this._latestPointer.eventTarget,\n      interaction: this\n    }, signalArg || {});\n    signalArg.phase = 'move';\n\n    this._doPhase(signalArg);\n  } // End interact move events and stop auto-scroll unless simulation is running\n\n\n  pointerUp(pointer, event, eventTarget, curEventTarget) {\n    let pointerIndex = this.getPointerIndex(pointer);\n\n    if (pointerIndex === -1) {\n      pointerIndex = this.updatePointer(pointer, event, eventTarget, false);\n    }\n\n    const type = /cancel$/i.test(event.type) ? 'cancel' : 'up';\n\n    this._scopeFire(`interactions:${type}`, {\n      pointer,\n      pointerIndex,\n      pointerInfo: this.pointers[pointerIndex],\n      event,\n      eventTarget,\n      type: type,\n      curEventTarget,\n      interaction: this\n    });\n\n    if (!this.simulation) {\n      this.end(event);\n    }\n\n    this.removePointer(pointer, event);\n  }\n\n  documentBlur(event) {\n    this.end(event);\n\n    this._scopeFire('interactions:blur', {\n      event,\n      type: 'blur',\n      interaction: this\n    });\n  }\n  /**\n   * ```js\n   * interact(target)\n   *   .draggable(true)\n   *   .on('move', function (event) {\n   *     if (event.pageX > 1000) {\n   *       // end the current action\n   *       event.interaction.end()\n   *       // stop all further listeners from being called\n   *       event.stopImmediatePropagation()\n   *     }\n   *   })\n   * ```\n   *\n   * @param {PointerEvent} [event]\n   */\n\n\n  end(event) {\n    this._ending = true;\n    event = event || this._latestPointer.event;\n    let endPhaseResult;\n\n    if (this.interacting()) {\n      endPhaseResult = this._doPhase({\n        event,\n        interaction: this,\n        phase: 'end'\n      });\n    }\n\n    this._ending = false;\n\n    if (endPhaseResult === true) {\n      this.stop();\n    }\n  }\n\n  currentAction() {\n    return this._interacting ? this.prepared.name : null;\n  }\n\n  interacting() {\n    return this._interacting;\n  }\n  /** */\n\n\n  stop() {\n    this._scopeFire('interactions:stop', {\n      interaction: this\n    });\n\n    this.interactable = this.element = null;\n    this._interacting = false;\n    this._stopped = true;\n    this.prepared.name = this.prevEvent = null;\n  }\n\n  getPointerIndex(pointer) {\n    const pointerId = pointerUtils.getPointerId(pointer); // mouse and pen interactions may have only one pointer\n\n    return this.pointerType === 'mouse' || this.pointerType === 'pen' ? this.pointers.length - 1 : arr.findIndex(this.pointers, curPointer => curPointer.id === pointerId);\n  }\n\n  getPointerInfo(pointer) {\n    return this.pointers[this.getPointerIndex(pointer)];\n  }\n\n  updatePointer(pointer, event, eventTarget, down) {\n    const id = pointerUtils.getPointerId(pointer);\n    let pointerIndex = this.getPointerIndex(pointer);\n    let pointerInfo = this.pointers[pointerIndex];\n    down = down === false ? false : down || /(down|start)$/i.test(event.type);\n\n    if (!pointerInfo) {\n      pointerInfo = new PointerInfo(id, pointer, event, null, null);\n      pointerIndex = this.pointers.length;\n      this.pointers.push(pointerInfo);\n    } else {\n      pointerInfo.pointer = pointer;\n    }\n\n    pointerUtils.setCoords(this.coords.cur, this.pointers.map(p => p.pointer), this._now());\n    pointerUtils.setCoordDeltas(this.coords.delta, this.coords.prev, this.coords.cur);\n\n    if (down) {\n      this.pointerIsDown = true;\n      pointerInfo.downTime = this.coords.cur.timeStamp;\n      pointerInfo.downTarget = eventTarget;\n      pointerUtils.pointerExtend(this.downPointer, pointer);\n\n      if (!this.interacting()) {\n        pointerUtils.copyCoords(this.coords.start, this.coords.cur);\n        pointerUtils.copyCoords(this.coords.prev, this.coords.cur);\n        this.downEvent = event;\n        this.pointerWasMoved = false;\n      }\n    }\n\n    this._updateLatestPointer(pointer, event, eventTarget);\n\n    this._scopeFire('interactions:update-pointer', {\n      pointer,\n      event,\n      eventTarget,\n      down,\n      pointerInfo,\n      pointerIndex,\n      interaction: this\n    });\n\n    return pointerIndex;\n  }\n\n  removePointer(pointer, event) {\n    const pointerIndex = this.getPointerIndex(pointer);\n\n    if (pointerIndex === -1) {\n      return;\n    }\n\n    const pointerInfo = this.pointers[pointerIndex];\n\n    this._scopeFire('interactions:remove-pointer', {\n      pointer,\n      event,\n      eventTarget: null,\n      pointerIndex,\n      pointerInfo,\n      interaction: this\n    });\n\n    this.pointers.splice(pointerIndex, 1);\n    this.pointerIsDown = false;\n  }\n\n  _updateLatestPointer(pointer, event, eventTarget) {\n    this._latestPointer.pointer = pointer;\n    this._latestPointer.event = event;\n    this._latestPointer.eventTarget = eventTarget;\n  }\n\n  destroy() {\n    this._latestPointer.pointer = null;\n    this._latestPointer.event = null;\n    this._latestPointer.eventTarget = null;\n  }\n\n  _createPreparedEvent(event, phase, preEnd, type) {\n    return new InteractEvent(this, event, this.prepared.name, phase, this.element, preEnd, type);\n  }\n\n  _fireEvent(iEvent) {\n    this.interactable.fire(iEvent);\n\n    if (!this.prevEvent || iEvent.timeStamp >= this.prevEvent.timeStamp) {\n      this.prevEvent = iEvent;\n    }\n  }\n\n  _doPhase(signalArg) {\n    const {\n      event,\n      phase,\n      preEnd,\n      type\n    } = signalArg;\n    const {\n      rect\n    } = this;\n\n    if (rect && phase === 'move') {\n      // update the rect changes due to pointer move\n      rectUtils.addEdges(this.edges, rect, this.coords.delta[this.interactable.options.deltaSource]);\n      rect.width = rect.right - rect.left;\n      rect.height = rect.bottom - rect.top;\n    }\n\n    const beforeResult = this._scopeFire(`interactions:before-action-${phase}`, signalArg);\n\n    if (beforeResult === false) {\n      return false;\n    }\n\n    const iEvent = signalArg.iEvent = this._createPreparedEvent(event, phase, preEnd, type);\n\n    this._scopeFire(`interactions:action-${phase}`, signalArg);\n\n    if (phase === 'start') {\n      this.prevEvent = iEvent;\n    }\n\n    this._fireEvent(iEvent);\n\n    this._scopeFire(`interactions:after-action-${phase}`, signalArg);\n\n    return true;\n  }\n\n  _now() {\n    return Date.now();\n  }\n\n}\nexport default Interaction;\nexport { PointerInfo };\n//# sourceMappingURL=Interaction.js.map","import { Interactable } from \"./Interactable.js\";\nimport { matchesSelector, nodeContains } from \"../utils/domUtils.js\";\nimport is from \"../utils/is.js\";\nimport { getWindow } from \"../utils/window.js\";\n\nfunction preventDefault(newValue) {\n  if (/^(always|never|auto)$/.test(newValue)) {\n    this.options.preventDefault = newValue;\n    return this;\n  }\n\n  if (is.bool(newValue)) {\n    this.options.preventDefault = newValue ? 'always' : 'never';\n    return this;\n  }\n\n  return this.options.preventDefault;\n}\n\nfunction checkAndPreventDefault(interactable, scope, event) {\n  const setting = interactable.options.preventDefault;\n\n  if (setting === 'never') {\n    return;\n  }\n\n  if (setting === 'always') {\n    event.preventDefault();\n    return;\n  } // setting === 'auto'\n  // if the browser supports passive event listeners and isn't running on iOS,\n  // don't preventDefault of touch{start,move} events. CSS touch-action and\n  // user-select should be used instead of calling event.preventDefault().\n\n\n  if (scope.events.supportsPassive && /^touch(start|move)$/.test(event.type)) {\n    const doc = getWindow(event.target).document;\n    const docOptions = scope.getDocOptions(doc);\n\n    if (!(docOptions && docOptions.events) || docOptions.events.passive !== false) {\n      return;\n    }\n  } // don't preventDefault of pointerdown events\n\n\n  if (/^(mouse|pointer|touch)*(down|start)/i.test(event.type)) {\n    return;\n  } // don't preventDefault on editable elements\n\n\n  if (is.element(event.target) && matchesSelector(event.target, 'input,select,textarea,[contenteditable=true],[contenteditable=true] *')) {\n    return;\n  }\n\n  event.preventDefault();\n}\n\nfunction onInteractionEvent({\n  interaction,\n  event\n}) {\n  if (interaction.interactable) {\n    interaction.interactable.checkAndPreventDefault(event);\n  }\n}\n\nexport function install(scope) {\n  /** @lends Interactable */\n  const {\n    Interactable\n  } = scope;\n  /**\n   * Returns or sets whether to prevent the browser's default behaviour in\n   * response to pointer events. Can be set to:\n   *  - `'always'` to always prevent\n   *  - `'never'` to never prevent\n   *  - `'auto'` to let interact.js try to determine what would be best\n   *\n   * @param {string} [newValue] `'always'`, `'never'` or `'auto'`\n   * @return {string | Interactable} The current setting or this Interactable\n   */\n\n  Interactable.prototype.preventDefault = preventDefault;\n\n  Interactable.prototype.checkAndPreventDefault = function (event) {\n    return checkAndPreventDefault(this, scope, event);\n  }; // prevent native HTML5 drag on interact.js target elements\n\n\n  scope.interactions.docEvents.push({\n    type: 'dragstart',\n\n    listener(event) {\n      for (const interaction of scope.interactions.list) {\n        if (interaction.element && (interaction.element === event.target || nodeContains(interaction.element, event.target))) {\n          interaction.interactable.checkAndPreventDefault(event);\n          return;\n        }\n      }\n    }\n\n  });\n}\nexport default {\n  id: 'core/interactablePreventDefault',\n  install,\n  listeners: ['down', 'move', 'up', 'cancel'].reduce((acc, eventType) => {\n    acc[`interactions:${eventType}`] = onInteractionEvent;\n    return acc;\n  }, {})\n};\n//# sourceMappingURL=interactablePreventDefault.js.map","import * as dom from \"../utils/domUtils.js\";\nconst finder = {\n  methodOrder: ['simulationResume', 'mouseOrPen', 'hasPointer', 'idle'],\n\n  search(details) {\n    for (const method of finder.methodOrder) {\n      const interaction = finder[method](details);\n\n      if (interaction) {\n        return interaction;\n      }\n    }\n\n    return null;\n  },\n\n  // try to resume simulation with a new pointer\n  simulationResume({\n    pointerType,\n    eventType,\n    eventTarget,\n    scope\n  }) {\n    if (!/down|start/i.test(eventType)) {\n      return null;\n    }\n\n    for (const interaction of scope.interactions.list) {\n      let element = eventTarget;\n\n      if (interaction.simulation && interaction.simulation.allowResume && interaction.pointerType === pointerType) {\n        while (element) {\n          // if the element is the interaction element\n          if (element === interaction.element) {\n            return interaction;\n          }\n\n          element = dom.parentNode(element);\n        }\n      }\n    }\n\n    return null;\n  },\n\n  // if it's a mouse or pen interaction\n  mouseOrPen({\n    pointerId,\n    pointerType,\n    eventType,\n    scope\n  }) {\n    if (pointerType !== 'mouse' && pointerType !== 'pen') {\n      return null;\n    }\n\n    let firstNonActive;\n\n    for (const interaction of scope.interactions.list) {\n      if (interaction.pointerType === pointerType) {\n        // if it's a down event, skip interactions with running simulations\n        if (interaction.simulation && !hasPointerId(interaction, pointerId)) {\n          continue;\n        } // if the interaction is active, return it immediately\n\n\n        if (interaction.interacting()) {\n          return interaction;\n        } // otherwise save it and look for another active interaction\n        else if (!firstNonActive) {\n            firstNonActive = interaction;\n          }\n      }\n    } // if no active mouse interaction was found use the first inactive mouse\n    // interaction\n\n\n    if (firstNonActive) {\n      return firstNonActive;\n    } // find any mouse or pen interaction.\n    // ignore the interaction if the eventType is a *down, and a simulation\n    // is active\n\n\n    for (const interaction of scope.interactions.list) {\n      if (interaction.pointerType === pointerType && !(/down/i.test(eventType) && interaction.simulation)) {\n        return interaction;\n      }\n    }\n\n    return null;\n  },\n\n  // get interaction that has this pointer\n  hasPointer({\n    pointerId,\n    scope\n  }) {\n    for (const interaction of scope.interactions.list) {\n      if (hasPointerId(interaction, pointerId)) {\n        return interaction;\n      }\n    }\n\n    return null;\n  },\n\n  // get first idle interaction with a matching pointerType\n  idle({\n    pointerType,\n    scope\n  }) {\n    for (const interaction of scope.interactions.list) {\n      // if there's already a pointer held down\n      if (interaction.pointers.length === 1) {\n        const target = interaction.interactable; // don't add this pointer if there is a target interactable and it\n        // isn't gesturable\n\n        if (target && !(target.options.gesture && target.options.gesture.enabled)) {\n          continue;\n        }\n      } // maximum of 2 pointers per interaction\n      else if (interaction.pointers.length >= 2) {\n          continue;\n        }\n\n      if (!interaction.interacting() && pointerType === interaction.pointerType) {\n        return interaction;\n      }\n    }\n\n    return null;\n  }\n\n};\n\nfunction hasPointerId(interaction, pointerId) {\n  return interaction.pointers.some(({\n    id\n  }) => id === pointerId);\n}\n\nexport default finder;\n//# sourceMappingURL=interactionFinder.js.map","import { Scope, SignalArgs } from \"./scope.js\";\nimport browser from \"../utils/browser.js\";\nimport domObjects from \"../utils/domObjects.js\";\nimport { nodeContains } from \"../utils/domUtils.js\";\nimport * as pointerUtils from \"../utils/pointerUtils.js\";\nimport InteractionBase from \"./Interaction.js\";\nimport interactablePreventDefault from \"./interactablePreventDefault.js\";\nimport finder from \"./interactionFinder.js\";\nconst methodNames = ['pointerDown', 'pointerMove', 'pointerUp', 'updatePointer', 'removePointer', 'windowBlur'];\n\nfunction install(scope) {\n  const listeners = {};\n\n  for (const method of methodNames) {\n    listeners[method] = doOnInteractions(method, scope);\n  }\n\n  const pEventTypes = browser.pEventTypes;\n  let docEvents;\n\n  if (domObjects.PointerEvent) {\n    docEvents = [{\n      type: pEventTypes.down,\n      listener: releasePointersOnRemovedEls\n    }, {\n      type: pEventTypes.down,\n      listener: listeners.pointerDown\n    }, {\n      type: pEventTypes.move,\n      listener: listeners.pointerMove\n    }, {\n      type: pEventTypes.up,\n      listener: listeners.pointerUp\n    }, {\n      type: pEventTypes.cancel,\n      listener: listeners.pointerUp\n    }];\n  } else {\n    docEvents = [{\n      type: 'mousedown',\n      listener: listeners.pointerDown\n    }, {\n      type: 'mousemove',\n      listener: listeners.pointerMove\n    }, {\n      type: 'mouseup',\n      listener: listeners.pointerUp\n    }, {\n      type: 'touchstart',\n      listener: releasePointersOnRemovedEls\n    }, {\n      type: 'touchstart',\n      listener: listeners.pointerDown\n    }, {\n      type: 'touchmove',\n      listener: listeners.pointerMove\n    }, {\n      type: 'touchend',\n      listener: listeners.pointerUp\n    }, {\n      type: 'touchcancel',\n      listener: listeners.pointerUp\n    }];\n  }\n\n  docEvents.push({\n    type: 'blur',\n\n    listener(event) {\n      for (const interaction of scope.interactions.list) {\n        interaction.documentBlur(event);\n      }\n    }\n\n  }); // for ignoring browser's simulated mouse events\n\n  scope.prevTouchTime = 0;\n  scope.Interaction = class extends InteractionBase {\n    get pointerMoveTolerance() {\n      return scope.interactions.pointerMoveTolerance;\n    }\n\n    set pointerMoveTolerance(value) {\n      scope.interactions.pointerMoveTolerance = value;\n    }\n\n    _now() {\n      return scope.now();\n    }\n\n  };\n  scope.interactions = {\n    // all active and idle interactions\n    list: [],\n\n    new(options) {\n      options.scopeFire = (name, arg) => scope.fire(name, arg);\n\n      const interaction = new scope.Interaction(options);\n      scope.interactions.list.push(interaction);\n      return interaction;\n    },\n\n    listeners,\n    docEvents,\n    pointerMoveTolerance: 1\n  };\n\n  function releasePointersOnRemovedEls() {\n    // for all inactive touch interactions with pointers down\n    for (const interaction of scope.interactions.list) {\n      if (!interaction.pointerIsDown || interaction.pointerType !== 'touch' || interaction._interacting) {\n        continue;\n      } // if a pointer is down on an element that is no longer in the DOM tree\n\n\n      for (const pointer of interaction.pointers) {\n        if (!scope.documents.some(({\n          doc\n        }) => nodeContains(doc, pointer.downTarget))) {\n          // remove the pointer from the interaction\n          interaction.removePointer(pointer.pointer, pointer.event);\n        }\n      }\n    }\n  }\n\n  scope.usePlugin(interactablePreventDefault);\n}\n\nfunction doOnInteractions(method, scope) {\n  return function (event) {\n    const interactions = scope.interactions.list;\n    const pointerType = pointerUtils.getPointerType(event);\n    const [eventTarget, curEventTarget] = pointerUtils.getEventTargets(event);\n    const matches = []; // [ [pointer, interaction], ...]\n\n    if (/^touch/.test(event.type)) {\n      scope.prevTouchTime = scope.now(); // @ts-expect-error\n\n      for (const changedTouch of event.changedTouches) {\n        const pointer = changedTouch;\n        const pointerId = pointerUtils.getPointerId(pointer);\n        const searchDetails = {\n          pointer,\n          pointerId,\n          pointerType,\n          eventType: event.type,\n          eventTarget,\n          curEventTarget,\n          scope\n        };\n        const interaction = getInteraction(searchDetails);\n        matches.push([searchDetails.pointer, searchDetails.eventTarget, searchDetails.curEventTarget, interaction]);\n      }\n    } else {\n      let invalidPointer = false;\n\n      if (!browser.supportsPointerEvent && /mouse/.test(event.type)) {\n        // ignore mouse events while touch interactions are active\n        for (let i = 0; i < interactions.length && !invalidPointer; i++) {\n          invalidPointer = interactions[i].pointerType !== 'mouse' && interactions[i].pointerIsDown;\n        } // try to ignore mouse events that are simulated by the browser\n        // after a touch event\n\n\n        invalidPointer = invalidPointer || scope.now() - scope.prevTouchTime < 500 || // on iOS and Firefox Mobile, MouseEvent.timeStamp is zero if simulated\n        event.timeStamp === 0;\n      }\n\n      if (!invalidPointer) {\n        const searchDetails = {\n          pointer: event,\n          pointerId: pointerUtils.getPointerId(event),\n          pointerType,\n          eventType: event.type,\n          curEventTarget,\n          eventTarget,\n          scope\n        };\n        const interaction = getInteraction(searchDetails);\n        matches.push([searchDetails.pointer, searchDetails.eventTarget, searchDetails.curEventTarget, interaction]);\n      }\n    } // eslint-disable-next-line no-shadow\n\n\n    for (const [pointer, eventTarget, curEventTarget, interaction] of matches) {\n      interaction[method](pointer, event, eventTarget, curEventTarget);\n    }\n  };\n}\n\nfunction getInteraction(searchDetails) {\n  const {\n    pointerType,\n    scope\n  } = searchDetails;\n  const foundInteraction = finder.search(searchDetails);\n  const signalArg = {\n    interaction: foundInteraction,\n    searchDetails\n  };\n  scope.fire('interactions:find', signalArg);\n  return signalArg.interaction || scope.interactions.new({\n    pointerType\n  });\n}\n\nfunction onDocSignal({\n  doc,\n  scope,\n  options\n}, eventMethodName) {\n  const {\n    interactions: {\n      docEvents\n    },\n    events\n  } = scope;\n  const eventMethod = events[eventMethodName];\n\n  if (scope.browser.isIOS && !options.events) {\n    options.events = {\n      passive: false\n    };\n  } // delegate event listener\n\n\n  for (const eventType in events.delegatedEvents) {\n    eventMethod(doc, eventType, events.delegateListener);\n    eventMethod(doc, eventType, events.delegateUseCapture, true);\n  }\n\n  const eventOptions = options && options.events;\n\n  for (const {\n    type,\n    listener\n  } of docEvents) {\n    eventMethod(doc, type, listener, eventOptions);\n  }\n}\n\nconst interactions = {\n  id: 'core/interactions',\n  install,\n  listeners: {\n    'scope:add-document': arg => onDocSignal(arg, 'add'),\n    'scope:remove-document': arg => onDocSignal(arg, 'remove'),\n    'interactable:unset': ({\n      interactable\n    }, scope) => {\n      // Stop and destroy related interactions when an Interactable is unset\n      for (let i = scope.interactions.list.length - 1; i >= 0; i--) {\n        const interaction = scope.interactions.list[i];\n\n        if (interaction.interactable !== interactable) {\n          continue;\n        }\n\n        interaction.stop();\n        scope.fire('interactions:destroy', {\n          interaction\n        });\n        interaction.destroy();\n\n        if (scope.interactions.list.length > 2) {\n          scope.interactions.list.splice(i, 1);\n        }\n      }\n    }\n  },\n  onDocSignal,\n  doOnInteractions,\n  methodNames\n};\nexport default interactions;\n//# sourceMappingURL=interactions.js.map","import browser from \"../utils/browser.js\";\nimport clone from \"../utils/clone.js\";\nimport domObjects from \"../utils/domObjects.js\";\nimport extend from \"../utils/extend.js\";\nimport raf from \"../utils/raf.js\";\nimport * as win from \"../utils/window.js\";\nimport { Eventable } from \"./Eventable.js\";\nimport { InteractEvent } from \"./InteractEvent.js\";\nimport { Interactable as InteractableBase } from \"./Interactable.js\";\nimport { InteractableSet } from \"./InteractableSet.js\";\nimport { defaults } from \"./defaultOptions.js\";\nimport events from \"./events.js\";\nimport { createInteractStatic } from \"./interactStatic.js\";\nimport interactions from \"./interactions.js\";\nexport class Scope {\n  // main window\n  // main document\n  // main window\n  // all documents being listened to\n  constructor() {\n    this.id = `__interact_scope_${Math.floor(Math.random() * 100)}`;\n    this.isInitialized = false;\n    this.listenerMaps = [];\n    this.browser = browser;\n    this.defaults = clone(defaults);\n    this.Eventable = Eventable;\n    this.actions = {\n      map: {},\n      phases: {\n        start: true,\n        move: true,\n        end: true\n      },\n      methodDict: {},\n      phaselessTypes: {}\n    };\n    this.interactStatic = createInteractStatic(this);\n    this.InteractEvent = InteractEvent;\n    this.Interactable = void 0;\n    this.interactables = new InteractableSet(this);\n    this._win = void 0;\n    this.document = void 0;\n    this.window = void 0;\n    this.documents = [];\n    this._plugins = {\n      list: [],\n      map: {}\n    };\n\n    this.onWindowUnload = event => this.removeDocument(event.target);\n\n    const scope = this;\n    this.Interactable = class extends InteractableBase {\n      get _defaults() {\n        return scope.defaults;\n      }\n\n      set(options) {\n        super.set(options);\n        scope.fire('interactable:set', {\n          options,\n          interactable: this\n        });\n        return this;\n      }\n\n      unset() {\n        super.unset();\n        scope.interactables.list.splice(scope.interactables.list.indexOf(this), 1);\n        scope.fire('interactable:unset', {\n          interactable: this\n        });\n      }\n\n    };\n  }\n\n  addListeners(map, id) {\n    this.listenerMaps.push({\n      id,\n      map\n    });\n  }\n\n  fire(name, arg) {\n    for (const {\n      map: {\n        [name]: listener\n      }\n    } of this.listenerMaps) {\n      if (!!listener && listener(arg, this, name) === false) {\n        return false;\n      }\n    }\n  }\n\n  init(window) {\n    return this.isInitialized ? this : initScope(this, window);\n  }\n\n  pluginIsInstalled(plugin) {\n    return this._plugins.map[plugin.id] || this._plugins.list.indexOf(plugin) !== -1;\n  }\n\n  usePlugin(plugin, options) {\n    if (!this.isInitialized) {\n      return this;\n    }\n\n    if (this.pluginIsInstalled(plugin)) {\n      return this;\n    }\n\n    if (plugin.id) {\n      this._plugins.map[plugin.id] = plugin;\n    }\n\n    this._plugins.list.push(plugin);\n\n    if (plugin.install) {\n      plugin.install(this, options);\n    }\n\n    if (plugin.listeners && plugin.before) {\n      let index = 0;\n      const len = this.listenerMaps.length;\n      const before = plugin.before.reduce((acc, id) => {\n        acc[id] = true;\n        acc[pluginIdRoot(id)] = true;\n        return acc;\n      }, {});\n\n      for (; index < len; index++) {\n        const otherId = this.listenerMaps[index].id;\n\n        if (before[otherId] || before[pluginIdRoot(otherId)]) {\n          break;\n        }\n      }\n\n      this.listenerMaps.splice(index, 0, {\n        id: plugin.id,\n        map: plugin.listeners\n      });\n    } else if (plugin.listeners) {\n      this.listenerMaps.push({\n        id: plugin.id,\n        map: plugin.listeners\n      });\n    }\n\n    return this;\n  }\n\n  addDocument(doc, options) {\n    // do nothing if document is already known\n    if (this.getDocIndex(doc) !== -1) {\n      return false;\n    }\n\n    const window = win.getWindow(doc);\n    options = options ? extend({}, options) : {};\n    this.documents.push({\n      doc,\n      options\n    });\n    this.events.documents.push(doc); // don't add an unload event for the main document\n    // so that the page may be cached in browser history\n\n    if (doc !== this.document) {\n      this.events.add(window, 'unload', this.onWindowUnload);\n    }\n\n    this.fire('scope:add-document', {\n      doc,\n      window,\n      scope: this,\n      options\n    });\n  }\n\n  removeDocument(doc) {\n    const index = this.getDocIndex(doc);\n    const window = win.getWindow(doc);\n    const options = this.documents[index].options;\n    this.events.remove(window, 'unload', this.onWindowUnload);\n    this.documents.splice(index, 1);\n    this.events.documents.splice(index, 1);\n    this.fire('scope:remove-document', {\n      doc,\n      window,\n      scope: this,\n      options\n    });\n  }\n\n  getDocIndex(doc) {\n    for (let i = 0; i < this.documents.length; i++) {\n      if (this.documents[i].doc === doc) {\n        return i;\n      }\n    }\n\n    return -1;\n  }\n\n  getDocOptions(doc) {\n    const docIndex = this.getDocIndex(doc);\n    return docIndex === -1 ? null : this.documents[docIndex].options;\n  }\n\n  now() {\n    return (this.window.Date || Date).now();\n  }\n\n}\nexport function initScope(scope, window) {\n  scope.isInitialized = true;\n  win.init(window);\n  domObjects.init(window);\n  browser.init(window);\n  raf.init(window);\n  scope.window = window;\n  scope.document = window.document;\n  scope.usePlugin(interactions);\n  scope.usePlugin(events);\n  return scope;\n}\n\nfunction pluginIdRoot(id) {\n  return id && id.replace(/\\/.*$/, '');\n}\n//# sourceMappingURL=scope.js.map","import { Scope } from \"../core/scope.js\";\nconst scope = new Scope();\nconst interact = scope.interactStatic;\nexport default interact;\nexport const init = win => scope.init(win);\n\nif (typeof window === 'object' && !!window) {\n  init(window);\n}\n//# sourceMappingURL=index.js.map","import { Interactable } from \"../core/Interactable.js\";\nimport is from \"../utils/is.js\";\nimport { warnOnce } from \"../utils/misc.js\";\n\nfunction install(scope) {\n  const {\n    /** @lends Interactable */\n    Interactable // tslint:disable-line no-shadowed-variable\n\n  } = scope;\n\n  Interactable.prototype.getAction = function getAction(pointer, event, interaction, element) {\n    const action = defaultActionChecker(this, event, interaction, element, scope);\n\n    if (this.options.actionChecker) {\n      return this.options.actionChecker(pointer, event, action, this, element, interaction);\n    }\n\n    return action;\n  };\n  /**\n   * If the target of the `mousedown`, `pointerdown` or `touchstart` event or any\n   * of it's parents match the given CSS selector or Element, no\n   * drag/resize/gesture is started.\n   *\n   * @deprecated\n   * Don't use this method. Instead set the `ignoreFrom` option for each action\n   * or for `pointerEvents`\n   *\n   * ```js\n   * interact(targett)\n   *   .draggable({\n   *     ignoreFrom: 'input, textarea, a[href]'',\n   *   })\n   *   .pointerEvents({\n   *     ignoreFrom: '[no-pointer]',\n   *   })\n   * ```\n   *\n   * @param {string | Element | null} [newValue] a CSS selector string, an\n   * Element or `null` to not ignore any elements\n   * @return {string | Element | object} The current ignoreFrom value or this\n   * Interactable\n   */\n\n\n  Interactable.prototype.ignoreFrom = warnOnce(function (newValue) {\n    return this._backCompatOption('ignoreFrom', newValue);\n  }, 'Interactable.ignoreFrom() has been deprecated. Use Interactble.draggable({ignoreFrom: newValue}).');\n  /**\n   *\n   * A drag/resize/gesture is started only If the target of the `mousedown`,\n   * `pointerdown` or `touchstart` event or any of it's parents match the given\n   * CSS selector or Element.\n   *\n   * @deprecated\n   * Don't use this method. Instead set the `allowFrom` option for each action\n   * or for `pointerEvents`\n   *\n   * ```js\n   * interact(targett)\n   *   .resizable({\n   *     allowFrom: '.resize-handle',\n   *   .pointerEvents({\n   *     allowFrom: '.handle',,\n   *   })\n   * ```\n   *\n   * @param {string | Element | null} [newValue] a CSS selector string, an\n   * Element or `null` to allow from any element\n   * @return {string | Element | object} The current allowFrom value or this\n   * Interactable\n   */\n\n  Interactable.prototype.allowFrom = warnOnce(function (newValue) {\n    return this._backCompatOption('allowFrom', newValue);\n  }, 'Interactable.allowFrom() has been deprecated. Use Interactble.draggable({allowFrom: newValue}).');\n  /**\n   * ```js\n   * interact('.resize-drag')\n   *   .resizable(true)\n   *   .draggable(true)\n   *   .actionChecker(function (pointer, event, action, interactable, element, interaction) {\n   *\n   *     if (interact.matchesSelector(event.target, '.drag-handle')) {\n   *       // force drag with handle target\n   *       action.name = drag\n   *     }\n   *     else {\n   *       // resize from the top and right edges\n   *       action.name  = 'resize'\n   *       action.edges = { top: true, right: true }\n   *     }\n   *\n   *     return action\n   * })\n   * ```\n   *\n   * Returns or sets the function used to check action to be performed on\n   * pointerDown\n   *\n   * @param {function | null} [checker] A function which takes a pointer event,\n   * defaultAction string, interactable, element and interaction as parameters\n   * and returns an object with name property 'drag' 'resize' or 'gesture' and\n   * optionally an `edges` object with boolean 'top', 'left', 'bottom' and right\n   * props.\n   * @return {Function | Interactable} The checker function or this Interactable\n   */\n\n  Interactable.prototype.actionChecker = actionChecker;\n  /**\n   * Returns or sets whether the the cursor should be changed depending on the\n   * action that would be performed if the mouse were pressed and dragged.\n   *\n   * @param {boolean} [newValue]\n   * @return {boolean | Interactable} The current setting or this Interactable\n   */\n\n  Interactable.prototype.styleCursor = styleCursor;\n}\n\nfunction defaultActionChecker(interactable, event, interaction, element, scope) {\n  const rect = interactable.getRect(element);\n  const buttons = event.buttons || {\n    0: 1,\n    1: 4,\n    3: 8,\n    4: 16\n  }[event.button];\n  const arg = {\n    action: null,\n    interactable,\n    interaction,\n    element,\n    rect,\n    buttons\n  };\n  scope.fire('auto-start:check', arg);\n  return arg.action;\n}\n\nfunction styleCursor(newValue) {\n  if (is.bool(newValue)) {\n    this.options.styleCursor = newValue;\n    return this;\n  }\n\n  if (newValue === null) {\n    delete this.options.styleCursor;\n    return this;\n  }\n\n  return this.options.styleCursor;\n}\n\nfunction actionChecker(checker) {\n  if (is.func(checker)) {\n    this.options.actionChecker = checker;\n    return this;\n  }\n\n  if (checker === null) {\n    delete this.options.actionChecker;\n    return this;\n  }\n\n  return this.options.actionChecker;\n}\n\nexport default {\n  id: 'auto-start/interactableMethods',\n  install\n};\n//# sourceMappingURL=InteractableMethods.js.map","import { Scope, SignalArgs } from \"../core/scope.js\";\nimport * as domUtils from \"../utils/domUtils.js\";\nimport extend from \"../utils/extend.js\";\nimport is from \"../utils/is.js\";\nimport { copyAction } from \"../utils/misc.js\";\nimport InteractableMethods from \"./InteractableMethods.js\";\n\nfunction install(scope) {\n  const {\n    interactStatic: interact,\n    defaults\n  } = scope;\n  scope.usePlugin(InteractableMethods);\n  defaults.base.actionChecker = null;\n  defaults.base.styleCursor = true;\n  extend(defaults.perAction, {\n    manualStart: false,\n    max: Infinity,\n    maxPerElement: 1,\n    allowFrom: null,\n    ignoreFrom: null,\n    // only allow left button by default\n    // see https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/buttons#Return_value\n    mouseButtons: 1\n  });\n  /**\n   * Returns or sets the maximum number of concurrent interactions allowed.  By\n   * default only 1 interaction is allowed at a time (for backwards\n   * compatibility). To allow multiple interactions on the same Interactables and\n   * elements, you need to enable it in the draggable, resizable and gesturable\n   * `'max'` and `'maxPerElement'` options.\n   *\n   * @alias module:interact.maxInteractions\n   *\n   * @param {number} [newValue] Any number. newValue <= 0 means no interactions.\n   */\n\n  interact.maxInteractions = newValue => maxInteractions(newValue, scope);\n\n  scope.autoStart = {\n    // Allow this many interactions to happen simultaneously\n    maxInteractions: Infinity,\n    withinInteractionLimit,\n    cursorElement: null\n  };\n}\n\nfunction prepareOnDown({\n  interaction,\n  pointer,\n  event,\n  eventTarget\n}, scope) {\n  if (interaction.interacting()) {\n    return;\n  }\n\n  const actionInfo = getActionInfo(interaction, pointer, event, eventTarget, scope);\n  prepare(interaction, actionInfo, scope);\n}\n\nfunction prepareOnMove({\n  interaction,\n  pointer,\n  event,\n  eventTarget\n}, scope) {\n  if (interaction.pointerType !== 'mouse' || interaction.pointerIsDown || interaction.interacting()) {\n    return;\n  }\n\n  const actionInfo = getActionInfo(interaction, pointer, event, eventTarget, scope);\n  prepare(interaction, actionInfo, scope);\n}\n\nfunction startOnMove(arg, scope) {\n  const {\n    interaction\n  } = arg;\n\n  if (!interaction.pointerIsDown || interaction.interacting() || !interaction.pointerWasMoved || !interaction.prepared.name) {\n    return;\n  }\n\n  scope.fire('autoStart:before-start', arg);\n  const {\n    interactable\n  } = interaction;\n  const actionName = interaction.prepared.name;\n\n  if (actionName && interactable) {\n    // check manualStart and interaction limit\n    if (interactable.options[actionName].manualStart || !withinInteractionLimit(interactable, interaction.element, interaction.prepared, scope)) {\n      interaction.stop();\n    } else {\n      interaction.start(interaction.prepared, interactable, interaction.element);\n      setInteractionCursor(interaction, scope);\n    }\n  }\n}\n\nfunction clearCursorOnStop({\n  interaction\n}, scope) {\n  const {\n    interactable\n  } = interaction;\n\n  if (interactable && interactable.options.styleCursor) {\n    setCursor(interaction.element, '', scope);\n  }\n} // Check if the current interactable supports the action.\n// If so, return the validated action. Otherwise, return null\n\n\nfunction validateAction(action, interactable, element, eventTarget, scope) {\n  if (interactable.testIgnoreAllow(interactable.options[action.name], element, eventTarget) && interactable.options[action.name].enabled && withinInteractionLimit(interactable, element, action, scope)) {\n    return action;\n  }\n\n  return null;\n}\n\nfunction validateMatches(interaction, pointer, event, matches, matchElements, eventTarget, scope) {\n  for (let i = 0, len = matches.length; i < len; i++) {\n    const match = matches[i];\n    const matchElement = matchElements[i];\n    const matchAction = match.getAction(pointer, event, interaction, matchElement);\n\n    if (!matchAction) {\n      continue;\n    }\n\n    const action = validateAction(matchAction, match, matchElement, eventTarget, scope);\n\n    if (action) {\n      return {\n        action,\n        interactable: match,\n        element: matchElement\n      };\n    }\n  }\n\n  return {\n    action: null,\n    interactable: null,\n    element: null\n  };\n}\n\nfunction getActionInfo(interaction, pointer, event, eventTarget, scope) {\n  let matches = [];\n  let matchElements = [];\n  let element = eventTarget;\n\n  function pushMatches(interactable) {\n    matches.push(interactable);\n    matchElements.push(element);\n  }\n\n  while (is.element(element)) {\n    matches = [];\n    matchElements = [];\n    scope.interactables.forEachMatch(element, pushMatches);\n    const actionInfo = validateMatches(interaction, pointer, event, matches, matchElements, eventTarget, scope);\n\n    if (actionInfo.action && !actionInfo.interactable.options[actionInfo.action.name].manualStart) {\n      return actionInfo;\n    }\n\n    element = domUtils.parentNode(element);\n  }\n\n  return {\n    action: null,\n    interactable: null,\n    element: null\n  };\n}\n\nfunction prepare(interaction, {\n  action,\n  interactable,\n  element\n}, scope) {\n  action = action || {\n    name: null\n  };\n  interaction.interactable = interactable;\n  interaction.element = element;\n  copyAction(interaction.prepared, action);\n  interaction.rect = interactable && action.name ? interactable.getRect(element) : null;\n  setInteractionCursor(interaction, scope);\n  scope.fire('autoStart:prepared', {\n    interaction\n  });\n}\n\nfunction withinInteractionLimit(interactable, element, action, scope) {\n  const options = interactable.options;\n  const maxActions = options[action.name].max;\n  const maxPerElement = options[action.name].maxPerElement;\n  const autoStartMax = scope.autoStart.maxInteractions;\n  let activeInteractions = 0;\n  let interactableCount = 0;\n  let elementCount = 0; // no actions if any of these values == 0\n\n  if (!(maxActions && maxPerElement && autoStartMax)) {\n    return false;\n  }\n\n  for (const interaction of scope.interactions.list) {\n    const otherAction = interaction.prepared.name;\n\n    if (!interaction.interacting()) {\n      continue;\n    }\n\n    activeInteractions++;\n\n    if (activeInteractions >= autoStartMax) {\n      return false;\n    }\n\n    if (interaction.interactable !== interactable) {\n      continue;\n    }\n\n    interactableCount += otherAction === action.name ? 1 : 0;\n\n    if (interactableCount >= maxActions) {\n      return false;\n    }\n\n    if (interaction.element === element) {\n      elementCount++;\n\n      if (otherAction === action.name && elementCount >= maxPerElement) {\n        return false;\n      }\n    }\n  }\n\n  return autoStartMax > 0;\n}\n\nfunction maxInteractions(newValue, scope) {\n  if (is.number(newValue)) {\n    scope.autoStart.maxInteractions = newValue;\n    return this;\n  }\n\n  return scope.autoStart.maxInteractions;\n}\n\nfunction setCursor(element, cursor, scope) {\n  const {\n    cursorElement: prevCursorElement\n  } = scope.autoStart;\n\n  if (prevCursorElement && prevCursorElement !== element) {\n    prevCursorElement.style.cursor = '';\n  }\n\n  element.ownerDocument.documentElement.style.cursor = cursor;\n  element.style.cursor = cursor;\n  scope.autoStart.cursorElement = cursor ? element : null;\n}\n\nfunction setInteractionCursor(interaction, scope) {\n  const {\n    interactable,\n    element,\n    prepared\n  } = interaction;\n\n  if (!(interaction.pointerType === 'mouse' && interactable && interactable.options.styleCursor)) {\n    // clear previous target element cursor\n    if (scope.autoStart.cursorElement) {\n      setCursor(scope.autoStart.cursorElement, '', scope);\n    }\n\n    return;\n  }\n\n  let cursor = '';\n\n  if (prepared.name) {\n    const cursorChecker = interactable.options[prepared.name].cursorChecker;\n\n    if (is.func(cursorChecker)) {\n      cursor = cursorChecker(prepared, interactable, element, interaction._interacting);\n    } else {\n      cursor = scope.actions.map[prepared.name].getCursor(prepared);\n    }\n  }\n\n  setCursor(interaction.element, cursor || '', scope);\n}\n\nconst autoStart = {\n  id: 'auto-start/base',\n  before: ['actions'],\n  install,\n  listeners: {\n    'interactions:down': prepareOnDown,\n    'interactions:move': (arg, scope) => {\n      prepareOnMove(arg, scope);\n      startOnMove(arg, scope);\n    },\n    'interactions:stop': clearCursorOnStop\n  },\n  maxInteractions,\n  withinInteractionLimit,\n  validateAction\n};\nexport default autoStart;\n//# sourceMappingURL=base.js.map","import { parentNode } from \"../utils/domUtils.js\";\nimport is from \"../utils/is.js\";\nimport autoStart from \"./base.js\";\n\nfunction beforeStart({\n  interaction,\n  eventTarget,\n  dx,\n  dy\n}, scope) {\n  if (interaction.prepared.name !== 'drag') {\n    return;\n  } // check if a drag is in the correct axis\n\n\n  const absX = Math.abs(dx);\n  const absY = Math.abs(dy);\n  const targetOptions = interaction.interactable.options.drag;\n  const startAxis = targetOptions.startAxis;\n  const currentAxis = absX > absY ? 'x' : absX < absY ? 'y' : 'xy';\n  interaction.prepared.axis = targetOptions.lockAxis === 'start' ? currentAxis[0] // always lock to one axis even if currentAxis === 'xy'\n  : targetOptions.lockAxis; // if the movement isn't in the startAxis of the interactable\n\n  if (currentAxis !== 'xy' && startAxis !== 'xy' && startAxis !== currentAxis) {\n    // cancel the prepared action\n    interaction.prepared.name = null; // then try to get a drag from another ineractable\n\n    let element = eventTarget;\n\n    const getDraggable = function (interactable) {\n      if (interactable === interaction.interactable) {\n        return;\n      }\n\n      const options = interaction.interactable.options.drag;\n\n      if (!options.manualStart && interactable.testIgnoreAllow(options, element, eventTarget)) {\n        const action = interactable.getAction(interaction.downPointer, interaction.downEvent, interaction, element);\n\n        if (action && action.name === 'drag' && checkStartAxis(currentAxis, interactable) && autoStart.validateAction(action, interactable, element, eventTarget, scope)) {\n          return interactable;\n        }\n      }\n    }; // check all interactables\n\n\n    while (is.element(element)) {\n      const interactable = scope.interactables.forEachMatch(element, getDraggable);\n\n      if (interactable) {\n        interaction.prepared.name = 'drag';\n        interaction.interactable = interactable;\n        interaction.element = element;\n        break;\n      }\n\n      element = parentNode(element);\n    }\n  }\n}\n\nfunction checkStartAxis(startAxis, interactable) {\n  if (!interactable) {\n    return false;\n  }\n\n  const thisAxis = interactable.options.drag.startAxis;\n  return startAxis === 'xy' || thisAxis === 'xy' || thisAxis === startAxis;\n}\n\nexport default {\n  id: 'auto-start/dragAxis',\n  listeners: {\n    'autoStart:before-start': beforeStart\n  }\n};\n//# sourceMappingURL=dragAxis.js.map","import Interaction from \"../core/Interaction.js\";\nimport basePlugin from \"./base.js\";\n\nfunction install(scope) {\n  const {\n    defaults\n  } = scope;\n  scope.usePlugin(basePlugin);\n  defaults.perAction.hold = 0;\n  defaults.perAction.delay = 0;\n}\n\nfunction getHoldDuration(interaction) {\n  const actionName = interaction.prepared && interaction.prepared.name;\n\n  if (!actionName) {\n    return null;\n  }\n\n  const options = interaction.interactable.options;\n  return options[actionName].hold || options[actionName].delay;\n}\n\nconst hold = {\n  id: 'auto-start/hold',\n  install,\n  listeners: {\n    'interactions:new': ({\n      interaction\n    }) => {\n      interaction.autoStartHoldTimer = null;\n    },\n    'autoStart:prepared': ({\n      interaction\n    }) => {\n      const hold = getHoldDuration(interaction);\n\n      if (hold > 0) {\n        interaction.autoStartHoldTimer = setTimeout(() => {\n          interaction.start(interaction.prepared, interaction.interactable, interaction.element);\n        }, hold);\n      }\n    },\n    'interactions:move': ({\n      interaction,\n      duplicate\n    }) => {\n      if (interaction.autoStartHoldTimer && interaction.pointerWasMoved && !duplicate) {\n        clearTimeout(interaction.autoStartHoldTimer);\n        interaction.autoStartHoldTimer = null;\n      }\n    },\n    // prevent regular down->move autoStart\n    'autoStart:before-start': ({\n      interaction\n    }) => {\n      const holdDuration = getHoldDuration(interaction);\n\n      if (holdDuration > 0) {\n        interaction.prepared.name = null;\n      }\n    }\n  },\n  getHoldDuration\n};\nexport default hold;\n//# sourceMappingURL=hold.js.map","import autoStart from \"./base.js\";\nimport dragAxis from \"./dragAxis.js\";\nimport hold from \"./hold.js\";\nexport default {\n  id: 'auto-start',\n\n  install(scope) {\n    scope.usePlugin(autoStart);\n    scope.usePlugin(hold);\n    scope.usePlugin(dragAxis);\n  }\n\n};\n//# sourceMappingURL=plugin.js.map","/* eslint-disable import/order, no-console, eol-last */\nimport interact, { init } from \"../interact/index.js\";\nimport plugin from \"./plugin.js\";\n\nif (typeof window === 'object' && !!window) {\n  init(window);\n}\n\ninteract.use(plugin);\n//# sourceMappingURL=index.js.map","import { Interactable } from \"../../core/Interactable.js\";\nimport is from \"../../utils/is.js\";\n\nfunction install(scope) {\n  const {\n    actions,\n    Interactable,\n    defaults\n  } = scope;\n  Interactable.prototype.draggable = drag.draggable;\n  actions.map.drag = drag;\n  actions.methodDict.drag = 'draggable';\n  defaults.actions.drag = drag.defaults;\n}\n\nfunction beforeMove({\n  interaction\n}) {\n  if (interaction.prepared.name !== 'drag') {\n    return;\n  }\n\n  const axis = interaction.prepared.axis;\n\n  if (axis === 'x') {\n    interaction.coords.cur.page.y = interaction.coords.start.page.y;\n    interaction.coords.cur.client.y = interaction.coords.start.client.y;\n    interaction.coords.velocity.client.y = 0;\n    interaction.coords.velocity.page.y = 0;\n  } else if (axis === 'y') {\n    interaction.coords.cur.page.x = interaction.coords.start.page.x;\n    interaction.coords.cur.client.x = interaction.coords.start.client.x;\n    interaction.coords.velocity.client.x = 0;\n    interaction.coords.velocity.page.x = 0;\n  }\n}\n\nfunction move({\n  iEvent,\n  interaction\n}) {\n  if (interaction.prepared.name !== 'drag') {\n    return;\n  }\n\n  const axis = interaction.prepared.axis;\n\n  if (axis === 'x' || axis === 'y') {\n    const opposite = axis === 'x' ? 'y' : 'x';\n    iEvent.page[opposite] = interaction.coords.start.page[opposite];\n    iEvent.client[opposite] = interaction.coords.start.client[opposite];\n    iEvent.delta[opposite] = 0;\n  }\n}\n/**\n * ```js\n * interact(element).draggable({\n *     onstart: function (event) {},\n *     onmove : function (event) {},\n *     onend  : function (event) {},\n *\n *     // the axis in which the first movement must be\n *     // for the drag sequence to start\n *     // 'xy' by default - any direction\n *     startAxis: 'x' || 'y' || 'xy',\n *\n *     // 'xy' by default - don't restrict to one axis (move in any direction)\n *     // 'x' or 'y' to restrict movement to either axis\n *     // 'start' to restrict movement to the axis the drag started in\n *     lockAxis: 'x' || 'y' || 'xy' || 'start',\n *\n *     // max number of drags that can happen concurrently\n *     // with elements of this Interactable. Infinity by default\n *     max: Infinity,\n *\n *     // max number of drags that can target the same element+Interactable\n *     // 1 by default\n *     maxPerElement: 2\n * })\n *\n * var isDraggable = interact('element').draggable(); // true\n * ```\n *\n * Get or set whether drag actions can be performed on the target\n *\n * @alias Interactable.prototype.draggable\n *\n * @param {boolean | object} [options] true/false or An object with event\n * listeners to be fired on drag events (object makes the Interactable\n * draggable)\n * @return {boolean | Interactable} boolean indicating if this can be the\n * target of drag events, or this Interctable\n */\n\n\nconst draggable = function draggable(options) {\n  if (is.object(options)) {\n    this.options.drag.enabled = options.enabled !== false;\n    this.setPerAction('drag', options);\n    this.setOnEvents('drag', options);\n\n    if (/^(xy|x|y|start)$/.test(options.lockAxis)) {\n      this.options.drag.lockAxis = options.lockAxis;\n    }\n\n    if (/^(xy|x|y)$/.test(options.startAxis)) {\n      this.options.drag.startAxis = options.startAxis;\n    }\n\n    return this;\n  }\n\n  if (is.bool(options)) {\n    this.options.drag.enabled = options;\n    return this;\n  }\n\n  return this.options.drag;\n};\n\nconst drag = {\n  id: 'actions/drag',\n  install,\n  listeners: {\n    'interactions:before-action-move': beforeMove,\n    'interactions:action-resume': beforeMove,\n    // dragmove\n    'interactions:action-move': move,\n    'auto-start:check': arg => {\n      const {\n        interaction,\n        interactable,\n        buttons\n      } = arg;\n      const dragOptions = interactable.options.drag;\n\n      if (!(dragOptions && dragOptions.enabled) || // check mouseButton setting if the pointer is down\n      interaction.pointerIsDown && /mouse|pointer/.test(interaction.pointerType) && (buttons & interactable.options.drag.mouseButtons) === 0) {\n        return undefined;\n      }\n\n      arg.action = {\n        name: 'drag',\n        axis: dragOptions.lockAxis === 'start' ? dragOptions.startAxis : dragOptions.lockAxis\n      };\n      return false;\n    }\n  },\n  draggable,\n  beforeMove,\n  move,\n  defaults: {\n    startAxis: 'xy',\n    lockAxis: 'xy'\n  },\n\n  getCursor() {\n    return 'move';\n  }\n\n};\nexport default drag;\n//# sourceMappingURL=plugin.js.map","/* eslint-disable import/order, no-console, eol-last */\nimport interact, { init } from \"../../interact/index.js\";\nimport plugin from \"./plugin.js\";\n\nif (typeof window === 'object' && !!window) {\n  init(window);\n}\n\ninteract.use(plugin);\n//# sourceMappingURL=index.js.map","import { Interactable } from \"../../core/Interactable.js\";\nimport { Interaction } from \"../../core/Interaction.js\";\nimport * as dom from \"../../utils/domUtils.js\";\nimport extend from \"../../utils/extend.js\";\nimport is from \"../../utils/is.js\";\n\nfunction install(scope) {\n  const {\n    actions,\n    browser,\n\n    /** @lends Interactable */\n    Interactable,\n    // tslint:disable-line no-shadowed-variable\n    defaults\n  } = scope; // Less Precision with touch input\n\n  resize.cursors = initCursors(browser);\n  resize.defaultMargin = browser.supportsTouch || browser.supportsPointerEvent ? 20 : 10;\n  /**\n   * ```js\n   * interact(element).resizable({\n   *   onstart: function (event) {},\n   *   onmove : function (event) {},\n   *   onend  : function (event) {},\n   *\n   *   edges: {\n   *     top   : true,       // Use pointer coords to check for resize.\n   *     left  : false,      // Disable resizing from left edge.\n   *     bottom: '.resize-s',// Resize if pointer target matches selector\n   *     right : handleEl    // Resize if pointer target is the given Element\n   *   },\n   *\n   *     // Width and height can be adjusted independently. When `true`, width and\n   *     // height are adjusted at a 1:1 ratio.\n   *     square: false,\n   *\n   *     // Width and height can be adjusted independently. When `true`, width and\n   *     // height maintain the aspect ratio they had when resizing started.\n   *     preserveAspectRatio: false,\n   *\n   *   // a value of 'none' will limit the resize rect to a minimum of 0x0\n   *   // 'negate' will allow the rect to have negative width/height\n   *   // 'reposition' will keep the width/height positive by swapping\n   *   // the top and bottom edges and/or swapping the left and right edges\n   *   invert: 'none' || 'negate' || 'reposition'\n   *\n   *   // limit multiple resizes.\n   *   // See the explanation in the {@link Interactable.draggable} example\n   *   max: Infinity,\n   *   maxPerElement: 1,\n   * })\n   *\n   * var isResizeable = interact(element).resizable()\n   * ```\n   *\n   * Gets or sets whether resize actions can be performed on the target\n   *\n   * @param {boolean | object} [options] true/false or An object with event\n   * listeners to be fired on resize events (object makes the Interactable\n   * resizable)\n   * @return {boolean | Interactable} A boolean indicating if this can be the\n   * target of resize elements, or this Interactable\n   */\n\n  Interactable.prototype.resizable = function (options) {\n    return resizable(this, options, scope);\n  };\n\n  actions.map.resize = resize;\n  actions.methodDict.resize = 'resizable';\n  defaults.actions.resize = resize.defaults;\n}\n\nfunction resizeChecker(arg) {\n  const {\n    interaction,\n    interactable,\n    element,\n    rect,\n    buttons\n  } = arg;\n\n  if (!rect) {\n    return undefined;\n  }\n\n  const page = extend({}, interaction.coords.cur.page);\n  const resizeOptions = interactable.options.resize;\n\n  if (!(resizeOptions && resizeOptions.enabled) || // check mouseButton setting if the pointer is down\n  interaction.pointerIsDown && /mouse|pointer/.test(interaction.pointerType) && (buttons & resizeOptions.mouseButtons) === 0) {\n    return undefined;\n  } // if using resize.edges\n\n\n  if (is.object(resizeOptions.edges)) {\n    const resizeEdges = {\n      left: false,\n      right: false,\n      top: false,\n      bottom: false\n    };\n\n    for (const edge in resizeEdges) {\n      resizeEdges[edge] = checkResizeEdge(edge, resizeOptions.edges[edge], page, interaction._latestPointer.eventTarget, element, rect, resizeOptions.margin || resize.defaultMargin);\n    }\n\n    resizeEdges.left = resizeEdges.left && !resizeEdges.right;\n    resizeEdges.top = resizeEdges.top && !resizeEdges.bottom;\n\n    if (resizeEdges.left || resizeEdges.right || resizeEdges.top || resizeEdges.bottom) {\n      arg.action = {\n        name: 'resize',\n        edges: resizeEdges\n      };\n    }\n  } else {\n    const right = resizeOptions.axis !== 'y' && page.x > rect.right - resize.defaultMargin;\n    const bottom = resizeOptions.axis !== 'x' && page.y > rect.bottom - resize.defaultMargin;\n\n    if (right || bottom) {\n      arg.action = {\n        name: 'resize',\n        axes: (right ? 'x' : '') + (bottom ? 'y' : '')\n      };\n    }\n  }\n\n  return arg.action ? false : undefined;\n}\n\nfunction resizable(interactable, options, scope) {\n  if (is.object(options)) {\n    interactable.options.resize.enabled = options.enabled !== false;\n    interactable.setPerAction('resize', options);\n    interactable.setOnEvents('resize', options);\n\n    if (is.string(options.axis) && /^x$|^y$|^xy$/.test(options.axis)) {\n      interactable.options.resize.axis = options.axis;\n    } else if (options.axis === null) {\n      interactable.options.resize.axis = scope.defaults.actions.resize.axis;\n    }\n\n    if (is.bool(options.preserveAspectRatio)) {\n      interactable.options.resize.preserveAspectRatio = options.preserveAspectRatio;\n    } else if (is.bool(options.square)) {\n      interactable.options.resize.square = options.square;\n    }\n\n    return interactable;\n  }\n\n  if (is.bool(options)) {\n    interactable.options.resize.enabled = options;\n    return interactable;\n  }\n\n  return interactable.options.resize;\n}\n\nfunction checkResizeEdge(name, value, page, element, interactableElement, rect, margin) {\n  // false, '', undefined, null\n  if (!value) {\n    return false;\n  } // true value, use pointer coords and element rect\n\n\n  if (value === true) {\n    // if dimensions are negative, \"switch\" edges\n    const width = is.number(rect.width) ? rect.width : rect.right - rect.left;\n    const height = is.number(rect.height) ? rect.height : rect.bottom - rect.top; // don't use margin greater than half the relevent dimension\n\n    margin = Math.min(margin, Math.abs((name === 'left' || name === 'right' ? width : height) / 2));\n\n    if (width < 0) {\n      if (name === 'left') {\n        name = 'right';\n      } else if (name === 'right') {\n        name = 'left';\n      }\n    }\n\n    if (height < 0) {\n      if (name === 'top') {\n        name = 'bottom';\n      } else if (name === 'bottom') {\n        name = 'top';\n      }\n    }\n\n    if (name === 'left') {\n      return page.x < (width >= 0 ? rect.left : rect.right) + margin;\n    }\n\n    if (name === 'top') {\n      return page.y < (height >= 0 ? rect.top : rect.bottom) + margin;\n    }\n\n    if (name === 'right') {\n      return page.x > (width >= 0 ? rect.right : rect.left) - margin;\n    }\n\n    if (name === 'bottom') {\n      return page.y > (height >= 0 ? rect.bottom : rect.top) - margin;\n    }\n  } // the remaining checks require an element\n\n\n  if (!is.element(element)) {\n    return false;\n  }\n\n  return is.element(value) // the value is an element to use as a resize handle\n  ? value === element // otherwise check if element matches value as selector\n  : dom.matchesUpTo(element, value, interactableElement);\n}\n/* eslint-disable multiline-ternary */\n\n\nfunction initCursors(browser) {\n  return browser.isIe9 ? {\n    x: 'e-resize',\n    y: 's-resize',\n    xy: 'se-resize',\n    top: 'n-resize',\n    left: 'w-resize',\n    bottom: 's-resize',\n    right: 'e-resize',\n    topleft: 'se-resize',\n    bottomright: 'se-resize',\n    topright: 'ne-resize',\n    bottomleft: 'ne-resize'\n  } : {\n    x: 'ew-resize',\n    y: 'ns-resize',\n    xy: 'nwse-resize',\n    top: 'ns-resize',\n    left: 'ew-resize',\n    bottom: 'ns-resize',\n    right: 'ew-resize',\n    topleft: 'nwse-resize',\n    bottomright: 'nwse-resize',\n    topright: 'nesw-resize',\n    bottomleft: 'nesw-resize'\n  };\n}\n/* eslint-enable multiline-ternary */\n\n\nfunction start({\n  iEvent,\n  interaction\n}) {\n  if (interaction.prepared.name !== 'resize' || !interaction.prepared.edges) {\n    return;\n  }\n\n  const resizeEvent = iEvent;\n  const rect = interaction.rect;\n  interaction._rects = {\n    start: extend({}, rect),\n    corrected: extend({}, rect),\n    previous: extend({}, rect),\n    delta: {\n      left: 0,\n      right: 0,\n      width: 0,\n      top: 0,\n      bottom: 0,\n      height: 0\n    }\n  };\n  resizeEvent.edges = interaction.prepared.edges;\n  resizeEvent.rect = interaction._rects.corrected;\n  resizeEvent.deltaRect = interaction._rects.delta;\n}\n\nfunction move({\n  iEvent,\n  interaction\n}) {\n  if (interaction.prepared.name !== 'resize' || !interaction.prepared.edges) {\n    return;\n  }\n\n  const resizeEvent = iEvent;\n  const resizeOptions = interaction.interactable.options.resize;\n  const invert = resizeOptions.invert;\n  const invertible = invert === 'reposition' || invert === 'negate';\n  const current = interaction.rect;\n  const {\n    start: startRect,\n    corrected,\n    delta: deltaRect,\n    previous\n  } = interaction._rects;\n  extend(previous, corrected);\n\n  if (invertible) {\n    // if invertible, copy the current rect\n    extend(corrected, current);\n\n    if (invert === 'reposition') {\n      // swap edge values if necessary to keep width/height positive\n      if (corrected.top > corrected.bottom) {\n        const swap = corrected.top;\n        corrected.top = corrected.bottom;\n        corrected.bottom = swap;\n      }\n\n      if (corrected.left > corrected.right) {\n        const swap = corrected.left;\n        corrected.left = corrected.right;\n        corrected.right = swap;\n      }\n    }\n  } else {\n    // if not invertible, restrict to minimum of 0x0 rect\n    corrected.top = Math.min(current.top, startRect.bottom);\n    corrected.bottom = Math.max(current.bottom, startRect.top);\n    corrected.left = Math.min(current.left, startRect.right);\n    corrected.right = Math.max(current.right, startRect.left);\n  }\n\n  corrected.width = corrected.right - corrected.left;\n  corrected.height = corrected.bottom - corrected.top;\n\n  for (const edge in corrected) {\n    deltaRect[edge] = corrected[edge] - previous[edge];\n  }\n\n  resizeEvent.edges = interaction.prepared.edges;\n  resizeEvent.rect = corrected;\n  resizeEvent.deltaRect = deltaRect;\n}\n\nfunction end({\n  iEvent,\n  interaction\n}) {\n  if (interaction.prepared.name !== 'resize' || !interaction.prepared.edges) {\n    return;\n  }\n\n  const resizeEvent = iEvent;\n  resizeEvent.edges = interaction.prepared.edges;\n  resizeEvent.rect = interaction._rects.corrected;\n  resizeEvent.deltaRect = interaction._rects.delta;\n}\n\nfunction updateEventAxes({\n  iEvent,\n  interaction\n}) {\n  if (interaction.prepared.name !== 'resize' || !interaction.resizeAxes) {\n    return;\n  }\n\n  const options = interaction.interactable.options;\n  const resizeEvent = iEvent;\n\n  if (options.resize.square) {\n    if (interaction.resizeAxes === 'y') {\n      resizeEvent.delta.x = resizeEvent.delta.y;\n    } else {\n      resizeEvent.delta.y = resizeEvent.delta.x;\n    }\n\n    resizeEvent.axes = 'xy';\n  } else {\n    resizeEvent.axes = interaction.resizeAxes;\n\n    if (interaction.resizeAxes === 'x') {\n      resizeEvent.delta.y = 0;\n    } else if (interaction.resizeAxes === 'y') {\n      resizeEvent.delta.x = 0;\n    }\n  }\n}\n\nconst resize = {\n  id: 'actions/resize',\n  before: ['actions/drag'],\n  install,\n  listeners: {\n    'interactions:new': ({\n      interaction\n    }) => {\n      interaction.resizeAxes = 'xy';\n    },\n    'interactions:action-start': arg => {\n      start(arg);\n      updateEventAxes(arg);\n    },\n    'interactions:action-move': arg => {\n      move(arg);\n      updateEventAxes(arg);\n    },\n    'interactions:action-end': end,\n    'auto-start:check': resizeChecker\n  },\n  defaults: {\n    square: false,\n    preserveAspectRatio: false,\n    axis: 'xy',\n    // use default margin\n    margin: NaN,\n    // object with props left, right, top, bottom which are\n    // true/false values to resize when the pointer is over that edge,\n    // CSS selectors to match the handles for each direction\n    // or the Elements for each handle\n    edges: null,\n    // a value of 'none' will limit the resize rect to a minimum of 0x0\n    // 'negate' will alow the rect to have negative width/height\n    // 'reposition' will keep the width/height positive by swapping\n    // the top and bottom edges and/or swapping the left and right edges\n    invert: 'none'\n  },\n  cursors: null,\n\n  getCursor({\n    edges,\n    axis,\n    name\n  }) {\n    const cursors = resize.cursors;\n    let result = null;\n\n    if (axis) {\n      result = cursors[name + axis];\n    } else if (edges) {\n      let cursorKey = '';\n\n      for (const edge of ['top', 'bottom', 'left', 'right']) {\n        if (edges[edge]) {\n          cursorKey += edge;\n        }\n      }\n\n      result = cursors[cursorKey];\n    }\n\n    return result;\n  },\n\n  defaultMargin: null\n};\nexport default resize;\n//# sourceMappingURL=plugin.js.map","/* eslint-disable import/order, no-console, eol-last */\nimport interact, { init } from \"../../interact/index.js\";\nimport plugin from \"./plugin.js\";\n\nif (typeof window === 'object' && !!window) {\n  init(window);\n}\n\ninteract.use(plugin);\n//# sourceMappingURL=index.js.map","export default (() => {});\n//# sourceMappingURL=edgeTarget.js.map","export default (() => {});\n//# sourceMappingURL=elements.js.map","export default (grid => {\n  const coordFields = [['x', 'y'], ['left', 'top'], ['right', 'bottom'], ['width', 'height']].filter(([xField, yField]) => xField in grid || yField in grid);\n\n  const gridFunc = (x, y) => {\n    const {\n      range,\n      limits = {\n        left: -Infinity,\n        right: Infinity,\n        top: -Infinity,\n        bottom: Infinity\n      },\n      offset = {\n        x: 0,\n        y: 0\n      }\n    } = grid;\n    const result = {\n      range,\n      grid,\n      x: null,\n      y: null\n    };\n\n    for (const [xField, yField] of coordFields) {\n      const gridx = Math.round((x - offset.x) / grid[xField]);\n      const gridy = Math.round((y - offset.y) / grid[yField]);\n      result[xField] = Math.max(limits.left, Math.min(limits.right, gridx * grid[xField] + offset.x));\n      result[yField] = Math.max(limits.top, Math.min(limits.bottom, gridy * grid[yField] + offset.y));\n    }\n\n    return result;\n  };\n\n  gridFunc.grid = grid;\n  gridFunc.coordFields = coordFields;\n  return gridFunc;\n});\n//# sourceMappingURL=grid.js.map","export { default as edgeTarget } from \"./edgeTarget.js\";\nexport { default as elements } from \"./elements.js\";\nexport { default as grid } from \"./grid.js\";\n//# sourceMappingURL=all.js.map","import extend from \"../utils/extend.js\";\nimport * as allSnappers from \"./all.js\";\nconst snappersPlugin = {\n  id: 'snappers',\n\n  install(scope) {\n    const {\n      interactStatic: interact\n    } = scope;\n    interact.snappers = extend(interact.snappers || {}, allSnappers);\n    interact.createSnapGrid = interact.snappers.grid;\n  }\n\n};\nexport default snappersPlugin;\n//# sourceMappingURL=plugin.js.map","import clone from \"../utils/clone.js\";\nimport extend from \"../utils/extend.js\";\nimport * as rectUtils from \"../utils/rect.js\";\nexport default class Modification {\n  constructor(interaction) {\n    this.states = [];\n    this.startOffset = {\n      left: 0,\n      right: 0,\n      top: 0,\n      bottom: 0\n    };\n    this.startDelta = null;\n    this.result = null;\n    this.endResult = null;\n    this.edges = void 0;\n    this.interaction = void 0;\n    this.interaction = interaction;\n    this.result = createResult();\n  }\n\n  start({\n    phase\n  }, pageCoords) {\n    const {\n      interaction\n    } = this;\n    const modifierList = getModifierList(interaction);\n    this.prepareStates(modifierList);\n    this.edges = extend({}, interaction.edges);\n    this.startOffset = getRectOffset(interaction.rect, pageCoords);\n    this.startDelta = {\n      x: 0,\n      y: 0\n    };\n    const arg = {\n      phase,\n      pageCoords,\n      preEnd: false\n    };\n    this.result = createResult();\n    this.startAll(arg);\n    const result = this.result = this.setAll(arg);\n    return result;\n  }\n\n  fillArg(arg) {\n    const {\n      interaction\n    } = this;\n    arg.interaction = interaction;\n    arg.interactable = interaction.interactable;\n    arg.element = interaction.element;\n    arg.rect = arg.rect || interaction.rect;\n    arg.edges = this.edges;\n    arg.startOffset = this.startOffset;\n  }\n\n  startAll(arg) {\n    this.fillArg(arg);\n\n    for (const state of this.states) {\n      if (state.methods.start) {\n        arg.state = state;\n        state.methods.start(arg);\n      }\n    }\n  }\n\n  setAll(arg) {\n    this.fillArg(arg);\n    const {\n      phase,\n      preEnd,\n      skipModifiers,\n      rect: unmodifiedRect\n    } = arg;\n    arg.coords = extend({}, arg.pageCoords);\n    arg.rect = extend({}, unmodifiedRect);\n    const states = skipModifiers ? this.states.slice(skipModifiers) : this.states;\n    const newResult = createResult(arg.coords, arg.rect);\n\n    for (const state of states) {\n      const {\n        options\n      } = state;\n      const lastModifierCoords = extend({}, arg.coords);\n      let returnValue = null;\n\n      if (state.methods.set && this.shouldDo(options, preEnd, phase)) {\n        arg.state = state;\n        returnValue = state.methods.set(arg);\n        rectUtils.addEdges(this.interaction.edges, arg.rect, {\n          x: arg.coords.x - lastModifierCoords.x,\n          y: arg.coords.y - lastModifierCoords.y\n        });\n      }\n\n      newResult.eventProps.push(returnValue);\n    }\n\n    newResult.delta.x = arg.coords.x - arg.pageCoords.x;\n    newResult.delta.y = arg.coords.y - arg.pageCoords.y;\n    newResult.rectDelta.left = arg.rect.left - unmodifiedRect.left;\n    newResult.rectDelta.right = arg.rect.right - unmodifiedRect.right;\n    newResult.rectDelta.top = arg.rect.top - unmodifiedRect.top;\n    newResult.rectDelta.bottom = arg.rect.bottom - unmodifiedRect.bottom;\n    const prevCoords = this.result.coords;\n    const prevRect = this.result.rect;\n\n    if (prevCoords && prevRect) {\n      const rectChanged = newResult.rect.left !== prevRect.left || newResult.rect.right !== prevRect.right || newResult.rect.top !== prevRect.top || newResult.rect.bottom !== prevRect.bottom;\n      newResult.changed = rectChanged || prevCoords.x !== newResult.coords.x || prevCoords.y !== newResult.coords.y;\n    }\n\n    return newResult;\n  }\n\n  applyToInteraction(arg) {\n    const {\n      interaction\n    } = this;\n    const {\n      phase\n    } = arg;\n    const curCoords = interaction.coords.cur;\n    const startCoords = interaction.coords.start;\n    const {\n      result,\n      startDelta\n    } = this;\n    const curDelta = result.delta;\n\n    if (phase === 'start') {\n      extend(this.startDelta, result.delta);\n    }\n\n    for (const [coordsSet, delta] of [[startCoords, startDelta], [curCoords, curDelta]]) {\n      coordsSet.page.x += delta.x;\n      coordsSet.page.y += delta.y;\n      coordsSet.client.x += delta.x;\n      coordsSet.client.y += delta.y;\n    }\n\n    const {\n      rectDelta\n    } = this.result;\n    const rect = arg.rect || interaction.rect;\n    rect.left += rectDelta.left;\n    rect.right += rectDelta.right;\n    rect.top += rectDelta.top;\n    rect.bottom += rectDelta.bottom;\n    rect.width = rect.right - rect.left;\n    rect.height = rect.bottom - rect.top;\n  }\n\n  setAndApply(arg) {\n    const {\n      interaction\n    } = this;\n    const {\n      phase,\n      preEnd,\n      skipModifiers\n    } = arg;\n    const result = this.setAll({\n      preEnd,\n      phase,\n      pageCoords: arg.modifiedCoords || interaction.coords.cur.page\n    });\n    this.result = result; // don't fire an action move if a modifier would keep the event in the same\n    // cordinates as before\n\n    if (!result.changed && (!skipModifiers || skipModifiers < this.states.length) && interaction.interacting()) {\n      return false;\n    }\n\n    if (arg.modifiedCoords) {\n      const {\n        page\n      } = interaction.coords.cur;\n      const adjustment = {\n        x: arg.modifiedCoords.x - page.x,\n        y: arg.modifiedCoords.y - page.y\n      };\n      result.coords.x += adjustment.x;\n      result.coords.y += adjustment.y;\n      result.delta.x += adjustment.x;\n      result.delta.y += adjustment.y;\n    }\n\n    this.applyToInteraction(arg);\n  }\n\n  beforeEnd(arg) {\n    const {\n      interaction,\n      event\n    } = arg;\n    const states = this.states;\n\n    if (!states || !states.length) {\n      return;\n    }\n\n    let doPreend = false;\n\n    for (const state of states) {\n      arg.state = state;\n      const {\n        options,\n        methods\n      } = state;\n      const endPosition = methods.beforeEnd && methods.beforeEnd(arg);\n\n      if (endPosition) {\n        this.endResult = endPosition;\n        return false;\n      }\n\n      doPreend = doPreend || !doPreend && this.shouldDo(options, true, arg.phase, true);\n    }\n\n    if (doPreend) {\n      // trigger a final modified move before ending\n      interaction.move({\n        event,\n        preEnd: true\n      });\n    }\n  }\n\n  stop(arg) {\n    const {\n      interaction\n    } = arg;\n\n    if (!this.states || !this.states.length) {\n      return;\n    }\n\n    const modifierArg = extend({\n      states: this.states,\n      interactable: interaction.interactable,\n      element: interaction.element,\n      rect: null\n    }, arg);\n    this.fillArg(modifierArg);\n\n    for (const state of this.states) {\n      modifierArg.state = state;\n\n      if (state.methods.stop) {\n        state.methods.stop(modifierArg);\n      }\n    }\n\n    this.states = null;\n    this.endResult = null;\n  }\n\n  prepareStates(modifierList) {\n    this.states = [];\n\n    for (let index = 0; index < modifierList.length; index++) {\n      const {\n        options,\n        methods,\n        name\n      } = modifierList[index];\n      this.states.push({\n        options,\n        methods,\n        index,\n        name\n      });\n    }\n\n    return this.states;\n  }\n\n  restoreInteractionCoords({\n    interaction: {\n      coords,\n      rect,\n      modification\n    }\n  }) {\n    if (!modification.result) {\n      return;\n    }\n\n    const {\n      startDelta\n    } = modification;\n    const {\n      delta: curDelta,\n      rectDelta\n    } = modification.result;\n    const coordsAndDeltas = [[coords.start, startDelta], [coords.cur, curDelta]];\n\n    for (const [coordsSet, delta] of coordsAndDeltas) {\n      coordsSet.page.x -= delta.x;\n      coordsSet.page.y -= delta.y;\n      coordsSet.client.x -= delta.x;\n      coordsSet.client.y -= delta.y;\n    }\n\n    rect.left -= rectDelta.left;\n    rect.right -= rectDelta.right;\n    rect.top -= rectDelta.top;\n    rect.bottom -= rectDelta.bottom;\n  }\n\n  shouldDo(options, preEnd, phase, requireEndOnly) {\n    if ( // ignore disabled modifiers\n    !options || options.enabled === false || // check if we require endOnly option to fire move before end\n    requireEndOnly && !options.endOnly || // don't apply endOnly modifiers when not ending\n    options.endOnly && !preEnd || // check if modifier should run be applied on start\n    phase === 'start' && !options.setStart) {\n      return false;\n    }\n\n    return true;\n  }\n\n  copyFrom(other) {\n    this.startOffset = other.startOffset;\n    this.startDelta = other.startDelta;\n    this.edges = other.edges;\n    this.states = other.states.map(s => clone(s));\n    this.result = createResult(extend({}, other.result.coords), extend({}, other.result.rect));\n  }\n\n  destroy() {\n    for (const prop in this) {\n      this[prop] = null;\n    }\n  }\n\n}\n\nfunction createResult(coords, rect) {\n  return {\n    rect,\n    coords,\n    delta: {\n      x: 0,\n      y: 0\n    },\n    rectDelta: {\n      left: 0,\n      right: 0,\n      top: 0,\n      bottom: 0\n    },\n    eventProps: [],\n    changed: true\n  };\n}\n\nfunction getModifierList(interaction) {\n  const actionOptions = interaction.interactable.options[interaction.prepared.name];\n  const actionModifiers = actionOptions.modifiers;\n\n  if (actionModifiers && actionModifiers.length) {\n    return actionModifiers;\n  }\n\n  return ['snap', 'snapSize', 'snapEdges', 'restrict', 'restrictEdges', 'restrictSize'].map(type => {\n    const options = actionOptions[type];\n    return options && options.enabled && {\n      options,\n      methods: options._methods\n    };\n  }).filter(m => !!m);\n}\n\nexport function getRectOffset(rect, coords) {\n  return rect ? {\n    left: coords.x - rect.left,\n    top: coords.y - rect.top,\n    right: rect.right - coords.x,\n    bottom: rect.bottom - coords.y\n  } : {\n    left: 0,\n    top: 0,\n    right: 0,\n    bottom: 0\n  };\n}\n//# sourceMappingURL=Modification.js.map","import { InteractEvent } from \"../core/InteractEvent.js\";\nimport Interaction from \"../core/Interaction.js\";\nimport Modification from \"./Modification.js\";\nexport function makeModifier(module, name) {\n  const {\n    defaults\n  } = module;\n  const methods = {\n    start: module.start,\n    set: module.set,\n    beforeEnd: module.beforeEnd,\n    stop: module.stop\n  };\n\n  const modifier = _options => {\n    const options = _options || {};\n    options.enabled = options.enabled !== false; // add missing defaults to options\n\n    for (const prop in defaults) {\n      if (!(prop in options)) {\n        options[prop] = defaults[prop];\n      }\n    }\n\n    const m = {\n      options,\n      methods,\n      name,\n      enable: () => {\n        options.enabled = true;\n        return m;\n      },\n      disable: () => {\n        options.enabled = false;\n        return m;\n      }\n    };\n    return m;\n  };\n\n  if (name && typeof name === 'string') {\n    // for backwrads compatibility\n    modifier._defaults = defaults;\n    modifier._methods = methods;\n  }\n\n  return modifier;\n}\nexport function addEventModifiers({\n  iEvent,\n  interaction: {\n    modification: {\n      result\n    }\n  }\n}) {\n  if (result) {\n    iEvent.modifiers = result.eventProps;\n  }\n}\nconst modifiersBase = {\n  id: 'modifiers/base',\n  before: ['actions'],\n  install: scope => {\n    scope.defaults.perAction.modifiers = [];\n  },\n  listeners: {\n    'interactions:new': ({\n      interaction\n    }) => {\n      interaction.modification = new Modification(interaction);\n    },\n    'interactions:before-action-start': arg => {\n      const {\n        modification\n      } = arg.interaction;\n      modification.start(arg, arg.interaction.coords.start.page);\n      arg.interaction.edges = modification.edges;\n      modification.applyToInteraction(arg);\n    },\n    'interactions:before-action-move': arg => arg.interaction.modification.setAndApply(arg),\n    'interactions:before-action-end': arg => arg.interaction.modification.beforeEnd(arg),\n    'interactions:action-start': addEventModifiers,\n    'interactions:action-move': addEventModifiers,\n    'interactions:action-end': addEventModifiers,\n    'interactions:after-action-start': arg => arg.interaction.modification.restoreInteractionCoords(arg),\n    'interactions:after-action-move': arg => arg.interaction.modification.restoreInteractionCoords(arg),\n    'interactions:stop': arg => arg.interaction.modification.stop(arg)\n  }\n};\nexport default modifiersBase;\n//# sourceMappingURL=base.js.map","/**\n * @module modifiers/aspectRatio\n *\n * @description\n * This module forces elements to be resized with a specified dx/dy ratio.\n *\n * ```js\n * interact(target).resizable({\n *   modifiers: [\n *     interact.modifiers.snapSize({\n *       targets: [ interact.snappers.grid({ x: 20, y: 20 }) ],\n *     }),\n *     interact.aspectRatio({ ratio: 'preserve' }),\n *   ],\n * });\n * ```\n */\nimport extend from \"../utils/extend.js\";\nimport { addEdges } from \"../utils/rect.js\";\nimport Modification from \"./Modification.js\";\nimport { makeModifier } from \"./base.js\";\nconst aspectRatio = {\n  start(arg) {\n    const {\n      state,\n      rect,\n      edges: originalEdges,\n      pageCoords: coords\n    } = arg;\n    let {\n      ratio\n    } = state.options;\n    const {\n      equalDelta,\n      modifiers\n    } = state.options;\n\n    if (ratio === 'preserve') {\n      ratio = rect.width / rect.height;\n    }\n\n    state.startCoords = extend({}, coords);\n    state.startRect = extend({}, rect);\n    state.ratio = ratio;\n    state.equalDelta = equalDelta;\n    const linkedEdges = state.linkedEdges = {\n      top: originalEdges.top || originalEdges.left && !originalEdges.bottom,\n      left: originalEdges.left || originalEdges.top && !originalEdges.right,\n      bottom: originalEdges.bottom || originalEdges.right && !originalEdges.top,\n      right: originalEdges.right || originalEdges.bottom && !originalEdges.left\n    };\n    state.xIsPrimaryAxis = !!(originalEdges.left || originalEdges.right);\n\n    if (state.equalDelta) {\n      state.edgeSign = (linkedEdges.left ? 1 : -1) * (linkedEdges.top ? 1 : -1);\n    } else {\n      const negativeSecondaryEdge = state.xIsPrimaryAxis ? linkedEdges.top : linkedEdges.left;\n      state.edgeSign = negativeSecondaryEdge ? -1 : 1;\n    }\n\n    extend(arg.edges, linkedEdges);\n\n    if (!modifiers || !modifiers.length) {\n      return;\n    }\n\n    const subModification = new Modification(arg.interaction);\n    subModification.copyFrom(arg.interaction.modification);\n    subModification.prepareStates(modifiers);\n    state.subModification = subModification;\n    subModification.startAll({ ...arg\n    });\n  },\n\n  set(arg) {\n    const {\n      state,\n      rect,\n      coords\n    } = arg;\n    const initialCoords = extend({}, coords);\n    const aspectMethod = state.equalDelta ? setEqualDelta : setRatio;\n    aspectMethod(state, state.xIsPrimaryAxis, coords, rect);\n\n    if (!state.subModification) {\n      return null;\n    }\n\n    const correctedRect = extend({}, rect);\n    addEdges(state.linkedEdges, correctedRect, {\n      x: coords.x - initialCoords.x,\n      y: coords.y - initialCoords.y\n    });\n    const result = state.subModification.setAll({ ...arg,\n      rect: correctedRect,\n      edges: state.linkedEdges,\n      pageCoords: coords,\n      prevCoords: coords,\n      prevRect: correctedRect\n    });\n    const {\n      delta\n    } = result;\n\n    if (result.changed) {\n      const xIsCriticalAxis = Math.abs(delta.x) > Math.abs(delta.y); // do aspect modification again with critical edge axis as primary\n\n      aspectMethod(state, xIsCriticalAxis, result.coords, result.rect);\n      extend(coords, result.coords);\n    }\n\n    return result.eventProps;\n  },\n\n  defaults: {\n    ratio: 'preserve',\n    equalDelta: false,\n    modifiers: [],\n    enabled: false\n  }\n};\n\nfunction setEqualDelta({\n  startCoords,\n  edgeSign\n}, xIsPrimaryAxis, coords) {\n  if (xIsPrimaryAxis) {\n    coords.y = startCoords.y + (coords.x - startCoords.x) * edgeSign;\n  } else {\n    coords.x = startCoords.x + (coords.y - startCoords.y) * edgeSign;\n  }\n}\n\nfunction setRatio({\n  startRect,\n  startCoords,\n  ratio,\n  edgeSign\n}, xIsPrimaryAxis, coords, rect) {\n  if (xIsPrimaryAxis) {\n    const newHeight = rect.width / ratio;\n    coords.y = startCoords.y + (newHeight - startRect.height) * edgeSign;\n  } else {\n    const newWidth = rect.height * ratio;\n    coords.x = startCoords.x + (newWidth - startRect.width) * edgeSign;\n  }\n}\n\nexport default makeModifier(aspectRatio, 'aspectRatio');\nexport { aspectRatio };\n//# sourceMappingURL=aspectRatio.js.map","const noop = () => {};\n\nnoop._defaults = {};\nexport default noop;\n//# sourceMappingURL=noop.js.map","import extend from \"../../utils/extend.js\";\nimport is from \"../../utils/is.js\";\nimport * as rectUtils from \"../../utils/rect.js\";\nimport { makeModifier } from \"../base.js\";\n\nfunction start({\n  rect,\n  startOffset,\n  state,\n  interaction,\n  pageCoords\n}) {\n  const {\n    options\n  } = state;\n  const {\n    elementRect\n  } = options;\n  const offset = extend({\n    left: 0,\n    top: 0,\n    right: 0,\n    bottom: 0\n  }, options.offset || {});\n\n  if (rect && elementRect) {\n    const restriction = getRestrictionRect(options.restriction, interaction, pageCoords);\n\n    if (restriction) {\n      const widthDiff = restriction.right - restriction.left - rect.width;\n      const heightDiff = restriction.bottom - restriction.top - rect.height;\n\n      if (widthDiff < 0) {\n        offset.left += widthDiff;\n        offset.right += widthDiff;\n      }\n\n      if (heightDiff < 0) {\n        offset.top += heightDiff;\n        offset.bottom += heightDiff;\n      }\n    }\n\n    offset.left += startOffset.left - rect.width * elementRect.left;\n    offset.top += startOffset.top - rect.height * elementRect.top;\n    offset.right += startOffset.right - rect.width * (1 - elementRect.right);\n    offset.bottom += startOffset.bottom - rect.height * (1 - elementRect.bottom);\n  }\n\n  state.offset = offset;\n}\n\nfunction set({\n  coords,\n  interaction,\n  state\n}) {\n  const {\n    options,\n    offset\n  } = state;\n  const restriction = getRestrictionRect(options.restriction, interaction, coords);\n\n  if (!restriction) {\n    return;\n  }\n\n  const rect = rectUtils.xywhToTlbr(restriction);\n  coords.x = Math.max(Math.min(rect.right - offset.right, coords.x), rect.left + offset.left);\n  coords.y = Math.max(Math.min(rect.bottom - offset.bottom, coords.y), rect.top + offset.top);\n}\n\nexport function getRestrictionRect(value, interaction, coords) {\n  if (is.func(value)) {\n    return rectUtils.resolveRectLike(value, interaction.interactable, interaction.element, [coords.x, coords.y, interaction]);\n  } else {\n    return rectUtils.resolveRectLike(value, interaction.interactable, interaction.element);\n  }\n}\nconst defaults = {\n  restriction: null,\n  elementRect: null,\n  offset: null,\n  endOnly: false,\n  enabled: false\n};\nconst restrict = {\n  start,\n  set,\n  defaults\n};\nexport default makeModifier(restrict, 'restrict');\nexport { restrict };\n//# sourceMappingURL=pointer.js.map","// This module adds the options.resize.restrictEdges setting which sets min and\n// max for the top, left, bottom and right edges of the target being resized.\n//\n// interact(target).resize({\n//   edges: { top: true, left: true },\n//   restrictEdges: {\n//     inner: { top: 200, left: 200, right: 400, bottom: 400 },\n//     outer: { top:   0, left:   0, right: 600, bottom: 600 },\n//   },\n// })\nimport extend from \"../../utils/extend.js\";\nimport * as rectUtils from \"../../utils/rect.js\";\nimport { makeModifier } from \"../base.js\";\nimport { getRestrictionRect } from \"./pointer.js\";\nconst noInner = {\n  top: +Infinity,\n  left: +Infinity,\n  bottom: -Infinity,\n  right: -Infinity\n};\nconst noOuter = {\n  top: -Infinity,\n  left: -Infinity,\n  bottom: +Infinity,\n  right: +Infinity\n};\n\nfunction start({\n  interaction,\n  startOffset,\n  state\n}) {\n  const {\n    options\n  } = state;\n  let offset;\n\n  if (options) {\n    const offsetRect = getRestrictionRect(options.offset, interaction, interaction.coords.start.page);\n    offset = rectUtils.rectToXY(offsetRect);\n  }\n\n  offset = offset || {\n    x: 0,\n    y: 0\n  };\n  state.offset = {\n    top: offset.y + startOffset.top,\n    left: offset.x + startOffset.left,\n    bottom: offset.y - startOffset.bottom,\n    right: offset.x - startOffset.right\n  };\n}\n\nfunction set({\n  coords,\n  edges,\n  interaction,\n  state\n}) {\n  const {\n    offset,\n    options\n  } = state;\n\n  if (!edges) {\n    return;\n  }\n\n  const page = extend({}, coords);\n  const inner = getRestrictionRect(options.inner, interaction, page) || {};\n  const outer = getRestrictionRect(options.outer, interaction, page) || {};\n  fixRect(inner, noInner);\n  fixRect(outer, noOuter);\n\n  if (edges.top) {\n    coords.y = Math.min(Math.max(outer.top + offset.top, page.y), inner.top + offset.top);\n  } else if (edges.bottom) {\n    coords.y = Math.max(Math.min(outer.bottom + offset.bottom, page.y), inner.bottom + offset.bottom);\n  }\n\n  if (edges.left) {\n    coords.x = Math.min(Math.max(outer.left + offset.left, page.x), inner.left + offset.left);\n  } else if (edges.right) {\n    coords.x = Math.max(Math.min(outer.right + offset.right, page.x), inner.right + offset.right);\n  }\n}\n\nfunction fixRect(rect, defaults) {\n  for (const edge of ['top', 'left', 'bottom', 'right']) {\n    if (!(edge in rect)) {\n      rect[edge] = defaults[edge];\n    }\n  }\n\n  return rect;\n}\n\nconst defaults = {\n  inner: null,\n  outer: null,\n  offset: null,\n  endOnly: false,\n  enabled: false\n};\nconst restrictEdges = {\n  noInner,\n  noOuter,\n  start,\n  set,\n  defaults\n};\nexport default makeModifier(restrictEdges, 'restrictEdges');\nexport { restrictEdges };\n//# sourceMappingURL=edges.js.map","import extend from \"../../utils/extend.js\";\nimport { makeModifier } from \"../base.js\";\nimport { restrict } from \"./pointer.js\";\nconst defaults = extend({\n  get elementRect() {\n    return {\n      top: 0,\n      left: 0,\n      bottom: 1,\n      right: 1\n    };\n  },\n\n  set elementRect(_) {}\n\n}, restrict.defaults);\nconst restrictRect = {\n  start: restrict.start,\n  set: restrict.set,\n  defaults\n};\nexport default makeModifier(restrictRect, 'restrictRect');\nexport { restrictRect };\n//# sourceMappingURL=rect.js.map","import extend from \"../../utils/extend.js\";\nimport * as rectUtils from \"../../utils/rect.js\";\nimport { makeModifier } from \"../base.js\";\nimport { restrictEdges } from \"./edges.js\";\nimport { getRestrictionRect } from \"./pointer.js\";\nconst noMin = {\n  width: -Infinity,\n  height: -Infinity\n};\nconst noMax = {\n  width: +Infinity,\n  height: +Infinity\n};\n\nfunction start(arg) {\n  return restrictEdges.start(arg);\n}\n\nfunction set(arg) {\n  const {\n    interaction,\n    state,\n    rect,\n    edges\n  } = arg;\n  const {\n    options\n  } = state;\n\n  if (!edges) {\n    return;\n  }\n\n  const minSize = rectUtils.tlbrToXywh(getRestrictionRect(options.min, interaction, arg.coords)) || noMin;\n  const maxSize = rectUtils.tlbrToXywh(getRestrictionRect(options.max, interaction, arg.coords)) || noMax;\n  state.options = {\n    endOnly: options.endOnly,\n    inner: extend({}, restrictEdges.noInner),\n    outer: extend({}, restrictEdges.noOuter)\n  };\n\n  if (edges.top) {\n    state.options.inner.top = rect.bottom - minSize.height;\n    state.options.outer.top = rect.bottom - maxSize.height;\n  } else if (edges.bottom) {\n    state.options.inner.bottom = rect.top + minSize.height;\n    state.options.outer.bottom = rect.top + maxSize.height;\n  }\n\n  if (edges.left) {\n    state.options.inner.left = rect.right - minSize.width;\n    state.options.outer.left = rect.right - maxSize.width;\n  } else if (edges.right) {\n    state.options.inner.right = rect.left + minSize.width;\n    state.options.outer.right = rect.left + maxSize.width;\n  }\n\n  restrictEdges.set(arg);\n  state.options = options;\n}\n\nconst defaults = {\n  min: null,\n  max: null,\n  endOnly: false,\n  enabled: false\n};\nconst restrictSize = {\n  start,\n  set,\n  defaults\n};\nexport default makeModifier(restrictSize, 'restrictSize');\nexport { restrictSize };\n//# sourceMappingURL=size.js.map","import extend from \"../../utils/extend.js\";\nimport getOriginXY from \"../../utils/getOriginXY.js\";\nimport hypot from \"../../utils/hypot.js\";\nimport is from \"../../utils/is.js\";\nimport { resolveRectLike, rectToXY } from \"../../utils/rect.js\";\nimport { makeModifier } from \"../base.js\";\n\nfunction start(arg) {\n  const {\n    interaction,\n    interactable,\n    element,\n    rect,\n    state,\n    startOffset\n  } = arg;\n  const {\n    options\n  } = state;\n  const origin = options.offsetWithOrigin ? getOrigin(arg) : {\n    x: 0,\n    y: 0\n  };\n  let snapOffset;\n\n  if (options.offset === 'startCoords') {\n    snapOffset = {\n      x: interaction.coords.start.page.x,\n      y: interaction.coords.start.page.y\n    };\n  } else {\n    const offsetRect = resolveRectLike(options.offset, interactable, element, [interaction]);\n    snapOffset = rectToXY(offsetRect) || {\n      x: 0,\n      y: 0\n    };\n    snapOffset.x += origin.x;\n    snapOffset.y += origin.y;\n  }\n\n  const {\n    relativePoints\n  } = options;\n  state.offsets = rect && relativePoints && relativePoints.length ? relativePoints.map((relativePoint, index) => ({\n    index,\n    relativePoint,\n    x: startOffset.left - rect.width * relativePoint.x + snapOffset.x,\n    y: startOffset.top - rect.height * relativePoint.y + snapOffset.y\n  })) : [extend({\n    index: 0,\n    relativePoint: null\n  }, snapOffset)];\n}\n\nfunction set(arg) {\n  const {\n    interaction,\n    coords,\n    state\n  } = arg;\n  const {\n    options,\n    offsets\n  } = state;\n  const origin = getOriginXY(interaction.interactable, interaction.element, interaction.prepared.name);\n  const page = extend({}, coords);\n  const targets = [];\n\n  if (!options.offsetWithOrigin) {\n    page.x -= origin.x;\n    page.y -= origin.y;\n  }\n\n  for (const offset of offsets) {\n    const relativeX = page.x - offset.x;\n    const relativeY = page.y - offset.y;\n\n    for (let index = 0, len = options.targets.length; index < len; index++) {\n      const snapTarget = options.targets[index];\n      let target;\n\n      if (is.func(snapTarget)) {\n        target = snapTarget(relativeX, relativeY, interaction._proxy, offset, index);\n      } else {\n        target = snapTarget;\n      }\n\n      if (!target) {\n        continue;\n      }\n\n      targets.push({\n        x: (is.number(target.x) ? target.x : relativeX) + offset.x,\n        y: (is.number(target.y) ? target.y : relativeY) + offset.y,\n        range: is.number(target.range) ? target.range : options.range,\n        source: snapTarget,\n        index,\n        offset\n      });\n    }\n  }\n\n  const closest = {\n    target: null,\n    inRange: false,\n    distance: 0,\n    range: 0,\n    delta: {\n      x: 0,\n      y: 0\n    }\n  };\n\n  for (const target of targets) {\n    const range = target.range;\n    const dx = target.x - page.x;\n    const dy = target.y - page.y;\n    const distance = hypot(dx, dy);\n    let inRange = distance <= range; // Infinite targets count as being out of range\n    // compared to non infinite ones that are in range\n\n    if (range === Infinity && closest.inRange && closest.range !== Infinity) {\n      inRange = false;\n    }\n\n    if (!closest.target || (inRange // is the closest target in range?\n    ? closest.inRange && range !== Infinity // the pointer is relatively deeper in this target\n    ? distance / range < closest.distance / closest.range // this target has Infinite range and the closest doesn't\n    : range === Infinity && closest.range !== Infinity || // OR this target is closer that the previous closest\n    distance < closest.distance : // The other is not in range and the pointer is closer to this target\n    !closest.inRange && distance < closest.distance)) {\n      closest.target = target;\n      closest.distance = distance;\n      closest.range = range;\n      closest.inRange = inRange;\n      closest.delta.x = dx;\n      closest.delta.y = dy;\n    }\n  }\n\n  if (closest.inRange) {\n    coords.x = closest.target.x;\n    coords.y = closest.target.y;\n  }\n\n  state.closest = closest;\n  return closest;\n}\n\nfunction getOrigin(arg) {\n  const {\n    element\n  } = arg.interaction;\n  const optionsOrigin = rectToXY(resolveRectLike(arg.state.options.origin, null, null, [element]));\n  const origin = optionsOrigin || getOriginXY(arg.interactable, element, arg.interaction.prepared.name);\n  return origin;\n}\n\nconst defaults = {\n  range: Infinity,\n  targets: null,\n  offset: null,\n  offsetWithOrigin: true,\n  origin: null,\n  relativePoints: null,\n  endOnly: false,\n  enabled: false\n};\nconst snap = {\n  start,\n  set,\n  defaults\n};\nexport default makeModifier(snap, 'snap');\nexport { snap };\n//# sourceMappingURL=pointer.js.map","// This module allows snapping of the size of targets during resize\n// interactions.\nimport extend from \"../../utils/extend.js\";\nimport is from \"../../utils/is.js\";\nimport { makeModifier } from \"../base.js\";\nimport { snap } from \"./pointer.js\";\n\nfunction start(arg) {\n  const {\n    state,\n    edges\n  } = arg;\n  const {\n    options\n  } = state;\n\n  if (!edges) {\n    return null;\n  }\n\n  arg.state = {\n    options: {\n      targets: null,\n      relativePoints: [{\n        x: edges.left ? 0 : 1,\n        y: edges.top ? 0 : 1\n      }],\n      offset: options.offset || 'self',\n      origin: {\n        x: 0,\n        y: 0\n      },\n      range: options.range\n    }\n  };\n  state.targetFields = state.targetFields || [['width', 'height'], ['x', 'y']];\n  snap.start(arg);\n  state.offsets = arg.state.offsets;\n  arg.state = state;\n}\n\nfunction set(arg) {\n  const {\n    interaction,\n    state,\n    coords\n  } = arg;\n  const {\n    options,\n    offsets\n  } = state;\n  const relative = {\n    x: coords.x - offsets[0].x,\n    y: coords.y - offsets[0].y\n  };\n  state.options = extend({}, options);\n  state.options.targets = [];\n\n  for (const snapTarget of options.targets || []) {\n    let target;\n\n    if (is.func(snapTarget)) {\n      target = snapTarget(relative.x, relative.y, interaction);\n    } else {\n      target = snapTarget;\n    }\n\n    if (!target) {\n      continue;\n    }\n\n    for (const [xField, yField] of state.targetFields) {\n      if (xField in target || yField in target) {\n        target.x = target[xField];\n        target.y = target[yField];\n        break;\n      }\n    }\n\n    state.options.targets.push(target);\n  }\n\n  const returnValue = snap.set(arg);\n  state.options = options;\n  return returnValue;\n}\n\nconst defaults = {\n  range: Infinity,\n  targets: null,\n  offset: null,\n  endOnly: false,\n  enabled: false\n};\nconst snapSize = {\n  start,\n  set,\n  defaults\n};\nexport default makeModifier(snapSize, 'snapSize');\nexport { snapSize };\n//# sourceMappingURL=size.js.map","/**\n * @module modifiers/snapEdges\n *\n * @description\n * WOW> This module allows snapping of the edges of targets during resize\n * interactions.\n *\n * ```js\n * interact(target).resizable({\n *   snapEdges: {\n *     targets: [interact.snappers.grid({ x: 100, y: 50 })],\n *   },\n * })\n *\n * interact(target).resizable({\n *   snapEdges: {\n *     targets: [\n *       interact.snappers.grid({\n *        top: 50,\n *        left: 50,\n *        bottom: 100,\n *        right: 100,\n *       }),\n *     ],\n *   },\n * })\n * ```\n */\nimport clone from \"../../utils/clone.js\";\nimport extend from \"../../utils/extend.js\";\nimport { makeModifier } from \"../base.js\";\nimport { snapSize } from \"./size.js\";\n\nfunction start(arg) {\n  const {\n    edges\n  } = arg;\n\n  if (!edges) {\n    return null;\n  }\n\n  arg.state.targetFields = arg.state.targetFields || [[edges.left ? 'left' : 'right', edges.top ? 'top' : 'bottom']];\n  return snapSize.start(arg);\n}\n\nconst snapEdges = {\n  start,\n  set: snapSize.set,\n  defaults: extend(clone(snapSize.defaults), {\n    targets: null,\n    range: null,\n    offset: {\n      x: 0,\n      y: 0\n    }\n  })\n};\nexport default makeModifier(snapEdges, 'snapEdges');\nexport { snapEdges };\n//# sourceMappingURL=edges.js.map","/* eslint-disable node/no-extraneous-import */\nimport aspectRatio from \"./aspectRatio.js\";\nimport avoid from \"./avoid.js\";\nimport restrictEdges from \"./restrict/edges.js\";\nimport restrict from \"./restrict/pointer.js\";\nimport restrictRect from \"./restrict/rect.js\";\nimport restrictSize from \"./restrict/size.js\";\nimport rubberband from \"./rubberband.js\";\nimport snapEdges from \"./snap/edges.js\";\nimport snap from \"./snap/pointer.js\";\nimport snapSize from \"./snap/size.js\";\nimport spring from \"./spring.js\";\nimport transform from \"./transform.js\";\nexport default {\n  aspectRatio,\n  restrictEdges,\n  restrict,\n  restrictRect,\n  restrictSize,\n  snapEdges,\n  snap,\n  snapSize,\n  spring,\n  avoid,\n  transform,\n  rubberband\n};\n//# sourceMappingURL=all.js.map","import snappers from \"../snappers/plugin.js\";\nimport all from \"./all.js\";\nimport base from \"./base.js\";\nconst modifiers = {\n  id: 'modifiers',\n\n  install(scope) {\n    const {\n      interactStatic: interact\n    } = scope;\n    scope.usePlugin(base);\n    scope.usePlugin(snappers);\n    interact.modifiers = all; // for backwrads compatibility\n\n    for (const type in all) {\n      const {\n        _defaults,\n        _methods\n      } = all[type];\n      _defaults._methods = _methods;\n      scope.defaults.perAction[type] = _defaults;\n    }\n  }\n\n};\nexport default modifiers;\n//# sourceMappingURL=plugin.js.map","/* eslint-disable import/order, no-console, eol-last */\nimport interact, { init } from \"../interact/index.js\";\nimport plugin from \"./plugin.js\";\n\nif (typeof window === 'object' && !!window) {\n  init(window);\n}\n\ninteract.use(plugin);\n//# sourceMappingURL=index.js.map","/* eslint-disable no-console */\nimport { Scope } from \"../core/scope.js\";\nimport domObjects from \"../utils/domObjects.js\";\nimport { parentNode } from \"../utils/domUtils.js\";\nimport extend from \"../utils/extend.js\";\nimport is from \"../utils/is.js\";\nimport * as win from \"../utils/window.js\";\nvar CheckName;\n\n(function (CheckName) {\n  CheckName[\"touchAction\"] = \"touchAction\";\n  CheckName[\"boxSizing\"] = \"boxSizing\";\n  CheckName[\"noListeners\"] = \"noListeners\";\n})(CheckName || (CheckName = {}));\n\nconst prefix = '[interact.js] ';\nconst links = {\n  touchAction: 'https://developer.mozilla.org/en-US/docs/Web/CSS/touch-action',\n  boxSizing: 'https://developer.mozilla.org/en-US/docs/Web/CSS/box-sizing'\n}; // eslint-disable-next-line no-undef\n\nconst isProduction = \"development\" === 'production'; // eslint-disable-next-line no-restricted-syntax\n\nfunction install(scope, {\n  logger\n} = {}) {\n  const {\n    Interactable,\n    defaults\n  } = scope;\n  scope.logger = logger || console;\n  defaults.base.devTools = {\n    ignore: {}\n  };\n\n  Interactable.prototype.devTools = function (options) {\n    if (options) {\n      extend(this.options.devTools, options);\n      return this;\n    }\n\n    return this.options.devTools;\n  };\n}\n\nconst checks = [{\n  name: CheckName.touchAction,\n\n  perform({\n    element\n  }) {\n    return !parentHasStyle(element, 'touchAction', /pan-|pinch|none/);\n  },\n\n  getInfo({\n    element\n  }) {\n    return [element, links.touchAction];\n  },\n\n  text: 'Consider adding CSS \"touch-action: none\" to this element\\n'\n}, {\n  name: CheckName.boxSizing,\n\n  perform(interaction) {\n    const {\n      element\n    } = interaction;\n    return interaction.prepared.name === 'resize' && element instanceof domObjects.HTMLElement && !hasStyle(element, 'boxSizing', /border-box/);\n  },\n\n  text: 'Consider adding CSS \"box-sizing: border-box\" to this resizable element',\n\n  getInfo({\n    element\n  }) {\n    return [element, links.boxSizing];\n  }\n\n}, {\n  name: CheckName.noListeners,\n\n  perform(interaction) {\n    const actionName = interaction.prepared.name;\n    const moveListeners = interaction.interactable.events.types[`${actionName}move`] || [];\n    return !moveListeners.length;\n  },\n\n  getInfo(interaction) {\n    return [interaction.prepared.name, interaction.interactable];\n  },\n\n  text: 'There are no listeners set for this action'\n}];\n\nfunction hasStyle(element, prop, styleRe) {\n  const value = element.style[prop] || win.window.getComputedStyle(element)[prop];\n  return styleRe.test((value || '').toString());\n}\n\nfunction parentHasStyle(element, prop, styleRe) {\n  let parent = element;\n\n  while (is.element(parent)) {\n    if (hasStyle(parent, prop, styleRe)) {\n      return true;\n    }\n\n    parent = parentNode(parent);\n  }\n\n  return false;\n}\n\nconst id = 'dev-tools';\nconst defaultExport = isProduction ? {\n  id,\n  install: () => {}\n} : {\n  id,\n  install,\n  listeners: {\n    'interactions:action-start': ({\n      interaction\n    }, scope) => {\n      for (const check of checks) {\n        const options = interaction.interactable && interaction.interactable.options;\n\n        if (!(options && options.devTools && options.devTools.ignore[check.name]) && check.perform(interaction)) {\n          scope.logger.warn(prefix + check.text, ...check.getInfo(interaction));\n        }\n      }\n    }\n  },\n  checks,\n  CheckName,\n  links,\n  prefix\n};\nexport default defaultExport;\n//# sourceMappingURL=plugin.js.map","/* eslint-disable import/order, no-console, eol-last */\nimport interact, { init } from \"../interact/index.js\";\nimport plugin from \"./plugin.js\";\n\nif (typeof window === 'object' && !!window) {\n  init(window);\n}\n\ninteract.use(plugin);\n//# sourceMappingURL=index.js.map","export { default } from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./GridItem.vue?vue&type=script&lang=js\"; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./GridItem.vue?vue&type=script&lang=js\"","import { render } from \"./GridItem.vue?vue&type=template&id=46ff2fc8\"\nimport script from \"./GridItem.vue?vue&type=script&lang=js\"\nexport * from \"./GridItem.vue?vue&type=script&lang=js\"\n\nimport \"./GridItem.vue?vue&type=style&index=0&id=46ff2fc8&lang=css\"\n\nimport exportComponent from \"/Users/bytedance/Documents/codes/github/vue-grid-layout/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n    <div ref=\"item\" class=\"vue-grid-layout\" :style=\"mergedStyle\">\n        <slot></slot>\n        <grid-item class=\"vue-grid-placeholder\"\n                   v-show=\"isDragging\"\n                   :x=\"placeholder.x\"\n                   :y=\"placeholder.y\"\n                   :w=\"placeholder.w\"\n                   :h=\"placeholder.h\"\n                   :i=\"placeholder.i\"></grid-item>\n    </div>\n</template>\n<style>\n    .vue-grid-layout {\n        position: relative;\n        transition: height 200ms ease;\n    }\n</style>\n<script>\n    import mitt from 'mitt';\n    const elementResizeDetectorMaker = require(\"element-resize-detector\");\n\n    import {bottom, compact, getLayoutItem, moveElement, validateLayout, cloneLayout, getAllCollisions} from '@/helpers/utils';\n    import {getBreakpointFromWidth, getColsFromBreakpoint, findOrGenerateResponsiveLayout} from \"@/helpers/responsiveUtils\";\n    //var eventBus = require('./eventBus');\n\n    import GridItem from './GridItem.vue'\n    import {addWindowEventListener, removeWindowEventListener} from \"@/helpers/DOM\";\n\n    export default {\n        name: \"GridLayout\",\n        provide() {\n            return {\n                eventBus: this.eventBus,\n                layout: this\n            }\n        },\n        components: {\n            GridItem,\n        },\n        props: {\n            // If true, the container height swells and contracts to fit contents\n            autoSize: {\n                type: Boolean,\n                default: true\n            },\n            colNum: {\n                type: Number,\n                default: 12\n            },\n            rowHeight: {\n                type: Number,\n                default: 150\n            },\n            maxRows: {\n                type: Number,\n                default: Infinity\n            },\n            margin: {\n                type: Array,\n                default: function () {\n                    return [10, 10];\n                }\n            },\n            isDraggable: {\n                type: Boolean,\n                default: true\n            },\n            isResizable: {\n                type: Boolean,\n                default: true\n            },\n            isMirrored: {\n                type: Boolean,\n                default: false\n            },\n            useCssTransforms: {\n                type: Boolean,\n                default: true\n            },\n            verticalCompact: {\n                type: Boolean,\n                default: true\n            },\n            layout: {\n                type: Array,\n                required: true\n            },\n            responsive: {\n                type: Boolean,\n                default: false\n            },\n            responsiveLayouts: {\n                type: Object,\n                default: function() {\n                    return {};\n                }\n            },\n            breakpoints:{\n                type: Object,\n                default: function(){return{ lg: 1200, md: 996, sm: 768, xs: 480, xxs: 0 }}\n            },\n            cols:{\n                type: Object,\n                default: function(){return{ lg: 12, md: 10, sm: 6, xs: 4, xxs: 2 }},\n            },\n            preventCollision: {\n                type: Boolean,\n                default: false\n            },\n            useStyleCursor: {\n                type: Boolean,\n                default: true\n            }\n        },\n        data: function () {\n            return {\n                eventBus: mitt(),\n                width: null,\n                mergedStyle: {},\n                lastLayoutLength: 0,\n                isDragging: false,\n                placeholder: {\n                    x: 0,\n                    y: 0,\n                    w: 0,\n                    h: 0,\n                    i: -1\n                },\n                layouts: {}, // array to store all layouts from different breakpoints\n                lastBreakpoint: null, // store last active breakpoint\n                originalLayout: null, // store original Layout\n                // layout: JSON.parse(JSON.stringify(this.value)),\n            };\n        },\n        created () {\n            const self = this;\n\n            // Accessible refernces of functions for removing in beforeUnmount\n            self.resizeEventHandler = function({eventType, i, x, y, h, w}) {\n                self.resizeEvent(eventType, i, x, y, h, w);\n            };\n\n            self.dragEventHandler = function({eventType, i, x, y, h, w}) {\n                self.dragEvent(eventType, i, x, y, h, w);\n            };\n\n            self.eventBus.on('resizeEvent', self.resizeEventHandler);\n            self.eventBus.on('dragEvent', self.dragEventHandler);\n            self.$emit('layout-created', self.layout);\n        },\n        beforeUnmount: function(){\n            //Remove listeners\n            this.eventBus.off('resizeEvent', this.resizeEventHandler);\n            this.eventBus.off('dragEvent', this.dragEventHandler);\n            removeWindowEventListener(\"resize\", this.onWindowResize);\n            if (this.erd) {\n                this.erd.uninstall(this.$refs.item);\n            }\n        },\n        beforeMount: function() {\n            this.$emit('layout-before-mount', this.layout);\n        },\n        mounted: function() {\n            this.$emit('layout-mounted', this.layout);\n            this.$nextTick(function () {\n                validateLayout(this.layout);\n\n                this.originalLayout = this.layout;\n                const self = this;\n                this.$nextTick(function() {\n                    self.onWindowResize();\n\n                    self.initResponsiveFeatures();\n\n                    //self.width = self.$el.offsetWidth;\n                    addWindowEventListener('resize', self.onWindowResize);\n\n                    compact(self.layout, self.verticalCompact);\n\n                    self.$emit('layout-updated',self.layout)\n\n                    self.updateHeight();\n                    self.$nextTick(function () {\n                        this.erd = elementResizeDetectorMaker({\n                            strategy: \"scroll\", //<- For ultra performance.\n                            // See https://github.com/wnr/element-resize-detector/issues/110 about callOnAdd.\n                            callOnAdd: false,\n                        });\n                        this.erd.listenTo(self.$refs.item, function () {\n                            self.onWindowResize();\n                        });\n                    });\n                });\n            });\n        },\n        watch: {\n            width: function (newval, oldval) {\n                const self = this;\n                this.$nextTick(function () {\n                    //this.$broadcast(\"updateWidth\", this.width);\n                    this.eventBus.emit(\"updateWidth\", this.width);\n                    if (oldval === null) {\n                        /*\n                            If oldval == null is when the width has never been\n                            set before. That only occurs when mouting is\n                            finished, and onWindowResize has been called and\n                            this.width has been changed the first time after it\n                            got set to null in the constructor. It is now time\n                            to issue layout-ready events as the GridItems have\n                            their sizes configured properly.\n\n                            The reason for emitting the layout-ready events on\n                            the next tick is to allow for the newly-emitted\n                            updateWidth event (above) to have reached the\n                            children GridItem-s and had their effect, so we're\n                            sure that they have the final size before we emit\n                            layout-ready (for this GridLayout) and\n                            item-layout-ready (for the GridItem-s).\n\n                            This way any client event handlers can reliably\n                            invistigate stable sizes of GridItem-s.\n                        */\n                        this.$nextTick(() => {\n                            this.$emit('layout-ready', self.layout);\n                        });\n                    }\n                    this.updateHeight();\n                });\n            },\n            layout() {\n                this.layoutUpdate();\n            },\n            colNum: function (val) {\n                this.eventBus.emit(\"setColNum\", val);\n            },\n            rowHeight: function() {\n                this.eventBus.emit(\"setRowHeight\", this.rowHeight);\n            },\n            isDraggable: function() {\n                this.eventBus.emit(\"setDraggable\", this.isDraggable);\n            },\n            isResizable: function() {\n                this.eventBus.emit(\"setResizable\", this.isResizable);\n            },\n            responsive() {\n                if (!this.responsive) {\n                    this.$emit('update:layout', this.originalLayout);\n                    this.eventBus.emit(\"setColNum\", this.colNum);\n                }\n                this.onWindowResize();\n            },\n            maxRows: function() {\n                this.eventBus.emit(\"setMaxRows\", this.maxRows);\n            },\n            margin() {\n                this.updateHeight();\n            }\n        },\n        methods: {\n            layoutUpdate() {\n                if (this.layout !== undefined && this.originalLayout !== null) {\n                    if (this.layout.length !== this.originalLayout.length) {\n                        // console.log(\"### LAYOUT UPDATE!\", this.layout.length, this.originalLayout.length);\n\n                        let diff = this.findDifference(this.layout, this.originalLayout);\n                        if (diff.length > 0){\n                            // console.log(diff);\n                            if (this.layout.length > this.originalLayout.length) {\n                                this.originalLayout = this.originalLayout.concat(diff);\n                            } else {\n                                this.originalLayout = this.originalLayout.filter(obj => {\n                                    return !diff.some(obj2 => {\n                                        return obj.i === obj2.i;\n                                    });\n                                });\n                            }\n                        }\n\n                        this.lastLayoutLength = this.layout.length;\n                        this.initResponsiveFeatures();\n                    }\n\n                    compact(this.layout, this.verticalCompact);\n                    this.eventBus.emit(\"updateWidth\", this.width);\n                    this.updateHeight();\n\n                    this.$emit('layout-updated',this.layout)\n                }\n            },\n            updateHeight: function () {\n                this.mergedStyle = {\n                    height: this.containerHeight()\n                };\n            },\n            onWindowResize: function () {\n                if (this.$refs !== null && this.$refs.item !== null && this.$refs.item !== undefined) {\n                    this.width = this.$refs.item.offsetWidth;\n                }\n                this.eventBus.emit(\"resizeEvent\", {});\n            },\n            containerHeight: function () {\n                if (!this.autoSize) return;\n                // console.log(\"bottom: \" + bottom(this.layout))\n                // console.log(\"rowHeight + margins: \" + (this.rowHeight + this.margin[1]) + this.margin[1])\n                const containerHeight =  bottom(this.layout) * (this.rowHeight + this.margin[1]) + this.margin[1] + 'px';\n                return containerHeight;\n            },\n            dragEvent: function (eventName, id, x, y, h, w) {\n                //console.log(eventName + \" id=\" + id + \", x=\" + x + \", y=\" + y);\n                let l = getLayoutItem(this.layout, id);\n                //GetLayoutItem sometimes returns null object\n                if (l === undefined || l === null){\n                    l = {x:0, y:0}\n                }\n\n                if (eventName === \"dragmove\" || eventName === \"dragstart\") {\n                    this.placeholder.i = id;\n                    this.placeholder.x = l.x;\n                    this.placeholder.y = l.y;\n                    this.placeholder.w = w;\n                    this.placeholder.h = h;\n                    this.$nextTick(function() {\n                        this.isDragging = true;\n                    });\n                    //this.$broadcast(\"updateWidth\", this.width);\n                    this.eventBus.emit(\"updateWidth\", this.width);\n                } else {\n                    this.$nextTick(function() {\n                        this.isDragging = false;\n                    });\n                }\n\n                // Move the element to the dragged location.\n                this.$emit(\"update:layout\", moveElement(this.layout, l, x, y, true, this.preventCollision));\n                compact(this.layout, this.verticalCompact);\n                // needed because vue can't detect changes on array element properties\n                this.eventBus.emit(\"compact\");\n                this.updateHeight();\n                if (eventName === 'dragend') this.$emit('layout-updated', this.layout);\n            },\n            resizeEvent: function (eventName, id, x, y, h, w) {\n                let l = getLayoutItem(this.layout, id);\n                //GetLayoutItem sometimes return null object\n                if (l === undefined || l === null){\n                    l = {h:0, w:0}\n                }\n\n                let hasCollisions;\n                if (this.preventCollision) {\n                    const collisions = getAllCollisions(this.layout, { ...l, w, h }).filter(\n                        layoutItem => layoutItem.i !== l.i\n                    );\n                    hasCollisions = collisions.length > 0;\n\n                    // If we're colliding, we need adjust the placeholder.\n                    if (hasCollisions) {\n                        // adjust w && h to maximum allowed space\n                        let leastX = Infinity,\n                        leastY = Infinity;\n                        collisions.forEach(layoutItem => {\n                        if (layoutItem.x > l.x) leastX = Math.min(leastX, layoutItem.x);\n                        if (layoutItem.y > l.y) leastY = Math.min(leastY, layoutItem.y);\n                        });\n\n                        if (Number.isFinite(leastX)) l.w = leastX - l.x;\n                        if (Number.isFinite(leastY)) l.h = leastY - l.y;\n                    }\n                }\n\n                if (!hasCollisions) {\n                    // Set new width and height.\n                    l.w = w;\n                    l.h = h;\n                }\n\n                if (eventName === \"resizestart\" || eventName === \"resizemove\") {\n                    this.placeholder.i = id;\n                    this.placeholder.x = x;\n                    this.placeholder.y = y;\n                    this.placeholder.w = l.w;\n                    this.placeholder.h = l.h;\n                    this.$nextTick(function() {\n                        this.isDragging = true;\n                    });\n                    //this.$broadcast(\"updateWidth\", this.width);\n                    this.eventBus.emit(\"updateWidth\", this.width);\n\n                } else {\n                    this.$nextTick(function() {\n                        this.isDragging = false;\n                    });\n                }\n\n                if (this.responsive) this.responsiveGridLayout();\n\n                compact(this.layout, this.verticalCompact);\n                this.eventBus.emit(\"compact\");\n                this.updateHeight();\n\n                if (eventName === 'resizeend') this.$emit('layout-updated', this.layout);\n            },\n\n            // finds or generates new layouts for set breakpoints\n            responsiveGridLayout(){\n                let newBreakpoint = getBreakpointFromWidth(this.breakpoints, this.width);\n                let newCols = getColsFromBreakpoint(newBreakpoint, this.cols);\n\n                // save actual layout in layouts\n                if(this.lastBreakpoint != null && !this.layouts[this.lastBreakpoint])\n                    this.layouts[this.lastBreakpoint] = cloneLayout(this.layout);\n\n                // Find or generate a new layout.\n                let layout = findOrGenerateResponsiveLayout(\n                    this.originalLayout,\n                    this.layouts,\n                    this.breakpoints,\n                    newBreakpoint,\n                    this.lastBreakpoint,\n                    newCols,\n                    this.verticalCompact\n                );\n\n                // Store the new layout.\n                this.layouts[newBreakpoint] = layout;\n\n                if (this.lastBreakpoint !== newBreakpoint) {\n                    this.$emit('breakpoint-changed', newBreakpoint, layout);\n                }\n\n                // new prop sync\n                this.$emit('update:layout', layout);\n\n                this.lastBreakpoint = newBreakpoint;\n                this.eventBus.emit(\"setColNum\", getColsFromBreakpoint(newBreakpoint, this.cols));\n            },\n\n            // clear all responsive layouts\n            initResponsiveFeatures(){\n                // clear layouts\n                this.layouts = Object.assign({}, this.responsiveLayouts);\n            },\n\n            // find difference in layouts\n            findDifference(layout, originalLayout){\n\n                //Find values that are in result1 but not in result2\n                let uniqueResultOne = layout.filter(function(obj) {\n                    return !originalLayout.some(function(obj2) {\n                        return obj.i === obj2.i;\n                    });\n                });\n\n                //Find values that are in result2 but not in result1\n                let uniqueResultTwo = originalLayout.filter(function(obj) {\n                    return !layout.some(function(obj2) {\n                        return obj.i === obj2.i;\n                    });\n                });\n\n                //Combine the two arrays of unique entries#\n                return uniqueResultOne.concat(uniqueResultTwo);\n            }\n        },\n    }\n</script>\n","import _Object$defineProperty from \"@babel/runtime-corejs2/core-js/object/define-property\";\nexport default function _defineProperty(obj, key, value) {\n  if (key in obj) {\n    _Object$defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n\n  return obj;\n}","export default function(n){return{all:n=n||new Map,on:function(t,e){var i=n.get(t);i&&i.push(e)||n.set(t,[e])},off:function(t,e){var i=n.get(t);i&&i.splice(i.indexOf(e)>>>0,1)},emit:function(t,e){(n.get(t)||[]).slice().map(function(n){n(e)}),(n.get(\"*\")||[]).slice().map(function(n){n(t,e)})}}}\n//# sourceMappingURL=mitt.es.js.map\n","export { default } from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./GridLayout.vue?vue&type=script&lang=js\"; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./GridLayout.vue?vue&type=script&lang=js\"","import { render } from \"./GridLayout.vue?vue&type=template&id=fc5948f6\"\nimport script from \"./GridLayout.vue?vue&type=script&lang=js\"\nexport * from \"./GridLayout.vue?vue&type=script&lang=js\"\n\nimport \"./GridLayout.vue?vue&type=style&index=0&id=fc5948f6&lang=css\"\n\nimport exportComponent from \"/Users/bytedance/Documents/codes/github/vue-grid-layout/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { App } from 'vue';\n\nimport GridItem from './GridItem.vue';\nimport GridLayout from './GridLayout.vue';\n\nexport { GridLayout, GridItem };\n\nconst install = (app: App) => {\n    app.component('grid-layout', GridLayout)\n    app.component('grid-item', GridItem)\n}\ninstall.GridItem = GridItem;\ninstall.GridLayout = GridLayout;\n\nexport default install;","import './setPublicPath'\nimport mod from '~entry'\nexport default mod\nexport * from '~entry'\n","// 20.1.2.2 Number.isFinite(number)\nvar $export = require('./_export');\nvar _isFinite = require('./_global').isFinite;\n\n$export($export.S, 'Number', {\n  isFinite: function isFinite(it) {\n    return typeof it == 'number' && _isFinite(it);\n  }\n});\n","module.exports = '\\x09\\x0A\\x0B\\x0C\\x0D\\x20\\xA0\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003' +\n  '\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n"],"sourceRoot":""}
\ No newline at end of file
diff --git a/dist/vue-grid-layout.umd.js b/dist/vue-grid-layout.umd.js
index 5896d5ad..178c4f7e 100644
--- a/dist/vue-grid-layout.umd.js
+++ b/dist/vue-grid-layout.umd.js
@@ -1,4 +1,4 @@
-/*! vue-grid-layout - 3.0.0-beta1 | (c) 2015, 2021  Gustavo Santos (JBay Solutions) <gustavo.santos@jbaysolutions.com> (http://www.jbaysolutions.com) | https://github.com/jbaysolutions/vue-grid-layout */
+/*! vue-grid-layout - 3.0.0-beta1 | (c) 2015, 2023  Gustavo Santos (JBay Solutions) <gustavo.santos@jbaysolutions.com> (http://www.jbaysolutions.com) | https://github.com/jbaysolutions/vue-grid-layout */
 (function webpackUniversalModuleDefinition(root, factory) {
 	if(typeof exports === 'object' && typeof module === 'object')
 		module.exports = factory(require("vue"));
@@ -212,6 +212,17 @@ module.exports = function (S, index, unicode) {
 };
 
 
+/***/ }),
+
+/***/ "07e3":
+/***/ (function(module, exports) {
+
+var hasOwnProperty = {}.hasOwnProperty;
+module.exports = function (it, key) {
+  return hasOwnProperty.call(it, key);
+};
+
+
 /***/ }),
 
 /***/ "083e":
@@ -603,6 +614,39 @@ detector.isLegacyOpera = function() {
 };
 
 
+/***/ }),
+
+/***/ "1bc3":
+/***/ (function(module, exports, __webpack_require__) {
+
+// 7.1.1 ToPrimitive(input [, PreferredType])
+var isObject = __webpack_require__("f772");
+// instead of the ES6 spec version, we didn't implement @@toPrimitive case
+// and the second argument - flag - preferred type is a string
+module.exports = function (it, S) {
+  if (!isObject(it)) return it;
+  var fn, val;
+  if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;
+  if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;
+  if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;
+  throw TypeError("Can't convert object to primitive value");
+};
+
+
+/***/ }),
+
+/***/ "1ec9":
+/***/ (function(module, exports, __webpack_require__) {
+
+var isObject = __webpack_require__("f772");
+var document = __webpack_require__("e53d").document;
+// typeof document.createElement is 'object' in old IE
+var is = isObject(document) && isObject(document.createElement);
+module.exports = function (it) {
+  return is ? document.createElement(it) : {};
+};
+
+
 /***/ }),
 
 /***/ "214f":
@@ -860,6 +904,20 @@ function toComment(sourceMap) {
 exports.f = Object.getOwnPropertySymbols;
 
 
+/***/ }),
+
+/***/ "294c":
+/***/ (function(module, exports) {
+
+module.exports = function (exec) {
+  try {
+    return !!exec();
+  } catch (e) {
+    return true;
+  }
+};
+
+
 /***/ }),
 
 /***/ "2aba":
@@ -1042,6 +1100,21 @@ module.exports = __webpack_require__("9e1e") ? function (object, key, value) {
 };
 
 
+/***/ }),
+
+/***/ "35e8":
+/***/ (function(module, exports, __webpack_require__) {
+
+var dP = __webpack_require__("d9f6");
+var createDesc = __webpack_require__("aebd");
+module.exports = __webpack_require__("8e60") ? function (object, key, value) {
+  return dP.f(object, key, createDesc(1, value));
+} : function (object, key, value) {
+  object[key] = value;
+  return object;
+};
+
+
 /***/ }),
 
 /***/ "38fd":
@@ -1083,6 +1156,18 @@ module.exports = function (Constructor, NAME, next) {
 };
 
 
+/***/ }),
+
+/***/ "454f":
+/***/ (function(module, exports, __webpack_require__) {
+
+__webpack_require__("46a7");
+var $Object = __webpack_require__("584a").Object;
+module.exports = function defineProperty(it, key, desc) {
+  return $Object.defineProperty(it, key, desc);
+};
+
+
 /***/ }),
 
 /***/ "456d":
@@ -1127,6 +1212,16 @@ module.exports = function (bitmap, value) {
 };
 
 
+/***/ }),
+
+/***/ "46a7":
+/***/ (function(module, exports, __webpack_require__) {
+
+var $export = __webpack_require__("63b6");
+// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)
+$export($export.S + $export.F * !__webpack_require__("8e60"), 'Object', { defineProperty: __webpack_require__("d9f6").f });
+
+
 /***/ }),
 
 /***/ "4917":
@@ -1737,6 +1832,15 @@ $export($export.P + $export.F * (fails(function () {
 });
 
 
+/***/ }),
+
+/***/ "584a":
+/***/ (function(module, exports) {
+
+var core = module.exports = { version: '2.6.12' };
+if (typeof __e == 'number') __e = core; // eslint-disable-line no-undef
+
+
 /***/ }),
 
 /***/ "5be5":
@@ -1934,6 +2038,75 @@ module.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {
 };
 
 
+/***/ }),
+
+/***/ "63b6":
+/***/ (function(module, exports, __webpack_require__) {
+
+var global = __webpack_require__("e53d");
+var core = __webpack_require__("584a");
+var ctx = __webpack_require__("d864");
+var hide = __webpack_require__("35e8");
+var has = __webpack_require__("07e3");
+var PROTOTYPE = 'prototype';
+
+var $export = function (type, name, source) {
+  var IS_FORCED = type & $export.F;
+  var IS_GLOBAL = type & $export.G;
+  var IS_STATIC = type & $export.S;
+  var IS_PROTO = type & $export.P;
+  var IS_BIND = type & $export.B;
+  var IS_WRAP = type & $export.W;
+  var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});
+  var expProto = exports[PROTOTYPE];
+  var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE];
+  var key, own, out;
+  if (IS_GLOBAL) source = name;
+  for (key in source) {
+    // contains in native
+    own = !IS_FORCED && target && target[key] !== undefined;
+    if (own && has(exports, key)) continue;
+    // export native or passed
+    out = own ? target[key] : source[key];
+    // prevent global pollution for namespaces
+    exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]
+    // bind timers to global for call from export context
+    : IS_BIND && own ? ctx(out, global)
+    // wrap global constructors for prevent change them in library
+    : IS_WRAP && target[key] == out ? (function (C) {
+      var F = function (a, b, c) {
+        if (this instanceof C) {
+          switch (arguments.length) {
+            case 0: return new C();
+            case 1: return new C(a);
+            case 2: return new C(a, b);
+          } return new C(a, b, c);
+        } return C.apply(this, arguments);
+      };
+      F[PROTOTYPE] = C[PROTOTYPE];
+      return F;
+    // make static versions for prototype methods
+    })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;
+    // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%
+    if (IS_PROTO) {
+      (exports.virtual || (exports.virtual = {}))[key] = out;
+      // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%
+      if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out);
+    }
+  }
+};
+// type bitmap
+$export.F = 1;   // forced
+$export.G = 2;   // global
+$export.S = 4;   // static
+$export.P = 8;   // proto
+$export.B = 16;  // bind
+$export.W = 32;  // wrap
+$export.U = 64;  // safe
+$export.R = 128; // real proto method for `library`
+module.exports = $export;
+
+
 /***/ }),
 
 /***/ "6521":
@@ -1990,48 +2163,21 @@ module.exports = function (it, S) {
 
 /***/ }),
 
-/***/ "7333":
+/***/ "6b0d":
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
 
-// 19.1.2.1 Object.assign(target, source, ...)
-var DESCRIPTORS = __webpack_require__("9e1e");
-var getKeys = __webpack_require__("0d58");
-var gOPS = __webpack_require__("2621");
-var pIE = __webpack_require__("52a7");
-var toObject = __webpack_require__("4bf8");
-var IObject = __webpack_require__("626a");
-var $assign = Object.assign;
-
-// should work with symbols and should have deterministic property order (V8 bug)
-module.exports = !$assign || __webpack_require__("79e5")(function () {
-  var A = {};
-  var B = {};
-  // eslint-disable-next-line no-undef
-  var S = Symbol();
-  var K = 'abcdefghijklmnopqrst';
-  A[S] = 7;
-  K.split('').forEach(function (k) { B[k] = k; });
-  return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;
-}) ? function assign(target, source) { // eslint-disable-line no-unused-vars
-  var T = toObject(target);
-  var aLen = arguments.length;
-  var index = 1;
-  var getSymbols = gOPS.f;
-  var isEnum = pIE.f;
-  while (aLen > index) {
-    var S = IObject(arguments[index++]);
-    var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);
-    var length = keys.length;
-    var j = 0;
-    var key;
-    while (length > j) {
-      key = keys[j++];
-      if (!DESCRIPTORS || isEnum.call(S, key)) T[key] = S[key];
+Object.defineProperty(exports, "__esModule", { value: true });
+// runtime helper for setting properties on components
+// in a tree-shakable way
+exports.default = (sfc, props) => {
+    const target = sfc.__vccOpts || sfc;
+    for (const [key, val] of props) {
+        target[key] = val;
     }
-  } return T;
-} : $assign;
+    return target;
+};
 
 
 /***/ }),
@@ -2061,6 +2207,27 @@ module.exports = function (index, length) {
 };
 
 
+/***/ }),
+
+/***/ "794b":
+/***/ (function(module, exports, __webpack_require__) {
+
+module.exports = !__webpack_require__("8e60") && !__webpack_require__("294c")(function () {
+  return Object.defineProperty(__webpack_require__("1ec9")('div'), 'a', { get: function () { return 7; } }).a != 7;
+});
+
+
+/***/ }),
+
+/***/ "79aa":
+/***/ (function(module, exports) {
+
+module.exports = function (it) {
+  if (typeof it != 'function') throw TypeError(it + ' is not a function!');
+  return it;
+};
+
+
 /***/ }),
 
 /***/ "79e5":
@@ -2120,6 +2287,13 @@ module.exports = exports;
 module.exports = {};
 
 
+/***/ }),
+
+/***/ "85f2":
+/***/ (function(module, exports, __webpack_require__) {
+
+module.exports = __webpack_require__("454f");
+
 /***/ }),
 
 /***/ "86cc":
@@ -2267,6 +2441,17 @@ module.exports = {
 
 module.exports = __WEBPACK_EXTERNAL_MODULE__8bbf__;
 
+/***/ }),
+
+/***/ "8e60":
+/***/ (function(module, exports, __webpack_require__) {
+
+// Thank's IE8 for his funny defineProperty
+module.exports = !__webpack_require__("294c")(function () {
+  return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;
+});
+
+
 /***/ }),
 
 /***/ "8e6e":
@@ -2685,6 +2870,21 @@ for (var collections = getKeys(DOMIterables), i = 0; i < collections.length; i++
 }
 
 
+/***/ }),
+
+/***/ "aebd":
+/***/ (function(module, exports) {
+
+module.exports = function (bitmap, value) {
+  return {
+    enumerable: !(bitmap & 1),
+    configurable: !(bitmap & 2),
+    writable: !(bitmap & 4),
+    value: value
+  };
+};
+
+
 /***/ }),
 
 /***/ "b0c5":
@@ -3828,6 +4028,33 @@ module.exports = {
 };
 
 
+/***/ }),
+
+/***/ "d864":
+/***/ (function(module, exports, __webpack_require__) {
+
+// optional / simple context binding
+var aFunction = __webpack_require__("79aa");
+module.exports = function (fn, that, length) {
+  aFunction(fn);
+  if (that === undefined) return fn;
+  switch (length) {
+    case 1: return function (a) {
+      return fn.call(that, a);
+    };
+    case 2: return function (a, b) {
+      return fn.call(that, a, b);
+    };
+    case 3: return function (a, b, c) {
+      return fn.call(that, a, b, c);
+    };
+  }
+  return function (/* ...args */) {
+    return fn.apply(that, arguments);
+  };
+};
+
+
 /***/ }),
 
 /***/ "d8e8":
@@ -3839,6 +4066,29 @@ module.exports = function (it) {
 };
 
 
+/***/ }),
+
+/***/ "d9f6":
+/***/ (function(module, exports, __webpack_require__) {
+
+var anObject = __webpack_require__("e4ae");
+var IE8_DOM_DEFINE = __webpack_require__("794b");
+var toPrimitive = __webpack_require__("1bc3");
+var dP = Object.defineProperty;
+
+exports.f = __webpack_require__("8e60") ? Object.defineProperty : function defineProperty(O, P, Attributes) {
+  anObject(O);
+  P = toPrimitive(P, true);
+  anObject(Attributes);
+  if (IE8_DOM_DEFINE) try {
+    return dP(O, P, Attributes);
+  } catch (e) { /* empty */ }
+  if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');
+  if ('value' in Attributes) O[P] = Attributes.value;
+  return O;
+};
+
+
 /***/ }),
 
 /***/ "e11e":
@@ -3850,6 +4100,31 @@ module.exports = (
 ).split(',');
 
 
+/***/ }),
+
+/***/ "e4ae":
+/***/ (function(module, exports, __webpack_require__) {
+
+var isObject = __webpack_require__("f772");
+module.exports = function (it) {
+  if (!isObject(it)) throw TypeError(it + ' is not an object!');
+  return it;
+};
+
+
+/***/ }),
+
+/***/ "e53d":
+/***/ (function(module, exports) {
+
+// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028
+var global = module.exports = typeof window != 'undefined' && window.Math == Math
+  ? window : typeof self != 'undefined' && self.Math == Math ? self
+  // eslint-disable-next-line no-new-func
+  : Function('return this')();
+if (typeof __g == 'number') __g = global; // eslint-disable-line no-undef
+
+
 /***/ }),
 
 /***/ "eec4":
@@ -4204,13 +4479,12 @@ module.exports = function (object, index, value) {
 
 /***/ }),
 
-/***/ "f751":
-/***/ (function(module, exports, __webpack_require__) {
-
-// 19.1.3.1 Object.assign(target, source)
-var $export = __webpack_require__("5ca1");
+/***/ "f772":
+/***/ (function(module, exports) {
 
-$export($export.S + $export.F, 'Object', { assign: __webpack_require__("7333") });
+module.exports = function (it) {
+  return typeof it === 'object' ? it !== null : typeof it === 'function';
+};
 
 
 /***/ }),
@@ -4301,9 +4575,6 @@ var es6_regexp_match = __webpack_require__("4917");
 // EXTERNAL MODULE: ./node_modules/core-js/modules/es6.number.constructor.js
 var es6_number_constructor = __webpack_require__("c5f6");
 
-// EXTERNAL MODULE: ./node_modules/core-js/modules/es6.array.iterator.js
-var es6_array_iterator = __webpack_require__("cadf");
-
 // EXTERNAL MODULE: ./node_modules/core-js/modules/es6.object.keys.js
 var es6_object_keys = __webpack_require__("456d");
 
@@ -4318,7 +4589,6 @@ var es6_array_sort = __webpack_require__("55dd");
 
 
 
-
 // @flow
 
 /*:: export type LayoutItemRequired = {w: number, h: number, x: number, y: number, i: string};*/
@@ -5098,7 +5368,6 @@ function isNum(num) {
 
 
 
-
 // @flow
 
 
@@ -11912,7 +12181,7 @@ _interactjs_interact.use(dev_tools_plugin);
     /*containerWidth: {
      type: Number,
      required: true
-       },
+      },
      rowHeight: {
      type: Number,
      required: true
@@ -12767,15 +13036,21 @@ _interactjs_interact.use(dev_tools_plugin);
 // EXTERNAL MODULE: ./src/components/GridItem.vue?vue&type=style&index=0&id=46ff2fc8&lang=css
 var GridItemvue_type_style_index_0_id_46ff2fc8_lang_css = __webpack_require__("083e");
 
+// EXTERNAL MODULE: ./node_modules/vue-loader-v16/dist/exportHelper.js
+var exportHelper = __webpack_require__("6b0d");
+var exportHelper_default = /*#__PURE__*/__webpack_require__.n(exportHelper);
+
 // CONCATENATED MODULE: ./src/components/GridItem.vue
 
 
 
 
 
-GridItemvue_type_script_lang_js.render = render
 
-/* harmony default export */ var GridItem = (GridItemvue_type_script_lang_js);
+
+const __exports__ = /*#__PURE__*/exportHelper_default()(GridItemvue_type_script_lang_js, [['render',render]])
+
+/* harmony default export */ var GridItem = (__exports__);
 // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/vue-loader-v16/dist/templateLoader.js??ref--6!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader-v16/dist??ref--0-1!./src/components/GridLayout.vue?vue&type=template&id=fc5948f6
 
 function GridLayoutvue_type_template_id_fc5948f6_render(_ctx, _cache, $props, $setup, $data, $options) {
@@ -12799,16 +13074,18 @@ function GridLayoutvue_type_template_id_fc5948f6_render(_ctx, _cache, $props, $s
 // EXTERNAL MODULE: ./node_modules/core-js/modules/es7.object.get-own-property-descriptors.js
 var es7_object_get_own_property_descriptors = __webpack_require__("8e6e");
 
-// EXTERNAL MODULE: ./node_modules/core-js/modules/es6.object.assign.js
-var es6_object_assign = __webpack_require__("f751");
-
 // EXTERNAL MODULE: ./node_modules/core-js/modules/es6.number.is-finite.js
 var es6_number_is_finite = __webpack_require__("fca0");
 
-// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/defineProperty.js
+// EXTERNAL MODULE: ./node_modules/@babel/runtime-corejs2/core-js/object/define-property.js
+var define_property = __webpack_require__("85f2");
+var define_property_default = /*#__PURE__*/__webpack_require__.n(define_property);
+
+// CONCATENATED MODULE: ./node_modules/@babel/runtime-corejs2/helpers/esm/defineProperty.js
+
 function _defineProperty(obj, key, value) {
   if (key in obj) {
-    Object.defineProperty(obj, key, {
+    define_property_default()(obj, key, {
       value: value,
       enumerable: true,
       configurable: true,
@@ -12832,8 +13109,6 @@ function _defineProperty(obj, key, value) {
 
 
 
-
-
 function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
 
 function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
@@ -13058,14 +13333,14 @@ var elementResizeDetectorMaker = __webpack_require__("eec4");
               got set to null in the constructor. It is now time
               to issue layout-ready events as the GridItems have
               their sizes configured properly.
-                The reason for emitting the layout-ready events on
+               The reason for emitting the layout-ready events on
               the next tick is to allow for the newly-emitted
               updateWidth event (above) to have reached the
               children GridItem-s and had their effect, so we're
               sure that they have the final size before we emit
               layout-ready (for this GridLayout) and
               item-layout-ready (for the GridItem-s).
-                This way any client event handlers can reliably
+               This way any client event handlers can reliably
               invistigate stable sizes of GridItem-s.
           */
           this.$nextTick(function () {
@@ -13309,9 +13584,11 @@ var GridLayoutvue_type_style_index_0_id_fc5948f6_lang_css = __webpack_require__(
 
 
 
-GridLayoutvue_type_script_lang_js.render = GridLayoutvue_type_template_id_fc5948f6_render
 
-/* harmony default export */ var GridLayout = (GridLayoutvue_type_script_lang_js);
+
+const GridLayout_exports_ = /*#__PURE__*/exportHelper_default()(GridLayoutvue_type_script_lang_js, [['render',GridLayoutvue_type_template_id_fc5948f6_render]])
+
+/* harmony default export */ var GridLayout = (GridLayout_exports_);
 // CONCATENATED MODULE: ./src/components/index.js
 
 
@@ -13325,6 +13602,8 @@ var components_install = function install(app
   app.component('grid-item', GridItem);
 };
 
+components_install.GridItem = GridItem;
+components_install.GridLayout = GridLayout;
 /* harmony default export */ var components = (components_install);
 // CONCATENATED MODULE: ./node_modules/@vue/cli-service/lib/commands/build/entry-lib.js
 
diff --git a/dist/vue-grid-layout.umd.js.map b/dist/vue-grid-layout.umd.js.map
index 83c6bc46..b2d9f0ca 100644
--- a/dist/vue-grid-layout.umd.js.map
+++ b/dist/vue-grid-layout.umd.js.map
@@ -1 +1 @@
-{"version":3,"sources":["webpack://VueGridLayout/webpack/universalModuleDefinition","webpack://VueGridLayout/webpack/bootstrap","webpack://VueGridLayout/./node_modules/core-js/modules/_iter-define.js","webpack://VueGridLayout/./node_modules/core-js/modules/_string-at.js","webpack://VueGridLayout/./node_modules/core-js/modules/_advance-string-index.js","webpack://VueGridLayout/./src/components/GridItem.vue?d411","webpack://VueGridLayout/./node_modules/core-js/modules/_flags.js","webpack://VueGridLayout/./node_modules/core-js/modules/_object-keys.js","webpack://VueGridLayout/./node_modules/core-js/modules/_object-gopd.js","webpack://VueGridLayout/./node_modules/core-js/modules/_object-dps.js","webpack://VueGridLayout/./node_modules/element-resize-detector/src/detection-strategy/object.js","webpack://VueGridLayout/./node_modules/element-resize-detector/src/browser-detector.js","webpack://VueGridLayout/./node_modules/core-js/modules/_fix-re-wks.js","webpack://VueGridLayout/./node_modules/core-js/modules/_dom-create.js","webpack://VueGridLayout/./node_modules/core-js/modules/_classof.js","webpack://VueGridLayout/./node_modules/css-loader/dist/runtime/api.js","webpack://VueGridLayout/./node_modules/core-js/modules/_object-gops.js","webpack://VueGridLayout/./node_modules/core-js/modules/_redefine.js","webpack://VueGridLayout/./node_modules/core-js/modules/_object-create.js","webpack://VueGridLayout/./node_modules/core-js/modules/_wks.js","webpack://VueGridLayout/./node_modules/element-resize-detector/src/id-generator.js","webpack://VueGridLayout/./node_modules/core-js/modules/_library.js","webpack://VueGridLayout/./node_modules/core-js/modules/_cof.js","webpack://VueGridLayout/./node_modules/core-js/modules/_strict-method.js","webpack://VueGridLayout/./node_modules/core-js/modules/_hide.js","webpack://VueGridLayout/./node_modules/core-js/modules/_object-gpo.js","webpack://VueGridLayout/./node_modules/core-js/modules/_iter-create.js","webpack://VueGridLayout/./node_modules/core-js/modules/es6.object.keys.js","webpack://VueGridLayout/./node_modules/core-js/modules/_to-integer.js","webpack://VueGridLayout/./node_modules/core-js/modules/_property-desc.js","webpack://VueGridLayout/./node_modules/core-js/modules/es6.regexp.match.js","webpack://VueGridLayout/./src/components/GridItem.vue?3b34","webpack://VueGridLayout/./node_modules/vue-style-loader/lib/listToStyles.js","webpack://VueGridLayout/./node_modules/vue-style-loader/lib/addStylesClient.js","webpack://VueGridLayout/./node_modules/element-resize-detector/src/listener-handler.js","webpack://VueGridLayout/./node_modules/core-js/modules/_to-object.js","webpack://VueGridLayout/./node_modules/element-resize-detector/src/id-handler.js","webpack://VueGridLayout/./node_modules/batch-processor/src/utils.js","webpack://VueGridLayout/./node_modules/core-js/modules/_regexp-exec.js","webpack://VueGridLayout/./node_modules/core-js/modules/_object-pie.js","webpack://VueGridLayout/./node_modules/core-js/modules/_shared.js","webpack://VueGridLayout/./node_modules/core-js/modules/es6.array.sort.js","webpack://VueGridLayout/./node_modules/element-resize-detector/src/element-utils.js","webpack://VueGridLayout/./node_modules/core-js/modules/_export.js","webpack://VueGridLayout/./node_modules/core-js/modules/_inherit-if-required.js","webpack://VueGridLayout/./node_modules/core-js/modules/_object-sap.js","webpack://VueGridLayout/./node_modules/core-js/modules/_regexp-exec-abstract.js","webpack://VueGridLayout/./node_modules/core-js/modules/_shared-key.js","webpack://VueGridLayout/./node_modules/core-js/modules/_iobject.js","webpack://VueGridLayout/./src/components/GridLayout.vue?845a","webpack://VueGridLayout/./node_modules/core-js/modules/_to-iobject.js","webpack://VueGridLayout/./node_modules/core-js/modules/_has.js","webpack://VueGridLayout/./node_modules/core-js/modules/_to-primitive.js","webpack://VueGridLayout/./node_modules/core-js/modules/_object-assign.js","webpack://VueGridLayout/./node_modules/core-js/modules/_global.js","webpack://VueGridLayout/./node_modules/core-js/modules/_to-absolute-index.js","webpack://VueGridLayout/./node_modules/core-js/modules/_fails.js","webpack://VueGridLayout/./node_modules/core-js/modules/_set-to-string-tag.js","webpack://VueGridLayout/./node_modules/core-js/modules/_core.js","webpack://VueGridLayout/./src/components/GridLayout.vue?2bad","webpack://VueGridLayout/./node_modules/core-js/modules/_iterators.js","webpack://VueGridLayout/./node_modules/core-js/modules/_object-dp.js","webpack://VueGridLayout/./node_modules/@soda/get-current-script/index.js","webpack://VueGridLayout/./node_modules/core-js/modules/_set-proto.js","webpack://VueGridLayout/external {\"commonjs\":\"vue\",\"commonjs2\":\"vue\",\"root\":\"Vue\"}","webpack://VueGridLayout/./node_modules/core-js/modules/es7.object.get-own-property-descriptors.js","webpack://VueGridLayout/./node_modules/core-js/modules/_object-gopn.js","webpack://VueGridLayout/./src/components/GridLayout.vue?c712","webpack://VueGridLayout/./node_modules/core-js/modules/_own-keys.js","webpack://VueGridLayout/./node_modules/core-js/modules/_ctx.js","webpack://VueGridLayout/./node_modules/core-js/modules/_add-to-unscopables.js","webpack://VueGridLayout/./node_modules/core-js/modules/_to-length.js","webpack://VueGridLayout/./node_modules/core-js/modules/_descriptors.js","webpack://VueGridLayout/./node_modules/core-js/modules/es6.regexp.replace.js","webpack://VueGridLayout/./node_modules/core-js/modules/_string-trim.js","webpack://VueGridLayout/./node_modules/element-resize-detector/src/reporter.js","webpack://VueGridLayout/./node_modules/core-js/modules/web.dom.iterable.js","webpack://VueGridLayout/./node_modules/core-js/modules/es6.regexp.exec.js","webpack://VueGridLayout/./node_modules/element-resize-detector/src/collection-utils.js","webpack://VueGridLayout/./node_modules/core-js/modules/_defined.js","webpack://VueGridLayout/./node_modules/batch-processor/src/batch-processor.js","webpack://VueGridLayout/./node_modules/core-js/modules/_array-includes.js","webpack://VueGridLayout/./src/components/GridItem.vue?1d19","webpack://VueGridLayout/./node_modules/core-js/modules/es6.number.constructor.js","webpack://VueGridLayout/./node_modules/core-js/modules/_ie8-dom-define.js","webpack://VueGridLayout/./node_modules/element-resize-detector/src/detection-strategy/scroll.js","webpack://VueGridLayout/./node_modules/core-js/modules/_uid.js","webpack://VueGridLayout/./node_modules/core-js/modules/es6.array.iterator.js","webpack://VueGridLayout/./node_modules/core-js/modules/_an-object.js","webpack://VueGridLayout/./node_modules/core-js/modules/_object-keys-internal.js","webpack://VueGridLayout/./node_modules/core-js/modules/_is-object.js","webpack://VueGridLayout/./node_modules/core-js/modules/_iter-step.js","webpack://VueGridLayout/./node_modules/element-resize-detector/src/state-handler.js","webpack://VueGridLayout/./node_modules/core-js/modules/_a-function.js","webpack://VueGridLayout/./node_modules/core-js/modules/_enum-bug-keys.js","webpack://VueGridLayout/./node_modules/element-resize-detector/src/element-resize-detector.js","webpack://VueGridLayout/./node_modules/core-js/modules/_create-property.js","webpack://VueGridLayout/./node_modules/core-js/modules/es6.object.assign.js","webpack://VueGridLayout/./node_modules/core-js/modules/_function-to-string.js","webpack://VueGridLayout/./node_modules/core-js/modules/_html.js","webpack://VueGridLayout/./node_modules/@vue/cli-service/lib/commands/build/setPublicPath.js","webpack://VueGridLayout/./src/components/GridItem.vue","webpack://VueGridLayout/./src/helpers/utils.js","webpack://VueGridLayout/./src/helpers/draggableUtils.js","webpack://VueGridLayout/./src/helpers/responsiveUtils.js","webpack://VueGridLayout/./src/helpers/DOM.js","webpack://VueGridLayout/./node_modules/@interactjs/utils/domObjects.js","webpack://VueGridLayout/./node_modules/@interactjs/utils/isWindow.js","webpack://VueGridLayout/./node_modules/@interactjs/utils/window.js","webpack://VueGridLayout/./node_modules/@interactjs/utils/is.js","webpack://VueGridLayout/./node_modules/@interactjs/utils/browser.js","webpack://VueGridLayout/./node_modules/@interactjs/utils/arr.js","webpack://VueGridLayout/./node_modules/@interactjs/utils/clone.js","webpack://VueGridLayout/./node_modules/@interactjs/utils/extend.js","webpack://VueGridLayout/./node_modules/@interactjs/utils/raf.js","webpack://VueGridLayout/./node_modules/@interactjs/utils/normalizeListeners.js","webpack://VueGridLayout/./node_modules/@interactjs/core/Eventable.js","webpack://VueGridLayout/./node_modules/@interactjs/utils/domUtils.js","webpack://VueGridLayout/./node_modules/@interactjs/utils/rect.js","webpack://VueGridLayout/./node_modules/@interactjs/utils/getOriginXY.js","webpack://VueGridLayout/./node_modules/@interactjs/utils/hypot.js","webpack://VueGridLayout/./node_modules/@interactjs/core/BaseEvent.js","webpack://VueGridLayout/./node_modules/@interactjs/core/defaultOptions.js","webpack://VueGridLayout/./node_modules/@interactjs/core/InteractEvent.js","webpack://VueGridLayout/./node_modules/@interactjs/core/isNonNativeEvent.js","webpack://VueGridLayout/./node_modules/@interactjs/core/Interactable.js","webpack://VueGridLayout/./node_modules/@interactjs/core/InteractableSet.js","webpack://VueGridLayout/./node_modules/@interactjs/utils/pointerExtend.js","webpack://VueGridLayout/./node_modules/@interactjs/utils/pointerUtils.js","webpack://VueGridLayout/./node_modules/@interactjs/core/events.js","webpack://VueGridLayout/./node_modules/@interactjs/utils/misc.js","webpack://VueGridLayout/./node_modules/@interactjs/core/interactStatic.js","webpack://VueGridLayout/./node_modules/@interactjs/core/PointerInfo.js","webpack://VueGridLayout/./node_modules/@interactjs/core/Interaction.js","webpack://VueGridLayout/./node_modules/@interactjs/core/interactablePreventDefault.js","webpack://VueGridLayout/./node_modules/@interactjs/core/interactionFinder.js","webpack://VueGridLayout/./node_modules/@interactjs/core/interactions.js","webpack://VueGridLayout/./node_modules/@interactjs/core/scope.js","webpack://VueGridLayout/./node_modules/@interactjs/interact/index.js","webpack://VueGridLayout/./node_modules/@interactjs/auto-start/InteractableMethods.js","webpack://VueGridLayout/./node_modules/@interactjs/auto-start/base.js","webpack://VueGridLayout/./node_modules/@interactjs/auto-start/dragAxis.js","webpack://VueGridLayout/./node_modules/@interactjs/auto-start/hold.js","webpack://VueGridLayout/./node_modules/@interactjs/auto-start/plugin.js","webpack://VueGridLayout/./node_modules/@interactjs/auto-start/index.js","webpack://VueGridLayout/./node_modules/@interactjs/actions/drag/plugin.js","webpack://VueGridLayout/./node_modules/@interactjs/actions/drag/index.js","webpack://VueGridLayout/./node_modules/@interactjs/actions/resize/plugin.js","webpack://VueGridLayout/./node_modules/@interactjs/actions/resize/index.js","webpack://VueGridLayout/./node_modules/@interactjs/snappers/edgeTarget.js","webpack://VueGridLayout/./node_modules/@interactjs/snappers/elements.js","webpack://VueGridLayout/./node_modules/@interactjs/snappers/grid.js","webpack://VueGridLayout/./node_modules/@interactjs/snappers/all.js","webpack://VueGridLayout/./node_modules/@interactjs/snappers/plugin.js","webpack://VueGridLayout/./node_modules/@interactjs/modifiers/Modification.js","webpack://VueGridLayout/./node_modules/@interactjs/modifiers/base.js","webpack://VueGridLayout/./node_modules/@interactjs/modifiers/aspectRatio.js","webpack://VueGridLayout/./node_modules/@interactjs/modifiers/noop.js","webpack://VueGridLayout/./node_modules/@interactjs/modifiers/restrict/pointer.js","webpack://VueGridLayout/./node_modules/@interactjs/modifiers/restrict/edges.js","webpack://VueGridLayout/./node_modules/@interactjs/modifiers/restrict/rect.js","webpack://VueGridLayout/./node_modules/@interactjs/modifiers/restrict/size.js","webpack://VueGridLayout/./node_modules/@interactjs/modifiers/snap/pointer.js","webpack://VueGridLayout/./node_modules/@interactjs/modifiers/snap/size.js","webpack://VueGridLayout/./node_modules/@interactjs/modifiers/snap/edges.js","webpack://VueGridLayout/./node_modules/@interactjs/modifiers/all.js","webpack://VueGridLayout/./node_modules/@interactjs/modifiers/plugin.js","webpack://VueGridLayout/./node_modules/@interactjs/modifiers/index.js","webpack://VueGridLayout/./node_modules/@interactjs/dev-tools/plugin.js","webpack://VueGridLayout/./node_modules/@interactjs/dev-tools/index.js","webpack://VueGridLayout/./src/components/GridItem.vue?b8d1","webpack://VueGridLayout/./src/components/GridItem.vue?0590","webpack://VueGridLayout/./src/components/GridLayout.vue","webpack://VueGridLayout/./node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://VueGridLayout/./node_modules/mitt/dist/mitt.es.js","webpack://VueGridLayout/./src/components/GridLayout.vue?373d","webpack://VueGridLayout/./src/components/GridLayout.vue?19aa","webpack://VueGridLayout/./src/components/index.js","webpack://VueGridLayout/./node_modules/@vue/cli-service/lib/commands/build/entry-lib.js","webpack://VueGridLayout/./node_modules/core-js/modules/es6.number.is-finite.js","webpack://VueGridLayout/./node_modules/core-js/modules/_string-ws.js"],"names":["bottom","layout","max","bottomY","i","len","length","y","h","cloneLayout","newLayout","Array","cloneLayoutItem","layoutItem","JSON","parse","stringify","collides","l1","l2","x","w","compact","verticalCompact","compareWith","getStatics","sorted","sortLayoutItemsByRowCol","out","l","static","compactItem","push","indexOf","moved","getFirstCollision","correctBounds","bounds","collidesWith","cols","getLayoutItem","id","getAllCollisions","filter","moveElement","isUserAction","preventCollision","oldX","oldY","movingUp","reverse","collisions","collision","moveElementAwayFromCollision","itemToMove","fakeItem","Math","undefined","perc","num","setTransform","top","left","width","height","translate","transform","WebkitTransform","MozTransform","msTransform","OTransform","position","setTransformRtl","right","setTopLeft","setTopRight","concat","sort","a","b","validateLayout","contextName","subProps","keyArr","isArray","Error","item","j","autoBindHandlers","el","fns","forEach","key","bind","createMarkup","obj","keys","Object","result","val","hyphenate","addPx","IS_UNITLESS","animationIterationCount","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridRow","gridColumn","fontWeight","lineClamp","lineHeight","opacity","order","orphans","tabSize","widows","zIndex","zoom","fillOpacity","stopOpacity","strokeDashoffset","strokeOpacity","strokeWidth","name","value","hyphenateRE","str","replace","toLowerCase","findItemInArray","array","property","findAndRemove","index","splice","getControlPosition","e","offsetXYFromParentOf","evt","offsetParent","target","document","body","offsetParentRect","getBoundingClientRect","clientX","scrollLeft","clientY","scrollTop","createCoreData","lastX","lastY","isStart","isNum","deltaX","deltaY","isNaN","getBreakpointFromWidth","breakpoints","sortBreakpoints","matching","breakpointName","getColsFromBreakpoint","breakpoint","findOrGenerateResponsiveLayout","orgLayout","layouts","lastBreakpoint","breakpointsSorted","breakpointsAbove","slice","generateResponsiveLayout","currentDir","hasDocument","hasWindow","window","getDocumentDir","direction","dir","getElementsByTagName","getAttribute","setDocumentDir","html","setAttribute","addWindowEventListener","event","callback","addEventListener","removeWindowEventListener","removeEventListener","install","app","component","GridLayout","GridItem"],"mappings":";AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,O;QCVA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;;;QAGA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA,0CAA0C,gCAAgC;QAC1E;QACA;;QAEA;QACA;QACA;QACA,wDAAwD,kBAAkB;QAC1E;QACA,iDAAiD,cAAc;QAC/D;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA,yCAAyC,iCAAiC;QAC1E,gHAAgH,mBAAmB,EAAE;QACrI;QACA;;QAEA;QACA;QACA;QACA,2BAA2B,0BAA0B,EAAE;QACvD,iCAAiC,eAAe;QAChD;QACA;QACA;;QAEA;QACA,sDAAsD,+DAA+D;;QAErH;QACA;;;QAGA;QACA;;;;;;;;;AClFa;AACb,cAAc,mBAAO,CAAC,MAAY;AAClC,cAAc,mBAAO,CAAC,MAAW;AACjC,eAAe,mBAAO,CAAC,MAAa;AACpC,WAAW,mBAAO,CAAC,MAAS;AAC5B,gBAAgB,mBAAO,CAAC,MAAc;AACtC,kBAAkB,mBAAO,CAAC,MAAgB;AAC1C,qBAAqB,mBAAO,CAAC,MAAsB;AACnD,qBAAqB,mBAAO,CAAC,MAAe;AAC5C,eAAe,mBAAO,CAAC,MAAQ;AAC/B,8CAA8C;AAC9C;AACA;AACA;;AAEA,8BAA8B,aAAa;;AAE3C;AACA;AACA;AACA;AACA;AACA,yCAAyC,oCAAoC;AAC7E,6CAA6C,oCAAoC;AACjF,KAAK,4BAA4B,oCAAoC;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,mBAAmB;AACnC;AACA;AACA,kCAAkC,2BAA2B;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;;;;;;;ACpEA,gBAAgB,mBAAO,CAAC,MAAe;AACvC,cAAc,mBAAO,CAAC,MAAY;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AChBa;AACb,SAAS,mBAAO,CAAC,MAAc;;AAE/B;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AAAA;AAAA;;;;;;;;;ACAa;AACb;AACA,eAAe,mBAAO,CAAC,MAAc;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACZA;AACA,YAAY,mBAAO,CAAC,MAAyB;AAC7C,kBAAkB,mBAAO,CAAC,MAAkB;;AAE5C;AACA;AACA;;;;;;;;ACNA,UAAU,mBAAO,CAAC,MAAe;AACjC,iBAAiB,mBAAO,CAAC,MAAkB;AAC3C,gBAAgB,mBAAO,CAAC,MAAe;AACvC,kBAAkB,mBAAO,CAAC,MAAiB;AAC3C,UAAU,mBAAO,CAAC,MAAQ;AAC1B,qBAAqB,mBAAO,CAAC,MAAmB;AAChD;;AAEA,YAAY,mBAAO,CAAC,MAAgB;AACpC;AACA;AACA;AACA;AACA,GAAG,YAAY;AACf;AACA;;;;;;;;ACfA,SAAS,mBAAO,CAAC,MAAc;AAC/B,eAAe,mBAAO,CAAC,MAAc;AACrC,cAAc,mBAAO,CAAC,MAAgB;;AAEtC,iBAAiB,mBAAO,CAAC,MAAgB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACZA;AACA;AACA;AACA;;AAEa;;AAEb,sBAAsB,mBAAO,CAAC,MAAqB;;AAEnD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,QAAQ;AACvB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,yDAAyD,OAAO;;AAEhE;AACA;;AAEA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,QAAQ;AACvB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;;AAE7B;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACtPa;;AAEb;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;;;;;;;;;ACtCa;AACb,mBAAO,CAAC,MAAmB;AAC3B,eAAe,mBAAO,CAAC,MAAa;AACpC,WAAW,mBAAO,CAAC,MAAS;AAC5B,YAAY,mBAAO,CAAC,MAAU;AAC9B,cAAc,mBAAO,CAAC,MAAY;AAClC,UAAU,mBAAO,CAAC,MAAQ;AAC1B,iBAAiB,mBAAO,CAAC,MAAgB;;AAEzC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,yBAAyB,4CAA4C;AACrE;AACA;AACA,CAAC;;AAED;AACA;;AAEA;AACA;AACA;AACA,6BAA6B,UAAU;AACvC;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,2BAA2B,mBAAmB,aAAa;AAC3D;AACA;AACA;AACA;AACA,6CAA6C,WAAW;AACxD;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA,kBAAkB;AAClB;AACA,gBAAgB;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gCAAgC,qCAAqC;AACrE;AACA;AACA,2BAA2B,gCAAgC;AAC3D;AACA;AACA;;;;;;;;AC/FA,eAAe,mBAAO,CAAC,MAAc;AACrC,eAAe,mBAAO,CAAC,MAAW;AAClC;AACA;AACA;AACA;AACA;;;;;;;;ACNA;AACA,UAAU,mBAAO,CAAC,MAAQ;AAC1B,UAAU,mBAAO,CAAC,MAAQ;AAC1B;AACA,2BAA2B,kBAAkB,EAAE;;AAE/C;AACA;AACA;AACA;AACA,GAAG,YAAY;AACf;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACtBa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;;AAEhB;AACA;AACA;;AAEA;AACA,4CAA4C,qBAAqB;AACjE;;AAEA;AACA,KAAK;AACL,IAAI;AACJ;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,qBAAqB,iBAAiB;AACtC;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,oBAAoB,qBAAqB;AACzC;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,8BAA8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Ae,WAAW,gCAAgC,wBAAwB,UAAU,yBAAyB,sBAAsB,qBAAqB,oBAAoB,iBAAiB,qCAAqC,kBAAkB,WAAW,YAAY,SAAS,QAAQ,oCAAoC,mNAAmN,8BAA8B,oBAAoB,4BAA4B,8BAA8B,8BAA8B,sBAAsB,iBAAiB,yCAAyC,SAAS,OAAO,kCAAkC,6hBAA6hB,2BAA2B,iBAAiB,4BAA4B,8BAA8B,iBAAiB,WAAW,kCAAkC,yBAAyB,sBAAsB,qBAAqB,iBAAiB;AAC/uE;AACA;;;;;;;;;;;;;;;;ACNA;AACA;AACA;AACA;AACe;AACf;AACA;AACA,iBAAiB,iBAAiB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,wBAAwB;AAC3D,KAAK;AACL;AACA;AACA;AACA;AACA;;;AC1BA;AACA;AACA;AACA;AACA;;AAEyC;;AAEzC;;AAEA;AACA;AACA;AACA;AACA,UAAU,iBAAiB;AAC3B;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEe;AACf;;AAEA;;AAEA,eAAe,YAAY;AAC3B;;AAEA;AACA;AACA,mBAAmB,mBAAmB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,YAAY;AAC3B;AACA,KAAK;AACL;AACA;AACA,mBAAmB,sBAAsB;AACzC;AACA;AACA,uBAAuB,2BAA2B;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iBAAiB,mBAAmB;AACpC;AACA;AACA;AACA;AACA,qBAAqB,2BAA2B;AAChD;AACA;AACA,YAAY,uBAAuB;AACnC;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,qBAAqB,uBAAuB;AAC5C;AACA;AACA,8BAA8B;AAC9B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,yDAAyD;AACzD;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC7Na;;AAEb;AACA;;AAEA;AACA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,eAAe,QAAQ;AACvB,eAAe,SAAS;AACxB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,+CAA+C,SAAS;AACxD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,uBAAuB,QAAQ;AAC/B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC3DA;AACA,cAAc,mBAAO,CAAC,MAAY;AAClC;AACA;AACA;;;;;;;;;ACJa;;AAEb;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,QAAQ;AACvB,iBAAiB,mBAAmB;AACpC;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,eAAe,QAAQ;AACvB,iBAAiB,mBAAmB;AACpC;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;;;;;;AC9Ca;;AAEb;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;;;;;;;;ACda;;AAEb,k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AACA;AACA,2DAA2D;AAC3D;;;;;;;;ACLA;AACA,kBAAkB,mBAAO,CAAC,MAAU;AACpC,iCAAiC,QAAQ,mBAAmB,UAAU,EAAE,EAAE;AAC1E,CAAC;;;;;;;;;ACHY;;AAEb,eAAe,mBAAO,CAAC,MAAc;AACrC,eAAe,mBAAO,CAAC,MAAc;AACrC,eAAe,mBAAO,CAAC,MAAc;AACrC,gBAAgB,mBAAO,CAAC,MAAe;AACvC,yBAAyB,mBAAO,CAAC,MAAyB;AAC1D,iBAAiB,mBAAO,CAAC,MAAyB;AAClD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,mBAAO,CAAC,MAAe;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,oBAAoB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,mBAAmB;AAC1C;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,CAAC;;;;;;;;ACrHD,cAAc,mBAAO,CAAC,MAAW;AACjC,cAAc,mBAAO,CAAC,MAAY;AAClC,YAAY,mBAAO,CAAC,MAAU;AAC9B,aAAa,mBAAO,CAAC,MAAc;AACnC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;AC7Ba;;AAEb;;AAEA;AACA;AACA;AACA,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA,iBAAiB;AACjB,mCAAmC,sBAAsB;AACzD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,E;;;;;;;AC1CA,iBAAiB,mBAAO,CAAC,MAAsB;AAC/C,cAAc,mBAAO,CAAC,MAAgB;AACtC,eAAe,mBAAO,CAAC,MAAa;AACpC,aAAa,mBAAO,CAAC,MAAW;AAChC,WAAW,mBAAO,CAAC,MAAS;AAC5B,gBAAgB,mBAAO,CAAC,MAAc;AACtC,UAAU,mBAAO,CAAC,MAAQ;AAC1B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,oDAAoD,wBAAwB;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACzDa;AACb,iBAAiB,mBAAO,CAAC,MAAgB;AACzC,mBAAO,CAAC,MAAW;AACnB;AACA;AACA;AACA,CAAC;AACD;AACA,CAAC;;;;;;;;;ACRY;;AAEb;;AAEA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,SAAS;AACpB,aAAa,EAAE;AACf;AACA;AACA,kBAAkB,uBAAuB;AACzC;AACA;AACA;AACA;AACA;AACA;;;;;;;;AClBA;AACA;AACA;AACA;AACA;;;;;;;;;ACJa;;AAEb,YAAY,mBAAO,CAAC,MAAS;;AAE7B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AAC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CvB,eAAe,SAAS;AACxB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,QAAQ;AACvB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,mCAAmC,iBAAiB;AACpD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,oEAAoE;AACpE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,iBAAiB;;AAEjB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,qBAAqB;AACrB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACppBA;AACA;AACA;AACA;AACA;;;;;;;;;ACJa;AACb,uBAAuB,mBAAO,CAAC,MAAuB;AACtD,WAAW,mBAAO,CAAC,MAAc;AACjC,gBAAgB,mBAAO,CAAC,MAAc;AACtC,gBAAgB,mBAAO,CAAC,MAAe;;AAEvC;AACA;AACA;AACA;AACA,iBAAiB,mBAAO,CAAC,MAAgB;AACzC,gCAAgC;AAChC,cAAc;AACd,iBAAiB;AACjB;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;;AAEA;AACA;AACA;;;;;;;;ACjCA,eAAe,mBAAO,CAAC,MAAc;AACrC;AACA;AACA;AACA;;;;;;;;ACJA,UAAU,mBAAO,CAAC,MAAQ;AAC1B,gBAAgB,mBAAO,CAAC,MAAe;AACvC,mBAAmB,mBAAO,CAAC,MAAmB;AAC9C,eAAe,mBAAO,CAAC,MAAe;;AAEtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AChBA;AACA;AACA;;;;;;;;ACFA;AACA,UAAU;AACV;;;;;;;;;ACFa;;AAEb;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;;;;;ACrBA;AACA;AACA;AACA;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;ACHa;;AAEb,8BAA8B,mBAAO,CAAC,MAAoB;AAC1D,8BAA8B,mBAAO,CAAC,MAAiB;AACvD,8BAA8B,mBAAO,CAAC,MAAoB;AAC1D,8BAA8B,mBAAO,CAAC,MAAgB;AACtD,8BAA8B,mBAAO,CAAC,MAAc;AACpD,8BAA8B,mBAAO,CAAC,MAAY;AAClD,8BAA8B,mBAAO,CAAC,MAAoB;AAC1D,8BAA8B,mBAAO,CAAC,MAAiB;AACvD,8BAA8B,mBAAO,CAAC,MAAiB;;AAEvD;AACA,8BAA8B,mBAAO,CAAC,MAAgC;AACtE,8BAA8B,mBAAO,CAAC,MAAgC;;AAEtE;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,UAAU;AACV,cAAc,SAAS;AACvB,cAAc,SAAS;AACvB;;AAEA;AACA;AACA,UAAU;AACV,cAAc,QAAQ;AACtB;AACA;AACA,cAAc,UAAU;AACxB;AACA,cAAc,SAAS;AACvB;AACA;AACA,cAAc,QAAQ;AACtB;;AAEA;AACA;AACA;AACA,WAAW,SAAS;AACpB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,qCAAqC,6CAA6C,EAAE;AACpF;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,mFAAmF,qBAAqB;;AAExG;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,SAAS;AACxB,eAAe,kBAAkB;AACjC,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;;AAEA;AACA,8EAA8E;AAC9E;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;;AAEA;AACA;AACA;AACA,yDAAyD,6CAA6C;AACtG;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,qBAAqB;AACr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ACA;AACA,MAAM;AACN,CAAC,EAAC;AACF,+B;;ACzCiC;AACR;AACV;AACf;;AAEA,MAAM,EAAE;AACR;AACA;;AAEA,MAAM,EAAE;AACR,mCAAmC,MAAM;AACzC,GAAG,MAAM,WAAW,WAAW,WAAW;;;AAG1C,MAAM,EAAE;AACR;AACA;AACA;;AAEA,MAAM,EAAE;AACR;AACA;AACA,GAAG,UAAU,EAAE;AACf;AACA;AACA;AACA,GAAG,UAAU,EAAE;AACf;AACA,sDAAsD,KAAK,EAAE,EAAE;AAC/D;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,8C;;ACvCuC;AACC;AACe;;AAEvD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEO,MAAM,mBAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,MAAM,GAAG,eAAe;AAC3C;;AAEA;AACA;AACA,+BAA+B;AAC/B;;AAEA;AACA;AACA,KAAK;;;AAGL;AACA;AACA;AACA;;AAEA;AACA,sBAAsB,SAAS;;AAE/B;AACA,yBAAyB,KAAS;AAClC;AACA;;AAEA;AACA,sBAAsB,SAAS;;AAE/B;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,qC;;ACxEmC;AACM;AAChB;AACU;AAC5B;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACO,SAAS,gBAAO;AACvB,SAAS,EAAE;AACX;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACO;AACP;;AAEA,MAAM,EAAE;AACR;AACA;AACA,qCAAqC,EAAE;AACvC;AACA;;AAEA;AACA;;AAEA;AACA;AACO;AACP;AACA,MAAM,GAAU,KAAK,UAAc;AACnC;AACA;;AAEA,iBAAiB,aAAO;AACxB;;AAEA,iDAAiD;;;AAG1C;AACP;AACA;;AAEA,iBAAiB,qBAAqB;AACtC;AACA,mDAAmD;;AAEnD;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,qDAAqD;AACrD;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,OAAO;;;AAGP;AACA;AACA;AACA;;AAEA;AACA,KAAK;;;AAGL;AACA,sBAAsB;;AAEtB,+BAA+B,gBAAU,uCAAuC,gBAAU,wCAAwC,gBAAU;AAC5I;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;;AAEA;AACA,wBAAwB;;AAExB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,+BAA+B,SAAa;AAC5C,8BAA8B,SAAa;AAC3C;AACA;;AAEO;AACP,SAAS,EAAE;AACX;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACO;AACP;AACA;AACO;AACP,qCAAqC,GAAU;AAC/C;AACA;AACA;AACA;AACA;AACO;AACP,wCAAwC,gBAAU;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;;AAEA,OAAO,aAAO;AACd,+BAA+B,SAAa;AAC5C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACO;AACP;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACO;AACP,OAAO,EAAE;AACT;AACA,GAAG;;;AAGH,EAAE,gBAAU;AACZ;AACA;AACA,oC;;AC/NoE;AACnC;AACR;AAClB;AACP;AACA,WAAW,UAAU;AACrB;;AAEA;AACA;AACA;;AAEA,SAAS,gBAAO;AAChB;AACO;AACP;;AAEA,MAAM,EAAE;AACR;AACA,GAAG,UAAU,EAAE;AACf;AACA;;AAEA,MAAM,EAAE;AACR,kBAAkB,cAAc;AAChC;;AAEA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA,WAAW,MAAM,GAAG;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACO;AACP;AACA,WAAW,MAAM,GAAG;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACO;AACP;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,gC;;AC7EsD;AACvC;AACf;AACA;AACA;AACA,qBAAqB,eAAe;AACpC,SAAS,QAAQ;AACjB;AACA;AACA;AACA,CAAC;AACD,uC;;ACXgB,4EAAkC,EAAE;AACpD,iC;;ACDO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA,CAAC;AACD;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;;AAEA,CAAC;AACD,qC;;AC5CA;AACA;AACO,MAAM,uBAAQ;AACrB;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,0C;;AChBwC;AACU;AACZ;AACK;AACI;AACxC,MAAM,2BAAa,SAAS,SAAS;AAC5C;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,uBAAQ;AAC7D,mBAAmB,WAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,gBAAgB,MAAM,GAAG;AACzB,kBAAkB,MAAM,GAAG;AAC3B,gBAAgB,MAAM,GAAG;AACzB;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA,6CAA6C;;AAE7C,oBAAoB,MAAM,GAAG;AAC7B,iBAAiB,KAAK;AACtB;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA,CAAC;AACD;;AAEA,wBAAwB,2BAAa;AACrC;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA,GAAG;AACH;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA,GAAG;AACH;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA,GAAG;AACH;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA,GAAG;AACH;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA,GAAG;AACH;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA,GAAG;AACH;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA,GAAG;AACH;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA,CAAC;AACD,yC;;AC3Oe;AACf;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,4C;;ACbA;AACuC;AACG;AACJ;AACwD;AACtD;AACR;AACgC;AACjB;AACJ;AACU;;AAErD;AACO,MAAM,yBAAY;AACzB;AACA;AACA;AACA,cAAc;AACd,mBAAmB;AACnB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,sBAAsB,mBAAS;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,SAAS,CAAC,WAAW;AACrC;AACA;AACA;AACA;;AAEA;AACA,QAAQ,EAAE;AACV,iBAAiB,WAAW;AAC5B;;AAEA,QAAQ,EAAE;AACV,iBAAiB,WAAW;AAC5B;;AAEA,QAAQ,EAAE;AACV,iBAAiB,WAAW;AAC5B;;AAEA,QAAQ,EAAE;AACV,iBAAiB,WAAW;AAC5B;;AAEA;AACA;;AAEA;AACA,QAAQ,EAAE,gBAAgB,EAAE;AAC5B;AACA;;AAEA,QAAQ,EAAE,eAAe,EAAE;AAC3B;AACA;AACA;;AAEA;AACA,oCAAoC;;AAEpC;AACA;AACA;AACA,8CAA8C;;AAE9C;AACA;AACA,OAAO;;;AAGP,UAAU,EAAE;AACZ,oCAAoC,IAAQ;AAC5C,OAAO;AACP,eAAe,EAAE;AACjB;AACA,sCAAsC,MAAM,gCAAgC,EAAE,KAAK,eAAe;;AAElG,cAAc,EAAE;AAChB;AACA;AACA,SAAS;AACT,iBAAiB,EAAE,sBAAsB,EAAE;AAC3C;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,+BAA+B;AACtD;AACA,aAAa,QAAQ;AACrB,cAAc,KAAK;AACnB;;;AAGA;AACA,0BAA0B,EAAE;;AAE5B,QAAQ,EAAE;AACV;AACA;;AAEA,WAAW,cAAc;AACzB;AACA;AACA;AACA;AACA;AACA,aAAa,SAAS;AACtB,8BAA8B;AAC9B,cAAc,kBAAkB;AAChC;;;AAGA;AACA,QAAQ,EAAE;AACV;;AAEA;AACA,qBAAqB,MAAM,GAAG;;AAE9B;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,QAAQ,WAAW,cAAc,EAAE;AACnC;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,0BAA0B;AACvC,uCAAuC,aAAa;AACpD;AACA;AACA,cAAc,OAAO;AACrB;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,iBAAiB;AACjB,cAAc,gBAAgB;AAC9B;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,KAAK;AACnB;;;AAGA;AACA;AACA;;AAEA;AACA,sDAAsD,YAAY;AAClE;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,SAAS,EAAE;AACX;AACA;;AAEA,QAAQ,EAAE;AACV,aAAa,WAAW;AACxB,KAAK,UAAU,EAAE;AACjB,aAAa,YAAY;AACzB;;AAEA;AACA;;AAEA;AACA,wBAAwB,EAAE;AAC1B;AACA;;AAEA,QAAQ,EAAE;AACV,aAAa,WAAW;AACxB,KAAK,UAAU,EAAE;AACjB,aAAa,YAAY;AACzB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,cAAc;AAC3B;AACA,cAAc,aAAa;AAC3B;;;AAGA;AACA;AACA;AACA;;AAEA;AACA,QAAQ,EAAE,qBAAqB,EAAE;AACjC;AACA;AACA;;AAEA;AACA,sBAAsB,SAAkB;;AAExC;AACA;AACA,eAAe,aAAO;AACtB;;AAEA;AACA;AACA,YAAY,gBAAgB;AAC5B;AACA,SAAS;AACT,iBAAiB,EAAE;AACnB,iCAAiC,UAAU;AAC3C,WAAW;AACX;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,wBAAwB;AACrC;AACA,aAAa,0BAA0B;AACvC,aAAa,iBAAiB;AAC9B;AACA,cAAc,aAAa;AAC3B;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,wBAAwB;AACrC;AACA,aAAa,0BAA0B;AACvC,aAAa,iBAAiB;AAC9B;AACA,cAAc,aAAa;AAC3B;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,cAAc,OAAO;AACrB;;;AAGA;AACA;;AAEA,SAAS,EAAE;AACX;AACA;;AAEA,mBAAmB,KAAK;;AAExB;AACA;AACA;AACA;AACA,oCAAoC,MAAM,CAAC,MAAM,GAAG;AACpD;AACA;;AAEA;AACA,UAAU,EAAE;AACZ;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA,QAAQ,EAAE;AACV;AACA;AACA;;AAEA,0CAA0C,QAAQ;AAClD;AACA;AACA;AACA;AACA,WAAW;;AAEX;AACA;AACA;;AAEA,4CAA4C,QAAQ;AACpD;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA,wC;;AC/YuC;AACU;AACT;AACR;AACzB,MAAM,+BAAe;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT,+BAA+B,EAAE;AACjC,4BAA4B,SAAa;;AAEzC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;;AAEA;AACA,cAAc,MAAM,cAAc;AAClC;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,QAAQ,EAAE;AACV;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA,uBAAuB,EAAE;AACzB;;AAEA;AACA;AACA;;AAEA,kBAAkB,IAAQ;AAC1B;AACA;;AAEA;AACA;AACA;;AAEA,WAAW,EAAE;AACb,QAAQ,EAAE,kBAAkB,eAAwB;AACpD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,2C;;ACtGA;AACA;AACA;AACA,2BAA2B;;AAE3B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACe,qEAAa,EAAC;AAC7B,yC;;ACzBmC;AACD;AACQ;AACX;AACN;AACsB;AACxC;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP,4BAA4B,gBAAG,6BAA6B,gBAAG;AAC/D,CAAC;;AAEM;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,IAAI;;AAEJ,MAAM,aAAO;AACb;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACO;AACP;;AAEA,MAAM,aAAO;AACb;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACO;AACP,SAAS,EAAE;AACX;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP,qBAAqB;;AAErB,MAAM,EAAE;AACR;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,SAAS,KAAK;AACd;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,SAAS,EAAE,qDAAqD,EAAE;AAClE;AACA,qDAAqD,gBAAG;AACxD,CAAC;;AAEM;AACP,eAAe,EAAE;AACjB,UAAU,gBAAyB,iCAAiC,gBAAyB;AAC7F;AACO;AACP;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACO;AACP;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;AACyB;AACzB,wC;;ACzPmC;AACI;AACU;AACT;AACR;AACgB;AACS;;AAEzD,SAAS,cAAO;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA,GAAG;AACH;;AAEA;AACA;AACA,iBAAiB,IAAQ;;AAEzB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,yCAAyC,QAAY;AACrD;AACA;AACA;AACA;;AAEA;AACA;AACA,wBAAwB,SAAa;AACrC;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,8CAA8C,QAAQ;AACtD;AACA;;AAEA;AACA,OAAO;AACP,uBAAuB,0BAA0B;AACjD;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,iCAAiC;;AAEjC;AACA;AACA;AACA;AACA;;AAEA;AACA,mBAAmB,IAAQ;;AAE3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;;AAGL,sCAAsC,YAAY;AAClD,mCAAmC;;AAEnC;AACA;AACA;AACA,SAAS,OAAO;;AAEhB,0CAA0C,QAAQ;AAClD;AACA;AACA;AACA,WAAW,iBAAiB;;AAE5B;AACA;AACA,mCAAmC;AACnC;;AAEA;AACA,yCAAyC;;AAEzC;AACA;AACA,aAAa;;;AAGb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;;AAGA;AACA;AACA,0BAA0B,gBAAS;AACnC;AACA,0BAA0B,eAA4B;AACtD,8BAA8B;;AAE9B,WAAW,EAAE;AACb,qBAAqB,sBAAsB;AAC3C;AACA;AACA;AACA;AACA,SAAS;;AAET,YAAY,eAAwB,uBAAuB,YAAqB,0BAA0B,YAAqB;AAC/H;AACA;AACA,WAAW;AACX;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;;AAEA,gBAAgB,UAAmB;AACnC;AACA;;AAEA;AACA;AACA,GAAG;;;AAGH;AACA;;AAEA,MAAM,gBAAS;AACf;AACA;AACA;AACA;AACA,uCAAuC;;AAEvC,IAAI,mBAAO;AACX;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,OAAO,EAAE;AACT;AACA;AACA;AACA;AACA;;AAEA,kBAAkB,MAAM,GAAG;AAC3B;AACA;AACA;AACA;;AAEe;AACf;AACA,SAAS;AACT,CAAC,EAAC;AACF,kC;;ACpRqC;AAC9B;AACP;AACA;AACA;AACA,MAAM,GAAM;AACZ;AACA;;AAEA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,gC;;AClBA;AAC0C;AACO;AACjB;AACyB;AACb;AACS;AAC9C;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,iBAAiB;AAC9B;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,IAAI;;;AAGJ,+BAA+B,cAA2B;AAC1D,0BAA0B,SAAsB;AAChD,8BAA8B,aAA0B;AACxD,2BAA2B,UAAuB;AAClD,4BAA4B,cAAuB;AACnD,kCAAkC,oBAA6B;AAC/D,6BAA6B,eAAwB;AACrD,qBAAqB,gBAAgB;AACrC,6BAA6B;;AAE7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,4DAA4D;AAC5D;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,cAAc,QAAQ;AACtB;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,wBAAwB;AACrC,aAAa,SAAS;AACtB,aAAa,iBAAiB;AAC9B;AACA,cAAc,OAAO;AACrB;;;AAGA,gBAAgB,QAAQ;AACxB,QAAQ,EAAE;AACV;AACA;;AAEA,QAAQ,EAAE;AACV;AACA;AACA;;AAEA;AACA;;AAEA,QAAQ,EAAE;AACV;AACA;AACA;;AAEA;AACA,KAAK;;;AAGL,QAAQ,gBAAgB;AACxB;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,wBAAwB;AACrC;AACA,aAAa,SAAS;AACtB,aAAa,iBAAiB;AAC9B;AACA,cAAc,OAAO;AACrB;;AAEA,iBAAiB,QAAQ;AACzB,QAAQ,EAAE;AACV;AACA;;AAEA,QAAQ,EAAE;AACV;AACA;AACA;;AAEA;AACA;;AAEA,QAAQ,EAAE;AACV;AACA;AACA;;AAEA;AACA;;AAEA,QAAQ,gBAAgB;AACxB;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,QAAQ;AACtB;;;AAGA;AACA,WAAW,aAAO;AAClB;AACA;AACA;AACA;AACA,cAAc,QAAQ;AACtB;;;AAGA;AACA,WAAW,aAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,OAAO;AACrB;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,cAAc;AACd;;;AAGA;AACA,QAAQ,EAAE;AACV;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,0C;;AC7PO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,uC;;ACfuC;AACC;AACF;AACkB;AACC;AACX;AACK;AACJ;AACxC;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,oCAAoC;;AAE9B;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,sCAAsC;;AAEvC;AACO,MAAM,uBAAW;AACxB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,QAAQ;AAC1B;AACA,KAAK;AACL;AACA;AACA,aAAa,SAAsB;AACnC;AACA,YAAY,SAAsB;AAClC;AACA,WAAW,SAAsB;AACjC;AACA,aAAa,SAAsB;AACnC;AACA,gBAAgB,SAAsB;AACtC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,OAAO;AACP;;AAEA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA,8BAA8B,eAAe;AAC7C;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,qBAAqB;AAClE;AACA;AACA,aAAa,OAAO;AACpB,aAAa,aAAa;AAC1B,aAAa,QAAQ;AACrB,cAAc,QAAQ;AACtB;;;AAGA;AACA;AACA;AACA;;AAEA,IAAI,UAAU;AACd;AACA;AACA;AACA,uCAAuC,MAAM,GAAG;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW;;AAEX;AACA;AACA;AACA,6BAA6B,KAAK;AAClC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAM,gBAA6B;AACnC;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,QAAQ,UAAuB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,QAAQ,eAAe;AAChE;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,MAAM,aAA0B;AAChC;;AAEA,gBAAgB,MAAM;AACtB;AACA;AACA;AACA;AACA,KAAK,iBAAiB;AACtB;;AAEA;AACA,GAAG;;;AAGH;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA,oCAAoC,KAAK;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA,aAAa,aAAa;AAC1B;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA,sBAAsB,YAAyB,UAAU;;AAEzD,mGAAmG,SAAa;AAChH;;AAEA;AACA;AACA;;AAEA;AACA,eAAe,YAAyB;AACxC;AACA;AACA;;AAEA;AACA,wBAAwB,WAAW;AACnC;AACA;AACA,KAAK;AACL;AACA;;AAEA,IAAI,SAAsB;AAC1B,IAAI,cAA2B;;AAE/B;AACA;AACA;AACA;AACA,MAAM,mBAA0B;;AAEhC;AACA,QAAQ,UAAuB;AAC/B,QAAQ,UAAuB;AAC/B;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,eAAe,2BAAa;AAC5B;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;;AAEL;AACA;AACA,MAAM,QAAkB;AACxB;AACA;AACA;;AAEA,uEAAuE,MAAM;;AAE7E;AACA;AACA;;AAEA;;AAEA,2CAA2C,MAAM;;AAEjD;AACA;AACA;;AAEA;;AAEA,iDAAiD,MAAM;;AAEvD;AACA;;AAEA;AACA;AACA;;AAEA;AACe,4EAAW,EAAC;AACJ;AACvB,uC;;ACxgBiD;AACoB;AACrC;AACe;;AAE/C;AACA;AACA;AACA;AACA;;AAEA,MAAM,EAAE;AACR;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA,mCAAmC,WAAW;AAC9C;;;AAGA;AACA,gBAAgB,SAAS;AACzB;;AAEA;AACA;AACA;AACA,GAAG;;;AAGH;AACA;AACA,GAAG;;;AAGH,MAAM,EAAE,0BAA0B,eAAe;AACjD;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;;AAEO,SAAS,kCAAO;AACvB;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,cAAc,sBAAsB;AACpC;;AAEA;;AAEA;AACA;AACA,IAAI;;;AAGJ;AACA;;AAEA;AACA;AACA,4EAA4E,YAAY;AACxF;AACA;AACA;AACA;AACA;;AAEA,GAAG;AACH;AACe;AACf;AACA,SAAS;AACT;AACA,wBAAwB,UAAU;AAClC;AACA,GAAG,IAAI;AACP,CAAC,EAAC;AACF,sD;;AC/G4C;AAC5C;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,oBAAoB,UAAc;AAClC;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;;;AAGT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,KAAK;AACL;;;AAGA;AACA;AACA,KAAK;AACL;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,gDAAgD;AAChD;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEe,4DAAM,EAAC;AACtB,6C;;AC/I+C;AACL;AACM;AACI;AACK;AACV;AAC0B;AAC7B;AAC5C;;AAEA,SAAS,oBAAO;AAChB;;AAEA;AACA;AACA;;AAEA,sBAAsB,aAAO;AAC7B;;AAEA,MAAM,gBAAU;AAChB;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,GAAG,EAAE;;AAEL;AACA,oCAAoC,gBAAe;AACnD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;;;AAGP;AACA;AACA;AACA,SAAS,KAAK,YAAY;AAC1B;AACA;AACA;AACA;AACA;AACA;;AAEA,kBAAkB,0BAA0B;AAC5C;;AAEA;AACA;AACA;AACA,wBAAwB,cAA2B;AACnD,0CAA0C,eAA4B;AACtE,uBAAuB;;AAEvB;AACA,wCAAwC;;AAExC;AACA;AACA,0BAA0B,YAAyB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA,WAAW,aAAO;AAClB;AACA,uBAAuB,4CAA4C;AACnE;AACA,SAAS;AACT;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA,qBAAqB,YAAyB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;;AAGL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH,2BAA2B,iBAAM;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,GAAG;;;AAGH;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA,MAAM,yBAAY;AAClB;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,sDAAsD,QAAQ;AAC9D;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACe,+EAAY,EAAC;AAC5B,wC;;ACrR0C;AACJ;AACU;AACR;AACN;AACQ;AACC;AACQ;AACkB;AACd;AACR;AACd;AAC0B;AACd;AACtC,MAAM,WAAK;AAClB;AACA;AACA;AACA;AACA;AACA,kCAAkC,gCAAgC;AAClE;AACA;AACA,mBAAmB,aAAO;AAC1B,oBAAoB,KAAK,CAAC,uBAAQ;AAClC,qBAAqB,mBAAS;AAC9B;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,OAAO;AACP,oBAAoB;AACpB;AACA;AACA,0BAA0B,oBAAoB;AAC9C,yBAAyB,2BAAa;AACtC;AACA,6BAA6B,+BAAe;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,sCAAsC,yBAAgB;AACtD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,IAAI;;AAEX,YAAY,aAAa;AACzB;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,SAAa;AAChC,wBAAwB,MAAM,GAAG;AACjC;AACA;AACA;AACA,KAAK;AACL,oCAAoC;AACpC;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA,mBAAmB,SAAa;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA,mBAAmB,2BAA2B;AAC9C;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACO;AACP;AACA,EAAE,WAAQ;AACV,EAAE,gBAAU;AACZ,EAAE,aAAO;AACT,EAAE,GAAG;AACL;AACA;AACA,kBAAkB,iBAAY;AAC9B,kBAAkB,MAAM;AACxB;AACA;;AAEA;AACA;AACA;AACA,iC;;ACxOyC;AACzC,MAAM,cAAK,OAAO,WAAK;AACvB,MAAM,iBAAQ,GAAG,cAAK;AACP,0EAAQ,EAAC;AACjB,MAAM,aAAI,UAAU,cAAK;;AAEhC;AACA,EAAE,aAAI;AACN;AACA,iC;;ACTuD;AACvB;AACY;;AAE5C,SAAS,2BAAO;AAChB;AACA;AACA;;AAEA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA,QAAQ;AACR;AACA;AACA,aAAa,wBAAwB;AACrC;AACA,cAAc,0BAA0B;AACxC;AACA;;;AAGA,sCAAsC,QAAQ;AAC9C;AACA,GAAG,6EAA6E,qBAAqB;AACrG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA,aAAa,wBAAwB;AACrC;AACA,cAAc,0BAA0B;AACxC;AACA;;AAEA,qCAAqC,QAAQ;AAC7C;AACA,GAAG,4EAA4E,oBAAoB;AACnG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA,aAAa,gBAAgB;AAC7B;AACA;AACA;AACA;AACA,cAAc,wBAAwB;AACtC;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,cAAc,uBAAuB;AACrC;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,MAAM,EAAE;AACR;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,MAAM,EAAE;AACR;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEe;AACf;AACA,SAAS;AACT,CAAC,EAAC;AACF,+C;;AC7KqD;AACJ;AACT;AACR;AACc;AACa;;AAE3D,SAAS,YAAO;AAChB;AACA;AACA;AACA,GAAG;AACH,kBAAkB,mBAAmB;AACrC;AACA;AACA,EAAE,MAAM;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC;AACD;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,CAAC;AACD;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,uCAAuC,SAAS;AAChD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,SAAS,EAAE;AACX;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,cAAc,UAAmB;AACjC;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,EAAE,UAAU;AACZ;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;;AAEvB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,MAAM,EAAE;AACR;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA,QAAQ,EAAE;AACV;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;AACA;AACA;AACA;AACe,kDAAS,EAAC;AACzB,gC;;AC9TkD;AAClB;AACE;;AAElC;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA,GAAG;;;AAGH;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;;AAE3B;AACA;AACA,qCAAqC;;AAErC;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA,6FAA6F,IAAS;AACtG;AACA;AACA;AACA,MAAM;;;AAGN,WAAW,EAAE;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,gBAAgB,UAAU;AAC1B;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEe;AACf;AACA;AACA;AACA;AACA,CAAC,EAAC;AACF,oC;;AC5EiD;AACd;;AAEnC,SAAS,YAAO;AAChB;AACA;AACA,GAAG;AACH,kBAAkB,IAAU;AAC5B;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACe,wDAAI,EAAC;AACpB,gC;;AClEkC;AACG;AACR;AACd;AACf;;AAEA;AACA,oBAAoB,IAAS;AAC7B,oBAAoB,eAAI;AACxB,oBAAoB,QAAQ;AAC5B;;AAEA,CAAC,EAAC;AACF,kC;;ACbA;AACsD;AACrB;;AAEjC;AACA,EAAE,aAAI;AACN;;AAEA,oBAAQ,KAAK,iBAAM;AACnB,iC;;ACT0D;AACvB;;AAEnC,SAAS,cAAO;AAChB;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC;AACD;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC;AACnC,mCAAmC;AACnC,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA,qDAAqD;AACrD;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,iBAAiB;AAC5B;AACA;AACA,YAAY,uBAAuB;AACnC;AACA;;;AAGA,MAAM,gBAAS;AACf,MAAM,EAAE;AACR;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,MAAM,EAAE;AACR;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,WAAW;AACX;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACe,oDAAI,EAAC;AACpB,kC;;AClKA;AACyD;AACxB;;AAEjC;AACA,EAAE,aAAI;AACN;;AAEA,oBAAQ,KAAK,WAAM;AACnB,iC;;ACT0D;AACF;AACT;AACJ;AACR;;AAEnC,SAAS,qBAAO;AAChB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG,SAAS;;AAEZ;AACA;AACA;AACA;AACA;AACA,mCAAmC;AACnC,mCAAmC;AACnC,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,6BAA6B;AACnE;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,iBAAiB;AAC9B;AACA;AACA,cAAc,uBAAuB;AACrC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA,eAAe,MAAM,GAAG;AACxB;;AAEA;AACA;AACA;AACA,GAAG;;;AAGH,MAAM,EAAE;AACR;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,MAAM,EAAE;AACR;AACA;AACA;;AAEA,QAAQ,EAAE;AACV;AACA,KAAK;AACL;AACA;;AAEA,QAAQ,EAAE;AACV;AACA,KAAK,UAAU,EAAE;AACjB;AACA;;AAEA;AACA;;AAEA,MAAM,EAAE;AACR;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;;AAGH;AACA;AACA,kBAAkB,EAAE;AACpB,mBAAmB,EAAE,4DAA4D;;AAEjF;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;;AAGH,OAAO,EAAE;AACT;AACA;;AAEA,SAAS,EAAE;AACX;AACA,IAAI,WAAe;AACnB;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,MAAM,GAAG;AACpB,eAAe,MAAM,GAAG;AACxB,cAAc,MAAM,GAAG;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS,WAAI;AACb;AACA;AACA,CAAC;AACD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE,MAAM;;AAER;AACA;AACA,IAAI,MAAM;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA,GAAG;AACH;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA,MAAM,WAAI;AACV;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACe,wDAAM,EAAC;AACtB,kC;;ACjcA;AACyD;AACxB;;AAEjC;AACA,EAAE,aAAI;AACN;;AAEA,oBAAQ,KAAK,aAAM;AACnB,iC;;ACTgB,uDAAQ,EAAE;AAC1B,sC;;ACDgB,8DAAQ,EAAE;AAC1B,oC;;ACDgB;AAChB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,CAAC,EAAE;AACH,gC;;ACtCwD;AACJ;AACR;AAC5C,+B;;ACHwC;AACA;AACxC;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL,wBAAwB,MAAM,wBAAwB,EAAE,mBAAW;AACnE;AACA;;AAEA;AACe,kEAAc,EAAC;AAC9B,kC;;ACfsC;AACE;AACM;AAC/B,MAAM,yBAAY;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA,KAAK;AACL;AACA;AACA,iBAAiB,MAAM,GAAG;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,iBAAiB,MAAM,GAAG;AAC1B,eAAe,MAAM,GAAG;AACxB;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP,iCAAiC,MAAM,GAAG;AAC1C;;AAEA;AACA;AACA;AACA,QAAQ,QAAkB;AAC1B;AACA;AACA,SAAS;AACT;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA,MAAM,MAAM;AACZ;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL,yBAAyB;AACzB;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA,wBAAwB,MAAM;AAC9B;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,uBAAuB,6BAA6B;AACpD;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,wCAAwC,KAAK;AAC7C,+BAA+B,MAAM,GAAG,wBAAwB,MAAM,GAAG;AACzE;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,wC;;ACvYyD;AACR;AACJ;AACtC;AACP;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,gDAAgD;;AAEhD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,KAAK;AACL,qCAAqC,yBAAY;AACjD,KAAK;AACL;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,gEAAa,EAAC;AAC7B,gC;;AC3FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,eAAe;AAC3D,QAAQ;AACR,6BAA6B,oBAAoB;AACjD;AACA,IAAI;AACJ;AACA;AACwC;AACI;AACC;AACJ;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA,wBAAwB,MAAM,GAAG;AACjC,sBAAsB,MAAM,GAAG;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA,IAAI,MAAM;;AAEV;AACA;AACA;;AAEA,gCAAgC,yBAAY;AAC5C;AACA;AACA;AACA,8BAA8B;AAC9B,KAAK;AACL,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,0BAA0B,MAAM,GAAG;AACnC;AACA;;AAEA;AACA;AACA;;AAEA,0BAA0B,MAAM,GAAG;AACnC,IAAI,QAAQ;AACZ;AACA;AACA,KAAK;AACL,iDAAiD;AACjD;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;;AAEL;AACA,oEAAoE;;AAEpE;AACA,MAAM,MAAM;AACZ;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEe,sEAAY,4BAA4B,EAAC;AACjC;AACvB,uC;;ACtJA;;AAEA;AACe,uDAAI,EAAC;AACpB,gC;;ACJ2C;AACR;AACc;AACP;;AAE1C,SAAS,aAAK;AACd;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH,iBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA,GAAG,sBAAsB;;AAEzB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA,eAAe,UAAoB;AACnC;AACA;AACA;;AAEO;AACP,MAAM,EAAE;AACR,WAAW,eAAyB;AACpC,GAAG;AACH,WAAW,eAAyB;AACpC;AACA;AACA,MAAM,gBAAQ;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,UAAU;AACV;AACe,iEAAY,sBAAsB,EAAC;AAC9B;AACpB,mC;;AC7FA;AACA;AACA;AACA;AACA,aAAa,wBAAwB;AACrC;AACA,eAAe,+CAA+C;AAC9D,eAAe,+CAA+C;AAC9D,MAAM;AACN,IAAI;AACuC;AACM;AACP;AACQ;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS,WAAK;AACd;AACA;AACA;AACA,CAAC;AACD;AACA;AACA,GAAG;AACH;;AAEA;AACA,uBAAuB,kBAAkB;AACzC,aAAa,QAAkB;AAC/B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS,SAAG;AACZ;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA,eAAe,MAAM,GAAG;AACxB,gBAAgB,kBAAkB;AAClC,gBAAgB,kBAAkB;AAClC;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,MAAM,cAAQ;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL,UAAU;AACV;AACe,+DAAY,gCAAgC,EAAC;AACnC;AACzB,iC;;AClH2C;AACD;AACF;AACxC,MAAM,aAAQ,GAAG,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;;AAEA,CAAC,EAAE,QAAQ;AACX;AACA,SAAS,QAAQ;AACjB,OAAO,QAAQ;AACf,UAAU;AACV;AACe,8DAAY,8BAA8B,EAAC;AAClC;AACxB,gC;;ACvB2C;AACM;AACP;AACC;AACO;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS,UAAK;AACd,SAAS,aAAa;AACtB;;AAEA,SAAS,QAAG;AACZ;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA,kBAAkB,UAAoB,CAAC,kBAAkB;AACzD,kBAAkB,UAAoB,CAAC,kBAAkB;AACzD;AACA;AACA,WAAW,MAAM,GAAG,EAAE,aAAa;AACnC,WAAW,MAAM,GAAG,EAAE,aAAa;AACnC;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA,EAAE,aAAa;AACf;AACA;;AAEA,MAAM,aAAQ;AACd;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL,UAAU;AACV;AACe,qDAAY,8BAA8B,EAAC;AAClC;AACxB,gC;;AC1E2C;AACU;AACZ;AACN;AAC6B;AACtB;;AAE1C,SAAS,kBAAK;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,uBAAuB,eAAe;AACtC,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG,MAAM,MAAM;AACf;AACA;AACA,GAAG;AACH;;AAEA,SAAS,WAAG;AACZ;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH,iBAAiB,WAAW;AAC5B,eAAe,MAAM,GAAG;AACxB;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,qDAAqD,aAAa;AAClE;AACA;;AAEA,UAAU,EAAE;AACZ;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA,YAAY,EAAE;AACd,YAAY,EAAE;AACd,eAAe,EAAE;AACjB;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,qBAAqB,KAAK;AAC1B,oCAAoC;AACpC;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH,wBAAwB,QAAQ,CAAC,eAAe;AAChD,kCAAkC,WAAW;AAC7C;AACA;;AAEA,MAAM,qBAAQ;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL,UAAU;AACV;AACe,6DAAY,cAAc,EAAC;AAC1B;AAChB,mC;;AC/KA;AACA;AAC2C;AACR;AACO;AACN;;AAEpC,SAAS,eAAK;AACd;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,EAAE,IAAI;AACN;AACA;AACA;;AAEA,SAAS,aAAG;AACZ;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,kBAAkB,MAAM,GAAG;AAC3B;;AAEA;AACA;;AAEA,QAAQ,EAAE;AACV;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,sBAAsB,IAAI;AAC1B;AACA;AACA;;AAEA,MAAM,kBAAQ;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL,UAAU;AACV;AACe,0DAAY,sBAAsB,EAAC;AAC9B;AACpB,gC;;ACrGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,gBAAgB;AACzD,MAAM;AACN,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA,MAAM;AACN,IAAI;AACJ;AACA;AACyC;AACE;AACD;AACL;;AAErC,SAAS,gBAAK;AACd;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA,SAAS,QAAQ;AACjB;;AAEA;AACA,OAAO;AACP,OAAO,QAAQ;AACf,YAAY,MAAM,CAAC,KAAK,CAAC,QAAQ;AACjC;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACe,2DAAY,wBAAwB,EAAC;AAC/B;AACrB,iC;;AC5DA;AAC2C;AACZ;AACiB;AACH;AACC;AACA;AACL;AACD;AACH;AACC;AACL;AACM;AACxB;AACf,EAAE,kCAAW;AACb,EAAE,6BAAa;AACf,EAAE,0BAAQ;AACV,EAAE,2BAAY;AACd,EAAE,kBAAY;AACd,EAAE,qBAAS;AACX,EAAE,kBAAI;AACN,EAAE,mBAAQ;AACV,EAAE,sBAAM;AACR,EAAE,qBAAK;AACP,EAAE,yBAAS;AACX,EAAE,0BAAU;AACZ,CAAC,EAAC;AACF,+B;;AC3B6C;AAClB;AACE;AAC7B,MAAM,gBAAS;AACf;;AAEA;AACA;AACA;AACA,KAAK;AACL,oBAAoB,cAAI;AACxB,oBAAoB,eAAQ;AAC5B,yBAAyB,aAAG,CAAC;;AAE7B,uBAAuB,aAAG;AAC1B;AACA;AACA;AACA,OAAO,GAAG,aAAG;AACb;AACA;AACA;AACA;;AAEA;AACe,qEAAS,EAAC;AACzB,kC;;AC1BA;AACsD;AACrB;;AAEjC;AACA,EAAE,aAAI;AACN;;AAEA,oBAAQ,KAAK,gBAAM;AACnB,iC;;ACTA;AACyC;AACO;AACE;AACV;AACR;AACU;AAC1C;;AAEA;AACA;AACA;AACA;AACA,CAAC,8BAA8B;;AAE/B;AACA;AACA;AACA;AACA,EAAE;;AAEF,oDAAoD;;AAEpD,SAAS,wBAAO;AAChB;AACA,CAAC,KAAK;AACN;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAM,MAAM;AACZ;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA,GAAG;;AAEH;AACA;AACA,GAAG;AACH;AACA,GAAG;;AAEH;AACA,CAAC;AACD;;AAEA;AACA;AACA;AACA,KAAK;AACL,wEAAwE,gBAAU;AAClF,GAAG;;AAEH;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA,CAAC;AACD;;AAEA;AACA;AACA,mEAAmE,WAAW;AAC9E;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA,CAAC;;AAED;AACA,uCAAuC,GAAU;AACjD;AACA;;AAEA;AACA;;AAEA,SAAS,EAAE;AACX;AACA;AACA;;AAEA,aAAa,UAAU;AACvB;;AAEA;AACA;;AAEA,MAAM,SAAE;AACR;AACA,IAAI;AACJ;AACA,CAAC;AACD,IAAI;AACJ,SAAS;AACT;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACe,kEAAa,EAAC;AAC7B,kC;;AC5IA;AACsD;AACrB;;AAEjC;AACA,EAAE,aAAI;AAC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","file":"vue-grid-layout.umd.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"vue\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"VueGridLayout\"] = factory(require(\"vue\"));\n\telse\n\t\troot[\"VueGridLayout\"] = factory(root[\"Vue\"]);\n})((typeof self !== 'undefined' ? self : this), function(__WEBPACK_EXTERNAL_MODULE__8bbf__) {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"fb15\");\n","'use strict';\nvar LIBRARY = require('./_library');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar $iterCreate = require('./_iter-create');\nvar setToStringTag = require('./_set-to-string-tag');\nvar getPrototypeOf = require('./_object-gpo');\nvar ITERATOR = require('./_wks')('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n  $iterCreate(Constructor, NAME, next);\n  var getMethod = function (kind) {\n    if (!BUGGY && kind in proto) return proto[kind];\n    switch (kind) {\n      case KEYS: return function keys() { return new Constructor(this, kind); };\n      case VALUES: return function values() { return new Constructor(this, kind); };\n    } return function entries() { return new Constructor(this, kind); };\n  };\n  var TAG = NAME + ' Iterator';\n  var DEF_VALUES = DEFAULT == VALUES;\n  var VALUES_BUG = false;\n  var proto = Base.prototype;\n  var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n  var $default = $native || getMethod(DEFAULT);\n  var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n  var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n  var methods, key, IteratorPrototype;\n  // Fix native\n  if ($anyNative) {\n    IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n    if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n      // Set @@toStringTag to native iterators\n      setToStringTag(IteratorPrototype, TAG, true);\n      // fix for some old engines\n      if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);\n    }\n  }\n  // fix Array#{values, @@iterator}.name in V8 / FF\n  if (DEF_VALUES && $native && $native.name !== VALUES) {\n    VALUES_BUG = true;\n    $default = function values() { return $native.call(this); };\n  }\n  // Define iterator\n  if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n    hide(proto, ITERATOR, $default);\n  }\n  // Plug for library\n  Iterators[NAME] = $default;\n  Iterators[TAG] = returnThis;\n  if (DEFAULT) {\n    methods = {\n      values: DEF_VALUES ? $default : getMethod(VALUES),\n      keys: IS_SET ? $default : getMethod(KEYS),\n      entries: $entries\n    };\n    if (FORCED) for (key in methods) {\n      if (!(key in proto)) redefine(proto, key, methods[key]);\n    } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n  }\n  return methods;\n};\n","var toInteger = require('./_to-integer');\nvar defined = require('./_defined');\n// true  -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n  return function (that, pos) {\n    var s = String(defined(that));\n    var i = toInteger(pos);\n    var l = s.length;\n    var a, b;\n    if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n    a = s.charCodeAt(i);\n    return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n      ? TO_STRING ? s.charAt(i) : a\n      : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n  };\n};\n","'use strict';\nvar at = require('./_string-at')(true);\n\n // `AdvanceStringIndex` abstract operation\n// https://tc39.github.io/ecma262/#sec-advancestringindex\nmodule.exports = function (S, index, unicode) {\n  return index + (unicode ? at(S, index).length : 1);\n};\n","export * from \"-!../../node_modules/vue-style-loader/index.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./GridItem.vue?vue&type=style&index=0&id=46ff2fc8&lang=css\"","'use strict';\n// 21.2.5.3 get RegExp.prototype.flags\nvar anObject = require('./_an-object');\nmodule.exports = function () {\n  var that = anObject(this);\n  var result = '';\n  if (that.global) result += 'g';\n  if (that.ignoreCase) result += 'i';\n  if (that.multiline) result += 'm';\n  if (that.unicode) result += 'u';\n  if (that.sticky) result += 'y';\n  return result;\n};\n","// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = require('./_object-keys-internal');\nvar enumBugKeys = require('./_enum-bug-keys');\n\nmodule.exports = Object.keys || function keys(O) {\n  return $keys(O, enumBugKeys);\n};\n","var pIE = require('./_object-pie');\nvar createDesc = require('./_property-desc');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar has = require('./_has');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nexports.f = require('./_descriptors') ? gOPD : function getOwnPropertyDescriptor(O, P) {\n  O = toIObject(O);\n  P = toPrimitive(P, true);\n  if (IE8_DOM_DEFINE) try {\n    return gOPD(O, P);\n  } catch (e) { /* empty */ }\n  if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);\n};\n","var dP = require('./_object-dp');\nvar anObject = require('./_an-object');\nvar getKeys = require('./_object-keys');\n\nmodule.exports = require('./_descriptors') ? Object.defineProperties : function defineProperties(O, Properties) {\n  anObject(O);\n  var keys = getKeys(Properties);\n  var length = keys.length;\n  var i = 0;\n  var P;\n  while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n  return O;\n};\n","/**\n * Resize detection strategy that injects objects to elements in order to detect resize events.\n * Heavily inspired by: http://www.backalleycoder.com/2013/03/18/cross-browser-event-based-element-resize-detection/\n */\n\n\"use strict\";\n\nvar browserDetector = require(\"../browser-detector\");\n\nmodule.exports = function(options) {\n    options             = options || {};\n    var reporter        = options.reporter;\n    var batchProcessor  = options.batchProcessor;\n    var getState        = options.stateHandler.getState;\n\n    if(!reporter) {\n        throw new Error(\"Missing required dependency: reporter.\");\n    }\n\n    /**\n     * Adds a resize event listener to the element.\n     * @public\n     * @param {element} element The element that should have the listener added.\n     * @param {function} listener The listener callback to be called for each resize event of the element. The element will be given as a parameter to the listener callback.\n     */\n    function addListener(element, listener) {\n        function listenerProxy() {\n            listener(element);\n        }\n\n        if(browserDetector.isIE(8)) {\n            //IE 8 does not support object, but supports the resize event directly on elements.\n            getState(element).object = {\n                proxy: listenerProxy\n            };\n            element.attachEvent(\"onresize\", listenerProxy);\n        } else {\n            var object = getObject(element);\n\n            if(!object) {\n                throw new Error(\"Element is not detectable by this strategy.\");\n            }\n\n            object.contentDocument.defaultView.addEventListener(\"resize\", listenerProxy);\n        }\n    }\n\n    function buildCssTextString(rules) {\n        var seperator = options.important ? \" !important; \" : \"; \";\n\n        return (rules.join(seperator) + seperator).trim();\n    }\n\n    /**\n     * Makes an element detectable and ready to be listened for resize events. Will call the callback when the element is ready to be listened for resize changes.\n     * @private\n     * @param {object} options Optional options object.\n     * @param {element} element The element to make detectable\n     * @param {function} callback The callback to be called when the element is ready to be listened for resize changes. Will be called with the element as first parameter.\n     */\n    function makeDetectable(options, element, callback) {\n        if (!callback) {\n            callback = element;\n            element = options;\n            options = null;\n        }\n\n        options = options || {};\n        var debug = options.debug;\n\n        function injectObject(element, callback) {\n            var OBJECT_STYLE = buildCssTextString([\"display: block\", \"position: absolute\", \"top: 0\", \"left: 0\", \"width: 100%\", \"height: 100%\", \"border: none\", \"padding: 0\", \"margin: 0\", \"opacity: 0\", \"z-index: -1000\", \"pointer-events: none\"]);\n\n            //The target element needs to be positioned (everything except static) so the absolute positioned object will be positioned relative to the target element.\n\n            // Position altering may be performed directly or on object load, depending on if style resolution is possible directly or not.\n            var positionCheckPerformed = false;\n\n            // The element may not yet be attached to the DOM, and therefore the style object may be empty in some browsers.\n            // Since the style object is a reference, it will be updated as soon as the element is attached to the DOM.\n            var style = window.getComputedStyle(element);\n            var width = element.offsetWidth;\n            var height = element.offsetHeight;\n\n            getState(element).startSize = {\n                width: width,\n                height: height\n            };\n\n            function mutateDom() {\n                function alterPositionStyles() {\n                    if(style.position === \"static\") {\n                        element.style.setProperty(\"position\", \"relative\", options.important ? \"important\" : \"\");\n\n                        var removeRelativeStyles = function(reporter, element, style, property) {\n                            function getNumericalValue(value) {\n                                return value.replace(/[^-\\d\\.]/g, \"\");\n                            }\n\n                            var value = style[property];\n\n                            if(value !== \"auto\" && getNumericalValue(value) !== \"0\") {\n                                reporter.warn(\"An element that is positioned static has style.\" + property + \"=\" + value + \" which is ignored due to the static positioning. The element will need to be positioned relative, so the style.\" + property + \" will be set to 0. Element: \", element);\n                                element.style.setProperty(property, \"0\", options.important ? \"important\" : \"\");\n                            }\n                        };\n\n                        //Check so that there are no accidental styles that will make the element styled differently now that is is relative.\n                        //If there are any, set them to 0 (this should be okay with the user since the style properties did nothing before [since the element was positioned static] anyway).\n                        removeRelativeStyles(reporter, element, style, \"top\");\n                        removeRelativeStyles(reporter, element, style, \"right\");\n                        removeRelativeStyles(reporter, element, style, \"bottom\");\n                        removeRelativeStyles(reporter, element, style, \"left\");\n                    }\n                }\n\n                function onObjectLoad() {\n                    // The object has been loaded, which means that the element now is guaranteed to be attached to the DOM.\n                    if (!positionCheckPerformed) {\n                        alterPositionStyles();\n                    }\n\n                    /*jshint validthis: true */\n\n                    function getDocument(element, callback) {\n                        //Opera 12 seem to call the object.onload before the actual document has been created.\n                        //So if it is not present, poll it with an timeout until it is present.\n                        //TODO: Could maybe be handled better with object.onreadystatechange or similar.\n                        if(!element.contentDocument) {\n                            var state = getState(element);\n                            if (state.checkForObjectDocumentTimeoutId) {\n                                window.clearTimeout(state.checkForObjectDocumentTimeoutId);\n                            }\n                            state.checkForObjectDocumentTimeoutId = setTimeout(function checkForObjectDocument() {\n                                state.checkForObjectDocumentTimeoutId = 0;\n                                getDocument(element, callback);\n                            }, 100);\n\n                            return;\n                        }\n\n                        callback(element.contentDocument);\n                    }\n\n                    //Mutating the object element here seems to fire another load event.\n                    //Mutating the inner document of the object element is fine though.\n                    var objectElement = this;\n\n                    //Create the style element to be added to the object.\n                    getDocument(objectElement, function onObjectDocumentReady(objectDocument) {\n                        //Notify that the element is ready to be listened to.\n                        callback(element);\n                    });\n                }\n\n                // The element may be detached from the DOM, and some browsers does not support style resolving of detached elements.\n                // The alterPositionStyles needs to be delayed until we know the element has been attached to the DOM (which we are sure of when the onObjectLoad has been fired), if style resolution is not possible.\n                if (style.position !== \"\") {\n                    alterPositionStyles(style);\n                    positionCheckPerformed = true;\n                }\n\n                //Add an object element as a child to the target element that will be listened to for resize events.\n                var object = document.createElement(\"object\");\n                object.style.cssText = OBJECT_STYLE;\n                object.tabIndex = -1;\n                object.type = \"text/html\";\n                object.setAttribute(\"aria-hidden\", \"true\");\n                object.onload = onObjectLoad;\n\n                //Safari: This must occur before adding the object to the DOM.\n                //IE: Does not like that this happens before, even if it is also added after.\n                if(!browserDetector.isIE()) {\n                    object.data = \"about:blank\";\n                }\n\n                if (!getState(element)) {\n                    // The element has been uninstalled before the actual loading happened.\n                    return;\n                }\n\n                element.appendChild(object);\n                getState(element).object = object;\n\n                //IE: This must occur after adding the object to the DOM.\n                if(browserDetector.isIE()) {\n                    object.data = \"about:blank\";\n                }\n            }\n\n            if(batchProcessor) {\n                batchProcessor.add(mutateDom);\n            } else {\n                mutateDom();\n            }\n        }\n\n        if(browserDetector.isIE(8)) {\n            //IE 8 does not support objects properly. Luckily they do support the resize event.\n            //So do not inject the object and notify that the element is already ready to be listened to.\n            //The event handler for the resize event is attached in the utils.addListener instead.\n            callback(element);\n        } else {\n            injectObject(element, callback);\n        }\n    }\n\n    /**\n     * Returns the child object of the target element.\n     * @private\n     * @param {element} element The target element.\n     * @returns The object element of the target.\n     */\n    function getObject(element) {\n        return getState(element).object;\n    }\n\n    function uninstall(element) {\n        if (!getState(element)) {\n            return;\n        }\n\n        var object = getObject(element);\n\n        if (!object) {\n            return;\n        }\n\n        if (browserDetector.isIE(8)) {\n            element.detachEvent(\"onresize\", object.proxy);\n        } else {\n            element.removeChild(object);\n        }\n\n        if (getState(element).checkForObjectDocumentTimeoutId) {\n            window.clearTimeout(getState(element).checkForObjectDocumentTimeoutId);\n        }\n\n        delete getState(element).object;\n    }\n\n    return {\n        makeDetectable: makeDetectable,\n        addListener: addListener,\n        uninstall: uninstall\n    };\n};\n","\"use strict\";\n\nvar detector = module.exports = {};\n\ndetector.isIE = function(version) {\n    function isAnyIeVersion() {\n        var agent = navigator.userAgent.toLowerCase();\n        return agent.indexOf(\"msie\") !== -1 || agent.indexOf(\"trident\") !== -1 || agent.indexOf(\" edge/\") !== -1;\n    }\n\n    if(!isAnyIeVersion()) {\n        return false;\n    }\n\n    if(!version) {\n        return true;\n    }\n\n    //Shamelessly stolen from https://gist.github.com/padolsey/527683\n    var ieVersion = (function(){\n        var undef,\n            v = 3,\n            div = document.createElement(\"div\"),\n            all = div.getElementsByTagName(\"i\");\n\n        do {\n            div.innerHTML = \"<!--[if gt IE \" + (++v) + \"]><i></i><![endif]-->\";\n        }\n        while (all[0]);\n\n        return v > 4 ? v : undef;\n    }());\n\n    return version === ieVersion;\n};\n\ndetector.isLegacyOpera = function() {\n    return !!window.opera;\n};\n","'use strict';\nrequire('./es6.regexp.exec');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar fails = require('./_fails');\nvar defined = require('./_defined');\nvar wks = require('./_wks');\nvar regexpExec = require('./_regexp-exec');\n\nvar SPECIES = wks('species');\n\nvar REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {\n  // #replace needs built-in support for named groups.\n  // #match works fine because it just return the exec results, even if it has\n  // a \"grops\" property.\n  var re = /./;\n  re.exec = function () {\n    var result = [];\n    result.groups = { a: '7' };\n    return result;\n  };\n  return ''.replace(re, '$<a>') !== '7';\n});\n\nvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = (function () {\n  // Chrome 51 has a buggy \"split\" implementation when RegExp#exec !== nativeExec\n  var re = /(?:)/;\n  var originalExec = re.exec;\n  re.exec = function () { return originalExec.apply(this, arguments); };\n  var result = 'ab'.split(re);\n  return result.length === 2 && result[0] === 'a' && result[1] === 'b';\n})();\n\nmodule.exports = function (KEY, length, exec) {\n  var SYMBOL = wks(KEY);\n\n  var DELEGATES_TO_SYMBOL = !fails(function () {\n    // String methods call symbol-named RegEp methods\n    var O = {};\n    O[SYMBOL] = function () { return 7; };\n    return ''[KEY](O) != 7;\n  });\n\n  var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL ? !fails(function () {\n    // Symbol-named RegExp methods call .exec\n    var execCalled = false;\n    var re = /a/;\n    re.exec = function () { execCalled = true; return null; };\n    if (KEY === 'split') {\n      // RegExp[@@split] doesn't call the regex's exec method, but first creates\n      // a new one. We need to return the patched regex when creating the new one.\n      re.constructor = {};\n      re.constructor[SPECIES] = function () { return re; };\n    }\n    re[SYMBOL]('');\n    return !execCalled;\n  }) : undefined;\n\n  if (\n    !DELEGATES_TO_SYMBOL ||\n    !DELEGATES_TO_EXEC ||\n    (KEY === 'replace' && !REPLACE_SUPPORTS_NAMED_GROUPS) ||\n    (KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC)\n  ) {\n    var nativeRegExpMethod = /./[SYMBOL];\n    var fns = exec(\n      defined,\n      SYMBOL,\n      ''[KEY],\n      function maybeCallNative(nativeMethod, regexp, str, arg2, forceStringMethod) {\n        if (regexp.exec === regexpExec) {\n          if (DELEGATES_TO_SYMBOL && !forceStringMethod) {\n            // The native String method already delegates to @@method (this\n            // polyfilled function), leasing to infinite recursion.\n            // We avoid it by directly calling the native @@method method.\n            return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) };\n          }\n          return { done: true, value: nativeMethod.call(str, regexp, arg2) };\n        }\n        return { done: false };\n      }\n    );\n    var strfn = fns[0];\n    var rxfn = fns[1];\n\n    redefine(String.prototype, KEY, strfn);\n    hide(RegExp.prototype, SYMBOL, length == 2\n      // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)\n      // 21.2.5.11 RegExp.prototype[@@split](string, limit)\n      ? function (string, arg) { return rxfn.call(string, this, arg); }\n      // 21.2.5.6 RegExp.prototype[@@match](string)\n      // 21.2.5.9 RegExp.prototype[@@search](string)\n      : function (string) { return rxfn.call(string, this); }\n    );\n  }\n};\n","var isObject = require('./_is-object');\nvar document = require('./_global').document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n  return is ? document.createElement(it) : {};\n};\n","// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = require('./_cof');\nvar TAG = require('./_wks')('toStringTag');\n// ES3 wrong here\nvar ARG = cof(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n  try {\n    return it[key];\n  } catch (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n  var O, T, B;\n  return it === undefined ? 'Undefined' : it === null ? 'Null'\n    // @@toStringTag case\n    : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n    // builtinTag case\n    : ARG ? cof(O)\n    // ES3 arguments fallback\n    : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n","\"use strict\";\n\n/*\n  MIT License http://www.opensource.org/licenses/mit-license.php\n  Author Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\n// eslint-disable-next-line func-names\nmodule.exports = function (useSourceMap) {\n  var list = []; // return the list of modules as css string\n\n  list.toString = function toString() {\n    return this.map(function (item) {\n      var content = cssWithMappingToString(item, useSourceMap);\n\n      if (item[2]) {\n        return \"@media \".concat(item[2], \" {\").concat(content, \"}\");\n      }\n\n      return content;\n    }).join('');\n  }; // import a list of modules into the list\n  // eslint-disable-next-line func-names\n\n\n  list.i = function (modules, mediaQuery, dedupe) {\n    if (typeof modules === 'string') {\n      // eslint-disable-next-line no-param-reassign\n      modules = [[null, modules, '']];\n    }\n\n    var alreadyImportedModules = {};\n\n    if (dedupe) {\n      for (var i = 0; i < this.length; i++) {\n        // eslint-disable-next-line prefer-destructuring\n        var id = this[i][0];\n\n        if (id != null) {\n          alreadyImportedModules[id] = true;\n        }\n      }\n    }\n\n    for (var _i = 0; _i < modules.length; _i++) {\n      var item = [].concat(modules[_i]);\n\n      if (dedupe && alreadyImportedModules[item[0]]) {\n        // eslint-disable-next-line no-continue\n        continue;\n      }\n\n      if (mediaQuery) {\n        if (!item[2]) {\n          item[2] = mediaQuery;\n        } else {\n          item[2] = \"\".concat(mediaQuery, \" and \").concat(item[2]);\n        }\n      }\n\n      list.push(item);\n    }\n  };\n\n  return list;\n};\n\nfunction cssWithMappingToString(item, useSourceMap) {\n  var content = item[1] || ''; // eslint-disable-next-line prefer-destructuring\n\n  var cssMapping = item[3];\n\n  if (!cssMapping) {\n    return content;\n  }\n\n  if (useSourceMap && typeof btoa === 'function') {\n    var sourceMapping = toComment(cssMapping);\n    var sourceURLs = cssMapping.sources.map(function (source) {\n      return \"/*# sourceURL=\".concat(cssMapping.sourceRoot || '').concat(source, \" */\");\n    });\n    return [content].concat(sourceURLs).concat([sourceMapping]).join('\\n');\n  }\n\n  return [content].join('\\n');\n} // Adapted from convert-source-map (MIT)\n\n\nfunction toComment(sourceMap) {\n  // eslint-disable-next-line no-undef\n  var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));\n  var data = \"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(base64);\n  return \"/*# \".concat(data, \" */\");\n}","exports.f = Object.getOwnPropertySymbols;\n","var global = require('./_global');\nvar hide = require('./_hide');\nvar has = require('./_has');\nvar SRC = require('./_uid')('src');\nvar $toString = require('./_function-to-string');\nvar TO_STRING = 'toString';\nvar TPL = ('' + $toString).split(TO_STRING);\n\nrequire('./_core').inspectSource = function (it) {\n  return $toString.call(it);\n};\n\n(module.exports = function (O, key, val, safe) {\n  var isFunction = typeof val == 'function';\n  if (isFunction) has(val, 'name') || hide(val, 'name', key);\n  if (O[key] === val) return;\n  if (isFunction) has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key)));\n  if (O === global) {\n    O[key] = val;\n  } else if (!safe) {\n    delete O[key];\n    hide(O, key, val);\n  } else if (O[key]) {\n    O[key] = val;\n  } else {\n    hide(O, key, val);\n  }\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, TO_STRING, function toString() {\n  return typeof this == 'function' && this[SRC] || $toString.call(this);\n});\n","// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = require('./_an-object');\nvar dPs = require('./_object-dps');\nvar enumBugKeys = require('./_enum-bug-keys');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n  // Thrash, waste and sodomy: IE GC bug\n  var iframe = require('./_dom-create')('iframe');\n  var i = enumBugKeys.length;\n  var lt = '<';\n  var gt = '>';\n  var iframeDocument;\n  iframe.style.display = 'none';\n  require('./_html').appendChild(iframe);\n  iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n  // createDict = iframe.contentWindow.Object;\n  // html.removeChild(iframe);\n  iframeDocument = iframe.contentWindow.document;\n  iframeDocument.open();\n  iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n  iframeDocument.close();\n  createDict = iframeDocument.F;\n  while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n  return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n  var result;\n  if (O !== null) {\n    Empty[PROTOTYPE] = anObject(O);\n    result = new Empty();\n    Empty[PROTOTYPE] = null;\n    // add \"__proto__\" for Object.getPrototypeOf polyfill\n    result[IE_PROTO] = O;\n  } else result = createDict();\n  return Properties === undefined ? result : dPs(result, Properties);\n};\n","var store = require('./_shared')('wks');\nvar uid = require('./_uid');\nvar Symbol = require('./_global').Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n  return store[name] || (store[name] =\n    USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n","\"use strict\";\n\nmodule.exports = function() {\n    var idCount = 1;\n\n    /**\n     * Generates a new unique id in the context.\n     * @public\n     * @returns {number} A unique id in the context.\n     */\n    function generate() {\n        return idCount++;\n    }\n\n    return {\n        generate: generate\n    };\n};\n","module.exports = false;\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n  return toString.call(it).slice(8, -1);\n};\n","'use strict';\nvar fails = require('./_fails');\n\nmodule.exports = function (method, arg) {\n  return !!method && fails(function () {\n    // eslint-disable-next-line no-useless-call\n    arg ? method.call(null, function () { /* empty */ }, 1) : method.call(null);\n  });\n};\n","var dP = require('./_object-dp');\nvar createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function (object, key, value) {\n  return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n  object[key] = value;\n  return object;\n};\n","// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = require('./_has');\nvar toObject = require('./_to-object');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n  O = toObject(O);\n  if (has(O, IE_PROTO)) return O[IE_PROTO];\n  if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n    return O.constructor.prototype;\n  } return O instanceof Object ? ObjectProto : null;\n};\n","'use strict';\nvar create = require('./_object-create');\nvar descriptor = require('./_property-desc');\nvar setToStringTag = require('./_set-to-string-tag');\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nrequire('./_hide')(IteratorPrototype, require('./_wks')('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n  Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n  setToStringTag(Constructor, NAME + ' Iterator');\n};\n","// 19.1.2.14 Object.keys(O)\nvar toObject = require('./_to-object');\nvar $keys = require('./_object-keys');\n\nrequire('./_object-sap')('keys', function () {\n  return function keys(it) {\n    return $keys(toObject(it));\n  };\n});\n","// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n  return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n","module.exports = function (bitmap, value) {\n  return {\n    enumerable: !(bitmap & 1),\n    configurable: !(bitmap & 2),\n    writable: !(bitmap & 4),\n    value: value\n  };\n};\n","'use strict';\n\nvar anObject = require('./_an-object');\nvar toLength = require('./_to-length');\nvar advanceStringIndex = require('./_advance-string-index');\nvar regExpExec = require('./_regexp-exec-abstract');\n\n// @@match logic\nrequire('./_fix-re-wks')('match', 1, function (defined, MATCH, $match, maybeCallNative) {\n  return [\n    // `String.prototype.match` method\n    // https://tc39.github.io/ecma262/#sec-string.prototype.match\n    function match(regexp) {\n      var O = defined(this);\n      var fn = regexp == undefined ? undefined : regexp[MATCH];\n      return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[MATCH](String(O));\n    },\n    // `RegExp.prototype[@@match]` method\n    // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@match\n    function (regexp) {\n      var res = maybeCallNative($match, regexp, this);\n      if (res.done) return res.value;\n      var rx = anObject(regexp);\n      var S = String(this);\n      if (!rx.global) return regExpExec(rx, S);\n      var fullUnicode = rx.unicode;\n      rx.lastIndex = 0;\n      var A = [];\n      var n = 0;\n      var result;\n      while ((result = regExpExec(rx, S)) !== null) {\n        var matchStr = String(result[0]);\n        A[n] = matchStr;\n        if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n        n++;\n      }\n      return n === 0 ? null : A;\n    }\n  ];\n});\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".vue-grid-item{-webkit-transition:all .2s ease;transition:all .2s ease;-webkit-transition-property:left,top,right;transition-property:left,top,right}.vue-grid-item,.vue-grid-item.no-touch{-ms-touch-action:none;touch-action:none}.vue-grid-item.cssTransforms{-webkit-transition-property:-webkit-transform;transition-property:-webkit-transform;transition-property:transform;transition-property:transform,-webkit-transform;left:0;right:auto}.vue-grid-item.cssTransforms.render-rtl{left:auto;right:0}.vue-grid-item.resizing{opacity:.6;z-index:3}.vue-grid-item.vue-draggable-dragging{-webkit-transition:none;transition:none;z-index:3}.vue-grid-item.vue-grid-placeholder{background:red;opacity:.2;-webkit-transition-duration:.1s;transition-duration:.1s;z-index:2;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none}.vue-grid-item>.vue-resizable-handle{position:absolute;width:20px;height:20px;bottom:0;right:0;background:url(\\\"data:image/svg+xml;base64,PHN2ZyBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjojZmZmZmZmMDAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjYiIGhlaWdodD0iNiI+PHBhdGggZD0iTTYgNkgwVjQuMmg0LjJWMEg2djZ6IiBvcGFjaXR5PSIuMzAyIi8+PC9zdmc+\\\");background-position:100% 100%;padding:0 3px 3px 0;background-repeat:no-repeat;background-origin:content-box;-webkit-box-sizing:border-box;box-sizing:border-box;cursor:se-resize}.vue-grid-item>.vue-rtl-resizable-handle{bottom:0;left:0;background:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTAiIGhlaWdodD0iMTAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbD0ibm9uZSIgZD0iTS0xLTFoMTJ2MTJILTF6Ii8+PGc+PHBhdGggc3Ryb2tlLWxpbmVjYXA9InVuZGVmaW5lZCIgc3Ryb2tlLWxpbmVqb2luPSJ1bmRlZmluZWQiIHN0cm9rZS13aWR0aD0iMS41IiBzdHJva2U9IiMwMDAiIGZpbGw9Im5vbmUiIGQ9Ik0xNDQuODIxLTM4LjM5M2wtMjAuMzU3LTMxLjc4NSIvPjxwYXRoIHN0cm9rZT0iIzY2NiIgc3Ryb2tlLWxpbmVjYXA9InVuZGVmaW5lZCIgc3Ryb2tlLWxpbmVqb2luPSJ1bmRlZmluZWQiIHN0cm9rZS13aWR0aD0iMiIgZmlsbD0ibm9uZSIgZD0iTS45NDctLjAxOHY5LjEyNU0tLjY1NiA5aDEwLjczIi8+PC9nPjwvc3ZnPg==);background-position:0 100%;padding-left:3px;background-repeat:no-repeat;background-origin:content-box;cursor:sw-resize;right:auto}.vue-grid-item.disable-userselect{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}\", \"\"]);\n// Exports\nmodule.exports = exports;\n","/**\n * Translates the list format produced by css-loader into something\n * easier to manipulate.\n */\nexport default function listToStyles (parentId, list) {\n  var styles = []\n  var newStyles = {}\n  for (var i = 0; i < list.length; i++) {\n    var item = list[i]\n    var id = item[0]\n    var css = item[1]\n    var media = item[2]\n    var sourceMap = item[3]\n    var part = {\n      id: parentId + ':' + i,\n      css: css,\n      media: media,\n      sourceMap: sourceMap\n    }\n    if (!newStyles[id]) {\n      styles.push(newStyles[id] = { id: id, parts: [part] })\n    } else {\n      newStyles[id].parts.push(part)\n    }\n  }\n  return styles\n}\n","/*\n  MIT License http://www.opensource.org/licenses/mit-license.php\n  Author Tobias Koppers @sokra\n  Modified by Evan You @yyx990803\n*/\n\nimport listToStyles from './listToStyles'\n\nvar hasDocument = typeof document !== 'undefined'\n\nif (typeof DEBUG !== 'undefined' && DEBUG) {\n  if (!hasDocument) {\n    throw new Error(\n    'vue-style-loader cannot be used in a non-browser environment. ' +\n    \"Use { target: 'node' } in your Webpack config to indicate a server-rendering environment.\"\n  ) }\n}\n\n/*\ntype StyleObject = {\n  id: number;\n  parts: Array<StyleObjectPart>\n}\n\ntype StyleObjectPart = {\n  css: string;\n  media: string;\n  sourceMap: ?string\n}\n*/\n\nvar stylesInDom = {/*\n  [id: number]: {\n    id: number,\n    refs: number,\n    parts: Array<(obj?: StyleObjectPart) => void>\n  }\n*/}\n\nvar head = hasDocument && (document.head || document.getElementsByTagName('head')[0])\nvar singletonElement = null\nvar singletonCounter = 0\nvar isProduction = false\nvar noop = function () {}\nvar options = null\nvar ssrIdKey = 'data-vue-ssr-id'\n\n// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>\n// tags it will allow on a page\nvar isOldIE = typeof navigator !== 'undefined' && /msie [6-9]\\b/.test(navigator.userAgent.toLowerCase())\n\nexport default function addStylesClient (parentId, list, _isProduction, _options) {\n  isProduction = _isProduction\n\n  options = _options || {}\n\n  var styles = listToStyles(parentId, list)\n  addStylesToDom(styles)\n\n  return function update (newList) {\n    var mayRemove = []\n    for (var i = 0; i < styles.length; i++) {\n      var item = styles[i]\n      var domStyle = stylesInDom[item.id]\n      domStyle.refs--\n      mayRemove.push(domStyle)\n    }\n    if (newList) {\n      styles = listToStyles(parentId, newList)\n      addStylesToDom(styles)\n    } else {\n      styles = []\n    }\n    for (var i = 0; i < mayRemove.length; i++) {\n      var domStyle = mayRemove[i]\n      if (domStyle.refs === 0) {\n        for (var j = 0; j < domStyle.parts.length; j++) {\n          domStyle.parts[j]()\n        }\n        delete stylesInDom[domStyle.id]\n      }\n    }\n  }\n}\n\nfunction addStylesToDom (styles /* Array<StyleObject> */) {\n  for (var i = 0; i < styles.length; i++) {\n    var item = styles[i]\n    var domStyle = stylesInDom[item.id]\n    if (domStyle) {\n      domStyle.refs++\n      for (var j = 0; j < domStyle.parts.length; j++) {\n        domStyle.parts[j](item.parts[j])\n      }\n      for (; j < item.parts.length; j++) {\n        domStyle.parts.push(addStyle(item.parts[j]))\n      }\n      if (domStyle.parts.length > item.parts.length) {\n        domStyle.parts.length = item.parts.length\n      }\n    } else {\n      var parts = []\n      for (var j = 0; j < item.parts.length; j++) {\n        parts.push(addStyle(item.parts[j]))\n      }\n      stylesInDom[item.id] = { id: item.id, refs: 1, parts: parts }\n    }\n  }\n}\n\nfunction createStyleElement () {\n  var styleElement = document.createElement('style')\n  styleElement.type = 'text/css'\n  head.appendChild(styleElement)\n  return styleElement\n}\n\nfunction addStyle (obj /* StyleObjectPart */) {\n  var update, remove\n  var styleElement = document.querySelector('style[' + ssrIdKey + '~=\"' + obj.id + '\"]')\n\n  if (styleElement) {\n    if (isProduction) {\n      // has SSR styles and in production mode.\n      // simply do nothing.\n      return noop\n    } else {\n      // has SSR styles but in dev mode.\n      // for some reason Chrome can't handle source map in server-rendered\n      // style tags - source maps in <style> only works if the style tag is\n      // created and inserted dynamically. So we remove the server rendered\n      // styles and inject new ones.\n      styleElement.parentNode.removeChild(styleElement)\n    }\n  }\n\n  if (isOldIE) {\n    // use singleton mode for IE9.\n    var styleIndex = singletonCounter++\n    styleElement = singletonElement || (singletonElement = createStyleElement())\n    update = applyToSingletonTag.bind(null, styleElement, styleIndex, false)\n    remove = applyToSingletonTag.bind(null, styleElement, styleIndex, true)\n  } else {\n    // use multi-style-tag mode in all other cases\n    styleElement = createStyleElement()\n    update = applyToTag.bind(null, styleElement)\n    remove = function () {\n      styleElement.parentNode.removeChild(styleElement)\n    }\n  }\n\n  update(obj)\n\n  return function updateStyle (newObj /* StyleObjectPart */) {\n    if (newObj) {\n      if (newObj.css === obj.css &&\n          newObj.media === obj.media &&\n          newObj.sourceMap === obj.sourceMap) {\n        return\n      }\n      update(obj = newObj)\n    } else {\n      remove()\n    }\n  }\n}\n\nvar replaceText = (function () {\n  var textStore = []\n\n  return function (index, replacement) {\n    textStore[index] = replacement\n    return textStore.filter(Boolean).join('\\n')\n  }\n})()\n\nfunction applyToSingletonTag (styleElement, index, remove, obj) {\n  var css = remove ? '' : obj.css\n\n  if (styleElement.styleSheet) {\n    styleElement.styleSheet.cssText = replaceText(index, css)\n  } else {\n    var cssNode = document.createTextNode(css)\n    var childNodes = styleElement.childNodes\n    if (childNodes[index]) styleElement.removeChild(childNodes[index])\n    if (childNodes.length) {\n      styleElement.insertBefore(cssNode, childNodes[index])\n    } else {\n      styleElement.appendChild(cssNode)\n    }\n  }\n}\n\nfunction applyToTag (styleElement, obj) {\n  var css = obj.css\n  var media = obj.media\n  var sourceMap = obj.sourceMap\n\n  if (media) {\n    styleElement.setAttribute('media', media)\n  }\n  if (options.ssrId) {\n    styleElement.setAttribute(ssrIdKey, obj.id)\n  }\n\n  if (sourceMap) {\n    // https://developer.chrome.com/devtools/docs/javascript-debugging\n    // this makes source maps inside style tags work properly in Chrome\n    css += '\\n/*# sourceURL=' + sourceMap.sources[0] + ' */'\n    // http://stackoverflow.com/a/26603875\n    css += '\\n/*# sourceMappingURL=data:application/json;base64,' + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + ' */'\n  }\n\n  if (styleElement.styleSheet) {\n    styleElement.styleSheet.cssText = css\n  } else {\n    while (styleElement.firstChild) {\n      styleElement.removeChild(styleElement.firstChild)\n    }\n    styleElement.appendChild(document.createTextNode(css))\n  }\n}\n","\"use strict\";\n\nmodule.exports = function(idHandler) {\n    var eventListeners = {};\n\n    /**\n     * Gets all listeners for the given element.\n     * @public\n     * @param {element} element The element to get all listeners for.\n     * @returns All listeners for the given element.\n     */\n    function getListeners(element) {\n        var id = idHandler.get(element);\n\n        if (id === undefined) {\n            return [];\n        }\n\n        return eventListeners[id] || [];\n    }\n\n    /**\n     * Stores the given listener for the given element. Will not actually add the listener to the element.\n     * @public\n     * @param {element} element The element that should have the listener added.\n     * @param {function} listener The callback that the element has added.\n     */\n    function addListener(element, listener) {\n        var id = idHandler.get(element);\n\n        if(!eventListeners[id]) {\n            eventListeners[id] = [];\n        }\n\n        eventListeners[id].push(listener);\n    }\n\n    function removeListener(element, listener) {\n        var listeners = getListeners(element);\n        for (var i = 0, len = listeners.length; i < len; ++i) {\n            if (listeners[i] === listener) {\n              listeners.splice(i, 1);\n              break;\n            }\n        }\n    }\n\n    function removeAllListeners(element) {\n      var listeners = getListeners(element);\n      if (!listeners) { return; }\n      listeners.length = 0;\n    }\n\n    return {\n        get: getListeners,\n        add: addListener,\n        removeListener: removeListener,\n        removeAllListeners: removeAllListeners\n    };\n};\n","// 7.1.13 ToObject(argument)\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n  return Object(defined(it));\n};\n","\"use strict\";\n\nmodule.exports = function(options) {\n    var idGenerator     = options.idGenerator;\n    var getState        = options.stateHandler.getState;\n\n    /**\n     * Gets the resize detector id of the element.\n     * @public\n     * @param {element} element The target element to get the id of.\n     * @returns {string|number|null} The id of the element. Null if it has no id.\n     */\n    function getId(element) {\n        var state = getState(element);\n\n        if (state && state.id !== undefined) {\n            return state.id;\n        }\n\n        return null;\n    }\n\n    /**\n     * Sets the resize detector id of the element. Requires the element to have a resize detector state initialized.\n     * @public\n     * @param {element} element The target element to set the id of.\n     * @returns {string|number|null} The id of the element.\n     */\n    function setId(element) {\n        var state = getState(element);\n\n        if (!state) {\n            throw new Error(\"setId required the element to have a resize detection state.\");\n        }\n\n        var id = idGenerator.generate();\n\n        state.id = id;\n\n        return id;\n    }\n\n    return {\n        get: getId,\n        set: setId\n    };\n};\n","\"use strict\";\n\nvar utils = module.exports = {};\n\nutils.getOption = getOption;\n\nfunction getOption(options, name, defaultValue) {\n    var value = options[name];\n\n    if((value === undefined || value === null) && defaultValue !== undefined) {\n        return defaultValue;\n    }\n\n    return value;\n}\n","'use strict';\n\nvar regexpFlags = require('./_flags');\n\nvar nativeExec = RegExp.prototype.exec;\n// This always refers to the native implementation, because the\n// String#replace polyfill uses ./fix-regexp-well-known-symbol-logic.js,\n// which loads this file before patching the method.\nvar nativeReplace = String.prototype.replace;\n\nvar patchedExec = nativeExec;\n\nvar LAST_INDEX = 'lastIndex';\n\nvar UPDATES_LAST_INDEX_WRONG = (function () {\n  var re1 = /a/,\n      re2 = /b*/g;\n  nativeExec.call(re1, 'a');\n  nativeExec.call(re2, 'a');\n  return re1[LAST_INDEX] !== 0 || re2[LAST_INDEX] !== 0;\n})();\n\n// nonparticipating capturing group, copied from es5-shim's String#split patch.\nvar NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;\n\nvar PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED;\n\nif (PATCH) {\n  patchedExec = function exec(str) {\n    var re = this;\n    var lastIndex, reCopy, match, i;\n\n    if (NPCG_INCLUDED) {\n      reCopy = new RegExp('^' + re.source + '$(?!\\\\s)', regexpFlags.call(re));\n    }\n    if (UPDATES_LAST_INDEX_WRONG) lastIndex = re[LAST_INDEX];\n\n    match = nativeExec.call(re, str);\n\n    if (UPDATES_LAST_INDEX_WRONG && match) {\n      re[LAST_INDEX] = re.global ? match.index + match[0].length : lastIndex;\n    }\n    if (NPCG_INCLUDED && match && match.length > 1) {\n      // Fix browsers whose `exec` methods don't consistently return `undefined`\n      // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/\n      // eslint-disable-next-line no-loop-func\n      nativeReplace.call(match[0], reCopy, function () {\n        for (i = 1; i < arguments.length - 2; i++) {\n          if (arguments[i] === undefined) match[i] = undefined;\n        }\n      });\n    }\n\n    return match;\n  };\n}\n\nmodule.exports = patchedExec;\n","exports.f = {}.propertyIsEnumerable;\n","var core = require('./_core');\nvar global = require('./_global');\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n  return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n  version: core.version,\n  mode: require('./_library') ? 'pure' : 'global',\n  copyright: '© 2020 Denis Pushkarev (zloirock.ru)'\n});\n","'use strict';\nvar $export = require('./_export');\nvar aFunction = require('./_a-function');\nvar toObject = require('./_to-object');\nvar fails = require('./_fails');\nvar $sort = [].sort;\nvar test = [1, 2, 3];\n\n$export($export.P + $export.F * (fails(function () {\n  // IE8-\n  test.sort(undefined);\n}) || !fails(function () {\n  // V8 bug\n  test.sort(null);\n  // Old WebKit\n}) || !require('./_strict-method')($sort)), 'Array', {\n  // 22.1.3.25 Array.prototype.sort(comparefn)\n  sort: function sort(comparefn) {\n    return comparefn === undefined\n      ? $sort.call(toObject(this))\n      : $sort.call(toObject(this), aFunction(comparefn));\n  }\n});\n","\"use strict\";\n\nmodule.exports = function(options) {\n    var getState = options.stateHandler.getState;\n\n    /**\n     * Tells if the element has been made detectable and ready to be listened for resize events.\n     * @public\n     * @param {element} The element to check.\n     * @returns {boolean} True or false depending on if the element is detectable or not.\n     */\n    function isDetectable(element) {\n        var state = getState(element);\n        return state && !!state.isDetectable;\n    }\n\n    /**\n     * Marks the element that it has been made detectable and ready to be listened for resize events.\n     * @public\n     * @param {element} The element to mark.\n     */\n    function markAsDetectable(element) {\n        getState(element).isDetectable = true;\n    }\n\n    /**\n     * Tells if the element is busy or not.\n     * @public\n     * @param {element} The element to check.\n     * @returns {boolean} True or false depending on if the element is busy or not.\n     */\n    function isBusy(element) {\n        return !!getState(element).busy;\n    }\n\n    /**\n     * Marks the object is busy and should not be made detectable.\n     * @public\n     * @param {element} element The element to mark.\n     * @param {boolean} busy If the element is busy or not.\n     */\n    function markBusy(element, busy) {\n        getState(element).busy = !!busy;\n    }\n\n    return {\n        isDetectable: isDetectable,\n        markAsDetectable: markAsDetectable,\n        isBusy: isBusy,\n        markBusy: markBusy\n    };\n};\n","var global = require('./_global');\nvar core = require('./_core');\nvar hide = require('./_hide');\nvar redefine = require('./_redefine');\nvar ctx = require('./_ctx');\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n  var IS_FORCED = type & $export.F;\n  var IS_GLOBAL = type & $export.G;\n  var IS_STATIC = type & $export.S;\n  var IS_PROTO = type & $export.P;\n  var IS_BIND = type & $export.B;\n  var target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE];\n  var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n  var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {});\n  var key, own, out, exp;\n  if (IS_GLOBAL) source = name;\n  for (key in source) {\n    // contains in native\n    own = !IS_FORCED && target && target[key] !== undefined;\n    // export native or passed\n    out = (own ? target : source)[key];\n    // bind timers to global for call from export context\n    exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n    // extend global\n    if (target) redefine(target, key, out, type & $export.U);\n    // export\n    if (exports[key] != out) hide(exports, key, exp);\n    if (IS_PROTO && expProto[key] != out) expProto[key] = out;\n  }\n};\nglobal.core = core;\n// type bitmap\n$export.F = 1;   // forced\n$export.G = 2;   // global\n$export.S = 4;   // static\n$export.P = 8;   // proto\n$export.B = 16;  // bind\n$export.W = 32;  // wrap\n$export.U = 64;  // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n","var isObject = require('./_is-object');\nvar setPrototypeOf = require('./_set-proto').set;\nmodule.exports = function (that, target, C) {\n  var S = target.constructor;\n  var P;\n  if (S !== C && typeof S == 'function' && (P = S.prototype) !== C.prototype && isObject(P) && setPrototypeOf) {\n    setPrototypeOf(that, P);\n  } return that;\n};\n","// most Object methods by ES6 should accept primitives\nvar $export = require('./_export');\nvar core = require('./_core');\nvar fails = require('./_fails');\nmodule.exports = function (KEY, exec) {\n  var fn = (core.Object || {})[KEY] || Object[KEY];\n  var exp = {};\n  exp[KEY] = exec(fn);\n  $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);\n};\n","'use strict';\n\nvar classof = require('./_classof');\nvar builtinExec = RegExp.prototype.exec;\n\n // `RegExpExec` abstract operation\n// https://tc39.github.io/ecma262/#sec-regexpexec\nmodule.exports = function (R, S) {\n  var exec = R.exec;\n  if (typeof exec === 'function') {\n    var result = exec.call(R, S);\n    if (typeof result !== 'object') {\n      throw new TypeError('RegExp exec method returned something other than an Object or null');\n    }\n    return result;\n  }\n  if (classof(R) !== 'RegExp') {\n    throw new TypeError('RegExp#exec called on incompatible receiver');\n  }\n  return builtinExec.call(R, S);\n};\n","var shared = require('./_shared')('keys');\nvar uid = require('./_uid');\nmodule.exports = function (key) {\n  return shared[key] || (shared[key] = uid(key));\n};\n","// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = require('./_cof');\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n  return cof(it) == 'String' ? it.split('') : Object(it);\n};\n","export * from \"-!../../node_modules/vue-style-loader/index.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./GridLayout.vue?vue&type=style&index=0&id=fc5948f6&lang=css\"","// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = require('./_iobject');\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n  return IObject(defined(it));\n};\n","var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n  return hasOwnProperty.call(it, key);\n};\n","// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n  if (!isObject(it)) return it;\n  var fn, val;\n  if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n  if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n  if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n  throw TypeError(\"Can't convert object to primitive value\");\n};\n","'use strict';\n// 19.1.2.1 Object.assign(target, source, ...)\nvar DESCRIPTORS = require('./_descriptors');\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nvar toObject = require('./_to-object');\nvar IObject = require('./_iobject');\nvar $assign = Object.assign;\n\n// should work with symbols and should have deterministic property order (V8 bug)\nmodule.exports = !$assign || require('./_fails')(function () {\n  var A = {};\n  var B = {};\n  // eslint-disable-next-line no-undef\n  var S = Symbol();\n  var K = 'abcdefghijklmnopqrst';\n  A[S] = 7;\n  K.split('').forEach(function (k) { B[k] = k; });\n  return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n  var T = toObject(target);\n  var aLen = arguments.length;\n  var index = 1;\n  var getSymbols = gOPS.f;\n  var isEnum = pIE.f;\n  while (aLen > index) {\n    var S = IObject(arguments[index++]);\n    var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);\n    var length = keys.length;\n    var j = 0;\n    var key;\n    while (length > j) {\n      key = keys[j++];\n      if (!DESCRIPTORS || isEnum.call(S, key)) T[key] = S[key];\n    }\n  } return T;\n} : $assign;\n","// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n  ? window : typeof self != 'undefined' && self.Math == Math ? self\n  // eslint-disable-next-line no-new-func\n  : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n","var toInteger = require('./_to-integer');\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n  index = toInteger(index);\n  return index < 0 ? max(index + length, 0) : min(index, length);\n};\n","module.exports = function (exec) {\n  try {\n    return !!exec();\n  } catch (e) {\n    return true;\n  }\n};\n","var def = require('./_object-dp').f;\nvar has = require('./_has');\nvar TAG = require('./_wks')('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n  if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n","var core = module.exports = { version: '2.6.12' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".vue-grid-layout{position:relative;-webkit-transition:height .2s ease;transition:height .2s ease}\", \"\"]);\n// Exports\nmodule.exports = exports;\n","module.exports = {};\n","var anObject = require('./_an-object');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar toPrimitive = require('./_to-primitive');\nvar dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n  anObject(O);\n  P = toPrimitive(P, true);\n  anObject(Attributes);\n  if (IE8_DOM_DEFINE) try {\n    return dP(O, P, Attributes);\n  } catch (e) { /* empty */ }\n  if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n  if ('value' in Attributes) O[P] = Attributes.value;\n  return O;\n};\n","// addapted from the document.currentScript polyfill by Adam Miller\n// MIT license\n// source: https://github.com/amiller-gh/currentScript-polyfill\n\n// added support for Firefox https://bugzilla.mozilla.org/show_bug.cgi?id=1620505\n\n(function (root, factory) {\n  if (typeof define === 'function' && define.amd) {\n    define([], factory);\n  } else if (typeof module === 'object' && module.exports) {\n    module.exports = factory();\n  } else {\n    root.getCurrentScript = factory();\n  }\n}(typeof self !== 'undefined' ? self : this, function () {\n  function getCurrentScript () {\n    var descriptor = Object.getOwnPropertyDescriptor(document, 'currentScript')\n    // for chrome\n    if (!descriptor && 'currentScript' in document && document.currentScript) {\n      return document.currentScript\n    }\n\n    // for other browsers with native support for currentScript\n    if (descriptor && descriptor.get !== getCurrentScript && document.currentScript) {\n      return document.currentScript\n    }\n  \n    // IE 8-10 support script readyState\n    // IE 11+ & Firefox support stack trace\n    try {\n      throw new Error();\n    }\n    catch (err) {\n      // Find the second match for the \"at\" string to get file src url from stack.\n      var ieStackRegExp = /.*at [^(]*\\((.*):(.+):(.+)\\)$/ig,\n        ffStackRegExp = /@([^@]*):(\\d+):(\\d+)\\s*$/ig,\n        stackDetails = ieStackRegExp.exec(err.stack) || ffStackRegExp.exec(err.stack),\n        scriptLocation = (stackDetails && stackDetails[1]) || false,\n        line = (stackDetails && stackDetails[2]) || false,\n        currentLocation = document.location.href.replace(document.location.hash, ''),\n        pageSource,\n        inlineScriptSourceRegExp,\n        inlineScriptSource,\n        scripts = document.getElementsByTagName('script'); // Live NodeList collection\n  \n      if (scriptLocation === currentLocation) {\n        pageSource = document.documentElement.outerHTML;\n        inlineScriptSourceRegExp = new RegExp('(?:[^\\\\n]+?\\\\n){0,' + (line - 2) + '}[^<]*<script>([\\\\d\\\\D]*?)<\\\\/script>[\\\\d\\\\D]*', 'i');\n        inlineScriptSource = pageSource.replace(inlineScriptSourceRegExp, '$1').trim();\n      }\n  \n      for (var i = 0; i < scripts.length; i++) {\n        // If ready state is interactive, return the script tag\n        if (scripts[i].readyState === 'interactive') {\n          return scripts[i];\n        }\n  \n        // If src matches, return the script tag\n        if (scripts[i].src === scriptLocation) {\n          return scripts[i];\n        }\n  \n        // If inline source matches, return the script tag\n        if (\n          scriptLocation === currentLocation &&\n          scripts[i].innerHTML &&\n          scripts[i].innerHTML.trim() === inlineScriptSource\n        ) {\n          return scripts[i];\n        }\n      }\n  \n      // If no match, return null\n      return null;\n    }\n  };\n\n  return getCurrentScript\n}));\n","// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nvar isObject = require('./_is-object');\nvar anObject = require('./_an-object');\nvar check = function (O, proto) {\n  anObject(O);\n  if (!isObject(proto) && proto !== null) throw TypeError(proto + \": can't set as prototype!\");\n};\nmodule.exports = {\n  set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line\n    function (test, buggy, set) {\n      try {\n        set = require('./_ctx')(Function.call, require('./_object-gopd').f(Object.prototype, '__proto__').set, 2);\n        set(test, []);\n        buggy = !(test instanceof Array);\n      } catch (e) { buggy = true; }\n      return function setPrototypeOf(O, proto) {\n        check(O, proto);\n        if (buggy) O.__proto__ = proto;\n        else set(O, proto);\n        return O;\n      };\n    }({}, false) : undefined),\n  check: check\n};\n","module.exports = __WEBPACK_EXTERNAL_MODULE__8bbf__;","// https://github.com/tc39/proposal-object-getownpropertydescriptors\nvar $export = require('./_export');\nvar ownKeys = require('./_own-keys');\nvar toIObject = require('./_to-iobject');\nvar gOPD = require('./_object-gopd');\nvar createProperty = require('./_create-property');\n\n$export($export.S, 'Object', {\n  getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object) {\n    var O = toIObject(object);\n    var getDesc = gOPD.f;\n    var keys = ownKeys(O);\n    var result = {};\n    var i = 0;\n    var key, desc;\n    while (keys.length > i) {\n      desc = getDesc(O, key = keys[i++]);\n      if (desc !== undefined) createProperty(result, key, desc);\n    }\n    return result;\n  }\n});\n","// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)\nvar $keys = require('./_object-keys-internal');\nvar hiddenKeys = require('./_enum-bug-keys').concat('length', 'prototype');\n\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n  return $keys(O, hiddenKeys);\n};\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./GridLayout.vue?vue&type=style&index=0&id=fc5948f6&lang=css\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"ff1827d0\", content, true, {\"sourceMap\":false,\"shadowMode\":false});","// all object keys, includes non-enumerable and symbols\nvar gOPN = require('./_object-gopn');\nvar gOPS = require('./_object-gops');\nvar anObject = require('./_an-object');\nvar Reflect = require('./_global').Reflect;\nmodule.exports = Reflect && Reflect.ownKeys || function ownKeys(it) {\n  var keys = gOPN.f(anObject(it));\n  var getSymbols = gOPS.f;\n  return getSymbols ? keys.concat(getSymbols(it)) : keys;\n};\n","// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function (fn, that, length) {\n  aFunction(fn);\n  if (that === undefined) return fn;\n  switch (length) {\n    case 1: return function (a) {\n      return fn.call(that, a);\n    };\n    case 2: return function (a, b) {\n      return fn.call(that, a, b);\n    };\n    case 3: return function (a, b, c) {\n      return fn.call(that, a, b, c);\n    };\n  }\n  return function (/* ...args */) {\n    return fn.apply(that, arguments);\n  };\n};\n","// 22.1.3.31 Array.prototype[@@unscopables]\nvar UNSCOPABLES = require('./_wks')('unscopables');\nvar ArrayProto = Array.prototype;\nif (ArrayProto[UNSCOPABLES] == undefined) require('./_hide')(ArrayProto, UNSCOPABLES, {});\nmodule.exports = function (key) {\n  ArrayProto[UNSCOPABLES][key] = true;\n};\n","// 7.1.15 ToLength\nvar toInteger = require('./_to-integer');\nvar min = Math.min;\nmodule.exports = function (it) {\n  return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n","// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function () {\n  return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n","'use strict';\n\nvar anObject = require('./_an-object');\nvar toObject = require('./_to-object');\nvar toLength = require('./_to-length');\nvar toInteger = require('./_to-integer');\nvar advanceStringIndex = require('./_advance-string-index');\nvar regExpExec = require('./_regexp-exec-abstract');\nvar max = Math.max;\nvar min = Math.min;\nvar floor = Math.floor;\nvar SUBSTITUTION_SYMBOLS = /\\$([$&`']|\\d\\d?|<[^>]*>)/g;\nvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\$([$&`']|\\d\\d?)/g;\n\nvar maybeToString = function (it) {\n  return it === undefined ? it : String(it);\n};\n\n// @@replace logic\nrequire('./_fix-re-wks')('replace', 2, function (defined, REPLACE, $replace, maybeCallNative) {\n  return [\n    // `String.prototype.replace` method\n    // https://tc39.github.io/ecma262/#sec-string.prototype.replace\n    function replace(searchValue, replaceValue) {\n      var O = defined(this);\n      var fn = searchValue == undefined ? undefined : searchValue[REPLACE];\n      return fn !== undefined\n        ? fn.call(searchValue, O, replaceValue)\n        : $replace.call(String(O), searchValue, replaceValue);\n    },\n    // `RegExp.prototype[@@replace]` method\n    // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@replace\n    function (regexp, replaceValue) {\n      var res = maybeCallNative($replace, regexp, this, replaceValue);\n      if (res.done) return res.value;\n\n      var rx = anObject(regexp);\n      var S = String(this);\n      var functionalReplace = typeof replaceValue === 'function';\n      if (!functionalReplace) replaceValue = String(replaceValue);\n      var global = rx.global;\n      if (global) {\n        var fullUnicode = rx.unicode;\n        rx.lastIndex = 0;\n      }\n      var results = [];\n      while (true) {\n        var result = regExpExec(rx, S);\n        if (result === null) break;\n        results.push(result);\n        if (!global) break;\n        var matchStr = String(result[0]);\n        if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n      }\n      var accumulatedResult = '';\n      var nextSourcePosition = 0;\n      for (var i = 0; i < results.length; i++) {\n        result = results[i];\n        var matched = String(result[0]);\n        var position = max(min(toInteger(result.index), S.length), 0);\n        var captures = [];\n        // NOTE: This is equivalent to\n        //   captures = result.slice(1).map(maybeToString)\n        // but for some reason `nativeSlice.call(result, 1, result.length)` (called in\n        // the slice polyfill when slicing native arrays) \"doesn't work\" in safari 9 and\n        // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.\n        for (var j = 1; j < result.length; j++) captures.push(maybeToString(result[j]));\n        var namedCaptures = result.groups;\n        if (functionalReplace) {\n          var replacerArgs = [matched].concat(captures, position, S);\n          if (namedCaptures !== undefined) replacerArgs.push(namedCaptures);\n          var replacement = String(replaceValue.apply(undefined, replacerArgs));\n        } else {\n          replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);\n        }\n        if (position >= nextSourcePosition) {\n          accumulatedResult += S.slice(nextSourcePosition, position) + replacement;\n          nextSourcePosition = position + matched.length;\n        }\n      }\n      return accumulatedResult + S.slice(nextSourcePosition);\n    }\n  ];\n\n    // https://tc39.github.io/ecma262/#sec-getsubstitution\n  function getSubstitution(matched, str, position, captures, namedCaptures, replacement) {\n    var tailPos = position + matched.length;\n    var m = captures.length;\n    var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;\n    if (namedCaptures !== undefined) {\n      namedCaptures = toObject(namedCaptures);\n      symbols = SUBSTITUTION_SYMBOLS;\n    }\n    return $replace.call(replacement, symbols, function (match, ch) {\n      var capture;\n      switch (ch.charAt(0)) {\n        case '$': return '$';\n        case '&': return matched;\n        case '`': return str.slice(0, position);\n        case \"'\": return str.slice(tailPos);\n        case '<':\n          capture = namedCaptures[ch.slice(1, -1)];\n          break;\n        default: // \\d\\d?\n          var n = +ch;\n          if (n === 0) return match;\n          if (n > m) {\n            var f = floor(n / 10);\n            if (f === 0) return match;\n            if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1);\n            return match;\n          }\n          capture = captures[n - 1];\n      }\n      return capture === undefined ? '' : capture;\n    });\n  }\n});\n","var $export = require('./_export');\nvar defined = require('./_defined');\nvar fails = require('./_fails');\nvar spaces = require('./_string-ws');\nvar space = '[' + spaces + ']';\nvar non = '\\u200b\\u0085';\nvar ltrim = RegExp('^' + space + space + '*');\nvar rtrim = RegExp(space + space + '*$');\n\nvar exporter = function (KEY, exec, ALIAS) {\n  var exp = {};\n  var FORCE = fails(function () {\n    return !!spaces[KEY]() || non[KEY]() != non;\n  });\n  var fn = exp[KEY] = FORCE ? exec(trim) : spaces[KEY];\n  if (ALIAS) exp[ALIAS] = fn;\n  $export($export.P + $export.F * FORCE, 'String', exp);\n};\n\n// 1 -> String#trimLeft\n// 2 -> String#trimRight\n// 3 -> String#trim\nvar trim = exporter.trim = function (string, TYPE) {\n  string = String(defined(string));\n  if (TYPE & 1) string = string.replace(ltrim, '');\n  if (TYPE & 2) string = string.replace(rtrim, '');\n  return string;\n};\n\nmodule.exports = exporter;\n","\"use strict\";\n\n/* global console: false */\n\n/**\n * Reporter that handles the reporting of logs, warnings and errors.\n * @public\n * @param {boolean} quiet Tells if the reporter should be quiet or not.\n */\nmodule.exports = function(quiet) {\n    function noop() {\n        //Does nothing.\n    }\n\n    var reporter = {\n        log: noop,\n        warn: noop,\n        error: noop\n    };\n\n    if(!quiet && window.console) {\n        var attachFunction = function(reporter, name) {\n            //The proxy is needed to be able to call the method with the console context,\n            //since we cannot use bind.\n            reporter[name] = function reporterProxy() {\n                var f = console[name];\n                if (f.apply) { //IE9 does not support console.log.apply :)\n                    f.apply(console, arguments);\n                } else {\n                    for (var i = 0; i < arguments.length; i++) {\n                        f(arguments[i]);\n                    }\n                }\n            };\n        };\n\n        attachFunction(reporter, \"log\");\n        attachFunction(reporter, \"warn\");\n        attachFunction(reporter, \"error\");\n    }\n\n    return reporter;\n};","var $iterators = require('./es6.array.iterator');\nvar getKeys = require('./_object-keys');\nvar redefine = require('./_redefine');\nvar global = require('./_global');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar wks = require('./_wks');\nvar ITERATOR = wks('iterator');\nvar TO_STRING_TAG = wks('toStringTag');\nvar ArrayValues = Iterators.Array;\n\nvar DOMIterables = {\n  CSSRuleList: true, // TODO: Not spec compliant, should be false.\n  CSSStyleDeclaration: false,\n  CSSValueList: false,\n  ClientRectList: false,\n  DOMRectList: false,\n  DOMStringList: false,\n  DOMTokenList: true,\n  DataTransferItemList: false,\n  FileList: false,\n  HTMLAllCollection: false,\n  HTMLCollection: false,\n  HTMLFormElement: false,\n  HTMLSelectElement: false,\n  MediaList: true, // TODO: Not spec compliant, should be false.\n  MimeTypeArray: false,\n  NamedNodeMap: false,\n  NodeList: true,\n  PaintRequestList: false,\n  Plugin: false,\n  PluginArray: false,\n  SVGLengthList: false,\n  SVGNumberList: false,\n  SVGPathSegList: false,\n  SVGPointList: false,\n  SVGStringList: false,\n  SVGTransformList: false,\n  SourceBufferList: false,\n  StyleSheetList: true, // TODO: Not spec compliant, should be false.\n  TextTrackCueList: false,\n  TextTrackList: false,\n  TouchList: false\n};\n\nfor (var collections = getKeys(DOMIterables), i = 0; i < collections.length; i++) {\n  var NAME = collections[i];\n  var explicit = DOMIterables[NAME];\n  var Collection = global[NAME];\n  var proto = Collection && Collection.prototype;\n  var key;\n  if (proto) {\n    if (!proto[ITERATOR]) hide(proto, ITERATOR, ArrayValues);\n    if (!proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n    Iterators[NAME] = ArrayValues;\n    if (explicit) for (key in $iterators) if (!proto[key]) redefine(proto, key, $iterators[key], true);\n  }\n}\n","'use strict';\nvar regexpExec = require('./_regexp-exec');\nrequire('./_export')({\n  target: 'RegExp',\n  proto: true,\n  forced: regexpExec !== /./.exec\n}, {\n  exec: regexpExec\n});\n","\"use strict\";\n\nvar utils = module.exports = {};\n\n/**\n * Loops through the collection and calls the callback for each element. if the callback returns truthy, the loop is broken and returns the same value.\n * @public\n * @param {*} collection The collection to loop through. Needs to have a length property set and have indices set from 0 to length - 1.\n * @param {function} callback The callback to be called for each element. The element will be given as a parameter to the callback. If this callback returns truthy, the loop is broken and the same value is returned.\n * @returns {*} The value that a callback has returned (if truthy). Otherwise nothing.\n */\nutils.forEach = function(collection, callback) {\n    for(var i = 0; i < collection.length; i++) {\n        var result = callback(collection[i]);\n        if(result) {\n            return result;\n        }\n    }\n};\n","// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n  if (it == undefined) throw TypeError(\"Can't call method on  \" + it);\n  return it;\n};\n","\"use strict\";\n\nvar utils = require(\"./utils\");\n\nmodule.exports = function batchProcessorMaker(options) {\n    options             = options || {};\n    var reporter        = options.reporter;\n    var asyncProcess    = utils.getOption(options, \"async\", true);\n    var autoProcess     = utils.getOption(options, \"auto\", true);\n\n    if(autoProcess && !asyncProcess) {\n        reporter && reporter.warn(\"Invalid options combination. auto=true and async=false is invalid. Setting async=true.\");\n        asyncProcess = true;\n    }\n\n    var batch = Batch();\n    var asyncFrameHandler;\n    var isProcessing = false;\n\n    function addFunction(level, fn) {\n        if(!isProcessing && autoProcess && asyncProcess && batch.size() === 0) {\n            // Since this is async, it is guaranteed to be executed after that the fn is added to the batch.\n            // This needs to be done before, since we're checking the size of the batch to be 0.\n            processBatchAsync();\n        }\n\n        batch.add(level, fn);\n    }\n\n    function processBatch() {\n        // Save the current batch, and create a new batch so that incoming functions are not added into the currently processing batch.\n        // Continue processing until the top-level batch is empty (functions may be added to the new batch while processing, and so on).\n        isProcessing = true;\n        while (batch.size()) {\n            var processingBatch = batch;\n            batch = Batch();\n            processingBatch.process();\n        }\n        isProcessing = false;\n    }\n\n    function forceProcessBatch(localAsyncProcess) {\n        if (isProcessing) {\n            return;\n        }\n\n        if(localAsyncProcess === undefined) {\n            localAsyncProcess = asyncProcess;\n        }\n\n        if(asyncFrameHandler) {\n            cancelFrame(asyncFrameHandler);\n            asyncFrameHandler = null;\n        }\n\n        if(localAsyncProcess) {\n            processBatchAsync();\n        } else {\n            processBatch();\n        }\n    }\n\n    function processBatchAsync() {\n        asyncFrameHandler = requestFrame(processBatch);\n    }\n\n    function clearBatch() {\n        batch           = {};\n        batchSize       = 0;\n        topLevel        = 0;\n        bottomLevel     = 0;\n    }\n\n    function cancelFrame(listener) {\n        // var cancel = window.cancelAnimationFrame || window.mozCancelAnimationFrame || window.webkitCancelAnimationFrame || window.clearTimeout;\n        var cancel = clearTimeout;\n        return cancel(listener);\n    }\n\n    function requestFrame(callback) {\n        // var raf = window.requestAnimationFrame || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame || function(fn) { return window.setTimeout(fn, 20); };\n        var raf = function(fn) { return setTimeout(fn, 0); };\n        return raf(callback);\n    }\n\n    return {\n        add: addFunction,\n        force: forceProcessBatch\n    };\n};\n\nfunction Batch() {\n    var batch       = {};\n    var size        = 0;\n    var topLevel    = 0;\n    var bottomLevel = 0;\n\n    function add(level, fn) {\n        if(!fn) {\n            fn = level;\n            level = 0;\n        }\n\n        if(level > topLevel) {\n            topLevel = level;\n        } else if(level < bottomLevel) {\n            bottomLevel = level;\n        }\n\n        if(!batch[level]) {\n            batch[level] = [];\n        }\n\n        batch[level].push(fn);\n        size++;\n    }\n\n    function process() {\n        for(var level = bottomLevel; level <= topLevel; level++) {\n            var fns = batch[level];\n\n            for(var i = 0; i < fns.length; i++) {\n                var fn = fns[i];\n                fn();\n            }\n        }\n    }\n\n    function getSize() {\n        return size;\n    }\n\n    return {\n        add: add,\n        process: process,\n        size: getSize\n    };\n}\n","// false -> Array#indexOf\n// true  -> Array#includes\nvar toIObject = require('./_to-iobject');\nvar toLength = require('./_to-length');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nmodule.exports = function (IS_INCLUDES) {\n  return function ($this, el, fromIndex) {\n    var O = toIObject($this);\n    var length = toLength(O.length);\n    var index = toAbsoluteIndex(fromIndex, length);\n    var value;\n    // Array#includes uses SameValueZero equality algorithm\n    // eslint-disable-next-line no-self-compare\n    if (IS_INCLUDES && el != el) while (length > index) {\n      value = O[index++];\n      // eslint-disable-next-line no-self-compare\n      if (value != value) return true;\n    // Array#indexOf ignores holes, Array#includes - not\n    } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n      if (O[index] === el) return IS_INCLUDES || index || 0;\n    } return !IS_INCLUDES && -1;\n  };\n};\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./GridItem.vue?vue&type=style&index=0&id=46ff2fc8&lang=css\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"40158674\", content, true, {\"sourceMap\":false,\"shadowMode\":false});","'use strict';\nvar global = require('./_global');\nvar has = require('./_has');\nvar cof = require('./_cof');\nvar inheritIfRequired = require('./_inherit-if-required');\nvar toPrimitive = require('./_to-primitive');\nvar fails = require('./_fails');\nvar gOPN = require('./_object-gopn').f;\nvar gOPD = require('./_object-gopd').f;\nvar dP = require('./_object-dp').f;\nvar $trim = require('./_string-trim').trim;\nvar NUMBER = 'Number';\nvar $Number = global[NUMBER];\nvar Base = $Number;\nvar proto = $Number.prototype;\n// Opera ~12 has broken Object#toString\nvar BROKEN_COF = cof(require('./_object-create')(proto)) == NUMBER;\nvar TRIM = 'trim' in String.prototype;\n\n// 7.1.3 ToNumber(argument)\nvar toNumber = function (argument) {\n  var it = toPrimitive(argument, false);\n  if (typeof it == 'string' && it.length > 2) {\n    it = TRIM ? it.trim() : $trim(it, 3);\n    var first = it.charCodeAt(0);\n    var third, radix, maxCode;\n    if (first === 43 || first === 45) {\n      third = it.charCodeAt(2);\n      if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix\n    } else if (first === 48) {\n      switch (it.charCodeAt(1)) {\n        case 66: case 98: radix = 2; maxCode = 49; break; // fast equal /^0b[01]+$/i\n        case 79: case 111: radix = 8; maxCode = 55; break; // fast equal /^0o[0-7]+$/i\n        default: return +it;\n      }\n      for (var digits = it.slice(2), i = 0, l = digits.length, code; i < l; i++) {\n        code = digits.charCodeAt(i);\n        // parseInt parses a string to a first unavailable symbol\n        // but ToNumber should return NaN if a string contains unavailable symbols\n        if (code < 48 || code > maxCode) return NaN;\n      } return parseInt(digits, radix);\n    }\n  } return +it;\n};\n\nif (!$Number(' 0o1') || !$Number('0b1') || $Number('+0x1')) {\n  $Number = function Number(value) {\n    var it = arguments.length < 1 ? 0 : value;\n    var that = this;\n    return that instanceof $Number\n      // check on 1..constructor(foo) case\n      && (BROKEN_COF ? fails(function () { proto.valueOf.call(that); }) : cof(that) != NUMBER)\n        ? inheritIfRequired(new Base(toNumber(it)), that, $Number) : toNumber(it);\n  };\n  for (var keys = require('./_descriptors') ? gOPN(Base) : (\n    // ES3:\n    'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' +\n    // ES6 (in case, if modules with ES6 Number statics required before):\n    'EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,' +\n    'MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger'\n  ).split(','), j = 0, key; keys.length > j; j++) {\n    if (has(Base, key = keys[j]) && !has($Number, key)) {\n      dP($Number, key, gOPD(Base, key));\n    }\n  }\n  $Number.prototype = proto;\n  proto.constructor = $Number;\n  require('./_redefine')(global, NUMBER, $Number);\n}\n","module.exports = !require('./_descriptors') && !require('./_fails')(function () {\n  return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n","/**\n * Resize detection strategy that injects divs to elements in order to detect resize events on scroll events.\n * Heavily inspired by: https://github.com/marcj/css-element-queries/blob/master/src/ResizeSensor.js\n */\n\n\"use strict\";\n\nvar forEach = require(\"../collection-utils\").forEach;\n\nmodule.exports = function(options) {\n    options             = options || {};\n    var reporter        = options.reporter;\n    var batchProcessor  = options.batchProcessor;\n    var getState        = options.stateHandler.getState;\n    var hasState        = options.stateHandler.hasState;\n    var idHandler       = options.idHandler;\n\n    if (!batchProcessor) {\n        throw new Error(\"Missing required dependency: batchProcessor\");\n    }\n\n    if (!reporter) {\n        throw new Error(\"Missing required dependency: reporter.\");\n    }\n\n    //TODO: Could this perhaps be done at installation time?\n    var scrollbarSizes = getScrollbarSizes();\n\n    var styleId = \"erd_scroll_detection_scrollbar_style\";\n    var detectionContainerClass = \"erd_scroll_detection_container\";\n\n    function initDocument(targetDocument) {\n        // Inject the scrollbar styling that prevents them from appearing sometimes in Chrome.\n        // The injected container needs to have a class, so that it may be styled with CSS (pseudo elements).\n        injectScrollStyle(targetDocument, styleId, detectionContainerClass);\n    }\n\n    initDocument(window.document);\n\n    function buildCssTextString(rules) {\n        var seperator = options.important ? \" !important; \" : \"; \";\n\n        return (rules.join(seperator) + seperator).trim();\n    }\n\n    function getScrollbarSizes() {\n        var width = 500;\n        var height = 500;\n\n        var child = document.createElement(\"div\");\n        child.style.cssText = buildCssTextString([\"position: absolute\", \"width: \" + width*2 + \"px\", \"height: \" + height*2 + \"px\", \"visibility: hidden\", \"margin: 0\", \"padding: 0\"]);\n\n        var container = document.createElement(\"div\");\n        container.style.cssText = buildCssTextString([\"position: absolute\", \"width: \" + width + \"px\", \"height: \" + height + \"px\", \"overflow: scroll\", \"visibility: none\", \"top: \" + -width*3 + \"px\", \"left: \" + -height*3 + \"px\", \"visibility: hidden\", \"margin: 0\", \"padding: 0\"]);\n\n        container.appendChild(child);\n\n        document.body.insertBefore(container, document.body.firstChild);\n\n        var widthSize = width - container.clientWidth;\n        var heightSize = height - container.clientHeight;\n\n        document.body.removeChild(container);\n\n        return {\n            width: widthSize,\n            height: heightSize\n        };\n    }\n\n    function injectScrollStyle(targetDocument, styleId, containerClass) {\n        function injectStyle(style, method) {\n            method = method || function (element) {\n                targetDocument.head.appendChild(element);\n            };\n\n            var styleElement = targetDocument.createElement(\"style\");\n            styleElement.innerHTML = style;\n            styleElement.id = styleId;\n            method(styleElement);\n            return styleElement;\n        }\n\n        if (!targetDocument.getElementById(styleId)) {\n            var containerAnimationClass = containerClass + \"_animation\";\n            var containerAnimationActiveClass = containerClass + \"_animation_active\";\n            var style = \"/* Created by the element-resize-detector library. */\\n\";\n            style += \".\" + containerClass + \" > div::-webkit-scrollbar { \" + buildCssTextString([\"display: none\"]) + \" }\\n\\n\";\n            style += \".\" + containerAnimationActiveClass + \" { \" + buildCssTextString([\"-webkit-animation-duration: 0.1s\", \"animation-duration: 0.1s\", \"-webkit-animation-name: \" + containerAnimationClass, \"animation-name: \" + containerAnimationClass]) + \" }\\n\";\n            style += \"@-webkit-keyframes \" + containerAnimationClass +  \" { 0% { opacity: 1; } 50% { opacity: 0; } 100% { opacity: 1; } }\\n\";\n            style += \"@keyframes \" + containerAnimationClass +          \" { 0% { opacity: 1; } 50% { opacity: 0; } 100% { opacity: 1; } }\";\n            injectStyle(style);\n        }\n    }\n\n    function addAnimationClass(element) {\n        element.className += \" \" + detectionContainerClass + \"_animation_active\";\n    }\n\n    function addEvent(el, name, cb) {\n        if (el.addEventListener) {\n            el.addEventListener(name, cb);\n        } else if(el.attachEvent) {\n            el.attachEvent(\"on\" + name, cb);\n        } else {\n            return reporter.error(\"[scroll] Don't know how to add event listeners.\");\n        }\n    }\n\n    function removeEvent(el, name, cb) {\n        if (el.removeEventListener) {\n            el.removeEventListener(name, cb);\n        } else if(el.detachEvent) {\n            el.detachEvent(\"on\" + name, cb);\n        } else {\n            return reporter.error(\"[scroll] Don't know how to remove event listeners.\");\n        }\n    }\n\n    function getExpandElement(element) {\n        return getState(element).container.childNodes[0].childNodes[0].childNodes[0];\n    }\n\n    function getShrinkElement(element) {\n        return getState(element).container.childNodes[0].childNodes[0].childNodes[1];\n    }\n\n    /**\n     * Adds a resize event listener to the element.\n     * @public\n     * @param {element} element The element that should have the listener added.\n     * @param {function} listener The listener callback to be called for each resize event of the element. The element will be given as a parameter to the listener callback.\n     */\n    function addListener(element, listener) {\n        var listeners = getState(element).listeners;\n\n        if (!listeners.push) {\n            throw new Error(\"Cannot add listener to an element that is not detectable.\");\n        }\n\n        getState(element).listeners.push(listener);\n    }\n\n    /**\n     * Makes an element detectable and ready to be listened for resize events. Will call the callback when the element is ready to be listened for resize changes.\n     * @private\n     * @param {object} options Optional options object.\n     * @param {element} element The element to make detectable\n     * @param {function} callback The callback to be called when the element is ready to be listened for resize changes. Will be called with the element as first parameter.\n     */\n    function makeDetectable(options, element, callback) {\n        if (!callback) {\n            callback = element;\n            element = options;\n            options = null;\n        }\n\n        options = options || {};\n\n        function debug() {\n            if (options.debug) {\n                var args = Array.prototype.slice.call(arguments);\n                args.unshift(idHandler.get(element), \"Scroll: \");\n                if (reporter.log.apply) {\n                    reporter.log.apply(null, args);\n                } else {\n                    for (var i = 0; i < args.length; i++) {\n                        reporter.log(args[i]);\n                    }\n                }\n            }\n        }\n\n        function isDetached(element) {\n            function isInDocument(element) {\n                return element === element.ownerDocument.body || element.ownerDocument.body.contains(element);\n            }\n\n            if (!isInDocument(element)) {\n                return true;\n            }\n\n            // FireFox returns null style in hidden iframes. See https://github.com/wnr/element-resize-detector/issues/68 and https://bugzilla.mozilla.org/show_bug.cgi?id=795520\n            if (window.getComputedStyle(element) === null) {\n                return true;\n            }\n\n            return false;\n        }\n\n        function isUnrendered(element) {\n            // Check the absolute positioned container since the top level container is display: inline.\n            var container = getState(element).container.childNodes[0];\n            var style = window.getComputedStyle(container);\n            return !style.width || style.width.indexOf(\"px\") === -1; //Can only compute pixel value when rendered.\n        }\n\n        function getStyle() {\n            // Some browsers only force layouts when actually reading the style properties of the style object, so make sure that they are all read here,\n            // so that the user of the function can be sure that it will perform the layout here, instead of later (important for batching).\n            var elementStyle            = window.getComputedStyle(element);\n            var style                   = {};\n            style.position              = elementStyle.position;\n            style.width                 = element.offsetWidth;\n            style.height                = element.offsetHeight;\n            style.top                   = elementStyle.top;\n            style.right                 = elementStyle.right;\n            style.bottom                = elementStyle.bottom;\n            style.left                  = elementStyle.left;\n            style.widthCSS              = elementStyle.width;\n            style.heightCSS             = elementStyle.height;\n            return style;\n        }\n\n        function storeStartSize() {\n            var style = getStyle();\n            getState(element).startSize = {\n                width: style.width,\n                height: style.height\n            };\n            debug(\"Element start size\", getState(element).startSize);\n        }\n\n        function initListeners() {\n            getState(element).listeners = [];\n        }\n\n        function storeStyle() {\n            debug(\"storeStyle invoked.\");\n            if (!getState(element)) {\n                debug(\"Aborting because element has been uninstalled\");\n                return;\n            }\n\n            var style = getStyle();\n            getState(element).style = style;\n        }\n\n        function storeCurrentSize(element, width, height) {\n            getState(element).lastWidth = width;\n            getState(element).lastHeight  = height;\n        }\n\n        function getExpandChildElement(element) {\n            return getExpandElement(element).childNodes[0];\n        }\n\n        function getWidthOffset() {\n            return 2 * scrollbarSizes.width + 1;\n        }\n\n        function getHeightOffset() {\n            return 2 * scrollbarSizes.height + 1;\n        }\n\n        function getExpandWidth(width) {\n            return width + 10 + getWidthOffset();\n        }\n\n        function getExpandHeight(height) {\n            return height + 10 + getHeightOffset();\n        }\n\n        function getShrinkWidth(width) {\n            return width * 2 + getWidthOffset();\n        }\n\n        function getShrinkHeight(height) {\n            return height * 2 + getHeightOffset();\n        }\n\n        function positionScrollbars(element, width, height) {\n            var expand          = getExpandElement(element);\n            var shrink          = getShrinkElement(element);\n            var expandWidth     = getExpandWidth(width);\n            var expandHeight    = getExpandHeight(height);\n            var shrinkWidth     = getShrinkWidth(width);\n            var shrinkHeight    = getShrinkHeight(height);\n            expand.scrollLeft   = expandWidth;\n            expand.scrollTop    = expandHeight;\n            shrink.scrollLeft   = shrinkWidth;\n            shrink.scrollTop    = shrinkHeight;\n        }\n\n        function injectContainerElement() {\n            var container = getState(element).container;\n\n            if (!container) {\n                container                   = document.createElement(\"div\");\n                container.className         = detectionContainerClass;\n                container.style.cssText     = buildCssTextString([\"visibility: hidden\", \"display: inline\", \"width: 0px\", \"height: 0px\", \"z-index: -1\", \"overflow: hidden\", \"margin: 0\", \"padding: 0\"]);\n                getState(element).container = container;\n                addAnimationClass(container);\n                element.appendChild(container);\n\n                var onAnimationStart = function () {\n                    getState(element).onRendered && getState(element).onRendered();\n                };\n\n                addEvent(container, \"animationstart\", onAnimationStart);\n\n                // Store the event handler here so that they may be removed when uninstall is called.\n                // See uninstall function for an explanation why it is needed.\n                getState(element).onAnimationStart = onAnimationStart;\n            }\n\n            return container;\n        }\n\n        function injectScrollElements() {\n            function alterPositionStyles() {\n                var style = getState(element).style;\n\n                if(style.position === \"static\") {\n                    element.style.setProperty(\"position\", \"relative\",options.important ? \"important\" : \"\");\n\n                    var removeRelativeStyles = function(reporter, element, style, property) {\n                        function getNumericalValue(value) {\n                            return value.replace(/[^-\\d\\.]/g, \"\");\n                        }\n\n                        var value = style[property];\n\n                        if(value !== \"auto\" && getNumericalValue(value) !== \"0\") {\n                            reporter.warn(\"An element that is positioned static has style.\" + property + \"=\" + value + \" which is ignored due to the static positioning. The element will need to be positioned relative, so the style.\" + property + \" will be set to 0. Element: \", element);\n                            element.style[property] = 0;\n                        }\n                    };\n\n                    //Check so that there are no accidental styles that will make the element styled differently now that is is relative.\n                    //If there are any, set them to 0 (this should be okay with the user since the style properties did nothing before [since the element was positioned static] anyway).\n                    removeRelativeStyles(reporter, element, style, \"top\");\n                    removeRelativeStyles(reporter, element, style, \"right\");\n                    removeRelativeStyles(reporter, element, style, \"bottom\");\n                    removeRelativeStyles(reporter, element, style, \"left\");\n                }\n            }\n\n            function getLeftTopBottomRightCssText(left, top, bottom, right) {\n                left = (!left ? \"0\" : (left + \"px\"));\n                top = (!top ? \"0\" : (top + \"px\"));\n                bottom = (!bottom ? \"0\" : (bottom + \"px\"));\n                right = (!right ? \"0\" : (right + \"px\"));\n\n                return [\"left: \" + left, \"top: \" + top, \"right: \" + right, \"bottom: \" + bottom];\n            }\n\n            debug(\"Injecting elements\");\n\n            if (!getState(element)) {\n                debug(\"Aborting because element has been uninstalled\");\n                return;\n            }\n\n            alterPositionStyles();\n\n            var rootContainer = getState(element).container;\n\n            if (!rootContainer) {\n                rootContainer = injectContainerElement();\n            }\n\n            // Due to this WebKit bug https://bugs.webkit.org/show_bug.cgi?id=80808 (currently fixed in Blink, but still present in WebKit browsers such as Safari),\n            // we need to inject two containers, one that is width/height 100% and another that is left/top -1px so that the final container always is 1x1 pixels bigger than\n            // the targeted element.\n            // When the bug is resolved, \"containerContainer\" may be removed.\n\n            // The outer container can occasionally be less wide than the targeted when inside inline elements element in WebKit (see https://bugs.webkit.org/show_bug.cgi?id=152980).\n            // This should be no problem since the inner container either way makes sure the injected scroll elements are at least 1x1 px.\n\n            var scrollbarWidth          = scrollbarSizes.width;\n            var scrollbarHeight         = scrollbarSizes.height;\n            var containerContainerStyle = buildCssTextString([\"position: absolute\", \"flex: none\", \"overflow: hidden\", \"z-index: -1\", \"visibility: hidden\", \"width: 100%\", \"height: 100%\", \"left: 0px\", \"top: 0px\"]);\n            var containerStyle          = buildCssTextString([\"position: absolute\", \"flex: none\", \"overflow: hidden\", \"z-index: -1\", \"visibility: hidden\"].concat(getLeftTopBottomRightCssText(-(1 + scrollbarWidth), -(1 + scrollbarHeight), -scrollbarHeight, -scrollbarWidth)));\n            var expandStyle             = buildCssTextString([\"position: absolute\", \"flex: none\", \"overflow: scroll\", \"z-index: -1\", \"visibility: hidden\", \"width: 100%\", \"height: 100%\"]);\n            var shrinkStyle             = buildCssTextString([\"position: absolute\", \"flex: none\", \"overflow: scroll\", \"z-index: -1\", \"visibility: hidden\", \"width: 100%\", \"height: 100%\"]);\n            var expandChildStyle        = buildCssTextString([\"position: absolute\", \"left: 0\", \"top: 0\"]);\n            var shrinkChildStyle        = buildCssTextString([\"position: absolute\", \"width: 200%\", \"height: 200%\"]);\n\n            var containerContainer      = document.createElement(\"div\");\n            var container               = document.createElement(\"div\");\n            var expand                  = document.createElement(\"div\");\n            var expandChild             = document.createElement(\"div\");\n            var shrink                  = document.createElement(\"div\");\n            var shrinkChild             = document.createElement(\"div\");\n\n            // Some browsers choke on the resize system being rtl, so force it to ltr. https://github.com/wnr/element-resize-detector/issues/56\n            // However, dir should not be set on the top level container as it alters the dimensions of the target element in some browsers.\n            containerContainer.dir              = \"ltr\";\n\n            containerContainer.style.cssText    = containerContainerStyle;\n            containerContainer.className        = detectionContainerClass;\n            container.className                 = detectionContainerClass;\n            container.style.cssText             = containerStyle;\n            expand.style.cssText                = expandStyle;\n            expandChild.style.cssText           = expandChildStyle;\n            shrink.style.cssText                = shrinkStyle;\n            shrinkChild.style.cssText           = shrinkChildStyle;\n\n            expand.appendChild(expandChild);\n            shrink.appendChild(shrinkChild);\n            container.appendChild(expand);\n            container.appendChild(shrink);\n            containerContainer.appendChild(container);\n            rootContainer.appendChild(containerContainer);\n\n            function onExpandScroll() {\n                getState(element).onExpand && getState(element).onExpand();\n            }\n\n            function onShrinkScroll() {\n                getState(element).onShrink && getState(element).onShrink();\n            }\n\n            addEvent(expand, \"scroll\", onExpandScroll);\n            addEvent(shrink, \"scroll\", onShrinkScroll);\n\n            // Store the event handlers here so that they may be removed when uninstall is called.\n            // See uninstall function for an explanation why it is needed.\n            getState(element).onExpandScroll = onExpandScroll;\n            getState(element).onShrinkScroll = onShrinkScroll;\n        }\n\n        function registerListenersAndPositionElements() {\n            function updateChildSizes(element, width, height) {\n                var expandChild             = getExpandChildElement(element);\n                var expandWidth             = getExpandWidth(width);\n                var expandHeight            = getExpandHeight(height);\n                expandChild.style.setProperty(\"width\", expandWidth + \"px\", options.important ? \"important\" : \"\");\n                expandChild.style.setProperty(\"height\", expandHeight + \"px\", options.important ? \"important\" : \"\");\n            }\n\n            function updateDetectorElements(done) {\n                var width           = element.offsetWidth;\n                var height          = element.offsetHeight;\n\n                // Check whether the size has actually changed since last time the algorithm ran. If not, some steps may be skipped.\n                var sizeChanged = width !== getState(element).lastWidth || height !== getState(element).lastHeight;\n\n                debug(\"Storing current size\", width, height);\n\n                // Store the size of the element sync here, so that multiple scroll events may be ignored in the event listeners.\n                // Otherwise the if-check in handleScroll is useless.\n                storeCurrentSize(element, width, height);\n\n                // Since we delay the processing of the batch, there is a risk that uninstall has been called before the batch gets to execute.\n                // Since there is no way to cancel the fn executions, we need to add an uninstall guard to all fns of the batch.\n\n                batchProcessor.add(0, function performUpdateChildSizes() {\n                    if (!sizeChanged) {\n                        return;\n                    }\n\n                    if (!getState(element)) {\n                        debug(\"Aborting because element has been uninstalled\");\n                        return;\n                    }\n\n                    if (!areElementsInjected()) {\n                        debug(\"Aborting because element container has not been initialized\");\n                        return;\n                    }\n\n                    if (options.debug) {\n                        var w = element.offsetWidth;\n                        var h = element.offsetHeight;\n\n                        if (w !== width || h !== height) {\n                            reporter.warn(idHandler.get(element), \"Scroll: Size changed before updating detector elements.\");\n                        }\n                    }\n\n                    updateChildSizes(element, width, height);\n                });\n\n                batchProcessor.add(1, function updateScrollbars() {\n                    // This function needs to be invoked event though the size is unchanged. The element could have been resized very quickly and then\n                    // been restored to the original size, which will have changed the scrollbar positions.\n\n                    if (!getState(element)) {\n                        debug(\"Aborting because element has been uninstalled\");\n                        return;\n                    }\n\n                    if (!areElementsInjected()) {\n                        debug(\"Aborting because element container has not been initialized\");\n                        return;\n                    }\n\n                    positionScrollbars(element, width, height);\n                });\n\n                if (sizeChanged && done) {\n                    batchProcessor.add(2, function () {\n                        if (!getState(element)) {\n                            debug(\"Aborting because element has been uninstalled\");\n                            return;\n                        }\n\n                        if (!areElementsInjected()) {\n                          debug(\"Aborting because element container has not been initialized\");\n                          return;\n                        }\n\n                        done();\n                    });\n                }\n            }\n\n            function areElementsInjected() {\n                return !!getState(element).container;\n            }\n\n            function notifyListenersIfNeeded() {\n                function isFirstNotify() {\n                    return getState(element).lastNotifiedWidth === undefined;\n                }\n\n                debug(\"notifyListenersIfNeeded invoked\");\n\n                var state = getState(element);\n\n                // Don't notify if the current size is the start size, and this is the first notification.\n                if (isFirstNotify() && state.lastWidth === state.startSize.width && state.lastHeight === state.startSize.height) {\n                    return debug(\"Not notifying: Size is the same as the start size, and there has been no notification yet.\");\n                }\n\n                // Don't notify if the size already has been notified.\n                if (state.lastWidth === state.lastNotifiedWidth && state.lastHeight === state.lastNotifiedHeight) {\n                    return debug(\"Not notifying: Size already notified\");\n                }\n\n\n                debug(\"Current size not notified, notifying...\");\n                state.lastNotifiedWidth = state.lastWidth;\n                state.lastNotifiedHeight = state.lastHeight;\n                forEach(getState(element).listeners, function (listener) {\n                    listener(element);\n                });\n            }\n\n            function handleRender() {\n                debug(\"startanimation triggered.\");\n\n                if (isUnrendered(element)) {\n                    debug(\"Ignoring since element is still unrendered...\");\n                    return;\n                }\n\n                debug(\"Element rendered.\");\n                var expand = getExpandElement(element);\n                var shrink = getShrinkElement(element);\n                if (expand.scrollLeft === 0 || expand.scrollTop === 0 || shrink.scrollLeft === 0 || shrink.scrollTop === 0) {\n                    debug(\"Scrollbars out of sync. Updating detector elements...\");\n                    updateDetectorElements(notifyListenersIfNeeded);\n                }\n            }\n\n            function handleScroll() {\n                debug(\"Scroll detected.\");\n\n                if (isUnrendered(element)) {\n                    // Element is still unrendered. Skip this scroll event.\n                    debug(\"Scroll event fired while unrendered. Ignoring...\");\n                    return;\n                }\n\n                updateDetectorElements(notifyListenersIfNeeded);\n            }\n\n            debug(\"registerListenersAndPositionElements invoked.\");\n\n            if (!getState(element)) {\n                debug(\"Aborting because element has been uninstalled\");\n                return;\n            }\n\n            getState(element).onRendered = handleRender;\n            getState(element).onExpand = handleScroll;\n            getState(element).onShrink = handleScroll;\n\n            var style = getState(element).style;\n            updateChildSizes(element, style.width, style.height);\n        }\n\n        function finalizeDomMutation() {\n            debug(\"finalizeDomMutation invoked.\");\n\n            if (!getState(element)) {\n                debug(\"Aborting because element has been uninstalled\");\n                return;\n            }\n\n            var style = getState(element).style;\n            storeCurrentSize(element, style.width, style.height);\n            positionScrollbars(element, style.width, style.height);\n        }\n\n        function ready() {\n            callback(element);\n        }\n\n        function install() {\n            debug(\"Installing...\");\n            initListeners();\n            storeStartSize();\n\n            batchProcessor.add(0, storeStyle);\n            batchProcessor.add(1, injectScrollElements);\n            batchProcessor.add(2, registerListenersAndPositionElements);\n            batchProcessor.add(3, finalizeDomMutation);\n            batchProcessor.add(4, ready);\n        }\n\n        debug(\"Making detectable...\");\n\n        if (isDetached(element)) {\n            debug(\"Element is detached\");\n\n            injectContainerElement();\n\n            debug(\"Waiting until element is attached...\");\n\n            getState(element).onRendered = function () {\n                debug(\"Element is now attached\");\n                install();\n            };\n        } else {\n            install();\n        }\n    }\n\n    function uninstall(element) {\n        var state = getState(element);\n\n        if (!state) {\n            // Uninstall has been called on a non-erd element.\n            return;\n        }\n\n        // Uninstall may have been called in the following scenarios:\n        // (1) Right between the sync code and async batch (here state.busy = true, but nothing have been registered or injected).\n        // (2) In the ready callback of the last level of the batch by another element (here, state.busy = true, but all the stuff has been injected).\n        // (3) After the installation process (here, state.busy = false and all the stuff has been injected).\n        // So to be on the safe side, let's check for each thing before removing.\n\n        // We need to remove the event listeners, because otherwise the event might fire on an uninstall element which results in an error when trying to get the state of the element.\n        state.onExpandScroll && removeEvent(getExpandElement(element), \"scroll\", state.onExpandScroll);\n        state.onShrinkScroll && removeEvent(getShrinkElement(element), \"scroll\", state.onShrinkScroll);\n        state.onAnimationStart && removeEvent(state.container, \"animationstart\", state.onAnimationStart);\n\n        state.container && element.removeChild(state.container);\n    }\n\n    return {\n        makeDetectable: makeDetectable,\n        addListener: addListener,\n        uninstall: uninstall,\n        initDocument: initDocument\n    };\n};\n","var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n  return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n","'use strict';\nvar addToUnscopables = require('./_add-to-unscopables');\nvar step = require('./_iter-step');\nvar Iterators = require('./_iterators');\nvar toIObject = require('./_to-iobject');\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = require('./_iter-define')(Array, 'Array', function (iterated, kind) {\n  this._t = toIObject(iterated); // target\n  this._i = 0;                   // next index\n  this._k = kind;                // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n  var O = this._t;\n  var kind = this._k;\n  var index = this._i++;\n  if (!O || index >= O.length) {\n    this._t = undefined;\n    return step(1);\n  }\n  if (kind == 'keys') return step(0, index);\n  if (kind == 'values') return step(0, O[index]);\n  return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n","var isObject = require('./_is-object');\nmodule.exports = function (it) {\n  if (!isObject(it)) throw TypeError(it + ' is not an object!');\n  return it;\n};\n","var has = require('./_has');\nvar toIObject = require('./_to-iobject');\nvar arrayIndexOf = require('./_array-includes')(false);\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\n\nmodule.exports = function (object, names) {\n  var O = toIObject(object);\n  var i = 0;\n  var result = [];\n  var key;\n  for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n  // Don't enum bug & hidden keys\n  while (names.length > i) if (has(O, key = names[i++])) {\n    ~arrayIndexOf(result, key) || result.push(key);\n  }\n  return result;\n};\n","module.exports = function (it) {\n  return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","module.exports = function (done, value) {\n  return { value: value, done: !!done };\n};\n","\"use strict\";\n\nvar prop = \"_erd\";\n\nfunction initState(element) {\n    element[prop] = {};\n    return getState(element);\n}\n\nfunction getState(element) {\n    return element[prop];\n}\n\nfunction cleanState(element) {\n    delete element[prop];\n}\n\nmodule.exports = {\n    initState: initState,\n    getState: getState,\n    cleanState: cleanState\n};\n","module.exports = function (it) {\n  if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n  return it;\n};\n","// IE 8- don't enum bug keys\nmodule.exports = (\n  'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n","\"use strict\";\n\nvar forEach                 = require(\"./collection-utils\").forEach;\nvar elementUtilsMaker       = require(\"./element-utils\");\nvar listenerHandlerMaker    = require(\"./listener-handler\");\nvar idGeneratorMaker        = require(\"./id-generator\");\nvar idHandlerMaker          = require(\"./id-handler\");\nvar reporterMaker           = require(\"./reporter\");\nvar browserDetector         = require(\"./browser-detector\");\nvar batchProcessorMaker     = require(\"batch-processor\");\nvar stateHandler            = require(\"./state-handler\");\n\n//Detection strategies.\nvar objectStrategyMaker     = require(\"./detection-strategy/object.js\");\nvar scrollStrategyMaker     = require(\"./detection-strategy/scroll.js\");\n\nfunction isCollection(obj) {\n    return Array.isArray(obj) || obj.length !== undefined;\n}\n\nfunction toArray(collection) {\n    if (!Array.isArray(collection)) {\n        var array = [];\n        forEach(collection, function (obj) {\n            array.push(obj);\n        });\n        return array;\n    } else {\n        return collection;\n    }\n}\n\nfunction isElement(obj) {\n    return obj && obj.nodeType === 1;\n}\n\n/**\n * @typedef idHandler\n * @type {object}\n * @property {function} get Gets the resize detector id of the element.\n * @property {function} set Generate and sets the resize detector id of the element.\n */\n\n/**\n * @typedef Options\n * @type {object}\n * @property {boolean} callOnAdd    Determines if listeners should be called when they are getting added.\n                                    Default is true. If true, the listener is guaranteed to be called when it has been added.\n                                    If false, the listener will not be guarenteed to be called when it has been added (does not prevent it from being called).\n * @property {idHandler} idHandler  A custom id handler that is responsible for generating, setting and retrieving id's for elements.\n                                    If not provided, a default id handler will be used.\n * @property {reporter} reporter    A custom reporter that handles reporting logs, warnings and errors.\n                                    If not provided, a default id handler will be used.\n                                    If set to false, then nothing will be reported.\n * @property {boolean} debug        If set to true, the the system will report debug messages as default for the listenTo method.\n */\n\n/**\n * Creates an element resize detector instance.\n * @public\n * @param {Options?} options Optional global options object that will decide how this instance will work.\n */\nmodule.exports = function(options) {\n    options = options || {};\n\n    //idHandler is currently not an option to the listenTo function, so it should not be added to globalOptions.\n    var idHandler;\n\n    if (options.idHandler) {\n        // To maintain compatability with idHandler.get(element, readonly), make sure to wrap the given idHandler\n        // so that readonly flag always is true when it's used here. This may be removed next major version bump.\n        idHandler = {\n            get: function (element) { return options.idHandler.get(element, true); },\n            set: options.idHandler.set\n        };\n    } else {\n        var idGenerator = idGeneratorMaker();\n        var defaultIdHandler = idHandlerMaker({\n            idGenerator: idGenerator,\n            stateHandler: stateHandler\n        });\n        idHandler = defaultIdHandler;\n    }\n\n    //reporter is currently not an option to the listenTo function, so it should not be added to globalOptions.\n    var reporter = options.reporter;\n\n    if(!reporter) {\n        //If options.reporter is false, then the reporter should be quiet.\n        var quiet = reporter === false;\n        reporter = reporterMaker(quiet);\n    }\n\n    //batchProcessor is currently not an option to the listenTo function, so it should not be added to globalOptions.\n    var batchProcessor = getOption(options, \"batchProcessor\", batchProcessorMaker({ reporter: reporter }));\n\n    //Options to be used as default for the listenTo function.\n    var globalOptions = {};\n    globalOptions.callOnAdd     = !!getOption(options, \"callOnAdd\", true);\n    globalOptions.debug         = !!getOption(options, \"debug\", false);\n\n    var eventListenerHandler    = listenerHandlerMaker(idHandler);\n    var elementUtils            = elementUtilsMaker({\n        stateHandler: stateHandler\n    });\n\n    //The detection strategy to be used.\n    var detectionStrategy;\n    var desiredStrategy = getOption(options, \"strategy\", \"object\");\n    var importantCssRules = getOption(options, \"important\", false);\n    var strategyOptions = {\n        reporter: reporter,\n        batchProcessor: batchProcessor,\n        stateHandler: stateHandler,\n        idHandler: idHandler,\n        important: importantCssRules\n    };\n\n    if(desiredStrategy === \"scroll\") {\n        if (browserDetector.isLegacyOpera()) {\n            reporter.warn(\"Scroll strategy is not supported on legacy Opera. Changing to object strategy.\");\n            desiredStrategy = \"object\";\n        } else if (browserDetector.isIE(9)) {\n            reporter.warn(\"Scroll strategy is not supported on IE9. Changing to object strategy.\");\n            desiredStrategy = \"object\";\n        }\n    }\n\n    if(desiredStrategy === \"scroll\") {\n        detectionStrategy = scrollStrategyMaker(strategyOptions);\n    } else if(desiredStrategy === \"object\") {\n        detectionStrategy = objectStrategyMaker(strategyOptions);\n    } else {\n        throw new Error(\"Invalid strategy name: \" + desiredStrategy);\n    }\n\n    //Calls can be made to listenTo with elements that are still being installed.\n    //Also, same elements can occur in the elements list in the listenTo function.\n    //With this map, the ready callbacks can be synchronized between the calls\n    //so that the ready callback can always be called when an element is ready - even if\n    //it wasn't installed from the function itself.\n    var onReadyCallbacks = {};\n\n    /**\n     * Makes the given elements resize-detectable and starts listening to resize events on the elements. Calls the event callback for each event for each element.\n     * @public\n     * @param {Options?} options Optional options object. These options will override the global options. Some options may not be overriden, such as idHandler.\n     * @param {element[]|element} elements The given array of elements to detect resize events of. Single element is also valid.\n     * @param {function} listener The callback to be executed for each resize event for each element.\n     */\n    function listenTo(options, elements, listener) {\n        function onResizeCallback(element) {\n            var listeners = eventListenerHandler.get(element);\n            forEach(listeners, function callListenerProxy(listener) {\n                listener(element);\n            });\n        }\n\n        function addListener(callOnAdd, element, listener) {\n            eventListenerHandler.add(element, listener);\n\n            if(callOnAdd) {\n                listener(element);\n            }\n        }\n\n        //Options object may be omitted.\n        if(!listener) {\n            listener = elements;\n            elements = options;\n            options = {};\n        }\n\n        if(!elements) {\n            throw new Error(\"At least one element required.\");\n        }\n\n        if(!listener) {\n            throw new Error(\"Listener required.\");\n        }\n\n        if (isElement(elements)) {\n            // A single element has been passed in.\n            elements = [elements];\n        } else if (isCollection(elements)) {\n            // Convert collection to array for plugins.\n            // TODO: May want to check so that all the elements in the collection are valid elements.\n            elements = toArray(elements);\n        } else {\n            return reporter.error(\"Invalid arguments. Must be a DOM element or a collection of DOM elements.\");\n        }\n\n        var elementsReady = 0;\n\n        var callOnAdd = getOption(options, \"callOnAdd\", globalOptions.callOnAdd);\n        var onReadyCallback = getOption(options, \"onReady\", function noop() {});\n        var debug = getOption(options, \"debug\", globalOptions.debug);\n\n        forEach(elements, function attachListenerToElement(element) {\n            if (!stateHandler.getState(element)) {\n                stateHandler.initState(element);\n                idHandler.set(element);\n            }\n\n            var id = idHandler.get(element);\n\n            debug && reporter.log(\"Attaching listener to element\", id, element);\n\n            if(!elementUtils.isDetectable(element)) {\n                debug && reporter.log(id, \"Not detectable.\");\n                if(elementUtils.isBusy(element)) {\n                    debug && reporter.log(id, \"System busy making it detectable\");\n\n                    //The element is being prepared to be detectable. Do not make it detectable.\n                    //Just add the listener, because the element will soon be detectable.\n                    addListener(callOnAdd, element, listener);\n                    onReadyCallbacks[id] = onReadyCallbacks[id] || [];\n                    onReadyCallbacks[id].push(function onReady() {\n                        elementsReady++;\n\n                        if(elementsReady === elements.length) {\n                            onReadyCallback();\n                        }\n                    });\n                    return;\n                }\n\n                debug && reporter.log(id, \"Making detectable...\");\n                //The element is not prepared to be detectable, so do prepare it and add a listener to it.\n                elementUtils.markBusy(element, true);\n                return detectionStrategy.makeDetectable({ debug: debug, important: importantCssRules }, element, function onElementDetectable(element) {\n                    debug && reporter.log(id, \"onElementDetectable\");\n\n                    if (stateHandler.getState(element)) {\n                        elementUtils.markAsDetectable(element);\n                        elementUtils.markBusy(element, false);\n                        detectionStrategy.addListener(element, onResizeCallback);\n                        addListener(callOnAdd, element, listener);\n\n                        // Since the element size might have changed since the call to \"listenTo\", we need to check for this change,\n                        // so that a resize event may be emitted.\n                        // Having the startSize object is optional (since it does not make sense in some cases such as unrendered elements), so check for its existance before.\n                        // Also, check the state existance before since the element may have been uninstalled in the installation process.\n                        var state = stateHandler.getState(element);\n                        if (state && state.startSize) {\n                            var width = element.offsetWidth;\n                            var height = element.offsetHeight;\n                            if (state.startSize.width !== width || state.startSize.height !== height) {\n                                onResizeCallback(element);\n                            }\n                        }\n\n                        if(onReadyCallbacks[id]) {\n                            forEach(onReadyCallbacks[id], function(callback) {\n                                callback();\n                            });\n                        }\n                    } else {\n                        // The element has been unisntalled before being detectable.\n                        debug && reporter.log(id, \"Element uninstalled before being detectable.\");\n                    }\n\n                    delete onReadyCallbacks[id];\n\n                    elementsReady++;\n                    if(elementsReady === elements.length) {\n                        onReadyCallback();\n                    }\n                });\n            }\n\n            debug && reporter.log(id, \"Already detecable, adding listener.\");\n\n            //The element has been prepared to be detectable and is ready to be listened to.\n            addListener(callOnAdd, element, listener);\n            elementsReady++;\n        });\n\n        if(elementsReady === elements.length) {\n            onReadyCallback();\n        }\n    }\n\n    function uninstall(elements) {\n        if(!elements) {\n            return reporter.error(\"At least one element is required.\");\n        }\n\n        if (isElement(elements)) {\n            // A single element has been passed in.\n            elements = [elements];\n        } else if (isCollection(elements)) {\n            // Convert collection to array for plugins.\n            // TODO: May want to check so that all the elements in the collection are valid elements.\n            elements = toArray(elements);\n        } else {\n            return reporter.error(\"Invalid arguments. Must be a DOM element or a collection of DOM elements.\");\n        }\n\n        forEach(elements, function (element) {\n            eventListenerHandler.removeAllListeners(element);\n            detectionStrategy.uninstall(element);\n            stateHandler.cleanState(element);\n        });\n    }\n\n    function initDocument(targetDocument) {\n        detectionStrategy.initDocument && detectionStrategy.initDocument(targetDocument);\n    }\n\n    return {\n        listenTo: listenTo,\n        removeListener: eventListenerHandler.removeListener,\n        removeAllListeners: eventListenerHandler.removeAllListeners,\n        uninstall: uninstall,\n        initDocument: initDocument\n    };\n};\n\nfunction getOption(options, name, defaultValue) {\n    var value = options[name];\n\n    if((value === undefined || value === null) && defaultValue !== undefined) {\n        return defaultValue;\n    }\n\n    return value;\n}\n","'use strict';\nvar $defineProperty = require('./_object-dp');\nvar createDesc = require('./_property-desc');\n\nmodule.exports = function (object, index, value) {\n  if (index in object) $defineProperty.f(object, index, createDesc(0, value));\n  else object[index] = value;\n};\n","// 19.1.3.1 Object.assign(target, source)\nvar $export = require('./_export');\n\n$export($export.S + $export.F, 'Object', { assign: require('./_object-assign') });\n","module.exports = require('./_shared')('native-function-to-string', Function.toString);\n","var document = require('./_global').document;\nmodule.exports = document && document.documentElement;\n","// This file is imported into lib/wc client bundles.\n\nif (typeof window !== 'undefined') {\n  var currentScript = window.document.currentScript\n  if (process.env.NEED_CURRENTSCRIPT_POLYFILL) {\n    var getCurrentScript = require('@soda/get-current-script')\n    currentScript = getCurrentScript()\n\n    // for backward compatibility, because previously we directly included the polyfill\n    if (!('currentScript' in document)) {\n      Object.defineProperty(document, 'currentScript', { get: getCurrentScript })\n    }\n  }\n\n  var src = currentScript && currentScript.src.match(/(.+\\/)[^/]+\\.js(\\?.*)?$/)\n  if (src) {\n    __webpack_public_path__ = src[1] // eslint-disable-line\n  }\n}\n\n// Indicate to webpack that this file can be concatenated\nexport default null\n","<template>\r\n    <div ref=\"item\"\r\n         class=\"vue-grid-item\"\r\n         :class=\"classObj\"\r\n         :style=\"style\"\r\n    >\r\n        <slot></slot>\r\n        <span v-if=\"resizableAndNotStatic\" ref=\"handle\" :class=\"resizableHandleClass\"></span>\r\n        <!--<span v-if=\"draggable\" ref=\"dragHandle\" class=\"vue-draggable-handle\"></span>-->\r\n    </div>\r\n</template>\r\n<style>\r\n    .vue-grid-item {\r\n        touch-action: none;\r\n        transition: all 200ms ease;\r\n        transition-property: left, top, right;\r\n        /* add right for rtl */\r\n    }\r\n\r\n    .vue-grid-item.no-touch {\r\n        -ms-touch-action: none;\r\n        touch-action: none;\r\n    }\r\n\r\n    .vue-grid-item.cssTransforms {\r\n        transition-property: transform;\r\n        left: 0;\r\n        right: auto;\r\n    }\r\n\r\n    .vue-grid-item.cssTransforms.render-rtl {\r\n        left: auto;\r\n        right: 0;\r\n    }\r\n\r\n    .vue-grid-item.resizing {\r\n        opacity: 0.6;\r\n        z-index: 3;\r\n    }\r\n\r\n    .vue-grid-item.vue-draggable-dragging {\r\n        transition:none;\r\n        z-index: 3;\r\n    }\r\n\r\n    .vue-grid-item.vue-grid-placeholder {\r\n        background: red;\r\n        opacity: 0.2;\r\n        transition-duration: 100ms;\r\n        z-index: 2;\r\n        -webkit-user-select: none;\r\n        -moz-user-select: none;\r\n        -ms-user-select: none;\r\n        -o-user-select: none;\r\n        user-select: none;\r\n    }\r\n\r\n    .vue-grid-item > .vue-resizable-handle {\r\n        position: absolute;\r\n        width: 20px;\r\n        height: 20px;\r\n        bottom: 0;\r\n        right: 0;\r\n        background: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/Pg08IS0tIEdlbmVyYXRvcjogQWRvYmUgRmlyZXdvcmtzIENTNiwgRXhwb3J0IFNWRyBFeHRlbnNpb24gYnkgQWFyb24gQmVhbGwgKGh0dHA6Ly9maXJld29ya3MuYWJlYWxsLmNvbSkgLiBWZXJzaW9uOiAwLjYuMSAgLS0+DTwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+DTxzdmcgaWQ9IlVudGl0bGVkLVBhZ2UlMjAxIiB2aWV3Qm94PSIwIDAgNiA2IiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjojZmZmZmZmMDAiIHZlcnNpb249IjEuMSINCXhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhtbDpzcGFjZT0icHJlc2VydmUiDQl4PSIwcHgiIHk9IjBweCIgd2lkdGg9IjZweCIgaGVpZ2h0PSI2cHgiDT4NCTxnIG9wYWNpdHk9IjAuMzAyIj4NCQk8cGF0aCBkPSJNIDYgNiBMIDAgNiBMIDAgNC4yIEwgNCA0LjIgTCA0LjIgNC4yIEwgNC4yIDAgTCA2IDAgTCA2IDYgTCA2IDYgWiIgZmlsbD0iIzAwMDAwMCIvPg0JPC9nPg08L3N2Zz4=');\r\n        background-position: bottom right;\r\n        padding: 0 3px 3px 0;\r\n        background-repeat: no-repeat;\r\n        background-origin: content-box;\r\n        box-sizing: border-box;\r\n        cursor: se-resize;\r\n    }\r\n\r\n    .vue-grid-item > .vue-rtl-resizable-handle {\r\n        bottom: 0;\r\n        left: 0;\r\n        background: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTAuMDAwMDAwMDAwMDAwMDAyIiBoZWlnaHQ9IjEwLjAwMDAwMDAwMDAwMDAwMiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KIDwhLS0gQ3JlYXRlZCB3aXRoIE1ldGhvZCBEcmF3IC0gaHR0cDovL2dpdGh1Yi5jb20vZHVvcGl4ZWwvTWV0aG9kLURyYXcvIC0tPgogPGc+CiAgPHRpdGxlPmJhY2tncm91bmQ8L3RpdGxlPgogIDxyZWN0IGZpbGw9Im5vbmUiIGlkPSJjYW52YXNfYmFja2dyb3VuZCIgaGVpZ2h0PSIxMiIgd2lkdGg9IjEyIiB5PSItMSIgeD0iLTEiLz4KICA8ZyBkaXNwbGF5PSJub25lIiBvdmVyZmxvdz0idmlzaWJsZSIgeT0iMCIgeD0iMCIgaGVpZ2h0PSIxMDAlIiB3aWR0aD0iMTAwJSIgaWQ9ImNhbnZhc0dyaWQiPgogICA8cmVjdCBmaWxsPSJ1cmwoI2dyaWRwYXR0ZXJuKSIgc3Ryb2tlLXdpZHRoPSIwIiB5PSIwIiB4PSIwIiBoZWlnaHQ9IjEwMCUiIHdpZHRoPSIxMDAlIi8+CiAgPC9nPgogPC9nPgogPGc+CiAgPHRpdGxlPkxheWVyIDE8L3RpdGxlPgogIDxsaW5lIGNhbnZhcz0iI2ZmZmZmZiIgY2FudmFzLW9wYWNpdHk9IjEiIHN0cm9rZS1saW5lY2FwPSJ1bmRlZmluZWQiIHN0cm9rZS1saW5lam9pbj0idW5kZWZpbmVkIiBpZD0ic3ZnXzEiIHkyPSItNzAuMTc4NDA3IiB4Mj0iMTI0LjQ2NDE3NSIgeTE9Ii0zOC4zOTI3MzciIHgxPSIxNDQuODIxMjg5IiBzdHJva2Utd2lkdGg9IjEuNSIgc3Ryb2tlPSIjMDAwIiBmaWxsPSJub25lIi8+CiAgPGxpbmUgc3Ryb2tlPSIjNjY2NjY2IiBzdHJva2UtbGluZWNhcD0idW5kZWZpbmVkIiBzdHJva2UtbGluZWpvaW49InVuZGVmaW5lZCIgaWQ9InN2Z181IiB5Mj0iOS4xMDY5NTciIHgyPSIwLjk0NzI0NyIgeTE9Ii0wLjAxODEyOCIgeDE9IjAuOTQ3MjQ3IiBzdHJva2Utd2lkdGg9IjIiIGZpbGw9Im5vbmUiLz4KICA8bGluZSBzdHJva2UtbGluZWNhcD0idW5kZWZpbmVkIiBzdHJva2UtbGluZWpvaW49InVuZGVmaW5lZCIgaWQ9InN2Z183IiB5Mj0iOSIgeDI9IjEwLjA3MzUyOSIgeTE9IjkiIHgxPSItMC42NTU2NCIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2U9IiM2NjY2NjYiIGZpbGw9Im5vbmUiLz4KIDwvZz4KPC9zdmc+);\r\n        background-position: bottom left;\r\n        padding-left: 3px;\r\n        background-repeat: no-repeat;\r\n        background-origin: content-box;\r\n        cursor: sw-resize;\r\n        right: auto;\r\n    }\r\n\r\n    .vue-grid-item.disable-userselect {\r\n        user-select: none;\r\n    }\r\n</style>\r\n<script>\r\n    import {setTopLeft, setTopRight, setTransformRtl, setTransform} from '@/helpers/utils';\r\n    import {getControlPosition, createCoreData} from '@/helpers/draggableUtils';\r\n    import {getColsFromBreakpoint} from '@/helpers/responsiveUtils';\r\n    import {getDocumentDir} from \"@/helpers/DOM\";\r\n    //    var eventBus = require('./eventBus');\r\n\r\n    import '@interactjs/auto-start'\r\n    import '@interactjs/actions/drag'\r\n    import '@interactjs/actions/resize'\r\n    import '@interactjs/modifiers'\r\n    import '@interactjs/dev-tools'\r\n    import interact from '@interactjs/interact'\r\n\r\n    export default {\r\n        name: \"GridItem\",\r\n        props: {\r\n            /*cols: {\r\n             type: Number,\r\n             required: true\r\n             },*/\r\n            /*containerWidth: {\r\n             type: Number,\r\n             required: true\r\n\r\n             },\r\n             rowHeight: {\r\n             type: Number,\r\n             required: true\r\n             },\r\n             margin: {\r\n             type: Array,\r\n             required: true\r\n             },\r\n             maxRows: {\r\n             type: Number,\r\n             required: true\r\n             },*/\r\n            isDraggable: {\r\n                type: Boolean,\r\n                required: false,\r\n                default: null\r\n            },\r\n            isResizable: {\r\n                type: Boolean,\r\n                required: false,\r\n                default: null\r\n            },\r\n            /*useCssTransforms: {\r\n             type: Boolean,\r\n             required: true\r\n             },\r\n             */\r\n            static: {\r\n                type: Boolean,\r\n                required: false,\r\n                default: false\r\n            },\r\n            minH: {\r\n                type: Number,\r\n                required: false,\r\n                default: 1\r\n            },\r\n            minW: {\r\n                type: Number,\r\n                required: false,\r\n                default: 1\r\n            },\r\n            maxH: {\r\n                type: Number,\r\n                required: false,\r\n                default: Infinity\r\n            },\r\n            maxW: {\r\n                type: Number,\r\n                required: false,\r\n                default: Infinity\r\n            },\r\n            x: {\r\n                type: Number,\r\n                required: true\r\n            },\r\n            y: {\r\n                type: Number,\r\n                required: true\r\n            },\r\n            w: {\r\n                type: Number,\r\n                required: true\r\n            },\r\n            h: {\r\n                type: Number,\r\n                required: true\r\n            },\r\n            i: {\r\n                required: true\r\n            },\r\n            dragIgnoreFrom: {\r\n                type: String,\r\n                required: false,\r\n                default: 'a, button'\r\n            },\r\n            dragAllowFrom: {\r\n                type: String,\r\n                required: false,\r\n                default: null\r\n            },\r\n            resizeIgnoreFrom: {\r\n                type: String,\r\n                required: false,\r\n                default: 'a, button'\r\n            },\r\n            preserveAspectRatio: {\r\n                type: Boolean,\r\n                required: false,\r\n                default: false,\r\n            }\r\n        },\r\n        inject: [\"eventBus\", \"layout\"],\r\n        data: function () {\r\n            return {\r\n                cols: 1,\r\n                containerWidth: 100,\r\n                rowHeight: 30,\r\n                margin: [10, 10],\r\n                maxRows: Infinity,\r\n                draggable: null,\r\n                resizable: null,\r\n                useCssTransforms: true,\r\n                useStyleCursor: true,\r\n\r\n                isDragging: false,\r\n                dragging: null,\r\n                isResizing: false,\r\n                resizing: null,\r\n                lastX: NaN,\r\n                lastY: NaN,\r\n                lastW: NaN,\r\n                lastH: NaN,\r\n                style: {},\r\n                rtl: false,\r\n\r\n                dragEventSet: false,\r\n                resizeEventSet: false,\r\n\r\n                previousW: null,\r\n                previousH: null,\r\n                previousX: null,\r\n                previousY: null,\r\n                innerX: this.x,\r\n                innerY: this.y,\r\n                innerW: this.w,\r\n                innerH: this.h\r\n            }\r\n        },\r\n        created () {\r\n            let self = this;\r\n\r\n            // Accessible refernces of functions for removing in beforeUnmount\r\n            self.updateWidthHandler = function (width) {\r\n                self.updateWidth(width);\r\n            };\r\n\r\n            self.compactHandler = function (layout) {\r\n                self.compact(layout);\r\n            };\r\n\r\n            self.setDraggableHandler = function (isDraggable) {\r\n                if (self.isDraggable === null) {\r\n                    self.draggable = isDraggable;\r\n                }\r\n            };\r\n\r\n            self.setResizableHandler = function (isResizable) {\r\n                if (self.isResizable === null) {\r\n                    self.resizable = isResizable;\r\n                }\r\n            };\r\n\r\n            self.setRowHeightHandler = function (rowHeight) {\r\n                self.rowHeight = rowHeight;\r\n            };\r\n\r\n            self.setMaxRowsHandler = function (maxRows) {\r\n                self.maxRows = maxRows;\r\n            };\r\n\r\n            self.directionchangeHandler = () => {\r\n                this.rtl = getDocumentDir() === 'rtl';\r\n                this.compact();\r\n            };\r\n\r\n            self.setColNum = (colNum) => {\r\n               self.cols = parseInt(colNum);\r\n            }\r\n\r\n            this.eventBus.on('updateWidth', self.updateWidthHandler);\r\n            this.eventBus.on('compact', self.compactHandler);\r\n            this.eventBus.on('setDraggable', self.setDraggableHandler);\r\n            this.eventBus.on('setResizable', self.setResizableHandler);\r\n            this.eventBus.on('setRowHeight', self.setRowHeightHandler);\r\n            this.eventBus.on('setMaxRows', self.setMaxRowsHandler);\r\n            this.eventBus.on('directionchange', self.directionchangeHandler);\r\n            this.eventBus.on('setColNum', self.setColNum)\r\n\r\n            this.rtl = getDocumentDir() === 'rtl';\r\n        },\r\n        beforeUnmount: function(){\r\n            let self = this;\r\n            //Remove listeners\r\n            this.eventBus.off('updateWidth', self.updateWidthHandler);\r\n            this.eventBus.off('compact', self.compactHandler);\r\n            this.eventBus.off('setDraggable', self.setDraggableHandler);\r\n            this.eventBus.off('setResizable', self.setResizableHandler);\r\n            this.eventBus.off('setRowHeight', self.setRowHeightHandler);\r\n            this.eventBus.off('setMaxRows', self.setMaxRowsHandler);\r\n            this.eventBus.off('directionchange', self.directionchangeHandler);\r\n            this.eventBus.off('setColNum', self.setColNum);\r\n            if (this.interactObj) {\r\n                this.interactObj.unset() // destroy interact intance\r\n            }\r\n        },\r\n        mounted: function () {\r\n            if (this.layout.responsive && this.layout.lastBreakpoint) {\r\n                this.cols = getColsFromBreakpoint(this.layout.lastBreakpoint, this.layout.cols);\r\n            } else {\r\n                this.cols = this.layout.colNum;\r\n            }\r\n            this.rowHeight = this.layout.rowHeight;\r\n            this.containerWidth = this.layout.width !== null ? this.layout.width : 100;\r\n            this.margin = this.layout.margin !== undefined ? this.layout.margin : [10, 10];\r\n            this.maxRows = this.layout.maxRows;\r\n\r\n            if (this.isDraggable === null) {\r\n                this.draggable = this.layout.isDraggable;\r\n            } else {\r\n                this.draggable = this.isDraggable;\r\n            }\r\n            if (this.isResizable === null) {\r\n                this.resizable = this.layout.isResizable;\r\n            } else {\r\n                this.resizable = this.isResizable;\r\n            }\r\n            this.useCssTransforms = this.layout.useCssTransforms;\r\n            this.useStyleCursor = this.layout.useStyleCursor;\r\n            this.createStyle();\r\n        },\r\n        watch: {\r\n            isDraggable: function () {\r\n                this.draggable = this.isDraggable;\r\n            },\r\n            static: function () {\r\n                this.tryMakeDraggable();\r\n                this.tryMakeResizable();\r\n            },\r\n            draggable: function () {\r\n                this.tryMakeDraggable();\r\n            },\r\n            isResizable: function () {\r\n                this.resizable = this.isResizable;\r\n            },\r\n            resizable: function () {\r\n                this.tryMakeResizable();\r\n            },\r\n            rowHeight: function () {\r\n                this.createStyle();\r\n                this.emitContainerResized();\r\n            },\r\n            cols: function () {\r\n                this.tryMakeResizable();\r\n                this.createStyle();\r\n                this.emitContainerResized();\r\n            },\r\n            containerWidth: function () {\r\n                this.tryMakeResizable();\r\n                this.createStyle();\r\n                this.emitContainerResized();\r\n            },\r\n            x: function (newVal) {\r\n                this.innerX = newVal;\r\n                this.createStyle();\r\n            },\r\n            y: function (newVal) {\r\n                this.innerY = newVal;\r\n                this.createStyle();\r\n            },\r\n            h: function (newVal) {\r\n                this.innerH = newVal\r\n                this.createStyle();\r\n                // this.emitContainerResized();\r\n            },\r\n            w: function (newVal) {\r\n                this.innerW = newVal;\r\n                this.createStyle();\r\n                // this.emitContainerResized();\r\n            },\r\n            renderRtl: function () {\r\n                // console.log(\"### renderRtl\");\r\n                this.tryMakeResizable();\r\n                this.createStyle();\r\n            },\r\n            minH: function () {\r\n                this.tryMakeResizable();\r\n            },\r\n            maxH: function () {\r\n                this.tryMakeResizable();\r\n            },\r\n            minW: function () {\r\n                this.tryMakeResizable();\r\n            },\r\n            maxW: function () {\r\n                this.tryMakeResizable();\r\n            },\r\n            \"$parent.margin\": function (margin) {\r\n                if (!margin || (margin[0] == this.margin[0] && margin[1] == this.margin[1])) {\r\n                    return;\r\n                }\r\n                this.margin = margin.map(m => Number(m));\r\n                this.createStyle();\r\n                this.emitContainerResized();\r\n            },\r\n        },\r\n        computed: {\r\n            classObj() {\r\n                return {\r\n                    'vue-resizable' : this.resizableAndNotStatic,\r\n                    'static': this.static,\r\n                    'resizing' : this.isResizing,\r\n                    'vue-draggable-dragging' : this.isDragging,\r\n                    'cssTransforms' : this.useCssTransforms,\r\n                    'render-rtl' : this.renderRtl,\r\n                    'disable-userselect': this.isDragging,\r\n                    'no-touch': this.isAndroid && this.draggableOrResizableAndNotStatic\r\n                }\r\n            },\r\n            resizableAndNotStatic(){\r\n                return this.resizable && !this.static;\r\n            },\r\n            draggableOrResizableAndNotStatic(){\r\n                return (this.draggable || this.resizable) && !this.static;\r\n            },\r\n            isAndroid() {\r\n                return navigator.userAgent.toLowerCase().indexOf(\"android\") !== -1;\r\n            },\r\n            renderRtl() {\r\n                return (this.layout.isMirrored) ? !this.rtl : this.rtl;\r\n            },\r\n            resizableHandleClass() {\r\n                if (this.renderRtl) {\r\n                    return 'vue-resizable-handle vue-rtl-resizable-handle';\r\n                } else {\r\n                    return 'vue-resizable-handle';\r\n                }\r\n            }\r\n        },\r\n        methods: {\r\n            createStyle: function () {\r\n                if (this.x + this.w > this.cols) {\r\n                    this.innerX = 0;\r\n                    this.innerW = (this.w > this.cols) ? this.cols : this.w\r\n                } else {\r\n                  this.innerX = this.x;\r\n                  this.innerW = this.w;\r\n                }\r\n                let pos = this.calcPosition(this.innerX, this.innerY, this.innerW, this.innerH);\r\n\r\n\r\n                if (this.isDragging) {\r\n                    pos.top = this.dragging.top;\r\n//                    Add rtl support\r\n                    if (this.renderRtl) {\r\n                        pos.right = this.dragging.left;\r\n                    } else {\r\n                        pos.left = this.dragging.left;\r\n                    }\r\n                }\r\n                if (this.isResizing) {\r\n                    pos.width = this.resizing.width;\r\n                    pos.height = this.resizing.height;\r\n                }\r\n\r\n                let style;\r\n                // CSS Transforms support (default)\r\n                if (this.useCssTransforms) {\r\n//                    Add rtl support\r\n                    if (this.renderRtl) {\r\n                        style = setTransformRtl(pos.top, pos.right, pos.width, pos.height);\r\n                    } else {\r\n                        style = setTransform(pos.top, pos.left, pos.width, pos.height);\r\n                    }\r\n\r\n                } else { // top,left (slow)\r\n//                    Add rtl support\r\n                    if (this.renderRtl) {\r\n                        style = setTopRight(pos.top, pos.right, pos.width, pos.height);\r\n                    } else {\r\n                        style = setTopLeft(pos.top, pos.left, pos.width, pos.height);\r\n                    }\r\n                }\r\n                this.style = style;\r\n            },\r\n            emitContainerResized() {\r\n                // this.style has width and height with trailing 'px'. The\r\n                // resized event is without them\r\n                let styleProps = {};\r\n                for (let prop of ['width', 'height']) {\r\n                    let val = this.style[prop];\r\n                    let matches = val.match(/^(\\d+)px$/);\r\n                    if (! matches)\r\n                        return;\r\n                    styleProps[prop] = matches[1];\r\n                }\r\n                this.$emit(\"container-resized\", this.i, this.h, this.w, styleProps.height, styleProps.width);\r\n            },\r\n            handleResize: function (event) {\r\n                if (this.static) return;\r\n                const position = getControlPosition(event);\r\n                // Get the current drag point from the event. This is used as the offset.\r\n                if (position == null) return; // not possible but satisfies flow\r\n                const {x, y} = position;\r\n\r\n                const newSize = {width: 0, height: 0};\r\n                let pos;\r\n                switch (event.type) {\r\n                    case \"resizestart\": {\r\n                        this.previousW = this.innerW;\r\n                        this.previousH = this.innerH;\r\n                        pos = this.calcPosition(this.innerX, this.innerY, this.innerW, this.innerH);\r\n                        newSize.width = pos.width;\r\n                        newSize.height = pos.height;\r\n                        this.resizing = newSize;\r\n                        this.isResizing = true;\r\n                        break;\r\n                    }\r\n                    case \"resizemove\": {\r\n//                        console.log(\"### resize => \" + event.type + \", lastW=\" + this.lastW + \", lastH=\" + this.lastH);\r\n                        const coreEvent = createCoreData(this.lastW, this.lastH, x, y);\r\n                        if (this.renderRtl) {\r\n                            newSize.width = this.resizing.width - coreEvent.deltaX;\r\n                        } else {\r\n                            newSize.width = this.resizing.width + coreEvent.deltaX;\r\n                        }\r\n                        newSize.height = this.resizing.height + coreEvent.deltaY;\r\n\r\n                        ///console.log(\"### resize => \" + event.type + \", deltaX=\" + coreEvent.deltaX + \", deltaY=\" + coreEvent.deltaY);\r\n                        this.resizing = newSize;\r\n                        break;\r\n                    }\r\n                    case \"resizeend\": {\r\n                        //console.log(\"### resize end => x=\" +this.innerX + \" y=\" + this.innerY + \" w=\" + this.innerW + \" h=\" + this.innerH);\r\n                        pos = this.calcPosition(this.innerX, this.innerY, this.innerW, this.innerH);\r\n                        newSize.width = pos.width;\r\n                        newSize.height = pos.height;\r\n//                        console.log(\"### resize end => \" + JSON.stringify(newSize));\r\n                        this.resizing = null;\r\n                        this.isResizing = false;\r\n                        break;\r\n                    }\r\n                }\r\n\r\n                // Get new WH\r\n                pos = this.calcWH(newSize.height, newSize.width);\r\n                if (pos.w < this.minW) {\r\n                    pos.w = this.minW;\r\n                }\r\n                if (pos.w > this.maxW) {\r\n                    pos.w = this.maxW;\r\n                }\r\n                if (pos.h < this.minH) {\r\n                    pos.h = this.minH;\r\n                }\r\n                if (pos.h > this.maxH) {\r\n                    pos.h = this.maxH;\r\n                }\r\n\r\n                if (pos.h < 1) {\r\n                    pos.h = 1;\r\n                }\r\n                if (pos.w < 1) {\r\n                    pos.w = 1;\r\n                }\r\n\r\n                this.lastW = x;\r\n                this.lastH = y;\r\n\r\n                if (this.innerW !== pos.w || this.innerH !== pos.h) {\r\n                    this.$emit(\"resize\", this.i, pos.h, pos.w, newSize.height, newSize.width);\r\n                }\r\n                if (event.type === \"resizeend\" && (this.previousW !== this.innerW || this.previousH !== this.innerH)) {\r\n                    this.$emit(\"resized\", this.i, pos.h, pos.w, newSize.height, newSize.width);\r\n                }\r\n                this.eventBus.emit(\"resizeEvent\", {eventType: event.type, i: this.i, x: this.innerX, y: this.innerY, h: pos.h, w: pos.w});\r\n            },\r\n            handleDrag(event) {\r\n                if (this.static) return;\r\n                if (this.isResizing) return;\r\n\r\n                const position = getControlPosition(event);\r\n\r\n                // Get the current drag point from the event. This is used as the offset.\r\n                if (position === null) return; // not possible but satisfies flow\r\n                const {x, y} = position;\r\n\r\n                // let shouldUpdate = false;\r\n                let newPosition = {top: 0, left: 0};\r\n                switch (event.type) {\r\n                    case \"dragstart\": {\r\n                        this.previousX = this.innerX;\r\n                        this.previousY = this.innerY;\r\n\r\n                        let parentRect = event.target.offsetParent.getBoundingClientRect();\r\n                        let clientRect = event.target.getBoundingClientRect();\r\n                        if (this.renderRtl) {\r\n                            newPosition.left = (clientRect.right - parentRect.right) * -1;\r\n                        } else {\r\n                            newPosition.left = clientRect.left - parentRect.left;\r\n                        }\r\n                        newPosition.top = clientRect.top - parentRect.top;\r\n                        this.dragging = newPosition;\r\n                        this.isDragging = true;\r\n                        break;\r\n                    }\r\n                    case \"dragend\": {\r\n                        if (!this.isDragging) return;\r\n                        let parentRect = event.target.offsetParent.getBoundingClientRect();\r\n                        let clientRect = event.target.getBoundingClientRect();\r\n//                        Add rtl support\r\n                        if (this.renderRtl) {\r\n                            newPosition.left = (clientRect.right - parentRect.right) * -1;\r\n                        } else {\r\n                            newPosition.left = clientRect.left - parentRect.left;\r\n                        }\r\n                        newPosition.top = clientRect.top - parentRect.top;\r\n//                        console.log(\"### drag end => \" + JSON.stringify(newPosition));\r\n//                        console.log(\"### DROP: \" + JSON.stringify(newPosition));\r\n                        this.dragging = null;\r\n                        this.isDragging = false;\r\n                        // shouldUpdate = true;\r\n                        break;\r\n                    }\r\n                    case \"dragmove\": {\r\n                        const coreEvent = createCoreData(this.lastX, this.lastY, x, y);\r\n//                        Add rtl support\r\n                        if (this.renderRtl) {\r\n                            newPosition.left = this.dragging.left - coreEvent.deltaX;\r\n                        } else {\r\n                            newPosition.left = this.dragging.left + coreEvent.deltaX;\r\n                        }\r\n                        newPosition.top = this.dragging.top + coreEvent.deltaY;\r\n//                        console.log(\"### drag => \" + event.type + \", x=\" + x + \", y=\" + y);\r\n//                        console.log(\"### drag => \" + event.type + \", deltaX=\" + coreEvent.deltaX + \", deltaY=\" + coreEvent.deltaY);\r\n//                        console.log(\"### drag end => \" + JSON.stringify(newPosition));\r\n                        this.dragging = newPosition;\r\n                        break;\r\n                    }\r\n                }\r\n\r\n                // Get new XY\r\n                let pos;\r\n                if (this.renderRtl) {\r\n                    pos = this.calcXY(newPosition.top, newPosition.left);\r\n                } else {\r\n                    pos = this.calcXY(newPosition.top, newPosition.left);\r\n                }\r\n\r\n                this.lastX = x;\r\n                this.lastY = y;\r\n\r\n                if (this.innerX !== pos.x || this.innerY !== pos.y) {\r\n                    this.$emit(\"move\", this.i, pos.x, pos.y);\r\n                }\r\n                if (event.type === \"dragend\" && (this.previousX !== this.innerX || this.previousY !== this.innerY)) {\r\n                    this.$emit(\"moved\", this.i, pos.x, pos.y);\r\n                }\r\n                this.eventBus.emit(\"dragEvent\", {eventType: event.type, i: this.i, x: pos.x, y: pos.y, h: this.innerH, w: this.innerW});\r\n            },\r\n            calcPosition: function (x, y, w, h) {\r\n                const colWidth = this.calcColWidth();\r\n                // add rtl support\r\n                let out;\r\n                if (this.renderRtl) {\r\n                    out = {\r\n                        right: Math.round(colWidth * x + (x + 1) * this.margin[0]),\r\n                        top: Math.round(this.rowHeight * y + (y + 1) * this.margin[1]),\r\n                        // 0 * Infinity === NaN, which causes problems with resize constriants;\r\n                        // Fix this if it occurs.\r\n                        // Note we do it here rather than later because Math.round(Infinity) causes deopt\r\n                        width: w === Infinity ? w : Math.round(colWidth * w + Math.max(0, w - 1) * this.margin[0]),\r\n                        height: h === Infinity ? h : Math.round(this.rowHeight * h + Math.max(0, h - 1) * this.margin[1])\r\n                    };\r\n                } else {\r\n                    out = {\r\n                        left: Math.round(colWidth * x + (x + 1) * this.margin[0]),\r\n                        top: Math.round(this.rowHeight * y + (y + 1) * this.margin[1]),\r\n                        // 0 * Infinity === NaN, which causes problems with resize constriants;\r\n                        // Fix this if it occurs.\r\n                        // Note we do it here rather than later because Math.round(Infinity) causes deopt\r\n                        width: w === Infinity ? w : Math.round(colWidth * w + Math.max(0, w - 1) * this.margin[0]),\r\n                        height: h === Infinity ? h : Math.round(this.rowHeight * h + Math.max(0, h - 1) * this.margin[1])\r\n                    };\r\n                }\r\n\r\n\r\n                return out;\r\n            },\r\n            /**\r\n             * Translate x and y coordinates from pixels to grid units.\r\n             * @param  {Number} top  Top position (relative to parent) in pixels.\r\n             * @param  {Number} left Left position (relative to parent) in pixels.\r\n             * @return {Object} x and y in grid units.\r\n             */\r\n            // TODO check if this function needs change in order to support rtl.\r\n            calcXY(top, left) {\r\n                const colWidth = this.calcColWidth();\r\n\r\n                // left = colWidth * x + margin * (x + 1)\r\n                // l = cx + m(x+1)\r\n                // l = cx + mx + m\r\n                // l - m = cx + mx\r\n                // l - m = x(c + m)\r\n                // (l - m) / (c + m) = x\r\n                // x = (left - margin) / (coldWidth + margin)\r\n                let x = Math.round((left - this.margin[0]) / (colWidth + this.margin[0]));\r\n                let y = Math.round((top - this.margin[1]) / (this.rowHeight + this.margin[1]));\r\n\r\n                // Capping\r\n                x = Math.max(Math.min(x, this.cols - this.innerW), 0);\r\n                y = Math.max(Math.min(y, this.maxRows - this.innerH), 0);\r\n\r\n                return {x, y};\r\n            },\r\n            // Helper for generating column width\r\n            calcColWidth() {\r\n                const colWidth = (this.containerWidth - (this.margin[0] * (this.cols + 1))) / this.cols;\r\n               // console.log(\"### COLS=\" + this.cols + \" COL WIDTH=\" + colWidth + \" MARGIN \" + this.margin[0]);\r\n                return colWidth;\r\n            },\r\n\r\n            /**\r\n             * Given a height and width in pixel values, calculate grid units.\r\n             * @param  {Number} height Height in pixels.\r\n             * @param  {Number} width  Width in pixels.\r\n             * @param  {Boolean} autoSizeFlag  function autoSize identifier.\r\n             * @return {Object} w, h as grid units.\r\n             */\r\n            calcWH(height, width, autoSizeFlag = false) {\r\n                const colWidth = this.calcColWidth();\r\n\r\n                // width = colWidth * w - (margin * (w - 1))\r\n                // ...\r\n                // w = (width + margin) / (colWidth + margin)\r\n                let w = Math.round((width + this.margin[0]) / (colWidth + this.margin[0]));\r\n                let h = 0;\r\n                if (!autoSizeFlag) {\r\n                    h = Math.round((height + this.margin[1]) / (this.rowHeight + this.margin[1]));\r\n                } else {\r\n                    h = Math.ceil((height + this.margin[1]) / (this.rowHeight + this.margin[1]));\r\n                }\r\n\r\n                // Capping\r\n                w = Math.max(Math.min(w, this.cols - this.innerX), 0);\r\n                h = Math.max(Math.min(h, this.maxRows - this.innerY), 0);\r\n                return {w, h};\r\n            },\r\n            updateWidth: function (width, colNum) {\r\n                this.containerWidth = width;\r\n                if (colNum !== undefined && colNum !== null) {\r\n                    this.cols = colNum;\r\n                }\r\n            },\r\n            compact: function () {\r\n                this.createStyle();\r\n            },\r\n            tryMakeDraggable: function(){\r\n                const self = this;\r\n                if (this.interactObj === null || this.interactObj === undefined) {\r\n                    this.interactObj = interact(this.$refs.item);\r\n                    if (!this.useStyleCursor) {\r\n                        this.interactObj.styleCursor(false);\r\n                    }\r\n                }\r\n                if (this.draggable && !this.static) {\r\n                    const opts = {\r\n                        ignoreFrom: this.dragIgnoreFrom,\r\n                        allowFrom: this.dragAllowFrom\r\n                    };\r\n                    this.interactObj.draggable(opts);\r\n                    /*this.interactObj.draggable({allowFrom: '.vue-draggable-handle'});*/\r\n                    if (!this.dragEventSet) {\r\n                        this.dragEventSet = true;\r\n                        this.interactObj.on('dragstart dragmove dragend', function (event) {\r\n                            self.handleDrag(event);\r\n                        });\r\n                    }\r\n                } else {\r\n                    this.interactObj.draggable({\r\n                        enabled: false\r\n                    });\r\n                }\r\n            },\r\n            tryMakeResizable: function(){\r\n                const self = this;\r\n                if (this.interactObj === null || this.interactObj === undefined) {\r\n                    this.interactObj = interact(this.$refs.item);\r\n                    if (!this.useStyleCursor) {\r\n                        this.interactObj.styleCursor(false);\r\n                    }\r\n                }\r\n                if (this.resizable && !this.static) {\r\n                    let maximum = this.calcPosition(0,0,this.maxW, this.maxH);\r\n                    let minimum = this.calcPosition(0,0, this.minW, this.minH);\r\n\r\n                    // console.log(\"### MAX \" + JSON.stringify(maximum));\r\n                    // console.log(\"### MIN \" + JSON.stringify(minimum));\r\n\r\n                    const opts = {\r\n                        // allowFrom: \".\" + this.resizableHandleClass.trim().replace(\" \", \".\"),\r\n                        edges: {\r\n                            left: false,\r\n                            right: \".\" + this.resizableHandleClass.trim().replace(\" \", \".\"),\r\n                            bottom: \".\" + this.resizableHandleClass.trim().replace(\" \", \".\"),\r\n                            top: false\r\n                        },\r\n                        ignoreFrom: this.resizeIgnoreFrom,\r\n                        restrictSize: {\r\n                            min: {\r\n                                height: minimum.height,\r\n                                width: minimum.width\r\n                            },\r\n                            max: {\r\n                                height: maximum.height,\r\n                                width: maximum.width\r\n                            }\r\n                        }\r\n                    };\r\n\r\n                    if (this.preserveAspectRatio) {\r\n                        opts.modifiers = [\r\n                            interact.modifiers.aspectRatio({\r\n                                ratio: 'preserve'\r\n                            }),\r\n                        ]\r\n                    }\r\n\r\n                    this.interactObj.resizable(opts);\r\n                    if (!this.resizeEventSet) {\r\n                        this.resizeEventSet = true;\r\n                        this.interactObj\r\n                            .on('resizestart resizemove resizeend', function (event) {\r\n                                self.handleResize(event);\r\n                            });\r\n                    }\r\n                } else {\r\n                    this.interactObj.resizable({\r\n                        enabled: false\r\n                    });\r\n                }\r\n            },\r\n            autoSize: function() {\r\n                // ok here we want to calculate if a resize is needed\r\n                this.previousW = this.innerW;\r\n                this.previousH = this.innerH;\r\n\r\n                let newSize=this.$slots().default[0].elm.getBoundingClientRect();\r\n                let pos = this.calcWH(newSize.height, newSize.width, true);\r\n                if (pos.w < this.minW) {\r\n                    pos.w = this.minW;\r\n                }\r\n                if (pos.w > this.maxW) {\r\n                    pos.w = this.maxW;\r\n                }\r\n                if (pos.h < this.minH) {\r\n                    pos.h = this.minH;\r\n                }\r\n                if (pos.h > this.maxH) {\r\n                    pos.h = this.maxH;\r\n                }\r\n\r\n                if (pos.h < 1) {\r\n                    pos.h = 1;\r\n                }\r\n                if (pos.w < 1) {\r\n                    pos.w = 1;\r\n                }\r\n\r\n                // this.lastW = x; // basically, this is copied from resizehandler, but shouldn't be needed\r\n                // this.lastH = y;\r\n\r\n                if (this.innerW !== pos.w || this.innerH !== pos.h) {\r\n                    this.$emit(\"resize\", this.i, pos.h, pos.w, newSize.height, newSize.width);\r\n                }\r\n                if (this.previousW !== pos.w || this.previousH !== pos.h) {\r\n                    this.$emit(\"resized\", this.i, pos.h, pos.w, newSize.height, newSize.width);\r\n                    this.eventBus.emit(\"resizeEvent\", {eventType: \"resizeend\", i: this.i, x: this.innerX, y: this.innerY, h: pos.h, w: pos.w});\r\n                }\r\n            }\r\n        },\r\n    }\r\n</script>\r\n","// @flow\r\nexport type LayoutItemRequired = {w: number, h: number, x: number, y: number, i: string};\r\nexport type LayoutItem = LayoutItemRequired &\r\n                         {minW?: number, minH?: number, maxW?: number, maxH?: number,\r\n                          moved?: boolean, static?: boolean,\r\n                          isDraggable?: ?boolean, isResizable?: ?boolean};\r\nexport type Layout = Array<LayoutItem>;\r\n// export type Position = {left: number, top: number, width: number, height: number};\r\n/*\r\nexport type DragCallbackData = {\r\n  node: HTMLElement,\r\n  x: number, y: number,\r\n  deltaX: number, deltaY: number,\r\n  lastX: number, lastY: number\r\n};\r\n*/\r\n// export type DragEvent = {e: Event} & DragCallbackData;\r\nexport type Size = {width: number, height: number};\r\n// export type ResizeEvent = {e: Event, node: HTMLElement, size: Size};\r\n\r\n// const isProduction = process.env.NODE_ENV === 'production';\r\n/**\r\n * Return the bottom coordinate of the layout.\r\n *\r\n * @param  {Array} layout Layout array.\r\n * @return {Number}       Bottom coordinate.\r\n */\r\nexport function bottom(layout: Layout): number {\r\n  let max = 0, bottomY;\r\n  for (let i = 0, len = layout.length; i < len; i++) {\r\n    bottomY = layout[i]. y + layout[i].h;\r\n    if (bottomY > max) max = bottomY;\r\n  }\r\n  return max;\r\n}\r\n\r\nexport function cloneLayout(layout: Layout): Layout {\r\n  const newLayout = Array(layout.length);\r\n  for (let i = 0, len = layout.length; i < len; i++) {\r\n    newLayout[i] = cloneLayoutItem(layout[i]);\r\n  }\r\n  return newLayout;\r\n}\r\n\r\n// Fast path to cloning, since this is monomorphic\r\nexport function cloneLayoutItem(layoutItem: LayoutItem): LayoutItem {\r\n  /*return {\r\n    w: layoutItem.w, h: layoutItem.h, x: layoutItem.x, y: layoutItem.y, i: layoutItem.i,\r\n    minW: layoutItem.minW, maxW: layoutItem.maxW, minH: layoutItem.minH, maxH: layoutItem.maxH,\r\n    moved: Boolean(layoutItem.moved), static: Boolean(layoutItem.static),\r\n    // These can be null\r\n    isDraggable: layoutItem.isDraggable, isResizable: layoutItem.isResizable\r\n  };*/\r\n    return JSON.parse(JSON.stringify(layoutItem));\r\n}\r\n\r\n/**\r\n * Given two layoutitems, check if they collide.\r\n *\r\n * @return {Boolean}   True if colliding.\r\n */\r\nexport function collides(l1: LayoutItem, l2: LayoutItem): boolean {\r\n  if (l1 === l2) return false; // same element\r\n  if (l1.x + l1.w <= l2.x) return false; // l1 is left of l2\r\n  if (l1.x >= l2.x + l2.w) return false; // l1 is right of l2\r\n  if (l1.y + l1.h <= l2.y) return false; // l1 is above l2\r\n  if (l1.y >= l2.y + l2.h) return false; // l1 is below l2\r\n  return true; // boxes overlap\r\n}\r\n\r\n/**\r\n * Given a layout, compact it. This involves going down each y coordinate and removing gaps\r\n * between items.\r\n *\r\n * @param  {Array} layout Layout.\r\n * @param  {Boolean} verticalCompact Whether or not to compact the layout\r\n *   vertically.\r\n * @return {Array}       Compacted Layout.\r\n */\r\nexport function compact(layout: Layout, verticalCompact: Boolean): Layout {\r\n    // Statics go in the compareWith array right away so items flow around them.\r\n  const compareWith = getStatics(layout);\r\n  // We go through the items by row and column.\r\n  const sorted = sortLayoutItemsByRowCol(layout);\r\n  // Holding for new items.\r\n  const out = Array(layout.length);\r\n\r\n  for (let i = 0, len = sorted.length; i < len; i++) {\r\n    let l = sorted[i];\r\n\r\n    // Don't move static elements\r\n    if (!l.static) {\r\n      l = compactItem(compareWith, l, verticalCompact);\r\n\r\n      // Add to comparison array. We only collide with items before this one.\r\n      // Statics are already in this array.\r\n      compareWith.push(l);\r\n    }\r\n\r\n    // Add to output array to make sure they still come out in the right order.\r\n    out[layout.indexOf(l)] = l;\r\n\r\n    // Clear moved flag, if it exists.\r\n    l.moved = false;\r\n  }\r\n\r\n  return out;\r\n}\r\n\r\n/**\r\n * Compact an item in the layout.\r\n */\r\nexport function compactItem(compareWith: Layout, l: LayoutItem, verticalCompact: boolean): LayoutItem {\r\n  if (verticalCompact) {\r\n    // Move the element up as far as it can go without colliding.\r\n    while (l.y > 0 && !getFirstCollision(compareWith, l)) {\r\n      l.y--;\r\n    }\r\n  }\r\n\r\n  // Move it down, and keep moving it down if it's colliding.\r\n  let collides;\r\n  while((collides = getFirstCollision(compareWith, l))) {\r\n    l.y = collides.y + collides.h;\r\n  }\r\n  return l;\r\n}\r\n\r\n/**\r\n * Given a layout, make sure all elements fit within its bounds.\r\n *\r\n * @param  {Array} layout Layout array.\r\n * @param  {Number} bounds Number of columns.\r\n */\r\nexport function correctBounds(layout: Layout, bounds: {cols: number}): Layout {\r\n  const collidesWith = getStatics(layout);\r\n  for (let i = 0, len = layout.length; i < len; i++) {\r\n    const l = layout[i];\r\n    // Overflows right\r\n    if (l.x + l.w > bounds.cols) l.x = bounds.cols - l.w;\r\n    // Overflows left\r\n    if (l.x < 0) {\r\n      l.x = 0;\r\n      l.w = bounds.cols;\r\n    }\r\n    if (!l.static) collidesWith.push(l);\r\n    else {\r\n      // If this is static and collides with other statics, we must move it down.\r\n      // We have to do something nicer than just letting them overlap.\r\n      while(getFirstCollision(collidesWith, l)) {\r\n        l.y++;\r\n      }\r\n    }\r\n  }\r\n  return layout;\r\n}\r\n\r\n/**\r\n * Get a layout item by ID. Used so we can override later on if necessary.\r\n *\r\n * @param  {Array}  layout Layout array.\r\n * @param  {String} id     ID\r\n * @return {LayoutItem}    Item at ID.\r\n */\r\nexport function getLayoutItem(layout: Layout, id: string): ?LayoutItem {\r\n  for (let i = 0, len = layout.length; i < len; i++) {\r\n    if (layout[i].i === id) return layout[i];\r\n  }\r\n}\r\n\r\n/**\r\n * Returns the first item this layout collides with.\r\n * It doesn't appear to matter which order we approach this from, although\r\n * perhaps that is the wrong thing to do.\r\n *\r\n * @param  {Object} layoutItem Layout item.\r\n * @return {Object|undefined}  A colliding layout item, or undefined.\r\n */\r\nexport function getFirstCollision(layout: Layout, layoutItem: LayoutItem): ?LayoutItem {\r\n  for (let i = 0, len = layout.length; i < len; i++) {\r\n    if (collides(layout[i], layoutItem)) return layout[i];\r\n  }\r\n}\r\n\r\nexport function getAllCollisions(layout: Layout, layoutItem: LayoutItem): Array<LayoutItem> {\r\n  return layout.filter((l) => collides(l, layoutItem));\r\n}\r\n\r\n/**\r\n * Get all static elements.\r\n * @param  {Array} layout Array of layout objects.\r\n * @return {Array}        Array of static layout items..\r\n */\r\nexport function getStatics(layout: Layout): Array<LayoutItem> {\r\n    //return [];\r\n    return layout.filter((l) => l.static);\r\n}\r\n\r\n/**\r\n * Move an element. Responsible for doing cascading movements of other elements.\r\n *\r\n * @param  {Array}      layout Full layout to modify.\r\n * @param  {LayoutItem} l      element to move.\r\n * @param  {Number}     [x]    X position in grid units.\r\n * @param  {Number}     [y]    Y position in grid units.\r\n * @param  {Boolean}    [isUserAction] If true, designates that the item we're moving is\r\n *                                     being dragged/resized by th euser.\r\n */\r\nexport function moveElement(layout: Layout, l: LayoutItem, x: Number, y: Number, isUserAction: Boolean, preventCollision: Boolean): Layout {\r\n  if (l.static) return layout;\r\n\r\n  // Short-circuit if nothing to do.\r\n  //if (l.y === y && l.x === x) return layout;\r\n\r\n  const oldX = l.x;\r\n  const oldY = l.y;\r\n\r\n  const movingUp = y && l.y > y;\r\n  // This is quite a bit faster than extending the object\r\n  if (typeof x === 'number') l.x = x;\r\n  if (typeof y === 'number') l.y = y;\r\n  l.moved = true;\r\n\r\n  // If this collides with anything, move it.\r\n  // When doing this comparison, we have to sort the items we compare with\r\n  // to ensure, in the case of multiple collisions, that we're getting the\r\n  // nearest collision.\r\n  let sorted = sortLayoutItemsByRowCol(layout);\r\n  if (movingUp) sorted = sorted.reverse();\r\n  const collisions = getAllCollisions(sorted, l);\r\n\r\n  if (preventCollision && collisions.length) {\r\n    l.x = oldX;\r\n    l.y = oldY;\r\n    l.moved = false;\r\n    return layout;\r\n  }\r\n\r\n  // Move each item that collides away from this element.\r\n  for (let i = 0, len = collisions.length; i < len; i++) {\r\n    const collision = collisions[i];\r\n    // console.log('resolving collision between', l.i, 'at', l.y, 'and', collision.i, 'at', collision.y);\r\n\r\n    // Short circuit so we can't infinite loop\r\n    if (collision.moved) continue;\r\n\r\n    // This makes it feel a bit more precise by waiting to swap for just a bit when moving up.\r\n    if (l.y > collision.y && l.y - collision.y > collision.h / 4) continue;\r\n\r\n    // Don't move static items - we have to move *this* element away\r\n    if (collision.static) {\r\n      layout = moveElementAwayFromCollision(layout, collision, l, isUserAction);\r\n    } else {\r\n      layout = moveElementAwayFromCollision(layout, l, collision, isUserAction);\r\n    }\r\n  }\r\n\r\n  return layout;\r\n}\r\n\r\n/**\r\n * This is where the magic needs to happen - given a collision, move an element away from the collision.\r\n * We attempt to move it up if there's room, otherwise it goes below.\r\n *\r\n * @param  {Array} layout            Full layout to modify.\r\n * @param  {LayoutItem} collidesWith Layout item we're colliding with.\r\n * @param  {LayoutItem} itemToMove   Layout item we're moving.\r\n * @param  {Boolean} [isUserAction]  If true, designates that the item we're moving is being dragged/resized\r\n *                                   by the user.\r\n */\r\nexport function moveElementAwayFromCollision(layout: Layout, collidesWith: LayoutItem,\r\n                                             itemToMove: LayoutItem, isUserAction: ?boolean): Layout {\r\n\r\n  const preventCollision = false // we're already colliding\r\n  // If there is enough space above the collision to put this element, move it there.\r\n  // We only do this on the main collision as this can get funky in cascades and cause\r\n  // unwanted swapping behavior.\r\n  if (isUserAction) {\r\n    // Make a mock item so we don't modify the item here, only modify in moveElement.\r\n    const fakeItem: LayoutItem = {\r\n      x: itemToMove.x,\r\n      y: itemToMove.y,\r\n      w: itemToMove.w,\r\n      h: itemToMove.h,\r\n      i: '-1'\r\n    };\r\n    fakeItem.y = Math.max(collidesWith.y - itemToMove.h, 0);\r\n    if (!getFirstCollision(layout, fakeItem)) {\r\n      return moveElement(layout, itemToMove, undefined, fakeItem.y, preventCollision);\r\n    }\r\n  }\r\n\r\n  // Previously this was optimized to move below the collision directly, but this can cause problems\r\n  // with cascading moves, as an item may actually leapflog a collision and cause a reversal in order.\r\n  return moveElement(layout, itemToMove, undefined, itemToMove.y + 1, preventCollision);\r\n}\r\n\r\n/**\r\n * Helper to convert a number to a percentage string.\r\n *\r\n * @param  {Number} num Any number\r\n * @return {String}     That number as a percentage.\r\n */\r\nexport function perc(num: number): string {\r\n  return num * 100 + '%';\r\n}\r\n\r\nexport function setTransform(top, left, width, height): Object {\r\n  // Replace unitless items with px\r\n  const translate = \"translate3d(\" + left + \"px,\" + top + \"px, 0)\";\r\n  return {\r\n    transform: translate,\r\n    WebkitTransform: translate,\r\n    MozTransform: translate,\r\n    msTransform: translate,\r\n    OTransform: translate,\r\n    width: width + \"px\",\r\n    height: height + \"px\",\r\n    position: 'absolute'\r\n  };\r\n}\r\n/**\r\n * Just like the setTransform method, but instead it will return a negative value of right.\r\n *\r\n * @param top\r\n * @param right\r\n * @param width\r\n * @param height\r\n * @returns {{transform: string, WebkitTransform: string, MozTransform: string, msTransform: string, OTransform: string, width: string, height: string, position: string}}\r\n */\r\nexport function setTransformRtl(top, right, width, height): Object {\r\n    // Replace unitless items with px\r\n    const translate = \"translate3d(\" + right * -1 + \"px,\" + top + \"px, 0)\";\r\n    return {\r\n        transform: translate,\r\n        WebkitTransform: translate,\r\n        MozTransform: translate,\r\n        msTransform: translate,\r\n        OTransform: translate,\r\n        width: width + \"px\",\r\n        height: height + \"px\",\r\n        position: 'absolute'\r\n    };\r\n}\r\n\r\nexport function setTopLeft(top, left, width, height): Object {\r\n    return {\r\n        top: top + \"px\",\r\n        left: left + \"px\",\r\n        width: width + \"px\",\r\n        height: height + \"px\",\r\n        position: 'absolute'\r\n    };\r\n}\r\n/**\r\n * Just like the setTopLeft method, but instead, it will return a right property instead of left.\r\n *\r\n * @param top\r\n * @param right\r\n * @param width\r\n * @param height\r\n * @returns {{top: string, right: string, width: string, height: string, position: string}}\r\n */\r\nexport function setTopRight(top, right, width, height): Object {\r\n    return {\r\n        top: top + \"px\",\r\n        right: right+ \"px\",\r\n        width: width + \"px\",\r\n        height: height + \"px\",\r\n        position: 'absolute'\r\n    };\r\n}\r\n\r\n\r\n/**\r\n * Get layout items sorted from top left to right and down.\r\n *\r\n * @return {Array} Array of layout objects.\r\n * @return {Array}        Layout, sorted static items first.\r\n */\r\nexport function sortLayoutItemsByRowCol(layout: Layout): Layout {\r\n  return [].concat(layout).sort(function(a, b) {\r\n    if (a.y === b.y && a.x === b.x) {\r\n      return 0;\r\n    }\r\n\r\n    if (a.y > b.y || (a.y === b.y && a.x > b.x)) {\r\n      return 1;\r\n    }\r\n\r\n    return -1;\r\n  });\r\n}\r\n\r\n/**\r\n * Generate a layout using the initialLayout and children as a template.\r\n * Missing entries will be added, extraneous ones will be truncated.\r\n *\r\n * @param  {Array}  initialLayout Layout passed in through props.\r\n * @param  {String} breakpoint    Current responsive breakpoint.\r\n * @param  {Boolean} verticalCompact Whether or not to compact the layout vertically.\r\n * @return {Array}                Working layout.\r\n */\r\n/*\r\nexport function synchronizeLayoutWithChildren(initialLayout: Layout, children: Array<React.Element>|React.Element,\r\n                                              cols: number, verticalCompact: boolean): Layout {\r\n  // ensure 'children' is always an array\r\n  if (!Array.isArray(children)) {\r\n    children = [children];\r\n  }\r\n  initialLayout = initialLayout || [];\r\n\r\n  // Generate one layout item per child.\r\n  let layout: Layout = [];\r\n  for (let i = 0, len = children.length; i < len; i++) {\r\n    let newItem;\r\n    const child = children[i];\r\n\r\n    // Don't overwrite if it already exists.\r\n    const exists = getLayoutItem(initialLayout, child.key || \"1\" /!* FIXME satisfies Flow *!/);\r\n    if (exists) {\r\n      newItem = exists;\r\n    } else {\r\n      const g = child.props._grid;\r\n\r\n      // Hey, this item has a _grid property, use it.\r\n      if (g) {\r\n        if (!isProduction) {\r\n          validateLayout([g], 'ReactGridLayout.children');\r\n        }\r\n        // Validated; add it to the layout. Bottom 'y' possible is the bottom of the layout.\r\n        // This allows you to do nice stuff like specify {y: Infinity}\r\n        if (verticalCompact) {\r\n          newItem = cloneLayoutItem({...g, y: Math.min(bottom(layout), g.y), i: child.key});\r\n        } else {\r\n          newItem = cloneLayoutItem({...g, y: g.y, i: child.key});\r\n        }\r\n      }\r\n      // Nothing provided: ensure this is added to the bottom\r\n      else {\r\n        newItem = cloneLayoutItem({w: 1, h: 1, x: 0, y: bottom(layout), i: child.key || \"1\"});\r\n      }\r\n    }\r\n    layout[i] = newItem;\r\n  }\r\n\r\n  // Correct the layout.\r\n  layout = correctBounds(layout, {cols: cols});\r\n  layout = compact(layout, verticalCompact);\r\n\r\n  return layout;\r\n}\r\n*/\r\n\r\n/**\r\n * Validate a layout. Throws errors.\r\n *\r\n * @param  {Array}  layout        Array of layout items.\r\n * @param  {String} [contextName] Context name for errors.\r\n * @throw  {Error}                Validation error.\r\n */\r\nexport function validateLayout(layout: Layout, contextName: string): void {\r\n  contextName = contextName || \"Layout\";\r\n  const subProps = ['x', 'y', 'w', 'h'];\r\n  let keyArr = [];\r\n  if (!Array.isArray(layout)) throw new Error(contextName + \" must be an array!\");\r\n  for (let i = 0, len = layout.length; i < len; i++) {\r\n    const item = layout[i];\r\n    for (let j = 0; j < subProps.length; j++) {\r\n      if (typeof item[subProps[j]] !== 'number') {\r\n        throw new Error('VueGridLayout: ' + contextName + '[' + i + '].' + subProps[j] + ' must be a number!');\r\n      }\r\n    }\r\n\r\n    if (item.i === undefined || item.i === null) {\r\n      throw new Error('VueGridLayout: ' + contextName + '[' + i + '].i cannot be null!');\r\n    }\r\n\r\n    if (typeof item.i !== 'number' && typeof item.i !== 'string') {\r\n      throw new Error('VueGridLayout: ' + contextName + '[' + i + '].i must be a string or number!');\r\n    }\r\n\r\n    if (keyArr.indexOf(item.i) >= 0) {\r\n      throw new Error('VueGridLayout: ' + contextName + '[' + i + '].i must be unique!');\r\n    }\r\n    keyArr.push(item.i);\r\n\r\n    if (item.static !== undefined && typeof item.static !== 'boolean') {\r\n      throw new Error('VueGridLayout: ' + contextName + '[' + i + '].static must be a boolean!');\r\n    }\r\n  }\r\n}\r\n\r\n// Flow can't really figure this out, so we just use Object\r\nexport function autoBindHandlers(el: Object, fns: Array<string>): void {\r\n  fns.forEach((key) => el[key] = el[key].bind(el));\r\n}\r\n\r\n\r\n\r\n/**\r\n * Convert a JS object to CSS string. Similar to React's output of CSS.\r\n * @param obj\r\n * @returns {string}\r\n */\r\nexport function createMarkup(obj) {\r\n    var keys = Object.keys(obj);\r\n    if (!keys.length) return '';\r\n    var i, len = keys.length;\r\n    var result = '';\r\n\r\n    for (i = 0; i < len; i++) {\r\n        var key = keys[i];\r\n        var val = obj[key];\r\n        result += hyphenate(key) + ':' + addPx(key, val) + ';';\r\n    }\r\n\r\n    return result;\r\n}\r\n\r\n\r\n/* The following list is defined in React's core */\r\nexport var IS_UNITLESS = {\r\n    animationIterationCount: true,\r\n    boxFlex: true,\r\n    boxFlexGroup: true,\r\n    boxOrdinalGroup: true,\r\n    columnCount: true,\r\n    flex: true,\r\n    flexGrow: true,\r\n    flexPositive: true,\r\n    flexShrink: true,\r\n    flexNegative: true,\r\n    flexOrder: true,\r\n    gridRow: true,\r\n    gridColumn: true,\r\n    fontWeight: true,\r\n    lineClamp: true,\r\n    lineHeight: true,\r\n    opacity: true,\r\n    order: true,\r\n    orphans: true,\r\n    tabSize: true,\r\n    widows: true,\r\n    zIndex: true,\r\n    zoom: true,\r\n\r\n    // SVG-related properties\r\n    fillOpacity: true,\r\n    stopOpacity: true,\r\n    strokeDashoffset: true,\r\n    strokeOpacity: true,\r\n    strokeWidth: true\r\n};\r\n\r\n\r\n/**\r\n * Will add px to the end of style values which are Numbers.\r\n * @param name\r\n * @param value\r\n * @returns {*}\r\n */\r\nexport function addPx(name, value) {\r\n    if(typeof value === 'number' && !IS_UNITLESS[ name ]) {\r\n        return value + 'px';\r\n    } else {\r\n        return value;\r\n    }\r\n}\r\n\r\n\r\n/**\r\n * Hyphenate a camelCase string.\r\n *\r\n * @param {String} str\r\n * @return {String}\r\n */\r\n\r\nexport var hyphenateRE = /([a-z\\d])([A-Z])/g;\r\n\r\nexport function hyphenate(str) {\r\n    return str.replace(hyphenateRE, '$1-$2').toLowerCase();\r\n}\r\n\r\n\r\nexport function findItemInArray(array, property, value) {\r\n    for (var i=0; i < array.length; i++)\r\n        if (array[i][property] == value)\r\n            return true;\r\n\r\n    return false;\r\n}\r\n\r\nexport function findAndRemove(array, property, value) {\r\n    array.forEach(function (result, index) {\r\n        if (result[property] === value) {\r\n            //Remove from array\r\n            array.splice(index, 1);\r\n        }\r\n    });\r\n}\r\n","// Get {x, y} positions from event.\r\nexport function getControlPosition(e) {\r\n    return offsetXYFromParentOf(e);\r\n}\r\n\r\n\r\n// Get from offsetParent\r\nexport function offsetXYFromParentOf(evt) {\r\n    const offsetParent = evt.target.offsetParent || document.body;\r\n    const offsetParentRect = evt.offsetParent === document.body ? {left: 0, top: 0} : offsetParent.getBoundingClientRect();\r\n\r\n    const x = evt.clientX + offsetParent.scrollLeft - offsetParentRect.left;\r\n    const y = evt.clientY + offsetParent.scrollTop - offsetParentRect.top;\r\n\r\n    /*const x = Math.round(evt.clientX + offsetParent.scrollLeft - offsetParentRect.left);\r\n    const y = Math.round(evt.clientY + offsetParent.scrollTop - offsetParentRect.top);*/\r\n\r\n\r\n    return {x, y};\r\n}\r\n\r\n\r\n// Create an data object exposed by <DraggableCore>'s events\r\nexport function createCoreData(lastX, lastY, x, y) {\r\n    // State changes are often (but not always!) async. We want the latest value.\r\n    const isStart = !isNum(lastX);\r\n\r\n    if (isStart) {\r\n        // If this is our first move, use the x and y as last coords.\r\n        return {\r\n            deltaX: 0, deltaY: 0,\r\n            lastX: x, lastY: y,\r\n            x: x, y: y\r\n        };\r\n    } else {\r\n        // Otherwise calculate proper values.\r\n        return {\r\n            deltaX: x - lastX, deltaY: y - lastY,\r\n            lastX: lastX, lastY: lastY,\r\n            x: x, y: y\r\n        };\r\n    }\r\n}\r\n\r\n\r\nfunction isNum(num)  {\r\n    return typeof num === 'number' && !isNaN(num);\r\n}\r\n\r\n","// @flow\r\n\r\nimport {cloneLayout, compact, correctBounds} from './utils';\r\n\r\nimport type {Layout} from './utils';\r\nexport type ResponsiveLayout = {lg?: Layout, md?: Layout, sm?: Layout, xs?: Layout, xxs?: Layout};\r\ntype Breakpoint = string;\r\ntype Breakpoints = {lg?: number, md?: number, sm?: number, xs?: number, xxs?: number};\r\n\r\n/**\r\n * Given a width, find the highest breakpoint that matches is valid for it (width > breakpoint).\r\n *\r\n * @param  {Object} breakpoints Breakpoints object (e.g. {lg: 1200, md: 960, ...})\r\n * @param  {Number} width Screen width.\r\n * @return {String}       Highest breakpoint that is less than width.\r\n */\r\nexport function getBreakpointFromWidth(breakpoints: Breakpoints, width: number): Breakpoint {\r\n  const sorted = sortBreakpoints(breakpoints);\r\n  let matching = sorted[0];\r\n  for (let i = 1, len = sorted.length; i < len; i++) {\r\n    const breakpointName = sorted[i];\r\n    if (width > breakpoints[breakpointName]) matching = breakpointName;\r\n  }\r\n  return matching;\r\n}\r\n\r\n\r\n/**\r\n * Given a breakpoint, get the # of cols set for it.\r\n * @param  {String} breakpoint Breakpoint name.\r\n * @param  {Object} cols       Map of breakpoints to cols.\r\n * @return {Number}            Number of cols.\r\n */\r\nexport function getColsFromBreakpoint(breakpoint: Breakpoint, cols: Breakpoints): number {\r\n  if (!cols[breakpoint]) {\r\n    throw new Error(\"ResponsiveGridLayout: `cols` entry for breakpoint \" + breakpoint + \" is missing!\");\r\n  }\r\n  return cols[breakpoint];\r\n}\r\n\r\n/**\r\n * Given existing layouts and a new breakpoint, find or generate a new layout.\r\n *\r\n * This finds the layout above the new one and generates from it, if it exists.\r\n *\r\n * @param  {Array} orgLayout     Original layout.\r\n * @param  {Object} layouts     Existing layouts.\r\n * @param  {Array} breakpoints All breakpoints.\r\n * @param  {String} breakpoint New breakpoint.\r\n * @param  {String} breakpoint Last breakpoint (for fallback).\r\n * @param  {Number} cols       Column count at new breakpoint.\r\n * @param  {Boolean} verticalCompact Whether or not to compact the layout\r\n *   vertically.\r\n * @return {Array}             New layout.\r\n */\r\nexport function findOrGenerateResponsiveLayout(orgLayout: Layout, layouts: ResponsiveLayout, breakpoints: Breakpoints,\r\n                                               breakpoint: Breakpoint, lastBreakpoint: Breakpoint,\r\n                                               cols: number, verticalCompact: boolean): Layout {\r\n  // If it already exists, just return it.\r\n  if (layouts[breakpoint]) return cloneLayout(layouts[breakpoint]);\r\n  // Find or generate the next layout\r\n  let layout = orgLayout;\r\n\r\n  const breakpointsSorted = sortBreakpoints(breakpoints);\r\n  const breakpointsAbove = breakpointsSorted.slice(breakpointsSorted.indexOf(breakpoint));\r\n  for (let i = 0, len = breakpointsAbove.length; i < len; i++) {\r\n    const b = breakpointsAbove[i];\r\n    if (layouts[b]) {\r\n      layout = layouts[b];\r\n      break;\r\n    }\r\n  }\r\n  layout = cloneLayout(layout || []); // clone layout so we don't modify existing items\r\n  return compact(correctBounds(layout, {cols: cols}), verticalCompact);\r\n}\r\n\r\nexport function generateResponsiveLayout(layout: Layout, breakpoints: Breakpoints,\r\n                                               breakpoint: Breakpoint, lastBreakpoint: Breakpoint,\r\n                                               cols: number, verticalCompact: boolean): Layout {\r\n  // If it already exists, just return it.\r\n  /*if (layouts[breakpoint]) return cloneLayout(layouts[breakpoint]);\r\n  // Find or generate the next layout\r\n  let layout = layouts[lastBreakpoint];*/\r\n    /*const breakpointsSorted = sortBreakpoints(breakpoints);\r\n  const breakpointsAbove = breakpointsSorted.slice(breakpointsSorted.indexOf(breakpoint));\r\n  for (let i = 0, len = breakpointsAbove.length; i < len; i++) {\r\n    const b = breakpointsAbove[i];\r\n    if (layouts[b]) {\r\n      layout = layouts[b];\r\n      break;\r\n    }\r\n  }*/\r\n  layout = cloneLayout(layout || []); // clone layout so we don't modify existing items\r\n  return compact(correctBounds(layout, {cols: cols}), verticalCompact);\r\n}\r\n\r\n/**\r\n * Given breakpoints, return an array of breakpoints sorted by width. This is usually\r\n * e.g. ['xxs', 'xs', 'sm', ...]\r\n *\r\n * @param  {Object} breakpoints Key/value pair of breakpoint names to widths.\r\n * @return {Array}              Sorted breakpoints.\r\n */\r\nexport function sortBreakpoints(breakpoints: Breakpoints): Array<Breakpoint> {\r\n  const keys: Array<string> = Object.keys(breakpoints);\r\n  return keys.sort(function(a, b) {\r\n    return breakpoints[a] - breakpoints[b];\r\n  });\r\n}\r\n","let currentDir: \"ltr\" | \"rtl\" | \"auto\"  = \"auto\";\r\n// let currentDir = \"auto\";\r\n\r\nfunction hasDocument(){\r\n    return (typeof document !== \"undefined\");\r\n}\r\n\r\nfunction hasWindow(){\r\n    return (typeof window !== \"undefined\");\r\n}\r\n\r\nexport function getDocumentDir(){\r\n    if(!hasDocument()){\r\n        return currentDir;\r\n    }\r\n    const direction = (typeof document.dir !== \"undefined\") ?\r\n        document.dir :\r\n        document.getElementsByTagName(\"html\")[0].getAttribute(\"dir\");\r\n    return direction;\r\n}\r\n\r\nexport function setDocumentDir(dir: \"ltr\" | \"rtl\" | \"auto\"){\r\n// export function setDocumentDir(dir){\r\n    if(!hasDocument){\r\n        currentDir = dir;\r\n        return;\r\n    }\r\n\r\n    const html = document.getElementsByTagName(\"html\")[0];\r\n    html.setAttribute(\"dir\", dir);\r\n}\r\n\r\nexport function addWindowEventListener(event:string, callback: () => mixed){\r\n    if(!hasWindow){\r\n\r\n        callback();\r\n        return;\r\n    }\r\n    window.addEventListener(event, callback);\r\n}\r\n\r\nexport function removeWindowEventListener(event:string, callback: () => mixed){\r\n    if(!hasWindow){\r\n        return;\r\n    }\r\n    window.removeEventListener(event, callback);\r\n}\r\n\r\n\r\n\r\n","const domObjects = {\n  init,\n  document: null,\n  DocumentFragment: null,\n  SVGElement: null,\n  SVGSVGElement: null,\n  SVGElementInstance: null,\n  Element: null,\n  HTMLElement: null,\n  Event: null,\n  Touch: null,\n  PointerEvent: null\n};\n\nfunction blank() {}\n\nexport default domObjects;\n\nfunction init(window) {\n  const win = window;\n  domObjects.document = win.document;\n  domObjects.DocumentFragment = win.DocumentFragment || blank;\n  domObjects.SVGElement = win.SVGElement || blank;\n  domObjects.SVGSVGElement = win.SVGSVGElement || blank;\n  domObjects.SVGElementInstance = win.SVGElementInstance || blank;\n  domObjects.Element = win.Element || blank;\n  domObjects.HTMLElement = win.HTMLElement || domObjects.Element;\n  domObjects.Event = win.Event;\n  domObjects.Touch = win.Touch || blank;\n  domObjects.PointerEvent = win.PointerEvent || win.MSPointerEvent;\n}\n//# sourceMappingURL=domObjects.js.map","export default (thing => !!(thing && thing.Window) && thing instanceof thing.Window);\n//# sourceMappingURL=isWindow.js.map","import isWindow from \"./isWindow.js\";\nexport let realWindow = undefined;\nlet win = undefined;\nexport { win as window };\nexport function init(window) {\n  // get wrapped window if using Shadow DOM polyfill\n  realWindow = window; // create a TextNode\n\n  const el = window.document.createTextNode(''); // check if it's wrapped by a polyfill\n\n  if (el.ownerDocument !== window.document && typeof window.wrap === 'function' && window.wrap(el) === el) {\n    // use wrapped window\n    window = window.wrap(window);\n  }\n\n  win = window;\n}\n\nif (typeof window !== 'undefined' && !!window) {\n  init(window);\n}\n\nexport function getWindow(node) {\n  if (isWindow(node)) {\n    return node;\n  }\n\n  const rootNode = node.ownerDocument || node;\n  return rootNode.defaultView || win.window;\n}\n//# sourceMappingURL=window.js.map","import isWindow from \"./isWindow.js\";\nimport * as win from \"./window.js\";\n\nconst window = thing => thing === win.window || isWindow(thing);\n\nconst docFrag = thing => object(thing) && thing.nodeType === 11;\n\nconst object = thing => !!thing && typeof thing === 'object';\n\nconst func = thing => typeof thing === 'function';\n\nconst number = thing => typeof thing === 'number';\n\nconst bool = thing => typeof thing === 'boolean';\n\nconst string = thing => typeof thing === 'string';\n\nconst element = thing => {\n  if (!thing || typeof thing !== 'object') {\n    return false;\n  } // eslint-disable-next-line import/no-named-as-default-member\n\n\n  const _window = win.getWindow(thing) || win.window;\n\n  return /object|function/.test(typeof _window.Element) ? thing instanceof _window.Element // DOM2\n  : thing.nodeType === 1 && typeof thing.nodeName === 'string';\n};\n\nconst plainObject = thing => object(thing) && !!thing.constructor && /function Object\\b/.test(thing.constructor.toString());\n\nconst array = thing => object(thing) && typeof thing.length !== 'undefined' && func(thing.splice);\n\nexport default {\n  window,\n  docFrag,\n  object,\n  func,\n  number,\n  bool,\n  string,\n  element,\n  plainObject,\n  array\n};\n//# sourceMappingURL=is.js.map","import domObjects from \"./domObjects.js\";\nimport is from \"./is.js\";\nimport * as win from \"./window.js\";\nconst browser = {\n  init,\n  supportsTouch: null,\n  supportsPointerEvent: null,\n  isIOS7: null,\n  isIOS: null,\n  isIe9: null,\n  isOperaMobile: null,\n  prefixedMatchesSelector: null,\n  pEventTypes: null,\n  wheelEvent: null\n};\n\nfunction init(window) {\n  const Element = domObjects.Element;\n  const navigator = win.window.navigator; // Does the browser support touch input?\n\n  browser.supportsTouch = 'ontouchstart' in window || is.func(window.DocumentTouch) && domObjects.document instanceof window.DocumentTouch; // Does the browser support PointerEvents\n\n  browser.supportsPointerEvent = navigator.pointerEnabled !== false && !!domObjects.PointerEvent;\n  browser.isIOS = /iP(hone|od|ad)/.test(navigator.platform); // scrolling doesn't change the result of getClientRects on iOS 7\n\n  browser.isIOS7 = /iP(hone|od|ad)/.test(navigator.platform) && /OS 7[^\\d]/.test(navigator.appVersion);\n  browser.isIe9 = /MSIE 9/.test(navigator.userAgent); // Opera Mobile must be handled differently\n\n  browser.isOperaMobile = navigator.appName === 'Opera' && browser.supportsTouch && /Presto/.test(navigator.userAgent); // prefix matchesSelector\n\n  browser.prefixedMatchesSelector = 'matches' in Element.prototype ? 'matches' : 'webkitMatchesSelector' in Element.prototype ? 'webkitMatchesSelector' : 'mozMatchesSelector' in Element.prototype ? 'mozMatchesSelector' : 'oMatchesSelector' in Element.prototype ? 'oMatchesSelector' : 'msMatchesSelector';\n  browser.pEventTypes = browser.supportsPointerEvent ? domObjects.PointerEvent === window.MSPointerEvent ? {\n    up: 'MSPointerUp',\n    down: 'MSPointerDown',\n    over: 'mouseover',\n    out: 'mouseout',\n    move: 'MSPointerMove',\n    cancel: 'MSPointerCancel'\n  } : {\n    up: 'pointerup',\n    down: 'pointerdown',\n    over: 'pointerover',\n    out: 'pointerout',\n    move: 'pointermove',\n    cancel: 'pointercancel'\n  } : null; // because Webkit and Opera still use 'mousewheel' event type\n\n  browser.wheelEvent = 'onmousewheel' in domObjects.document ? 'mousewheel' : 'wheel';\n}\n\nexport default browser;\n//# sourceMappingURL=browser.js.map","export const contains = (array, target) => array.indexOf(target) !== -1;\nexport const remove = (array, target) => array.splice(array.indexOf(target), 1);\nexport const merge = (target, source) => {\n  for (const item of source) {\n    target.push(item);\n  }\n\n  return target;\n};\nexport const from = source => merge([], source);\nexport const findIndex = (array, func) => {\n  for (let i = 0; i < array.length; i++) {\n    if (func(array[i], i, array)) {\n      return i;\n    }\n  }\n\n  return -1;\n};\nexport const find = (array, func) => array[findIndex(array, func)];\n//# sourceMappingURL=arr.js.map","import * as arr from \"./arr.js\";\nimport is from \"./is.js\"; // tslint:disable-next-line ban-types\n\nexport default function clone(source) {\n  const dest = {};\n\n  for (const prop in source) {\n    const value = source[prop];\n\n    if (is.plainObject(value)) {\n      dest[prop] = clone(value);\n    } else if (is.array(value)) {\n      dest[prop] = arr.from(value);\n    } else {\n      dest[prop] = value;\n    }\n  }\n\n  return dest;\n}\n//# sourceMappingURL=clone.js.map","export default function extend(dest, source) {\n  for (const prop in source) {\n    dest[prop] = source[prop];\n  }\n\n  const ret = dest;\n  return ret;\n}\n//# sourceMappingURL=extend.js.map","let lastTime = 0;\nlet request;\nlet cancel;\n\nfunction init(window) {\n  request = window.requestAnimationFrame;\n  cancel = window.cancelAnimationFrame;\n\n  if (!request) {\n    const vendors = ['ms', 'moz', 'webkit', 'o'];\n\n    for (const vendor of vendors) {\n      request = window[`${vendor}RequestAnimationFrame`];\n      cancel = window[`${vendor}CancelAnimationFrame`] || window[`${vendor}CancelRequestAnimationFrame`];\n    }\n  }\n\n  request = request && request.bind(window);\n  cancel = cancel && cancel.bind(window);\n\n  if (!request) {\n    request = callback => {\n      const currTime = Date.now();\n      const timeToCall = Math.max(0, 16 - (currTime - lastTime)); // eslint-disable-next-line node/no-callback-literal\n\n      const token = window.setTimeout(() => {\n        callback(currTime + timeToCall);\n      }, timeToCall);\n      lastTime = currTime + timeToCall;\n      return token;\n    };\n\n    cancel = token => clearTimeout(token);\n  }\n}\n\nexport default {\n  request: callback => request(callback),\n  cancel: token => cancel(token),\n  init\n};\n//# sourceMappingURL=raf.js.map","import extend from \"./extend.js\";\nimport is from \"./is.js\";\nexport default function normalize(type, listeners, result) {\n  result = result || {};\n\n  if (is.string(type) && type.search(' ') !== -1) {\n    type = split(type);\n  }\n\n  if (is.array(type)) {\n    return type.reduce((acc, t) => extend(acc, normalize(t, listeners, result)), result);\n  } // ({ type: fn }) -> ('', { type: fn })\n\n\n  if (is.object(type)) {\n    listeners = type;\n    type = '';\n  }\n\n  if (is.func(listeners)) {\n    result[type] = result[type] || [];\n    result[type].push(listeners);\n  } else if (is.array(listeners)) {\n    for (const l of listeners) {\n      normalize(type, l, result);\n    }\n  } else if (is.object(listeners)) {\n    for (const prefix in listeners) {\n      const combinedTypes = split(prefix).map(p => `${type}${p}`);\n      normalize(combinedTypes, listeners[prefix], result);\n    }\n  }\n\n  return result;\n}\n\nfunction split(type) {\n  return type.trim().split(/ +/);\n}\n//# sourceMappingURL=normalizeListeners.js.map","import * as arr from \"../utils/arr.js\";\nimport extend from \"../utils/extend.js\";\nimport normalize from \"../utils/normalizeListeners.js\";\n\nfunction fireUntilImmediateStopped(event, listeners) {\n  for (const listener of listeners) {\n    if (event.immediatePropagationStopped) {\n      break;\n    }\n\n    listener(event);\n  }\n}\n\nexport class Eventable {\n  constructor(options) {\n    this.options = void 0;\n    this.types = {};\n    this.propagationStopped = false;\n    this.immediatePropagationStopped = false;\n    this.global = void 0;\n    this.options = extend({}, options || {});\n  }\n\n  fire(event) {\n    let listeners;\n    const global = this.global; // Interactable#on() listeners\n    // tslint:disable no-conditional-assignment\n\n    if (listeners = this.types[event.type]) {\n      fireUntilImmediateStopped(event, listeners);\n    } // interact.on() listeners\n\n\n    if (!event.propagationStopped && global && (listeners = global[event.type])) {\n      fireUntilImmediateStopped(event, listeners);\n    }\n  }\n\n  on(type, listener) {\n    const listeners = normalize(type, listener);\n\n    for (type in listeners) {\n      this.types[type] = arr.merge(this.types[type] || [], listeners[type]);\n    }\n  }\n\n  off(type, listener) {\n    const listeners = normalize(type, listener);\n\n    for (type in listeners) {\n      const eventList = this.types[type];\n\n      if (!eventList || !eventList.length) {\n        continue;\n      }\n\n      for (const subListener of listeners[type]) {\n        const index = eventList.indexOf(subListener);\n\n        if (index !== -1) {\n          eventList.splice(index, 1);\n        }\n      }\n    }\n  }\n\n  getRect(_element) {\n    return null;\n  }\n\n}\n//# sourceMappingURL=Eventable.js.map","import browser from \"./browser.js\";\nimport domObjects from \"./domObjects.js\";\nimport is from \"./is.js\";\nimport * as win from \"./window.js\";\nexport function nodeContains(parent, child) {\n  if (parent.contains) {\n    return parent.contains(child);\n  }\n\n  while (child) {\n    if (child === parent) {\n      return true;\n    }\n\n    child = child.parentNode;\n  }\n\n  return false;\n}\nexport function closest(element, selector) {\n  while (is.element(element)) {\n    if (matchesSelector(element, selector)) {\n      return element;\n    }\n\n    element = parentNode(element);\n  }\n\n  return null;\n}\nexport function parentNode(node) {\n  let parent = node.parentNode;\n\n  if (is.docFrag(parent)) {\n    // skip past #shado-root fragments\n    // tslint:disable-next-line\n    while ((parent = parent.host) && is.docFrag(parent)) {\n      continue;\n    }\n\n    return parent;\n  }\n\n  return parent;\n}\nexport function matchesSelector(element, selector) {\n  // remove /deep/ from selectors if shadowDOM polyfill is used\n  if (win.window !== win.realWindow) {\n    selector = selector.replace(/\\/deep\\//g, ' ');\n  }\n\n  return element[browser.prefixedMatchesSelector](selector);\n}\n\nconst getParent = el => el.parentNode || el.host; // Test for the element that's \"above\" all other qualifiers\n\n\nexport function indexOfDeepestElement(elements) {\n  let deepestNodeParents = [];\n  let deepestNodeIndex;\n\n  for (let i = 0; i < elements.length; i++) {\n    const currentNode = elements[i];\n    const deepestNode = elements[deepestNodeIndex]; // node may appear in elements array multiple times\n\n    if (!currentNode || i === deepestNodeIndex) {\n      continue;\n    }\n\n    if (!deepestNode) {\n      deepestNodeIndex = i;\n      continue;\n    }\n\n    const currentNodeParent = getParent(currentNode);\n    const deepestNodeParent = getParent(deepestNode); // check if the deepest or current are document.documentElement/rootElement\n    // - if the current node is, do nothing and continue\n\n    if (currentNodeParent === currentNode.ownerDocument) {\n      continue;\n    } // - if deepest is, update with the current node and continue to next\n    else if (deepestNodeParent === currentNode.ownerDocument) {\n        deepestNodeIndex = i;\n        continue;\n      } // compare zIndex of siblings\n\n\n    if (currentNodeParent === deepestNodeParent) {\n      if (zIndexIsHigherThan(currentNode, deepestNode)) {\n        deepestNodeIndex = i;\n      }\n\n      continue;\n    } // populate the ancestry array for the latest deepest node\n\n\n    deepestNodeParents = deepestNodeParents.length ? deepestNodeParents : getNodeParents(deepestNode);\n    let ancestryStart; // if the deepest node is an HTMLElement and the current node is a non root svg element\n\n    if (deepestNode instanceof domObjects.HTMLElement && currentNode instanceof domObjects.SVGElement && !(currentNode instanceof domObjects.SVGSVGElement)) {\n      // TODO: is this check necessary? Was this for HTML elements embedded in SVG?\n      if (currentNode === deepestNodeParent) {\n        continue;\n      }\n\n      ancestryStart = currentNode.ownerSVGElement;\n    } else {\n      ancestryStart = currentNode;\n    }\n\n    const currentNodeParents = getNodeParents(ancestryStart, deepestNode.ownerDocument);\n    let commonIndex = 0; // get (position of closest common ancestor) + 1\n\n    while (currentNodeParents[commonIndex] && currentNodeParents[commonIndex] === deepestNodeParents[commonIndex]) {\n      commonIndex++;\n    }\n\n    const parents = [currentNodeParents[commonIndex - 1], currentNodeParents[commonIndex], deepestNodeParents[commonIndex]];\n    let child = parents[0].lastChild;\n\n    while (child) {\n      if (child === parents[1]) {\n        deepestNodeIndex = i;\n        deepestNodeParents = currentNodeParents;\n        break;\n      } else if (child === parents[2]) {\n        break;\n      }\n\n      child = child.previousSibling;\n    }\n  }\n\n  return deepestNodeIndex;\n}\n\nfunction getNodeParents(node, limit) {\n  const parents = [];\n  let parent = node;\n  let parentParent;\n\n  while ((parentParent = getParent(parent)) && parent !== limit && parentParent !== parent.ownerDocument) {\n    parents.unshift(parent);\n    parent = parentParent;\n  }\n\n  return parents;\n}\n\nfunction zIndexIsHigherThan(higherNode, lowerNode) {\n  const higherIndex = parseInt(win.getWindow(higherNode).getComputedStyle(higherNode).zIndex, 10) || 0;\n  const lowerIndex = parseInt(win.getWindow(lowerNode).getComputedStyle(lowerNode).zIndex, 10) || 0;\n  return higherIndex >= lowerIndex;\n}\n\nexport function matchesUpTo(element, selector, limit) {\n  while (is.element(element)) {\n    if (matchesSelector(element, selector)) {\n      return true;\n    }\n\n    element = parentNode(element);\n\n    if (element === limit) {\n      return matchesSelector(element, selector);\n    }\n  }\n\n  return false;\n}\nexport function getActualElement(element) {\n  return element.correspondingUseElement || element;\n}\nexport function getScrollXY(relevantWindow) {\n  relevantWindow = relevantWindow || win.window;\n  return {\n    x: relevantWindow.scrollX || relevantWindow.document.documentElement.scrollLeft,\n    y: relevantWindow.scrollY || relevantWindow.document.documentElement.scrollTop\n  };\n}\nexport function getElementClientRect(element) {\n  const clientRect = element instanceof domObjects.SVGElement ? element.getBoundingClientRect() : element.getClientRects()[0];\n  return clientRect && {\n    left: clientRect.left,\n    right: clientRect.right,\n    top: clientRect.top,\n    bottom: clientRect.bottom,\n    width: clientRect.width || clientRect.right - clientRect.left,\n    height: clientRect.height || clientRect.bottom - clientRect.top\n  };\n}\nexport function getElementRect(element) {\n  const clientRect = getElementClientRect(element);\n\n  if (!browser.isIOS7 && clientRect) {\n    const scroll = getScrollXY(win.getWindow(element));\n    clientRect.left += scroll.x;\n    clientRect.right += scroll.x;\n    clientRect.top += scroll.y;\n    clientRect.bottom += scroll.y;\n  }\n\n  return clientRect;\n}\nexport function getPath(node) {\n  const path = [];\n\n  while (node) {\n    path.push(node);\n    node = parentNode(node);\n  }\n\n  return path;\n}\nexport function trySelector(value) {\n  if (!is.string(value)) {\n    return false;\n  } // an exception will be raised if it is invalid\n\n\n  domObjects.document.querySelector(value);\n  return true;\n}\n//# sourceMappingURL=domUtils.js.map","import { closest, getElementRect, parentNode } from \"./domUtils.js\";\nimport extend from \"./extend.js\";\nimport is from \"./is.js\";\nexport function getStringOptionResult(value, target, element) {\n  if (value === 'parent') {\n    return parentNode(element);\n  }\n\n  if (value === 'self') {\n    return target.getRect(element);\n  }\n\n  return closest(element, value);\n}\nexport function resolveRectLike(value, target, element, functionArgs) {\n  let returnValue = value;\n\n  if (is.string(returnValue)) {\n    returnValue = getStringOptionResult(returnValue, target, element);\n  } else if (is.func(returnValue)) {\n    returnValue = returnValue(...functionArgs);\n  }\n\n  if (is.element(returnValue)) {\n    returnValue = getElementRect(returnValue);\n  }\n\n  return returnValue;\n}\nexport function rectToXY(rect) {\n  return rect && {\n    x: 'x' in rect ? rect.x : rect.left,\n    y: 'y' in rect ? rect.y : rect.top\n  };\n}\nexport function xywhToTlbr(rect) {\n  if (rect && !('left' in rect && 'top' in rect)) {\n    rect = extend({}, rect);\n    rect.left = rect.x || 0;\n    rect.top = rect.y || 0;\n    rect.right = rect.right || rect.left + rect.width;\n    rect.bottom = rect.bottom || rect.top + rect.height;\n  }\n\n  return rect;\n}\nexport function tlbrToXywh(rect) {\n  if (rect && !('x' in rect && 'y' in rect)) {\n    rect = extend({}, rect);\n    rect.x = rect.left || 0;\n    rect.y = rect.top || 0;\n    rect.width = rect.width || (rect.right || 0) - rect.x;\n    rect.height = rect.height || (rect.bottom || 0) - rect.y;\n  }\n\n  return rect;\n}\nexport function addEdges(edges, rect, delta) {\n  if (edges.left) {\n    rect.left += delta.x;\n  }\n\n  if (edges.right) {\n    rect.right += delta.x;\n  }\n\n  if (edges.top) {\n    rect.top += delta.y;\n  }\n\n  if (edges.bottom) {\n    rect.bottom += delta.y;\n  }\n\n  rect.width = rect.right - rect.left;\n  rect.height = rect.bottom - rect.top;\n}\n//# sourceMappingURL=rect.js.map","import { rectToXY, resolveRectLike } from \"./rect.js\";\nexport default function (target, element, actionName) {\n  const actionOptions = target.options[actionName];\n  const actionOrigin = actionOptions && actionOptions.origin;\n  const origin = actionOrigin || target.options.origin;\n  const originRect = resolveRectLike(origin, target, element, [target && element]);\n  return rectToXY(originRect) || {\n    x: 0,\n    y: 0\n  };\n}\n//# sourceMappingURL=getOriginXY.js.map","export default ((x, y) => Math.sqrt(x * x + y * y));\n//# sourceMappingURL=hypot.js.map","export class BaseEvent {\n  constructor(interaction) {\n    this.type = void 0;\n    this.target = void 0;\n    this.currentTarget = void 0;\n    this.interactable = void 0;\n    this._interaction = void 0;\n    this.timeStamp = void 0;\n    this.immediatePropagationStopped = false;\n    this.propagationStopped = false;\n    this._interaction = interaction;\n  }\n\n  preventDefault() {}\n  /**\n   * Don't call any other listeners (even on the current target)\n   */\n\n\n  stopPropagation() {\n    this.propagationStopped = true;\n  }\n  /**\n   * Don't call listeners on the remaining targets\n   */\n\n\n  stopImmediatePropagation() {\n    this.immediatePropagationStopped = this.propagationStopped = true;\n  }\n\n} // defined outside of class definition to avoid assignment of undefined during\n// construction\n\n// getters and setters defined here to support typescript 3.6 and below which\n// don't support getter and setters in .d.ts files\nObject.defineProperty(BaseEvent.prototype, 'interaction', {\n  get() {\n    return this._interaction._proxy;\n  },\n\n  set() {}\n\n});\n//# sourceMappingURL=BaseEvent.js.map","// eslint-disable-next-line @typescript-eslint/no-empty-interface\n// export interface Options extends BaseDefaults, PerActionDefaults {}\nexport const defaults = {\n  base: {\n    preventDefault: 'auto',\n    deltaSource: 'page'\n  },\n  perAction: {\n    enabled: false,\n    origin: {\n      x: 0,\n      y: 0\n    }\n  },\n  actions: {}\n};\n//# sourceMappingURL=defaultOptions.js.map","import extend from \"../utils/extend.js\";\nimport getOriginXY from \"../utils/getOriginXY.js\";\nimport hypot from \"../utils/hypot.js\";\nimport { BaseEvent } from \"./BaseEvent.js\";\nimport { defaults } from \"./defaultOptions.js\";\nexport class InteractEvent extends BaseEvent {\n  // resize\n\n  /** */\n  constructor(interaction, event, actionName, phase, element, preEnd, type) {\n    super(interaction);\n    this.target = void 0;\n    this.currentTarget = void 0;\n    this.relatedTarget = null;\n    this.screenX = void 0;\n    this.screenY = void 0;\n    this.button = void 0;\n    this.buttons = void 0;\n    this.ctrlKey = void 0;\n    this.shiftKey = void 0;\n    this.altKey = void 0;\n    this.metaKey = void 0;\n    this.page = void 0;\n    this.client = void 0;\n    this.delta = void 0;\n    this.rect = void 0;\n    this.x0 = void 0;\n    this.y0 = void 0;\n    this.t0 = void 0;\n    this.dt = void 0;\n    this.duration = void 0;\n    this.clientX0 = void 0;\n    this.clientY0 = void 0;\n    this.velocity = void 0;\n    this.speed = void 0;\n    this.swipe = void 0;\n    this.timeStamp = void 0;\n    this.axes = void 0;\n    this.preEnd = void 0;\n    element = element || interaction.element;\n    const target = interaction.interactable;\n    const deltaSource = (target && target.options || defaults).deltaSource;\n    const origin = getOriginXY(target, element, actionName);\n    const starting = phase === 'start';\n    const ending = phase === 'end';\n    const prevEvent = starting ? this : interaction.prevEvent;\n    const coords = starting ? interaction.coords.start : ending ? {\n      page: prevEvent.page,\n      client: prevEvent.client,\n      timeStamp: interaction.coords.cur.timeStamp\n    } : interaction.coords.cur;\n    this.page = extend({}, coords.page);\n    this.client = extend({}, coords.client);\n    this.rect = extend({}, interaction.rect);\n    this.timeStamp = coords.timeStamp;\n\n    if (!ending) {\n      this.page.x -= origin.x;\n      this.page.y -= origin.y;\n      this.client.x -= origin.x;\n      this.client.y -= origin.y;\n    }\n\n    this.ctrlKey = event.ctrlKey;\n    this.altKey = event.altKey;\n    this.shiftKey = event.shiftKey;\n    this.metaKey = event.metaKey;\n    this.button = event.button;\n    this.buttons = event.buttons;\n    this.target = element;\n    this.currentTarget = element;\n    this.preEnd = preEnd;\n    this.type = type || actionName + (phase || '');\n    this.interactable = target;\n    this.t0 = starting ? interaction.pointers[interaction.pointers.length - 1].downTime : prevEvent.t0;\n    this.x0 = interaction.coords.start.page.x - origin.x;\n    this.y0 = interaction.coords.start.page.y - origin.y;\n    this.clientX0 = interaction.coords.start.client.x - origin.x;\n    this.clientY0 = interaction.coords.start.client.y - origin.y;\n\n    if (starting || ending) {\n      this.delta = {\n        x: 0,\n        y: 0\n      };\n    } else {\n      this.delta = {\n        x: this[deltaSource].x - prevEvent[deltaSource].x,\n        y: this[deltaSource].y - prevEvent[deltaSource].y\n      };\n    }\n\n    this.dt = interaction.coords.delta.timeStamp;\n    this.duration = this.timeStamp - this.t0; // velocity and speed in pixels per second\n\n    this.velocity = extend({}, interaction.coords.velocity[deltaSource]);\n    this.speed = hypot(this.velocity.x, this.velocity.y);\n    this.swipe = ending || phase === 'inertiastart' ? this.getSwipe() : null;\n  }\n\n  getSwipe() {\n    const interaction = this._interaction;\n\n    if (interaction.prevEvent.speed < 600 || this.timeStamp - interaction.prevEvent.timeStamp > 150) {\n      return null;\n    }\n\n    let angle = 180 * Math.atan2(interaction.prevEvent.velocityY, interaction.prevEvent.velocityX) / Math.PI;\n    const overlap = 22.5;\n\n    if (angle < 0) {\n      angle += 360;\n    }\n\n    const left = 135 - overlap <= angle && angle < 225 + overlap;\n    const up = 225 - overlap <= angle && angle < 315 + overlap;\n    const right = !left && (315 - overlap <= angle || angle < 45 + overlap);\n    const down = !up && 45 - overlap <= angle && angle < 135 + overlap;\n    return {\n      up,\n      down,\n      left,\n      right,\n      angle,\n      speed: interaction.prevEvent.speed,\n      velocity: {\n        x: interaction.prevEvent.velocityX,\n        y: interaction.prevEvent.velocityY\n      }\n    };\n  }\n\n  preventDefault() {}\n  /**\n   * Don't call listeners on the remaining targets\n   */\n\n\n  stopImmediatePropagation() {\n    this.immediatePropagationStopped = this.propagationStopped = true;\n  }\n  /**\n   * Don't call any other listeners (even on the current target)\n   */\n\n\n  stopPropagation() {\n    this.propagationStopped = true;\n  }\n\n} // getters and setters defined here to support typescript 3.6 and below which\n// don't support getter and setters in .d.ts files\n\nObject.defineProperties(InteractEvent.prototype, {\n  pageX: {\n    get() {\n      return this.page.x;\n    },\n\n    set(value) {\n      this.page.x = value;\n    }\n\n  },\n  pageY: {\n    get() {\n      return this.page.y;\n    },\n\n    set(value) {\n      this.page.y = value;\n    }\n\n  },\n  clientX: {\n    get() {\n      return this.client.x;\n    },\n\n    set(value) {\n      this.client.x = value;\n    }\n\n  },\n  clientY: {\n    get() {\n      return this.client.y;\n    },\n\n    set(value) {\n      this.client.y = value;\n    }\n\n  },\n  dx: {\n    get() {\n      return this.delta.x;\n    },\n\n    set(value) {\n      this.delta.x = value;\n    }\n\n  },\n  dy: {\n    get() {\n      return this.delta.y;\n    },\n\n    set(value) {\n      this.delta.y = value;\n    }\n\n  },\n  velocityX: {\n    get() {\n      return this.velocity.x;\n    },\n\n    set(value) {\n      this.velocity.x = value;\n    }\n\n  },\n  velocityY: {\n    get() {\n      return this.velocity.y;\n    },\n\n    set(value) {\n      this.velocity.y = value;\n    }\n\n  }\n});\n//# sourceMappingURL=InteractEvent.js.map","export default function isNonNativeEvent(type, actions) {\n  if (actions.phaselessTypes[type]) {\n    return true;\n  }\n\n  for (const name in actions.map) {\n    if (type.indexOf(name) === 0 && type.substr(name.length) in actions.phases) {\n      return true;\n    }\n  }\n\n  return false;\n}\n//# sourceMappingURL=isNonNativeEvent.js.map","/* eslint-disable no-dupe-class-members */\nimport * as arr from \"../utils/arr.js\";\nimport browser from \"../utils/browser.js\";\nimport clone from \"../utils/clone.js\";\nimport { getElementRect, matchesUpTo, nodeContains, trySelector } from \"../utils/domUtils.js\";\nimport extend from \"../utils/extend.js\";\nimport is from \"../utils/is.js\";\nimport normalizeListeners from \"../utils/normalizeListeners.js\";\nimport { getWindow } from \"../utils/window.js\";\nimport { Eventable } from \"./Eventable.js\";\nimport isNonNativeEvent from \"./isNonNativeEvent.js\";\n\n/** */\nexport class Interactable {\n  /** @internal */\n  get _defaults() {\n    return {\n      base: {},\n      perAction: {},\n      actions: {}\n    };\n  }\n\n  /** */\n  constructor(target, options, defaultContext, scopeEvents) {\n    this.options = void 0;\n    this._actions = void 0;\n    this.target = void 0;\n    this.events = new Eventable();\n    this._context = void 0;\n    this._win = void 0;\n    this._doc = void 0;\n    this._scopeEvents = void 0;\n    this._rectChecker = void 0;\n    this._actions = options.actions;\n    this.target = target;\n    this._context = options.context || defaultContext;\n    this._win = getWindow(trySelector(target) ? this._context : target);\n    this._doc = this._win.document;\n    this._scopeEvents = scopeEvents;\n    this.set(options);\n  }\n\n  setOnEvents(actionName, phases) {\n    if (is.func(phases.onstart)) {\n      this.on(`${actionName}start`, phases.onstart);\n    }\n\n    if (is.func(phases.onmove)) {\n      this.on(`${actionName}move`, phases.onmove);\n    }\n\n    if (is.func(phases.onend)) {\n      this.on(`${actionName}end`, phases.onend);\n    }\n\n    if (is.func(phases.oninertiastart)) {\n      this.on(`${actionName}inertiastart`, phases.oninertiastart);\n    }\n\n    return this;\n  }\n\n  updatePerActionListeners(actionName, prev, cur) {\n    if (is.array(prev) || is.object(prev)) {\n      this.off(actionName, prev);\n    }\n\n    if (is.array(cur) || is.object(cur)) {\n      this.on(actionName, cur);\n    }\n  }\n\n  setPerAction(actionName, options) {\n    const defaults = this._defaults; // for all the default per-action options\n\n    for (const optionName_ in options) {\n      const optionName = optionName_;\n      const actionOptions = this.options[actionName];\n      const optionValue = options[optionName]; // remove old event listeners and add new ones\n\n      if (optionName === 'listeners') {\n        this.updatePerActionListeners(actionName, actionOptions.listeners, optionValue);\n      } // if the option value is an array\n\n\n      if (is.array(optionValue)) {\n        actionOptions[optionName] = arr.from(optionValue);\n      } // if the option value is an object\n      else if (is.plainObject(optionValue)) {\n          // copy the object\n          actionOptions[optionName] = extend(actionOptions[optionName] || {}, clone(optionValue)); // set anabled field to true if it exists in the defaults\n\n          if (is.object(defaults.perAction[optionName]) && 'enabled' in defaults.perAction[optionName]) {\n            actionOptions[optionName].enabled = optionValue.enabled !== false;\n          }\n        } // if the option value is a boolean and the default is an object\n        else if (is.bool(optionValue) && is.object(defaults.perAction[optionName])) {\n            actionOptions[optionName].enabled = optionValue;\n          } // if it's anything else, do a plain assignment\n          else {\n              actionOptions[optionName] = optionValue;\n            }\n    }\n  }\n  /**\n   * The default function to get an Interactables bounding rect. Can be\n   * overridden using {@link Interactable.rectChecker}.\n   *\n   * @param {Element} [element] The element to measure.\n   * @return {Rect} The object's bounding rectangle.\n   */\n\n\n  getRect(element) {\n    element = element || (is.element(this.target) ? this.target : null);\n\n    if (is.string(this.target)) {\n      element = element || this._context.querySelector(this.target);\n    }\n\n    return getElementRect(element);\n  }\n  /**\n   * Returns or sets the function used to calculate the interactable's\n   * element's rectangle\n   *\n   * @param {function} [checker] A function which returns this Interactable's\n   * bounding rectangle. See {@link Interactable.getRect}\n   * @return {function | object} The checker function or this Interactable\n   */\n\n\n  rectChecker(checker) {\n    if (is.func(checker)) {\n      this._rectChecker = checker;\n\n      this.getRect = element => {\n        const rect = extend({}, this._rectChecker(element));\n\n        if (!('width' in rect)) {\n          rect.width = rect.right - rect.left;\n          rect.height = rect.bottom - rect.top;\n        }\n\n        return rect;\n      };\n\n      return this;\n    }\n\n    if (checker === null) {\n      delete this.getRect;\n      delete this._rectChecker;\n      return this;\n    }\n\n    return this.getRect;\n  }\n\n  _backCompatOption(optionName, newValue) {\n    if (trySelector(newValue) || is.object(newValue)) {\n      this.options[optionName] = newValue;\n\n      for (const action in this._actions.map) {\n        this.options[action][optionName] = newValue;\n      }\n\n      return this;\n    }\n\n    return this.options[optionName];\n  }\n  /**\n   * Gets or sets the origin of the Interactable's element.  The x and y\n   * of the origin will be subtracted from action event coordinates.\n   *\n   * @param {Element | object | string} [origin] An HTML or SVG Element whose\n   * rect will be used, an object eg. { x: 0, y: 0 } or string 'parent', 'self'\n   * or any CSS selector\n   *\n   * @return {object} The current origin or this Interactable\n   */\n\n\n  origin(newValue) {\n    return this._backCompatOption('origin', newValue);\n  }\n  /**\n   * Returns or sets the mouse coordinate types used to calculate the\n   * movement of the pointer.\n   *\n   * @param {string} [newValue] Use 'client' if you will be scrolling while\n   * interacting; Use 'page' if you want autoScroll to work\n   * @return {string | object} The current deltaSource or this Interactable\n   */\n\n\n  deltaSource(newValue) {\n    if (newValue === 'page' || newValue === 'client') {\n      this.options.deltaSource = newValue;\n      return this;\n    }\n\n    return this.options.deltaSource;\n  }\n  /**\n   * Gets the selector context Node of the Interactable. The default is\n   * `window.document`.\n   *\n   * @return {Node} The context Node of this Interactable\n   */\n\n\n  context() {\n    return this._context;\n  }\n\n  inContext(element) {\n    return this._context === element.ownerDocument || nodeContains(this._context, element);\n  }\n\n  testIgnoreAllow(options, targetNode, eventTarget) {\n    return !this.testIgnore(options.ignoreFrom, targetNode, eventTarget) && this.testAllow(options.allowFrom, targetNode, eventTarget);\n  }\n\n  testAllow(allowFrom, targetNode, element) {\n    if (!allowFrom) {\n      return true;\n    }\n\n    if (!is.element(element)) {\n      return false;\n    }\n\n    if (is.string(allowFrom)) {\n      return matchesUpTo(element, allowFrom, targetNode);\n    } else if (is.element(allowFrom)) {\n      return nodeContains(allowFrom, element);\n    }\n\n    return false;\n  }\n\n  testIgnore(ignoreFrom, targetNode, element) {\n    if (!ignoreFrom || !is.element(element)) {\n      return false;\n    }\n\n    if (is.string(ignoreFrom)) {\n      return matchesUpTo(element, ignoreFrom, targetNode);\n    } else if (is.element(ignoreFrom)) {\n      return nodeContains(ignoreFrom, element);\n    }\n\n    return false;\n  }\n  /**\n   * Calls listeners for the given InteractEvent type bound globally\n   * and directly to this Interactable\n   *\n   * @param {InteractEvent} iEvent The InteractEvent object to be fired on this\n   * Interactable\n   * @return {Interactable} this Interactable\n   */\n\n\n  fire(iEvent) {\n    this.events.fire(iEvent);\n    return this;\n  }\n\n  _onOff(method, typeArg, listenerArg, options) {\n    if (is.object(typeArg) && !is.array(typeArg)) {\n      options = listenerArg;\n      listenerArg = null;\n    }\n\n    const addRemove = method === 'on' ? 'add' : 'remove';\n    const listeners = normalizeListeners(typeArg, listenerArg);\n\n    for (let type in listeners) {\n      if (type === 'wheel') {\n        type = browser.wheelEvent;\n      }\n\n      for (const listener of listeners[type]) {\n        // if it is an action event type\n        if (isNonNativeEvent(type, this._actions)) {\n          this.events[method](type, listener);\n        } // delegated event\n        else if (is.string(this.target)) {\n            this._scopeEvents[`${addRemove}Delegate`](this.target, this._context, type, listener, options);\n          } // remove listener from this Interactable's element\n          else {\n              this._scopeEvents[addRemove](this.target, type, listener, options);\n            }\n      }\n    }\n\n    return this;\n  }\n  /**\n   * Binds a listener for an InteractEvent, pointerEvent or DOM event.\n   *\n   * @param {string | array | object} types The types of events to listen\n   * for\n   * @param {function | array | object} [listener] The event listener function(s)\n   * @param {object | boolean} [options] options object or useCapture flag for\n   * addEventListener\n   * @return {Interactable} This Interactable\n   */\n\n\n  on(types, listener, options) {\n    return this._onOff('on', types, listener, options);\n  }\n  /**\n   * Removes an InteractEvent, pointerEvent or DOM event listener.\n   *\n   * @param {string | array | object} types The types of events that were\n   * listened for\n   * @param {function | array | object} [listener] The event listener function(s)\n   * @param {object | boolean} [options] options object or useCapture flag for\n   * removeEventListener\n   * @return {Interactable} This Interactable\n   */\n\n\n  off(types, listener, options) {\n    return this._onOff('off', types, listener, options);\n  }\n  /**\n   * Reset the options of this Interactable\n   *\n   * @param {object} options The new settings to apply\n   * @return {object} This Interactable\n   */\n\n\n  set(options) {\n    const defaults = this._defaults;\n\n    if (!is.object(options)) {\n      options = {};\n    }\n\n    this.options = clone(defaults.base);\n\n    for (const actionName_ in this._actions.methodDict) {\n      const actionName = actionName_;\n      const methodName = this._actions.methodDict[actionName];\n      this.options[actionName] = {};\n      this.setPerAction(actionName, extend(extend({}, defaults.perAction), defaults.actions[actionName]));\n      this[methodName](options[actionName]);\n    }\n\n    for (const setting in options) {\n      if (is.func(this[setting])) {\n        this[setting](options[setting]);\n      }\n    }\n\n    return this;\n  }\n  /**\n   * Remove this interactable from the list of interactables and remove it's\n   * action capabilities and event listeners\n   */\n\n\n  unset() {\n    if (is.string(this.target)) {\n      // remove delegated events\n      for (const type in this._scopeEvents.delegatedEvents) {\n        const delegated = this._scopeEvents.delegatedEvents[type];\n\n        for (let i = delegated.length - 1; i >= 0; i--) {\n          const {\n            selector,\n            context,\n            listeners\n          } = delegated[i];\n\n          if (selector === this.target && context === this._context) {\n            delegated.splice(i, 1);\n          }\n\n          for (let l = listeners.length - 1; l >= 0; l--) {\n            this._scopeEvents.removeDelegate(this.target, this._context, type, listeners[l][0], listeners[l][1]);\n          }\n        }\n      }\n    } else {\n      this._scopeEvents.remove(this.target, 'all');\n    }\n  }\n\n}\n//# sourceMappingURL=Interactable.js.map","import * as arr from \"../utils/arr.js\";\nimport * as domUtils from \"../utils/domUtils.js\";\nimport extend from \"../utils/extend.js\";\nimport is from \"../utils/is.js\";\nexport class InteractableSet {\n  // all set interactables\n  constructor(scope) {\n    this.list = [];\n    this.selectorMap = {};\n    this.scope = void 0;\n    this.scope = scope;\n    scope.addListeners({\n      'interactable:unset': ({\n        interactable\n      }) => {\n        const {\n          target,\n          _context: context\n        } = interactable;\n        const targetMappings = is.string(target) ? this.selectorMap[target] : target[this.scope.id];\n        const targetIndex = arr.findIndex(targetMappings, m => m.context === context);\n\n        if (targetMappings[targetIndex]) {\n          // Destroying mappingInfo's context and interactable\n          targetMappings[targetIndex].context = null;\n          targetMappings[targetIndex].interactable = null;\n        }\n\n        targetMappings.splice(targetIndex, 1);\n      }\n    });\n  }\n\n  new(target, options) {\n    options = extend(options || {}, {\n      actions: this.scope.actions\n    });\n    const interactable = new this.scope.Interactable(target, options, this.scope.document, this.scope.events);\n    const mappingInfo = {\n      context: interactable._context,\n      interactable\n    };\n    this.scope.addDocument(interactable._doc);\n    this.list.push(interactable);\n\n    if (is.string(target)) {\n      if (!this.selectorMap[target]) {\n        this.selectorMap[target] = [];\n      }\n\n      this.selectorMap[target].push(mappingInfo);\n    } else {\n      if (!interactable.target[this.scope.id]) {\n        Object.defineProperty(target, this.scope.id, {\n          value: [],\n          configurable: true\n        });\n      }\n\n      target[this.scope.id].push(mappingInfo);\n    }\n\n    this.scope.fire('interactable:new', {\n      target,\n      options,\n      interactable,\n      win: this.scope._win\n    });\n    return interactable;\n  }\n\n  get(target, options) {\n    const context = options && options.context || this.scope.document;\n    const isSelector = is.string(target);\n    const targetMappings = isSelector ? this.selectorMap[target] : target[this.scope.id];\n\n    if (!targetMappings) {\n      return null;\n    }\n\n    const found = arr.find(targetMappings, m => m.context === context && (isSelector || m.interactable.inContext(target)));\n    return found && found.interactable;\n  }\n\n  forEachMatch(node, callback) {\n    for (const interactable of this.list) {\n      let ret;\n\n      if ((is.string(interactable.target) // target is a selector and the element matches\n      ? is.element(node) && domUtils.matchesSelector(node, interactable.target) : // target is the element\n      node === interactable.target) && // the element is in context\n      interactable.inContext(node)) {\n        ret = callback(interactable);\n      }\n\n      if (ret !== undefined) {\n        return ret;\n      }\n    }\n  }\n\n}\n//# sourceMappingURL=InteractableSet.js.map","function pointerExtend(dest, source) {\n  for (const prop in source) {\n    const prefixedPropREs = pointerExtend.prefixedPropREs;\n    let deprecated = false; // skip deprecated prefixed properties\n\n    for (const vendor in prefixedPropREs) {\n      if (prop.indexOf(vendor) === 0 && prefixedPropREs[vendor].test(prop)) {\n        deprecated = true;\n        break;\n      }\n    }\n\n    if (!deprecated && typeof source[prop] !== 'function') {\n      dest[prop] = source[prop];\n    }\n  }\n\n  return dest;\n}\n\npointerExtend.prefixedPropREs = {\n  webkit: /(Movement[XY]|Radius[XY]|RotationAngle|Force)$/,\n  moz: /(Pressure)$/\n};\nexport default pointerExtend;\n//# sourceMappingURL=pointerExtend.js.map","import browser from \"./browser.js\";\nimport dom from \"./domObjects.js\";\nimport * as domUtils from \"./domUtils.js\";\nimport hypot from \"./hypot.js\";\nimport is from \"./is.js\";\nimport pointerExtend from \"./pointerExtend.js\";\nexport function copyCoords(dest, src) {\n  dest.page = dest.page || {};\n  dest.page.x = src.page.x;\n  dest.page.y = src.page.y;\n  dest.client = dest.client || {};\n  dest.client.x = src.client.x;\n  dest.client.y = src.client.y;\n  dest.timeStamp = src.timeStamp;\n}\nexport function setCoordDeltas(targetObj, prev, cur) {\n  targetObj.page.x = cur.page.x - prev.page.x;\n  targetObj.page.y = cur.page.y - prev.page.y;\n  targetObj.client.x = cur.client.x - prev.client.x;\n  targetObj.client.y = cur.client.y - prev.client.y;\n  targetObj.timeStamp = cur.timeStamp - prev.timeStamp;\n}\nexport function setCoordVelocity(targetObj, delta) {\n  const dt = Math.max(delta.timeStamp / 1000, 0.001);\n  targetObj.page.x = delta.page.x / dt;\n  targetObj.page.y = delta.page.y / dt;\n  targetObj.client.x = delta.client.x / dt;\n  targetObj.client.y = delta.client.y / dt;\n  targetObj.timeStamp = dt;\n}\nexport function setZeroCoords(targetObj) {\n  targetObj.page.x = 0;\n  targetObj.page.y = 0;\n  targetObj.client.x = 0;\n  targetObj.client.y = 0;\n}\nexport function isNativePointer(pointer) {\n  return pointer instanceof dom.Event || pointer instanceof dom.Touch;\n} // Get specified X/Y coords for mouse or event.touches[0]\n\nexport function getXY(type, pointer, xy) {\n  xy = xy || {};\n  type = type || 'page';\n  xy.x = pointer[type + 'X'];\n  xy.y = pointer[type + 'Y'];\n  return xy;\n}\nexport function getPageXY(pointer, page) {\n  page = page || {\n    x: 0,\n    y: 0\n  }; // Opera Mobile handles the viewport and scrolling oddly\n\n  if (browser.isOperaMobile && isNativePointer(pointer)) {\n    getXY('screen', pointer, page);\n    page.x += window.scrollX;\n    page.y += window.scrollY;\n  } else {\n    getXY('page', pointer, page);\n  }\n\n  return page;\n}\nexport function getClientXY(pointer, client) {\n  client = client || {};\n\n  if (browser.isOperaMobile && isNativePointer(pointer)) {\n    // Opera Mobile handles the viewport and scrolling oddly\n    getXY('screen', pointer, client);\n  } else {\n    getXY('client', pointer, client);\n  }\n\n  return client;\n}\nexport function getPointerId(pointer) {\n  return is.number(pointer.pointerId) ? pointer.pointerId : pointer.identifier;\n}\nexport function setCoords(dest, pointers, timeStamp) {\n  const pointer = pointers.length > 1 ? pointerAverage(pointers) : pointers[0];\n  getPageXY(pointer, dest.page);\n  getClientXY(pointer, dest.client);\n  dest.timeStamp = timeStamp;\n}\nexport function getTouchPair(event) {\n  const touches = []; // array of touches is supplied\n\n  if (is.array(event)) {\n    touches[0] = event[0];\n    touches[1] = event[1];\n  } // an event\n  else {\n      if (event.type === 'touchend') {\n        if (event.touches.length === 1) {\n          touches[0] = event.touches[0];\n          touches[1] = event.changedTouches[0];\n        } else if (event.touches.length === 0) {\n          touches[0] = event.changedTouches[0];\n          touches[1] = event.changedTouches[1];\n        }\n      } else {\n        touches[0] = event.touches[0];\n        touches[1] = event.touches[1];\n      }\n    }\n\n  return touches;\n}\nexport function pointerAverage(pointers) {\n  const average = {\n    pageX: 0,\n    pageY: 0,\n    clientX: 0,\n    clientY: 0,\n    screenX: 0,\n    screenY: 0\n  };\n\n  for (const pointer of pointers) {\n    for (const prop in average) {\n      average[prop] += pointer[prop];\n    }\n  }\n\n  for (const prop in average) {\n    average[prop] /= pointers.length;\n  }\n\n  return average;\n}\nexport function touchBBox(event) {\n  if (!event.length) {\n    return null;\n  }\n\n  const touches = getTouchPair(event);\n  const minX = Math.min(touches[0].pageX, touches[1].pageX);\n  const minY = Math.min(touches[0].pageY, touches[1].pageY);\n  const maxX = Math.max(touches[0].pageX, touches[1].pageX);\n  const maxY = Math.max(touches[0].pageY, touches[1].pageY);\n  return {\n    x: minX,\n    y: minY,\n    left: minX,\n    top: minY,\n    right: maxX,\n    bottom: maxY,\n    width: maxX - minX,\n    height: maxY - minY\n  };\n}\nexport function touchDistance(event, deltaSource) {\n  const sourceX = deltaSource + 'X';\n  const sourceY = deltaSource + 'Y';\n  const touches = getTouchPair(event);\n  const dx = touches[0][sourceX] - touches[1][sourceX];\n  const dy = touches[0][sourceY] - touches[1][sourceY];\n  return hypot(dx, dy);\n}\nexport function touchAngle(event, deltaSource) {\n  const sourceX = deltaSource + 'X';\n  const sourceY = deltaSource + 'Y';\n  const touches = getTouchPair(event);\n  const dx = touches[1][sourceX] - touches[0][sourceX];\n  const dy = touches[1][sourceY] - touches[0][sourceY];\n  const angle = 180 * Math.atan2(dy, dx) / Math.PI;\n  return angle;\n}\nexport function getPointerType(pointer) {\n  return is.string(pointer.pointerType) ? pointer.pointerType : is.number(pointer.pointerType) ? [undefined, undefined, 'touch', 'pen', 'mouse'][pointer.pointerType] // if the PointerEvent API isn't available, then the \"pointer\" must\n  // be either a MouseEvent, TouchEvent, or Touch object\n  : /touch/.test(pointer.type) || pointer instanceof dom.Touch ? 'touch' : 'mouse';\n} // [ event.target, event.currentTarget ]\n\nexport function getEventTargets(event) {\n  const path = is.func(event.composedPath) ? event.composedPath() : event.path;\n  return [domUtils.getActualElement(path ? path[0] : event.target), domUtils.getActualElement(event.currentTarget)];\n}\nexport function newCoords() {\n  return {\n    page: {\n      x: 0,\n      y: 0\n    },\n    client: {\n      x: 0,\n      y: 0\n    },\n    timeStamp: 0\n  };\n}\nexport function coordsToEvent(coords) {\n  const event = {\n    coords,\n\n    get page() {\n      return this.coords.page;\n    },\n\n    get client() {\n      return this.coords.client;\n    },\n\n    get timeStamp() {\n      return this.coords.timeStamp;\n    },\n\n    get pageX() {\n      return this.coords.page.x;\n    },\n\n    get pageY() {\n      return this.coords.page.y;\n    },\n\n    get clientX() {\n      return this.coords.client.x;\n    },\n\n    get clientY() {\n      return this.coords.client.y;\n    },\n\n    get pointerId() {\n      return this.coords.pointerId;\n    },\n\n    get target() {\n      return this.coords.target;\n    },\n\n    get type() {\n      return this.coords.type;\n    },\n\n    get pointerType() {\n      return this.coords.pointerType;\n    },\n\n    get buttons() {\n      return this.coords.buttons;\n    },\n\n    preventDefault() {}\n\n  };\n  return event;\n}\nexport { pointerExtend };\n//# sourceMappingURL=pointerUtils.js.map","import { Scope } from \"./scope.js\";\nimport * as arr from \"../utils/arr.js\";\nimport * as domUtils from \"../utils/domUtils.js\";\nimport extend from \"../utils/extend.js\";\nimport is from \"../utils/is.js\";\nimport pExtend from \"../utils/pointerExtend.js\";\nimport * as pointerUtils from \"../utils/pointerUtils.js\";\n\nfunction install(scope) {\n  const targets = [];\n  const delegatedEvents = {};\n  const documents = [];\n  const eventsMethods = {\n    add,\n    remove,\n    addDelegate,\n    removeDelegate,\n    delegateListener,\n    delegateUseCapture,\n    delegatedEvents,\n    documents,\n    targets,\n    supportsOptions: false,\n    supportsPassive: false\n  }; // check if browser supports passive events and options arg\n\n  scope.document.createElement('div').addEventListener('test', null, {\n    get capture() {\n      return eventsMethods.supportsOptions = true;\n    },\n\n    get passive() {\n      return eventsMethods.supportsPassive = true;\n    }\n\n  });\n  scope.events = eventsMethods;\n\n  function add(eventTarget, type, listener, optionalArg) {\n    const options = getOptions(optionalArg);\n    let target = arr.find(targets, t => t.eventTarget === eventTarget);\n\n    if (!target) {\n      target = {\n        eventTarget,\n        events: {}\n      };\n      targets.push(target);\n    }\n\n    if (!target.events[type]) {\n      target.events[type] = [];\n    }\n\n    if (eventTarget.addEventListener && !arr.contains(target.events[type], listener)) {\n      eventTarget.addEventListener(type, listener, eventsMethods.supportsOptions ? options : options.capture);\n      target.events[type].push(listener);\n    }\n  }\n\n  function remove(eventTarget, type, listener, optionalArg) {\n    const options = getOptions(optionalArg);\n    const targetIndex = arr.findIndex(targets, t => t.eventTarget === eventTarget);\n    const target = targets[targetIndex];\n\n    if (!target || !target.events) {\n      return;\n    }\n\n    if (type === 'all') {\n      for (type in target.events) {\n        if (target.events.hasOwnProperty(type)) {\n          remove(eventTarget, type, 'all');\n        }\n      }\n\n      return;\n    }\n\n    let typeIsEmpty = false;\n    const typeListeners = target.events[type];\n\n    if (typeListeners) {\n      if (listener === 'all') {\n        for (let i = typeListeners.length - 1; i >= 0; i--) {\n          remove(eventTarget, type, typeListeners[i], options);\n        }\n\n        return;\n      } else {\n        for (let i = 0; i < typeListeners.length; i++) {\n          if (typeListeners[i] === listener) {\n            eventTarget.removeEventListener(type, listener, eventsMethods.supportsOptions ? options : options.capture);\n            typeListeners.splice(i, 1);\n\n            if (typeListeners.length === 0) {\n              delete target.events[type];\n              typeIsEmpty = true;\n            }\n\n            break;\n          }\n        }\n      }\n    }\n\n    if (typeIsEmpty && !Object.keys(target.events).length) {\n      targets.splice(targetIndex, 1);\n    }\n  }\n\n  function addDelegate(selector, context, type, listener, optionalArg) {\n    const options = getOptions(optionalArg);\n\n    if (!delegatedEvents[type]) {\n      delegatedEvents[type] = []; // add delegate listener functions\n\n      for (const doc of documents) {\n        add(doc, type, delegateListener);\n        add(doc, type, delegateUseCapture, true);\n      }\n    }\n\n    const delegates = delegatedEvents[type];\n    let delegate = arr.find(delegates, d => d.selector === selector && d.context === context);\n\n    if (!delegate) {\n      delegate = {\n        selector,\n        context,\n        listeners: []\n      };\n      delegates.push(delegate);\n    }\n\n    delegate.listeners.push([listener, options]);\n  }\n\n  function removeDelegate(selector, context, type, listener, optionalArg) {\n    const options = getOptions(optionalArg);\n    const delegates = delegatedEvents[type];\n    let matchFound = false;\n    let index;\n\n    if (!delegates) {\n      return;\n    } // count from last index of delegated to 0\n\n\n    for (index = delegates.length - 1; index >= 0; index--) {\n      const cur = delegates[index]; // look for matching selector and context Node\n\n      if (cur.selector === selector && cur.context === context) {\n        const {\n          listeners\n        } = cur; // each item of the listeners array is an array: [function, capture, passive]\n\n        for (let i = listeners.length - 1; i >= 0; i--) {\n          const [fn, {\n            capture,\n            passive\n          }] = listeners[i]; // check if the listener functions and capture and passive flags match\n\n          if (fn === listener && capture === options.capture && passive === options.passive) {\n            // remove the listener from the array of listeners\n            listeners.splice(i, 1); // if all listeners for this target have been removed\n            // remove the target from the delegates array\n\n            if (!listeners.length) {\n              delegates.splice(index, 1); // remove delegate function from context\n\n              remove(context, type, delegateListener);\n              remove(context, type, delegateUseCapture, true);\n            } // only remove one listener\n\n\n            matchFound = true;\n            break;\n          }\n        }\n\n        if (matchFound) {\n          break;\n        }\n      }\n    }\n  } // bound to the interactable context when a DOM event\n  // listener is added to a selector interactable\n\n\n  function delegateListener(event, optionalArg) {\n    const options = getOptions(optionalArg);\n    const fakeEvent = new FakeEvent(event);\n    const delegates = delegatedEvents[event.type];\n    const [eventTarget] = pointerUtils.getEventTargets(event);\n    let element = eventTarget; // climb up document tree looking for selector matches\n\n    while (is.element(element)) {\n      for (let i = 0; i < delegates.length; i++) {\n        const cur = delegates[i];\n        const {\n          selector,\n          context\n        } = cur;\n\n        if (domUtils.matchesSelector(element, selector) && domUtils.nodeContains(context, eventTarget) && domUtils.nodeContains(context, element)) {\n          const {\n            listeners\n          } = cur;\n          fakeEvent.currentTarget = element;\n\n          for (const [fn, {\n            capture,\n            passive\n          }] of listeners) {\n            if (capture === options.capture && passive === options.passive) {\n              fn(fakeEvent);\n            }\n          }\n        }\n      }\n\n      element = domUtils.parentNode(element);\n    }\n  }\n\n  function delegateUseCapture(event) {\n    return delegateListener.call(this, event, true);\n  } // for type inferrence\n\n\n  return eventsMethods;\n}\n\nclass FakeEvent {\n  constructor(originalEvent) {\n    this.currentTarget = void 0;\n    this.originalEvent = void 0;\n    this.type = void 0;\n    this.originalEvent = originalEvent; // duplicate the event so that currentTarget can be changed\n\n    pExtend(this, originalEvent);\n  }\n\n  preventOriginalDefault() {\n    this.originalEvent.preventDefault();\n  }\n\n  stopPropagation() {\n    this.originalEvent.stopPropagation();\n  }\n\n  stopImmediatePropagation() {\n    this.originalEvent.stopImmediatePropagation();\n  }\n\n}\n\nfunction getOptions(param) {\n  if (!is.object(param)) {\n    return {\n      capture: !!param,\n      passive: false\n    };\n  }\n\n  const options = extend({}, param);\n  options.capture = !!param.capture;\n  options.passive = !!param.passive;\n  return options;\n}\n\nexport default {\n  id: 'events',\n  install\n};\n//# sourceMappingURL=events.js.map","import { window } from \"./window.js\";\nexport function warnOnce(method, message) {\n  let warned = false;\n  return function () {\n    if (!warned) {\n      window.console.warn(message);\n      warned = true;\n    }\n\n    return method.apply(this, arguments);\n  };\n}\nexport function copyAction(dest, src) {\n  dest.name = src.name;\n  dest.axis = src.axis;\n  dest.edges = src.edges;\n  return dest;\n}\n//# sourceMappingURL=misc.js.map","/** @module interact */\nimport browser from \"../utils/browser.js\";\nimport * as domUtils from \"../utils/domUtils.js\";\nimport is from \"../utils/is.js\";\nimport * as pointerUtils from \"../utils/pointerUtils.js\";\nimport { warnOnce } from \"../utils/misc.js\";\nimport isNonNativeEvent from \"./isNonNativeEvent.js\";\nexport function createInteractStatic(scope) {\n  /**\n   * ```js\n   * interact('#draggable').draggable(true)\n   *\n   * var rectables = interact('rect')\n   * rectables\n   *   .gesturable(true)\n   *   .on('gesturemove', function (event) {\n   *       // ...\n   *   })\n   * ```\n   *\n   * The methods of this variable can be used to set elements as interactables\n   * and also to change various default settings.\n   *\n   * Calling it as a function and passing an element or a valid CSS selector\n   * string returns an Interactable object which has various methods to configure\n   * it.\n   *\n   * @global\n   *\n   * @param {Element | string} target The HTML or SVG Element to interact with\n   * or CSS selector\n   * @return {Interactable}\n   */\n  const interact = (target, options) => {\n    let interactable = scope.interactables.get(target, options);\n\n    if (!interactable) {\n      interactable = scope.interactables.new(target, options);\n      interactable.events.global = interact.globalEvents;\n    }\n\n    return interactable;\n  }; // expose the functions used to calculate multi-touch properties\n\n\n  interact.getPointerAverage = pointerUtils.pointerAverage;\n  interact.getTouchBBox = pointerUtils.touchBBox;\n  interact.getTouchDistance = pointerUtils.touchDistance;\n  interact.getTouchAngle = pointerUtils.touchAngle;\n  interact.getElementRect = domUtils.getElementRect;\n  interact.getElementClientRect = domUtils.getElementClientRect;\n  interact.matchesSelector = domUtils.matchesSelector;\n  interact.closest = domUtils.closest;\n  interact.globalEvents = {}; // eslint-disable-next-line no-undef\n\n  interact.version = \"1.10.2\";\n  interact.scope = scope;\n  /**\n  * Use a plugin\n  *\n  * @alias module:interact.use\n  *\n   */\n\n  interact.use = function (plugin, options) {\n    this.scope.usePlugin(plugin, options);\n    return this;\n  };\n  /**\n   * Check if an element or selector has been set with the {@link interact}\n   * function\n   *\n   * @alias module:interact.isSet\n   *\n   * @param {Target} target The Element or string being searched for\n   * @param {object} options\n   * @return {boolean} Indicates if the element or CSS selector was previously\n   * passed to interact\n   */\n\n\n  interact.isSet = function (target, options) {\n    return !!this.scope.interactables.get(target, options && options.context);\n  };\n  /**\n   * @deprecated\n   * Add a global listener for an InteractEvent or adds a DOM event to `document`\n   *\n   * @alias module:interact.on\n   *\n   * @param {string | array | object} type The types of events to listen for\n   * @param {function} listener The function event (s)\n   * @param {object | boolean} [options] object or useCapture flag for\n   * addEventListener\n   * @return {object} interact\n   */\n\n\n  interact.on = warnOnce(function on(type, listener, options) {\n    if (is.string(type) && type.search(' ') !== -1) {\n      type = type.trim().split(/ +/);\n    }\n\n    if (is.array(type)) {\n      for (const eventType of type) {\n        this.on(eventType, listener, options);\n      }\n\n      return this;\n    }\n\n    if (is.object(type)) {\n      for (const prop in type) {\n        this.on(prop, type[prop], listener);\n      }\n\n      return this;\n    } // if it is an InteractEvent type, add listener to globalEvents\n\n\n    if (isNonNativeEvent(type, this.scope.actions)) {\n      // if this type of event was never bound\n      if (!this.globalEvents[type]) {\n        this.globalEvents[type] = [listener];\n      } else {\n        this.globalEvents[type].push(listener);\n      }\n    } // If non InteractEvent type, addEventListener to document\n    else {\n        this.scope.events.add(this.scope.document, type, listener, {\n          options\n        });\n      }\n\n    return this;\n  }, 'The interact.on() method is being deprecated');\n  /**\n   * @deprecated\n   * Removes a global InteractEvent listener or DOM event from `document`\n   *\n   * @alias module:interact.off\n   *\n   * @param {string | array | object} type The types of events that were listened\n   * for\n   * @param {function} listener The listener function to be removed\n   * @param {object | boolean} options [options] object or useCapture flag for\n   * removeEventListener\n   * @return {object} interact\n   */\n\n  interact.off = warnOnce(function off(type, listener, options) {\n    if (is.string(type) && type.search(' ') !== -1) {\n      type = type.trim().split(/ +/);\n    }\n\n    if (is.array(type)) {\n      for (const eventType of type) {\n        this.off(eventType, listener, options);\n      }\n\n      return this;\n    }\n\n    if (is.object(type)) {\n      for (const prop in type) {\n        this.off(prop, type[prop], listener);\n      }\n\n      return this;\n    }\n\n    if (isNonNativeEvent(type, this.scope.actions)) {\n      let index;\n\n      if (type in this.globalEvents && (index = this.globalEvents[type].indexOf(listener)) !== -1) {\n        this.globalEvents[type].splice(index, 1);\n      }\n    } else {\n      this.scope.events.remove(this.scope.document, type, listener, options);\n    }\n\n    return this;\n  }, 'The interact.off() method is being deprecated');\n\n  interact.debug = function () {\n    return this.scope;\n  };\n  /**\n   * @alias module:interact.supportsTouch\n   *\n   * @return {boolean} Whether or not the browser supports touch input\n   */\n\n\n  interact.supportsTouch = function () {\n    return browser.supportsTouch;\n  };\n  /**\n   * @alias module:interact.supportsPointerEvent\n   *\n   * @return {boolean} Whether or not the browser supports PointerEvents\n   */\n\n\n  interact.supportsPointerEvent = function () {\n    return browser.supportsPointerEvent;\n  };\n  /**\n   * Cancels all interactions (end events are not fired)\n   *\n   * @alias module:interact.stop\n   *\n   * @return {object} interact\n   */\n\n\n  interact.stop = function () {\n    for (const interaction of this.scope.interactions.list) {\n      interaction.stop();\n    }\n\n    return this;\n  };\n  /**\n   * Returns or sets the distance the pointer must be moved before an action\n   * sequence occurs. This also affects tolerance for tap events.\n   *\n   * @alias module:interact.pointerMoveTolerance\n   *\n   * @param {number} [newValue] The movement from the start position must be greater than this value\n   * @return {interact | number}\n   */\n\n\n  interact.pointerMoveTolerance = function (newValue) {\n    if (is.number(newValue)) {\n      this.scope.interactions.pointerMoveTolerance = newValue;\n      return this;\n    }\n\n    return this.scope.interactions.pointerMoveTolerance;\n  };\n\n  interact.addDocument = function (doc, options) {\n    this.scope.addDocument(doc, options);\n  };\n\n  interact.removeDocument = function (doc) {\n    this.scope.removeDocument(doc);\n  };\n\n  return interact;\n}\n//# sourceMappingURL=interactStatic.js.map","export class PointerInfo {\n  constructor(id, pointer, event, downTime, downTarget) {\n    this.id = void 0;\n    this.pointer = void 0;\n    this.event = void 0;\n    this.downTime = void 0;\n    this.downTarget = void 0;\n    this.id = id;\n    this.pointer = pointer;\n    this.event = event;\n    this.downTime = downTime;\n    this.downTarget = downTarget;\n  }\n\n}\n//# sourceMappingURL=PointerInfo.js.map","import * as arr from \"../utils/arr.js\";\nimport extend from \"../utils/extend.js\";\nimport hypot from \"../utils/hypot.js\";\nimport { warnOnce, copyAction } from \"../utils/misc.js\";\nimport * as pointerUtils from \"../utils/pointerUtils.js\";\nimport * as rectUtils from \"../utils/rect.js\";\nimport { InteractEvent } from \"./InteractEvent.js\";\nimport { PointerInfo } from \"./PointerInfo.js\";\nexport let _ProxyValues;\n\n(function (_ProxyValues) {\n  _ProxyValues[\"interactable\"] = \"\";\n  _ProxyValues[\"element\"] = \"\";\n  _ProxyValues[\"prepared\"] = \"\";\n  _ProxyValues[\"pointerIsDown\"] = \"\";\n  _ProxyValues[\"pointerWasMoved\"] = \"\";\n  _ProxyValues[\"_proxy\"] = \"\";\n})(_ProxyValues || (_ProxyValues = {}));\n\nexport let _ProxyMethods;\n\n(function (_ProxyMethods) {\n  _ProxyMethods[\"start\"] = \"\";\n  _ProxyMethods[\"move\"] = \"\";\n  _ProxyMethods[\"end\"] = \"\";\n  _ProxyMethods[\"stop\"] = \"\";\n  _ProxyMethods[\"interacting\"] = \"\";\n})(_ProxyMethods || (_ProxyMethods = {}));\n\nlet idCounter = 0;\nexport class Interaction {\n  // current interactable being interacted with\n  // the target element of the interactable\n  // action that's ready to be fired on next move event\n  // keep track of added pointers\n  // pointerdown/mousedown/touchstart event\n  // previous action event\n\n  /** @internal */\n  get pointerMoveTolerance() {\n    return 1;\n  }\n  /**\n   * @alias Interaction.prototype.move\n   */\n\n\n  /** */\n  constructor({\n    pointerType,\n    scopeFire\n  }) {\n    this.interactable = null;\n    this.element = null;\n    this.rect = void 0;\n    this._rects = void 0;\n    this.edges = void 0;\n    this._scopeFire = void 0;\n    this.prepared = {\n      name: null,\n      axis: null,\n      edges: null\n    };\n    this.pointerType = void 0;\n    this.pointers = [];\n    this.downEvent = null;\n    this.downPointer = {};\n    this._latestPointer = {\n      pointer: null,\n      event: null,\n      eventTarget: null\n    };\n    this.prevEvent = null;\n    this.pointerIsDown = false;\n    this.pointerWasMoved = false;\n    this._interacting = false;\n    this._ending = false;\n    this._stopped = true;\n    this._proxy = null;\n    this.simulation = null;\n    this.doMove = warnOnce(function (signalArg) {\n      this.move(signalArg);\n    }, 'The interaction.doMove() method has been renamed to interaction.move()');\n    this.coords = {\n      // Starting InteractEvent pointer coordinates\n      start: pointerUtils.newCoords(),\n      // Previous native pointer move event coordinates\n      prev: pointerUtils.newCoords(),\n      // current native pointer move event coordinates\n      cur: pointerUtils.newCoords(),\n      // Change in coordinates and time of the pointer\n      delta: pointerUtils.newCoords(),\n      // pointer velocity\n      velocity: pointerUtils.newCoords()\n    };\n    this._id = idCounter++;\n    this._scopeFire = scopeFire;\n    this.pointerType = pointerType;\n    const that = this;\n    this._proxy = {};\n\n    for (const key in _ProxyValues) {\n      Object.defineProperty(this._proxy, key, {\n        get() {\n          return that[key];\n        }\n\n      });\n    }\n\n    for (const key in _ProxyMethods) {\n      Object.defineProperty(this._proxy, key, {\n        value: (...args) => that[key](...args)\n      });\n    }\n\n    this._scopeFire('interactions:new', {\n      interaction: this\n    });\n  }\n\n  pointerDown(pointer, event, eventTarget) {\n    const pointerIndex = this.updatePointer(pointer, event, eventTarget, true);\n    const pointerInfo = this.pointers[pointerIndex];\n\n    this._scopeFire('interactions:down', {\n      pointer,\n      event,\n      eventTarget,\n      pointerIndex,\n      pointerInfo,\n      type: 'down',\n      interaction: this\n    });\n  }\n  /**\n   * ```js\n   * interact(target)\n   *   .draggable({\n   *     // disable the default drag start by down->move\n   *     manualStart: true\n   *   })\n   *   // start dragging after the user holds the pointer down\n   *   .on('hold', function (event) {\n   *     var interaction = event.interaction\n   *\n   *     if (!interaction.interacting()) {\n   *       interaction.start({ name: 'drag' },\n   *                         event.interactable,\n   *                         event.currentTarget)\n   *     }\n   * })\n   * ```\n   *\n   * Start an action with the given Interactable and Element as tartgets. The\n   * action must be enabled for the target Interactable and an appropriate\n   * number of pointers must be held down - 1 for drag/resize, 2 for gesture.\n   *\n   * Use it with `interactable.<action>able({ manualStart: false })` to always\n   * [start actions manually](https://github.com/taye/interact.js/issues/114)\n   *\n   * @param {object} action   The action to be performed - drag, resize, etc.\n   * @param {Interactable} target  The Interactable to target\n   * @param {Element} element The DOM Element to target\n   * @return {Boolean} Whether the interaction was successfully started\n   */\n\n\n  start(action, interactable, element) {\n    if (this.interacting() || !this.pointerIsDown || this.pointers.length < (action.name === 'gesture' ? 2 : 1) || !interactable.options[action.name].enabled) {\n      return false;\n    }\n\n    copyAction(this.prepared, action);\n    this.interactable = interactable;\n    this.element = element;\n    this.rect = interactable.getRect(element);\n    this.edges = this.prepared.edges ? extend({}, this.prepared.edges) : {\n      left: true,\n      right: true,\n      top: true,\n      bottom: true\n    };\n    this._stopped = false;\n    this._interacting = this._doPhase({\n      interaction: this,\n      event: this.downEvent,\n      phase: 'start'\n    }) && !this._stopped;\n    return this._interacting;\n  }\n\n  pointerMove(pointer, event, eventTarget) {\n    if (!this.simulation && !(this.modification && this.modification.endResult)) {\n      this.updatePointer(pointer, event, eventTarget, false);\n    }\n\n    const duplicateMove = this.coords.cur.page.x === this.coords.prev.page.x && this.coords.cur.page.y === this.coords.prev.page.y && this.coords.cur.client.x === this.coords.prev.client.x && this.coords.cur.client.y === this.coords.prev.client.y;\n    let dx;\n    let dy; // register movement greater than pointerMoveTolerance\n\n    if (this.pointerIsDown && !this.pointerWasMoved) {\n      dx = this.coords.cur.client.x - this.coords.start.client.x;\n      dy = this.coords.cur.client.y - this.coords.start.client.y;\n      this.pointerWasMoved = hypot(dx, dy) > this.pointerMoveTolerance;\n    }\n\n    const pointerIndex = this.getPointerIndex(pointer);\n    const signalArg = {\n      pointer,\n      pointerIndex,\n      pointerInfo: this.pointers[pointerIndex],\n      event,\n      type: 'move',\n      eventTarget,\n      dx,\n      dy,\n      duplicate: duplicateMove,\n      interaction: this\n    };\n\n    if (!duplicateMove) {\n      // set pointer coordinate, time changes and velocity\n      pointerUtils.setCoordVelocity(this.coords.velocity, this.coords.delta);\n    }\n\n    this._scopeFire('interactions:move', signalArg);\n\n    if (!duplicateMove && !this.simulation) {\n      // if interacting, fire an 'action-move' signal etc\n      if (this.interacting()) {\n        signalArg.type = null;\n        this.move(signalArg);\n      }\n\n      if (this.pointerWasMoved) {\n        pointerUtils.copyCoords(this.coords.prev, this.coords.cur);\n      }\n    }\n  }\n  /**\n   * ```js\n   * interact(target)\n   *   .draggable(true)\n   *   .on('dragmove', function (event) {\n   *     if (someCondition) {\n   *       // change the snap settings\n   *       event.interactable.draggable({ snap: { targets: [] }})\n   *       // fire another move event with re-calculated snap\n   *       event.interaction.move()\n   *     }\n   *   })\n   * ```\n   *\n   * Force a move of the current action at the same coordinates. Useful if\n   * snap/restrict has been changed and you want a movement with the new\n   * settings.\n   */\n\n\n  move(signalArg) {\n    if (!signalArg || !signalArg.event) {\n      pointerUtils.setZeroCoords(this.coords.delta);\n    }\n\n    signalArg = extend({\n      pointer: this._latestPointer.pointer,\n      event: this._latestPointer.event,\n      eventTarget: this._latestPointer.eventTarget,\n      interaction: this\n    }, signalArg || {});\n    signalArg.phase = 'move';\n\n    this._doPhase(signalArg);\n  } // End interact move events and stop auto-scroll unless simulation is running\n\n\n  pointerUp(pointer, event, eventTarget, curEventTarget) {\n    let pointerIndex = this.getPointerIndex(pointer);\n\n    if (pointerIndex === -1) {\n      pointerIndex = this.updatePointer(pointer, event, eventTarget, false);\n    }\n\n    const type = /cancel$/i.test(event.type) ? 'cancel' : 'up';\n\n    this._scopeFire(`interactions:${type}`, {\n      pointer,\n      pointerIndex,\n      pointerInfo: this.pointers[pointerIndex],\n      event,\n      eventTarget,\n      type: type,\n      curEventTarget,\n      interaction: this\n    });\n\n    if (!this.simulation) {\n      this.end(event);\n    }\n\n    this.removePointer(pointer, event);\n  }\n\n  documentBlur(event) {\n    this.end(event);\n\n    this._scopeFire('interactions:blur', {\n      event,\n      type: 'blur',\n      interaction: this\n    });\n  }\n  /**\n   * ```js\n   * interact(target)\n   *   .draggable(true)\n   *   .on('move', function (event) {\n   *     if (event.pageX > 1000) {\n   *       // end the current action\n   *       event.interaction.end()\n   *       // stop all further listeners from being called\n   *       event.stopImmediatePropagation()\n   *     }\n   *   })\n   * ```\n   *\n   * @param {PointerEvent} [event]\n   */\n\n\n  end(event) {\n    this._ending = true;\n    event = event || this._latestPointer.event;\n    let endPhaseResult;\n\n    if (this.interacting()) {\n      endPhaseResult = this._doPhase({\n        event,\n        interaction: this,\n        phase: 'end'\n      });\n    }\n\n    this._ending = false;\n\n    if (endPhaseResult === true) {\n      this.stop();\n    }\n  }\n\n  currentAction() {\n    return this._interacting ? this.prepared.name : null;\n  }\n\n  interacting() {\n    return this._interacting;\n  }\n  /** */\n\n\n  stop() {\n    this._scopeFire('interactions:stop', {\n      interaction: this\n    });\n\n    this.interactable = this.element = null;\n    this._interacting = false;\n    this._stopped = true;\n    this.prepared.name = this.prevEvent = null;\n  }\n\n  getPointerIndex(pointer) {\n    const pointerId = pointerUtils.getPointerId(pointer); // mouse and pen interactions may have only one pointer\n\n    return this.pointerType === 'mouse' || this.pointerType === 'pen' ? this.pointers.length - 1 : arr.findIndex(this.pointers, curPointer => curPointer.id === pointerId);\n  }\n\n  getPointerInfo(pointer) {\n    return this.pointers[this.getPointerIndex(pointer)];\n  }\n\n  updatePointer(pointer, event, eventTarget, down) {\n    const id = pointerUtils.getPointerId(pointer);\n    let pointerIndex = this.getPointerIndex(pointer);\n    let pointerInfo = this.pointers[pointerIndex];\n    down = down === false ? false : down || /(down|start)$/i.test(event.type);\n\n    if (!pointerInfo) {\n      pointerInfo = new PointerInfo(id, pointer, event, null, null);\n      pointerIndex = this.pointers.length;\n      this.pointers.push(pointerInfo);\n    } else {\n      pointerInfo.pointer = pointer;\n    }\n\n    pointerUtils.setCoords(this.coords.cur, this.pointers.map(p => p.pointer), this._now());\n    pointerUtils.setCoordDeltas(this.coords.delta, this.coords.prev, this.coords.cur);\n\n    if (down) {\n      this.pointerIsDown = true;\n      pointerInfo.downTime = this.coords.cur.timeStamp;\n      pointerInfo.downTarget = eventTarget;\n      pointerUtils.pointerExtend(this.downPointer, pointer);\n\n      if (!this.interacting()) {\n        pointerUtils.copyCoords(this.coords.start, this.coords.cur);\n        pointerUtils.copyCoords(this.coords.prev, this.coords.cur);\n        this.downEvent = event;\n        this.pointerWasMoved = false;\n      }\n    }\n\n    this._updateLatestPointer(pointer, event, eventTarget);\n\n    this._scopeFire('interactions:update-pointer', {\n      pointer,\n      event,\n      eventTarget,\n      down,\n      pointerInfo,\n      pointerIndex,\n      interaction: this\n    });\n\n    return pointerIndex;\n  }\n\n  removePointer(pointer, event) {\n    const pointerIndex = this.getPointerIndex(pointer);\n\n    if (pointerIndex === -1) {\n      return;\n    }\n\n    const pointerInfo = this.pointers[pointerIndex];\n\n    this._scopeFire('interactions:remove-pointer', {\n      pointer,\n      event,\n      eventTarget: null,\n      pointerIndex,\n      pointerInfo,\n      interaction: this\n    });\n\n    this.pointers.splice(pointerIndex, 1);\n    this.pointerIsDown = false;\n  }\n\n  _updateLatestPointer(pointer, event, eventTarget) {\n    this._latestPointer.pointer = pointer;\n    this._latestPointer.event = event;\n    this._latestPointer.eventTarget = eventTarget;\n  }\n\n  destroy() {\n    this._latestPointer.pointer = null;\n    this._latestPointer.event = null;\n    this._latestPointer.eventTarget = null;\n  }\n\n  _createPreparedEvent(event, phase, preEnd, type) {\n    return new InteractEvent(this, event, this.prepared.name, phase, this.element, preEnd, type);\n  }\n\n  _fireEvent(iEvent) {\n    this.interactable.fire(iEvent);\n\n    if (!this.prevEvent || iEvent.timeStamp >= this.prevEvent.timeStamp) {\n      this.prevEvent = iEvent;\n    }\n  }\n\n  _doPhase(signalArg) {\n    const {\n      event,\n      phase,\n      preEnd,\n      type\n    } = signalArg;\n    const {\n      rect\n    } = this;\n\n    if (rect && phase === 'move') {\n      // update the rect changes due to pointer move\n      rectUtils.addEdges(this.edges, rect, this.coords.delta[this.interactable.options.deltaSource]);\n      rect.width = rect.right - rect.left;\n      rect.height = rect.bottom - rect.top;\n    }\n\n    const beforeResult = this._scopeFire(`interactions:before-action-${phase}`, signalArg);\n\n    if (beforeResult === false) {\n      return false;\n    }\n\n    const iEvent = signalArg.iEvent = this._createPreparedEvent(event, phase, preEnd, type);\n\n    this._scopeFire(`interactions:action-${phase}`, signalArg);\n\n    if (phase === 'start') {\n      this.prevEvent = iEvent;\n    }\n\n    this._fireEvent(iEvent);\n\n    this._scopeFire(`interactions:after-action-${phase}`, signalArg);\n\n    return true;\n  }\n\n  _now() {\n    return Date.now();\n  }\n\n}\nexport default Interaction;\nexport { PointerInfo };\n//# sourceMappingURL=Interaction.js.map","import { Interactable } from \"./Interactable.js\";\nimport { matchesSelector, nodeContains } from \"../utils/domUtils.js\";\nimport is from \"../utils/is.js\";\nimport { getWindow } from \"../utils/window.js\";\n\nfunction preventDefault(newValue) {\n  if (/^(always|never|auto)$/.test(newValue)) {\n    this.options.preventDefault = newValue;\n    return this;\n  }\n\n  if (is.bool(newValue)) {\n    this.options.preventDefault = newValue ? 'always' : 'never';\n    return this;\n  }\n\n  return this.options.preventDefault;\n}\n\nfunction checkAndPreventDefault(interactable, scope, event) {\n  const setting = interactable.options.preventDefault;\n\n  if (setting === 'never') {\n    return;\n  }\n\n  if (setting === 'always') {\n    event.preventDefault();\n    return;\n  } // setting === 'auto'\n  // if the browser supports passive event listeners and isn't running on iOS,\n  // don't preventDefault of touch{start,move} events. CSS touch-action and\n  // user-select should be used instead of calling event.preventDefault().\n\n\n  if (scope.events.supportsPassive && /^touch(start|move)$/.test(event.type)) {\n    const doc = getWindow(event.target).document;\n    const docOptions = scope.getDocOptions(doc);\n\n    if (!(docOptions && docOptions.events) || docOptions.events.passive !== false) {\n      return;\n    }\n  } // don't preventDefault of pointerdown events\n\n\n  if (/^(mouse|pointer|touch)*(down|start)/i.test(event.type)) {\n    return;\n  } // don't preventDefault on editable elements\n\n\n  if (is.element(event.target) && matchesSelector(event.target, 'input,select,textarea,[contenteditable=true],[contenteditable=true] *')) {\n    return;\n  }\n\n  event.preventDefault();\n}\n\nfunction onInteractionEvent({\n  interaction,\n  event\n}) {\n  if (interaction.interactable) {\n    interaction.interactable.checkAndPreventDefault(event);\n  }\n}\n\nexport function install(scope) {\n  /** @lends Interactable */\n  const {\n    Interactable\n  } = scope;\n  /**\n   * Returns or sets whether to prevent the browser's default behaviour in\n   * response to pointer events. Can be set to:\n   *  - `'always'` to always prevent\n   *  - `'never'` to never prevent\n   *  - `'auto'` to let interact.js try to determine what would be best\n   *\n   * @param {string} [newValue] `'always'`, `'never'` or `'auto'`\n   * @return {string | Interactable} The current setting or this Interactable\n   */\n\n  Interactable.prototype.preventDefault = preventDefault;\n\n  Interactable.prototype.checkAndPreventDefault = function (event) {\n    return checkAndPreventDefault(this, scope, event);\n  }; // prevent native HTML5 drag on interact.js target elements\n\n\n  scope.interactions.docEvents.push({\n    type: 'dragstart',\n\n    listener(event) {\n      for (const interaction of scope.interactions.list) {\n        if (interaction.element && (interaction.element === event.target || nodeContains(interaction.element, event.target))) {\n          interaction.interactable.checkAndPreventDefault(event);\n          return;\n        }\n      }\n    }\n\n  });\n}\nexport default {\n  id: 'core/interactablePreventDefault',\n  install,\n  listeners: ['down', 'move', 'up', 'cancel'].reduce((acc, eventType) => {\n    acc[`interactions:${eventType}`] = onInteractionEvent;\n    return acc;\n  }, {})\n};\n//# sourceMappingURL=interactablePreventDefault.js.map","import * as dom from \"../utils/domUtils.js\";\nconst finder = {\n  methodOrder: ['simulationResume', 'mouseOrPen', 'hasPointer', 'idle'],\n\n  search(details) {\n    for (const method of finder.methodOrder) {\n      const interaction = finder[method](details);\n\n      if (interaction) {\n        return interaction;\n      }\n    }\n\n    return null;\n  },\n\n  // try to resume simulation with a new pointer\n  simulationResume({\n    pointerType,\n    eventType,\n    eventTarget,\n    scope\n  }) {\n    if (!/down|start/i.test(eventType)) {\n      return null;\n    }\n\n    for (const interaction of scope.interactions.list) {\n      let element = eventTarget;\n\n      if (interaction.simulation && interaction.simulation.allowResume && interaction.pointerType === pointerType) {\n        while (element) {\n          // if the element is the interaction element\n          if (element === interaction.element) {\n            return interaction;\n          }\n\n          element = dom.parentNode(element);\n        }\n      }\n    }\n\n    return null;\n  },\n\n  // if it's a mouse or pen interaction\n  mouseOrPen({\n    pointerId,\n    pointerType,\n    eventType,\n    scope\n  }) {\n    if (pointerType !== 'mouse' && pointerType !== 'pen') {\n      return null;\n    }\n\n    let firstNonActive;\n\n    for (const interaction of scope.interactions.list) {\n      if (interaction.pointerType === pointerType) {\n        // if it's a down event, skip interactions with running simulations\n        if (interaction.simulation && !hasPointerId(interaction, pointerId)) {\n          continue;\n        } // if the interaction is active, return it immediately\n\n\n        if (interaction.interacting()) {\n          return interaction;\n        } // otherwise save it and look for another active interaction\n        else if (!firstNonActive) {\n            firstNonActive = interaction;\n          }\n      }\n    } // if no active mouse interaction was found use the first inactive mouse\n    // interaction\n\n\n    if (firstNonActive) {\n      return firstNonActive;\n    } // find any mouse or pen interaction.\n    // ignore the interaction if the eventType is a *down, and a simulation\n    // is active\n\n\n    for (const interaction of scope.interactions.list) {\n      if (interaction.pointerType === pointerType && !(/down/i.test(eventType) && interaction.simulation)) {\n        return interaction;\n      }\n    }\n\n    return null;\n  },\n\n  // get interaction that has this pointer\n  hasPointer({\n    pointerId,\n    scope\n  }) {\n    for (const interaction of scope.interactions.list) {\n      if (hasPointerId(interaction, pointerId)) {\n        return interaction;\n      }\n    }\n\n    return null;\n  },\n\n  // get first idle interaction with a matching pointerType\n  idle({\n    pointerType,\n    scope\n  }) {\n    for (const interaction of scope.interactions.list) {\n      // if there's already a pointer held down\n      if (interaction.pointers.length === 1) {\n        const target = interaction.interactable; // don't add this pointer if there is a target interactable and it\n        // isn't gesturable\n\n        if (target && !(target.options.gesture && target.options.gesture.enabled)) {\n          continue;\n        }\n      } // maximum of 2 pointers per interaction\n      else if (interaction.pointers.length >= 2) {\n          continue;\n        }\n\n      if (!interaction.interacting() && pointerType === interaction.pointerType) {\n        return interaction;\n      }\n    }\n\n    return null;\n  }\n\n};\n\nfunction hasPointerId(interaction, pointerId) {\n  return interaction.pointers.some(({\n    id\n  }) => id === pointerId);\n}\n\nexport default finder;\n//# sourceMappingURL=interactionFinder.js.map","import { Scope, SignalArgs } from \"./scope.js\";\nimport browser from \"../utils/browser.js\";\nimport domObjects from \"../utils/domObjects.js\";\nimport { nodeContains } from \"../utils/domUtils.js\";\nimport * as pointerUtils from \"../utils/pointerUtils.js\";\nimport InteractionBase from \"./Interaction.js\";\nimport interactablePreventDefault from \"./interactablePreventDefault.js\";\nimport finder from \"./interactionFinder.js\";\nconst methodNames = ['pointerDown', 'pointerMove', 'pointerUp', 'updatePointer', 'removePointer', 'windowBlur'];\n\nfunction install(scope) {\n  const listeners = {};\n\n  for (const method of methodNames) {\n    listeners[method] = doOnInteractions(method, scope);\n  }\n\n  const pEventTypes = browser.pEventTypes;\n  let docEvents;\n\n  if (domObjects.PointerEvent) {\n    docEvents = [{\n      type: pEventTypes.down,\n      listener: releasePointersOnRemovedEls\n    }, {\n      type: pEventTypes.down,\n      listener: listeners.pointerDown\n    }, {\n      type: pEventTypes.move,\n      listener: listeners.pointerMove\n    }, {\n      type: pEventTypes.up,\n      listener: listeners.pointerUp\n    }, {\n      type: pEventTypes.cancel,\n      listener: listeners.pointerUp\n    }];\n  } else {\n    docEvents = [{\n      type: 'mousedown',\n      listener: listeners.pointerDown\n    }, {\n      type: 'mousemove',\n      listener: listeners.pointerMove\n    }, {\n      type: 'mouseup',\n      listener: listeners.pointerUp\n    }, {\n      type: 'touchstart',\n      listener: releasePointersOnRemovedEls\n    }, {\n      type: 'touchstart',\n      listener: listeners.pointerDown\n    }, {\n      type: 'touchmove',\n      listener: listeners.pointerMove\n    }, {\n      type: 'touchend',\n      listener: listeners.pointerUp\n    }, {\n      type: 'touchcancel',\n      listener: listeners.pointerUp\n    }];\n  }\n\n  docEvents.push({\n    type: 'blur',\n\n    listener(event) {\n      for (const interaction of scope.interactions.list) {\n        interaction.documentBlur(event);\n      }\n    }\n\n  }); // for ignoring browser's simulated mouse events\n\n  scope.prevTouchTime = 0;\n  scope.Interaction = class extends InteractionBase {\n    get pointerMoveTolerance() {\n      return scope.interactions.pointerMoveTolerance;\n    }\n\n    set pointerMoveTolerance(value) {\n      scope.interactions.pointerMoveTolerance = value;\n    }\n\n    _now() {\n      return scope.now();\n    }\n\n  };\n  scope.interactions = {\n    // all active and idle interactions\n    list: [],\n\n    new(options) {\n      options.scopeFire = (name, arg) => scope.fire(name, arg);\n\n      const interaction = new scope.Interaction(options);\n      scope.interactions.list.push(interaction);\n      return interaction;\n    },\n\n    listeners,\n    docEvents,\n    pointerMoveTolerance: 1\n  };\n\n  function releasePointersOnRemovedEls() {\n    // for all inactive touch interactions with pointers down\n    for (const interaction of scope.interactions.list) {\n      if (!interaction.pointerIsDown || interaction.pointerType !== 'touch' || interaction._interacting) {\n        continue;\n      } // if a pointer is down on an element that is no longer in the DOM tree\n\n\n      for (const pointer of interaction.pointers) {\n        if (!scope.documents.some(({\n          doc\n        }) => nodeContains(doc, pointer.downTarget))) {\n          // remove the pointer from the interaction\n          interaction.removePointer(pointer.pointer, pointer.event);\n        }\n      }\n    }\n  }\n\n  scope.usePlugin(interactablePreventDefault);\n}\n\nfunction doOnInteractions(method, scope) {\n  return function (event) {\n    const interactions = scope.interactions.list;\n    const pointerType = pointerUtils.getPointerType(event);\n    const [eventTarget, curEventTarget] = pointerUtils.getEventTargets(event);\n    const matches = []; // [ [pointer, interaction], ...]\n\n    if (/^touch/.test(event.type)) {\n      scope.prevTouchTime = scope.now(); // @ts-expect-error\n\n      for (const changedTouch of event.changedTouches) {\n        const pointer = changedTouch;\n        const pointerId = pointerUtils.getPointerId(pointer);\n        const searchDetails = {\n          pointer,\n          pointerId,\n          pointerType,\n          eventType: event.type,\n          eventTarget,\n          curEventTarget,\n          scope\n        };\n        const interaction = getInteraction(searchDetails);\n        matches.push([searchDetails.pointer, searchDetails.eventTarget, searchDetails.curEventTarget, interaction]);\n      }\n    } else {\n      let invalidPointer = false;\n\n      if (!browser.supportsPointerEvent && /mouse/.test(event.type)) {\n        // ignore mouse events while touch interactions are active\n        for (let i = 0; i < interactions.length && !invalidPointer; i++) {\n          invalidPointer = interactions[i].pointerType !== 'mouse' && interactions[i].pointerIsDown;\n        } // try to ignore mouse events that are simulated by the browser\n        // after a touch event\n\n\n        invalidPointer = invalidPointer || scope.now() - scope.prevTouchTime < 500 || // on iOS and Firefox Mobile, MouseEvent.timeStamp is zero if simulated\n        event.timeStamp === 0;\n      }\n\n      if (!invalidPointer) {\n        const searchDetails = {\n          pointer: event,\n          pointerId: pointerUtils.getPointerId(event),\n          pointerType,\n          eventType: event.type,\n          curEventTarget,\n          eventTarget,\n          scope\n        };\n        const interaction = getInteraction(searchDetails);\n        matches.push([searchDetails.pointer, searchDetails.eventTarget, searchDetails.curEventTarget, interaction]);\n      }\n    } // eslint-disable-next-line no-shadow\n\n\n    for (const [pointer, eventTarget, curEventTarget, interaction] of matches) {\n      interaction[method](pointer, event, eventTarget, curEventTarget);\n    }\n  };\n}\n\nfunction getInteraction(searchDetails) {\n  const {\n    pointerType,\n    scope\n  } = searchDetails;\n  const foundInteraction = finder.search(searchDetails);\n  const signalArg = {\n    interaction: foundInteraction,\n    searchDetails\n  };\n  scope.fire('interactions:find', signalArg);\n  return signalArg.interaction || scope.interactions.new({\n    pointerType\n  });\n}\n\nfunction onDocSignal({\n  doc,\n  scope,\n  options\n}, eventMethodName) {\n  const {\n    interactions: {\n      docEvents\n    },\n    events\n  } = scope;\n  const eventMethod = events[eventMethodName];\n\n  if (scope.browser.isIOS && !options.events) {\n    options.events = {\n      passive: false\n    };\n  } // delegate event listener\n\n\n  for (const eventType in events.delegatedEvents) {\n    eventMethod(doc, eventType, events.delegateListener);\n    eventMethod(doc, eventType, events.delegateUseCapture, true);\n  }\n\n  const eventOptions = options && options.events;\n\n  for (const {\n    type,\n    listener\n  } of docEvents) {\n    eventMethod(doc, type, listener, eventOptions);\n  }\n}\n\nconst interactions = {\n  id: 'core/interactions',\n  install,\n  listeners: {\n    'scope:add-document': arg => onDocSignal(arg, 'add'),\n    'scope:remove-document': arg => onDocSignal(arg, 'remove'),\n    'interactable:unset': ({\n      interactable\n    }, scope) => {\n      // Stop and destroy related interactions when an Interactable is unset\n      for (let i = scope.interactions.list.length - 1; i >= 0; i--) {\n        const interaction = scope.interactions.list[i];\n\n        if (interaction.interactable !== interactable) {\n          continue;\n        }\n\n        interaction.stop();\n        scope.fire('interactions:destroy', {\n          interaction\n        });\n        interaction.destroy();\n\n        if (scope.interactions.list.length > 2) {\n          scope.interactions.list.splice(i, 1);\n        }\n      }\n    }\n  },\n  onDocSignal,\n  doOnInteractions,\n  methodNames\n};\nexport default interactions;\n//# sourceMappingURL=interactions.js.map","import browser from \"../utils/browser.js\";\nimport clone from \"../utils/clone.js\";\nimport domObjects from \"../utils/domObjects.js\";\nimport extend from \"../utils/extend.js\";\nimport raf from \"../utils/raf.js\";\nimport * as win from \"../utils/window.js\";\nimport { Eventable } from \"./Eventable.js\";\nimport { InteractEvent } from \"./InteractEvent.js\";\nimport { Interactable as InteractableBase } from \"./Interactable.js\";\nimport { InteractableSet } from \"./InteractableSet.js\";\nimport { defaults } from \"./defaultOptions.js\";\nimport events from \"./events.js\";\nimport { createInteractStatic } from \"./interactStatic.js\";\nimport interactions from \"./interactions.js\";\nexport class Scope {\n  // main window\n  // main document\n  // main window\n  // all documents being listened to\n  constructor() {\n    this.id = `__interact_scope_${Math.floor(Math.random() * 100)}`;\n    this.isInitialized = false;\n    this.listenerMaps = [];\n    this.browser = browser;\n    this.defaults = clone(defaults);\n    this.Eventable = Eventable;\n    this.actions = {\n      map: {},\n      phases: {\n        start: true,\n        move: true,\n        end: true\n      },\n      methodDict: {},\n      phaselessTypes: {}\n    };\n    this.interactStatic = createInteractStatic(this);\n    this.InteractEvent = InteractEvent;\n    this.Interactable = void 0;\n    this.interactables = new InteractableSet(this);\n    this._win = void 0;\n    this.document = void 0;\n    this.window = void 0;\n    this.documents = [];\n    this._plugins = {\n      list: [],\n      map: {}\n    };\n\n    this.onWindowUnload = event => this.removeDocument(event.target);\n\n    const scope = this;\n    this.Interactable = class extends InteractableBase {\n      get _defaults() {\n        return scope.defaults;\n      }\n\n      set(options) {\n        super.set(options);\n        scope.fire('interactable:set', {\n          options,\n          interactable: this\n        });\n        return this;\n      }\n\n      unset() {\n        super.unset();\n        scope.interactables.list.splice(scope.interactables.list.indexOf(this), 1);\n        scope.fire('interactable:unset', {\n          interactable: this\n        });\n      }\n\n    };\n  }\n\n  addListeners(map, id) {\n    this.listenerMaps.push({\n      id,\n      map\n    });\n  }\n\n  fire(name, arg) {\n    for (const {\n      map: {\n        [name]: listener\n      }\n    } of this.listenerMaps) {\n      if (!!listener && listener(arg, this, name) === false) {\n        return false;\n      }\n    }\n  }\n\n  init(window) {\n    return this.isInitialized ? this : initScope(this, window);\n  }\n\n  pluginIsInstalled(plugin) {\n    return this._plugins.map[plugin.id] || this._plugins.list.indexOf(plugin) !== -1;\n  }\n\n  usePlugin(plugin, options) {\n    if (!this.isInitialized) {\n      return this;\n    }\n\n    if (this.pluginIsInstalled(plugin)) {\n      return this;\n    }\n\n    if (plugin.id) {\n      this._plugins.map[plugin.id] = plugin;\n    }\n\n    this._plugins.list.push(plugin);\n\n    if (plugin.install) {\n      plugin.install(this, options);\n    }\n\n    if (plugin.listeners && plugin.before) {\n      let index = 0;\n      const len = this.listenerMaps.length;\n      const before = plugin.before.reduce((acc, id) => {\n        acc[id] = true;\n        acc[pluginIdRoot(id)] = true;\n        return acc;\n      }, {});\n\n      for (; index < len; index++) {\n        const otherId = this.listenerMaps[index].id;\n\n        if (before[otherId] || before[pluginIdRoot(otherId)]) {\n          break;\n        }\n      }\n\n      this.listenerMaps.splice(index, 0, {\n        id: plugin.id,\n        map: plugin.listeners\n      });\n    } else if (plugin.listeners) {\n      this.listenerMaps.push({\n        id: plugin.id,\n        map: plugin.listeners\n      });\n    }\n\n    return this;\n  }\n\n  addDocument(doc, options) {\n    // do nothing if document is already known\n    if (this.getDocIndex(doc) !== -1) {\n      return false;\n    }\n\n    const window = win.getWindow(doc);\n    options = options ? extend({}, options) : {};\n    this.documents.push({\n      doc,\n      options\n    });\n    this.events.documents.push(doc); // don't add an unload event for the main document\n    // so that the page may be cached in browser history\n\n    if (doc !== this.document) {\n      this.events.add(window, 'unload', this.onWindowUnload);\n    }\n\n    this.fire('scope:add-document', {\n      doc,\n      window,\n      scope: this,\n      options\n    });\n  }\n\n  removeDocument(doc) {\n    const index = this.getDocIndex(doc);\n    const window = win.getWindow(doc);\n    const options = this.documents[index].options;\n    this.events.remove(window, 'unload', this.onWindowUnload);\n    this.documents.splice(index, 1);\n    this.events.documents.splice(index, 1);\n    this.fire('scope:remove-document', {\n      doc,\n      window,\n      scope: this,\n      options\n    });\n  }\n\n  getDocIndex(doc) {\n    for (let i = 0; i < this.documents.length; i++) {\n      if (this.documents[i].doc === doc) {\n        return i;\n      }\n    }\n\n    return -1;\n  }\n\n  getDocOptions(doc) {\n    const docIndex = this.getDocIndex(doc);\n    return docIndex === -1 ? null : this.documents[docIndex].options;\n  }\n\n  now() {\n    return (this.window.Date || Date).now();\n  }\n\n}\nexport function initScope(scope, window) {\n  scope.isInitialized = true;\n  win.init(window);\n  domObjects.init(window);\n  browser.init(window);\n  raf.init(window);\n  scope.window = window;\n  scope.document = window.document;\n  scope.usePlugin(interactions);\n  scope.usePlugin(events);\n  return scope;\n}\n\nfunction pluginIdRoot(id) {\n  return id && id.replace(/\\/.*$/, '');\n}\n//# sourceMappingURL=scope.js.map","import { Scope } from \"../core/scope.js\";\nconst scope = new Scope();\nconst interact = scope.interactStatic;\nexport default interact;\nexport const init = win => scope.init(win);\n\nif (typeof window === 'object' && !!window) {\n  init(window);\n}\n//# sourceMappingURL=index.js.map","import { Interactable } from \"../core/Interactable.js\";\nimport is from \"../utils/is.js\";\nimport { warnOnce } from \"../utils/misc.js\";\n\nfunction install(scope) {\n  const {\n    /** @lends Interactable */\n    Interactable // tslint:disable-line no-shadowed-variable\n\n  } = scope;\n\n  Interactable.prototype.getAction = function getAction(pointer, event, interaction, element) {\n    const action = defaultActionChecker(this, event, interaction, element, scope);\n\n    if (this.options.actionChecker) {\n      return this.options.actionChecker(pointer, event, action, this, element, interaction);\n    }\n\n    return action;\n  };\n  /**\n   * If the target of the `mousedown`, `pointerdown` or `touchstart` event or any\n   * of it's parents match the given CSS selector or Element, no\n   * drag/resize/gesture is started.\n   *\n   * @deprecated\n   * Don't use this method. Instead set the `ignoreFrom` option for each action\n   * or for `pointerEvents`\n   *\n   * ```js\n   * interact(targett)\n   *   .draggable({\n   *     ignoreFrom: 'input, textarea, a[href]'',\n   *   })\n   *   .pointerEvents({\n   *     ignoreFrom: '[no-pointer]',\n   *   })\n   * ```\n   *\n   * @param {string | Element | null} [newValue] a CSS selector string, an\n   * Element or `null` to not ignore any elements\n   * @return {string | Element | object} The current ignoreFrom value or this\n   * Interactable\n   */\n\n\n  Interactable.prototype.ignoreFrom = warnOnce(function (newValue) {\n    return this._backCompatOption('ignoreFrom', newValue);\n  }, 'Interactable.ignoreFrom() has been deprecated. Use Interactble.draggable({ignoreFrom: newValue}).');\n  /**\n   *\n   * A drag/resize/gesture is started only If the target of the `mousedown`,\n   * `pointerdown` or `touchstart` event or any of it's parents match the given\n   * CSS selector or Element.\n   *\n   * @deprecated\n   * Don't use this method. Instead set the `allowFrom` option for each action\n   * or for `pointerEvents`\n   *\n   * ```js\n   * interact(targett)\n   *   .resizable({\n   *     allowFrom: '.resize-handle',\n   *   .pointerEvents({\n   *     allowFrom: '.handle',,\n   *   })\n   * ```\n   *\n   * @param {string | Element | null} [newValue] a CSS selector string, an\n   * Element or `null` to allow from any element\n   * @return {string | Element | object} The current allowFrom value or this\n   * Interactable\n   */\n\n  Interactable.prototype.allowFrom = warnOnce(function (newValue) {\n    return this._backCompatOption('allowFrom', newValue);\n  }, 'Interactable.allowFrom() has been deprecated. Use Interactble.draggable({allowFrom: newValue}).');\n  /**\n   * ```js\n   * interact('.resize-drag')\n   *   .resizable(true)\n   *   .draggable(true)\n   *   .actionChecker(function (pointer, event, action, interactable, element, interaction) {\n   *\n   *     if (interact.matchesSelector(event.target, '.drag-handle')) {\n   *       // force drag with handle target\n   *       action.name = drag\n   *     }\n   *     else {\n   *       // resize from the top and right edges\n   *       action.name  = 'resize'\n   *       action.edges = { top: true, right: true }\n   *     }\n   *\n   *     return action\n   * })\n   * ```\n   *\n   * Returns or sets the function used to check action to be performed on\n   * pointerDown\n   *\n   * @param {function | null} [checker] A function which takes a pointer event,\n   * defaultAction string, interactable, element and interaction as parameters\n   * and returns an object with name property 'drag' 'resize' or 'gesture' and\n   * optionally an `edges` object with boolean 'top', 'left', 'bottom' and right\n   * props.\n   * @return {Function | Interactable} The checker function or this Interactable\n   */\n\n  Interactable.prototype.actionChecker = actionChecker;\n  /**\n   * Returns or sets whether the the cursor should be changed depending on the\n   * action that would be performed if the mouse were pressed and dragged.\n   *\n   * @param {boolean} [newValue]\n   * @return {boolean | Interactable} The current setting or this Interactable\n   */\n\n  Interactable.prototype.styleCursor = styleCursor;\n}\n\nfunction defaultActionChecker(interactable, event, interaction, element, scope) {\n  const rect = interactable.getRect(element);\n  const buttons = event.buttons || {\n    0: 1,\n    1: 4,\n    3: 8,\n    4: 16\n  }[event.button];\n  const arg = {\n    action: null,\n    interactable,\n    interaction,\n    element,\n    rect,\n    buttons\n  };\n  scope.fire('auto-start:check', arg);\n  return arg.action;\n}\n\nfunction styleCursor(newValue) {\n  if (is.bool(newValue)) {\n    this.options.styleCursor = newValue;\n    return this;\n  }\n\n  if (newValue === null) {\n    delete this.options.styleCursor;\n    return this;\n  }\n\n  return this.options.styleCursor;\n}\n\nfunction actionChecker(checker) {\n  if (is.func(checker)) {\n    this.options.actionChecker = checker;\n    return this;\n  }\n\n  if (checker === null) {\n    delete this.options.actionChecker;\n    return this;\n  }\n\n  return this.options.actionChecker;\n}\n\nexport default {\n  id: 'auto-start/interactableMethods',\n  install\n};\n//# sourceMappingURL=InteractableMethods.js.map","import { Scope, SignalArgs } from \"../core/scope.js\";\nimport * as domUtils from \"../utils/domUtils.js\";\nimport extend from \"../utils/extend.js\";\nimport is from \"../utils/is.js\";\nimport { copyAction } from \"../utils/misc.js\";\nimport InteractableMethods from \"./InteractableMethods.js\";\n\nfunction install(scope) {\n  const {\n    interactStatic: interact,\n    defaults\n  } = scope;\n  scope.usePlugin(InteractableMethods);\n  defaults.base.actionChecker = null;\n  defaults.base.styleCursor = true;\n  extend(defaults.perAction, {\n    manualStart: false,\n    max: Infinity,\n    maxPerElement: 1,\n    allowFrom: null,\n    ignoreFrom: null,\n    // only allow left button by default\n    // see https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/buttons#Return_value\n    mouseButtons: 1\n  });\n  /**\n   * Returns or sets the maximum number of concurrent interactions allowed.  By\n   * default only 1 interaction is allowed at a time (for backwards\n   * compatibility). To allow multiple interactions on the same Interactables and\n   * elements, you need to enable it in the draggable, resizable and gesturable\n   * `'max'` and `'maxPerElement'` options.\n   *\n   * @alias module:interact.maxInteractions\n   *\n   * @param {number} [newValue] Any number. newValue <= 0 means no interactions.\n   */\n\n  interact.maxInteractions = newValue => maxInteractions(newValue, scope);\n\n  scope.autoStart = {\n    // Allow this many interactions to happen simultaneously\n    maxInteractions: Infinity,\n    withinInteractionLimit,\n    cursorElement: null\n  };\n}\n\nfunction prepareOnDown({\n  interaction,\n  pointer,\n  event,\n  eventTarget\n}, scope) {\n  if (interaction.interacting()) {\n    return;\n  }\n\n  const actionInfo = getActionInfo(interaction, pointer, event, eventTarget, scope);\n  prepare(interaction, actionInfo, scope);\n}\n\nfunction prepareOnMove({\n  interaction,\n  pointer,\n  event,\n  eventTarget\n}, scope) {\n  if (interaction.pointerType !== 'mouse' || interaction.pointerIsDown || interaction.interacting()) {\n    return;\n  }\n\n  const actionInfo = getActionInfo(interaction, pointer, event, eventTarget, scope);\n  prepare(interaction, actionInfo, scope);\n}\n\nfunction startOnMove(arg, scope) {\n  const {\n    interaction\n  } = arg;\n\n  if (!interaction.pointerIsDown || interaction.interacting() || !interaction.pointerWasMoved || !interaction.prepared.name) {\n    return;\n  }\n\n  scope.fire('autoStart:before-start', arg);\n  const {\n    interactable\n  } = interaction;\n  const actionName = interaction.prepared.name;\n\n  if (actionName && interactable) {\n    // check manualStart and interaction limit\n    if (interactable.options[actionName].manualStart || !withinInteractionLimit(interactable, interaction.element, interaction.prepared, scope)) {\n      interaction.stop();\n    } else {\n      interaction.start(interaction.prepared, interactable, interaction.element);\n      setInteractionCursor(interaction, scope);\n    }\n  }\n}\n\nfunction clearCursorOnStop({\n  interaction\n}, scope) {\n  const {\n    interactable\n  } = interaction;\n\n  if (interactable && interactable.options.styleCursor) {\n    setCursor(interaction.element, '', scope);\n  }\n} // Check if the current interactable supports the action.\n// If so, return the validated action. Otherwise, return null\n\n\nfunction validateAction(action, interactable, element, eventTarget, scope) {\n  if (interactable.testIgnoreAllow(interactable.options[action.name], element, eventTarget) && interactable.options[action.name].enabled && withinInteractionLimit(interactable, element, action, scope)) {\n    return action;\n  }\n\n  return null;\n}\n\nfunction validateMatches(interaction, pointer, event, matches, matchElements, eventTarget, scope) {\n  for (let i = 0, len = matches.length; i < len; i++) {\n    const match = matches[i];\n    const matchElement = matchElements[i];\n    const matchAction = match.getAction(pointer, event, interaction, matchElement);\n\n    if (!matchAction) {\n      continue;\n    }\n\n    const action = validateAction(matchAction, match, matchElement, eventTarget, scope);\n\n    if (action) {\n      return {\n        action,\n        interactable: match,\n        element: matchElement\n      };\n    }\n  }\n\n  return {\n    action: null,\n    interactable: null,\n    element: null\n  };\n}\n\nfunction getActionInfo(interaction, pointer, event, eventTarget, scope) {\n  let matches = [];\n  let matchElements = [];\n  let element = eventTarget;\n\n  function pushMatches(interactable) {\n    matches.push(interactable);\n    matchElements.push(element);\n  }\n\n  while (is.element(element)) {\n    matches = [];\n    matchElements = [];\n    scope.interactables.forEachMatch(element, pushMatches);\n    const actionInfo = validateMatches(interaction, pointer, event, matches, matchElements, eventTarget, scope);\n\n    if (actionInfo.action && !actionInfo.interactable.options[actionInfo.action.name].manualStart) {\n      return actionInfo;\n    }\n\n    element = domUtils.parentNode(element);\n  }\n\n  return {\n    action: null,\n    interactable: null,\n    element: null\n  };\n}\n\nfunction prepare(interaction, {\n  action,\n  interactable,\n  element\n}, scope) {\n  action = action || {\n    name: null\n  };\n  interaction.interactable = interactable;\n  interaction.element = element;\n  copyAction(interaction.prepared, action);\n  interaction.rect = interactable && action.name ? interactable.getRect(element) : null;\n  setInteractionCursor(interaction, scope);\n  scope.fire('autoStart:prepared', {\n    interaction\n  });\n}\n\nfunction withinInteractionLimit(interactable, element, action, scope) {\n  const options = interactable.options;\n  const maxActions = options[action.name].max;\n  const maxPerElement = options[action.name].maxPerElement;\n  const autoStartMax = scope.autoStart.maxInteractions;\n  let activeInteractions = 0;\n  let interactableCount = 0;\n  let elementCount = 0; // no actions if any of these values == 0\n\n  if (!(maxActions && maxPerElement && autoStartMax)) {\n    return false;\n  }\n\n  for (const interaction of scope.interactions.list) {\n    const otherAction = interaction.prepared.name;\n\n    if (!interaction.interacting()) {\n      continue;\n    }\n\n    activeInteractions++;\n\n    if (activeInteractions >= autoStartMax) {\n      return false;\n    }\n\n    if (interaction.interactable !== interactable) {\n      continue;\n    }\n\n    interactableCount += otherAction === action.name ? 1 : 0;\n\n    if (interactableCount >= maxActions) {\n      return false;\n    }\n\n    if (interaction.element === element) {\n      elementCount++;\n\n      if (otherAction === action.name && elementCount >= maxPerElement) {\n        return false;\n      }\n    }\n  }\n\n  return autoStartMax > 0;\n}\n\nfunction maxInteractions(newValue, scope) {\n  if (is.number(newValue)) {\n    scope.autoStart.maxInteractions = newValue;\n    return this;\n  }\n\n  return scope.autoStart.maxInteractions;\n}\n\nfunction setCursor(element, cursor, scope) {\n  const {\n    cursorElement: prevCursorElement\n  } = scope.autoStart;\n\n  if (prevCursorElement && prevCursorElement !== element) {\n    prevCursorElement.style.cursor = '';\n  }\n\n  element.ownerDocument.documentElement.style.cursor = cursor;\n  element.style.cursor = cursor;\n  scope.autoStart.cursorElement = cursor ? element : null;\n}\n\nfunction setInteractionCursor(interaction, scope) {\n  const {\n    interactable,\n    element,\n    prepared\n  } = interaction;\n\n  if (!(interaction.pointerType === 'mouse' && interactable && interactable.options.styleCursor)) {\n    // clear previous target element cursor\n    if (scope.autoStart.cursorElement) {\n      setCursor(scope.autoStart.cursorElement, '', scope);\n    }\n\n    return;\n  }\n\n  let cursor = '';\n\n  if (prepared.name) {\n    const cursorChecker = interactable.options[prepared.name].cursorChecker;\n\n    if (is.func(cursorChecker)) {\n      cursor = cursorChecker(prepared, interactable, element, interaction._interacting);\n    } else {\n      cursor = scope.actions.map[prepared.name].getCursor(prepared);\n    }\n  }\n\n  setCursor(interaction.element, cursor || '', scope);\n}\n\nconst autoStart = {\n  id: 'auto-start/base',\n  before: ['actions'],\n  install,\n  listeners: {\n    'interactions:down': prepareOnDown,\n    'interactions:move': (arg, scope) => {\n      prepareOnMove(arg, scope);\n      startOnMove(arg, scope);\n    },\n    'interactions:stop': clearCursorOnStop\n  },\n  maxInteractions,\n  withinInteractionLimit,\n  validateAction\n};\nexport default autoStart;\n//# sourceMappingURL=base.js.map","import { parentNode } from \"../utils/domUtils.js\";\nimport is from \"../utils/is.js\";\nimport autoStart from \"./base.js\";\n\nfunction beforeStart({\n  interaction,\n  eventTarget,\n  dx,\n  dy\n}, scope) {\n  if (interaction.prepared.name !== 'drag') {\n    return;\n  } // check if a drag is in the correct axis\n\n\n  const absX = Math.abs(dx);\n  const absY = Math.abs(dy);\n  const targetOptions = interaction.interactable.options.drag;\n  const startAxis = targetOptions.startAxis;\n  const currentAxis = absX > absY ? 'x' : absX < absY ? 'y' : 'xy';\n  interaction.prepared.axis = targetOptions.lockAxis === 'start' ? currentAxis[0] // always lock to one axis even if currentAxis === 'xy'\n  : targetOptions.lockAxis; // if the movement isn't in the startAxis of the interactable\n\n  if (currentAxis !== 'xy' && startAxis !== 'xy' && startAxis !== currentAxis) {\n    // cancel the prepared action\n    interaction.prepared.name = null; // then try to get a drag from another ineractable\n\n    let element = eventTarget;\n\n    const getDraggable = function (interactable) {\n      if (interactable === interaction.interactable) {\n        return;\n      }\n\n      const options = interaction.interactable.options.drag;\n\n      if (!options.manualStart && interactable.testIgnoreAllow(options, element, eventTarget)) {\n        const action = interactable.getAction(interaction.downPointer, interaction.downEvent, interaction, element);\n\n        if (action && action.name === 'drag' && checkStartAxis(currentAxis, interactable) && autoStart.validateAction(action, interactable, element, eventTarget, scope)) {\n          return interactable;\n        }\n      }\n    }; // check all interactables\n\n\n    while (is.element(element)) {\n      const interactable = scope.interactables.forEachMatch(element, getDraggable);\n\n      if (interactable) {\n        interaction.prepared.name = 'drag';\n        interaction.interactable = interactable;\n        interaction.element = element;\n        break;\n      }\n\n      element = parentNode(element);\n    }\n  }\n}\n\nfunction checkStartAxis(startAxis, interactable) {\n  if (!interactable) {\n    return false;\n  }\n\n  const thisAxis = interactable.options.drag.startAxis;\n  return startAxis === 'xy' || thisAxis === 'xy' || thisAxis === startAxis;\n}\n\nexport default {\n  id: 'auto-start/dragAxis',\n  listeners: {\n    'autoStart:before-start': beforeStart\n  }\n};\n//# sourceMappingURL=dragAxis.js.map","import Interaction from \"../core/Interaction.js\";\nimport basePlugin from \"./base.js\";\n\nfunction install(scope) {\n  const {\n    defaults\n  } = scope;\n  scope.usePlugin(basePlugin);\n  defaults.perAction.hold = 0;\n  defaults.perAction.delay = 0;\n}\n\nfunction getHoldDuration(interaction) {\n  const actionName = interaction.prepared && interaction.prepared.name;\n\n  if (!actionName) {\n    return null;\n  }\n\n  const options = interaction.interactable.options;\n  return options[actionName].hold || options[actionName].delay;\n}\n\nconst hold = {\n  id: 'auto-start/hold',\n  install,\n  listeners: {\n    'interactions:new': ({\n      interaction\n    }) => {\n      interaction.autoStartHoldTimer = null;\n    },\n    'autoStart:prepared': ({\n      interaction\n    }) => {\n      const hold = getHoldDuration(interaction);\n\n      if (hold > 0) {\n        interaction.autoStartHoldTimer = setTimeout(() => {\n          interaction.start(interaction.prepared, interaction.interactable, interaction.element);\n        }, hold);\n      }\n    },\n    'interactions:move': ({\n      interaction,\n      duplicate\n    }) => {\n      if (interaction.autoStartHoldTimer && interaction.pointerWasMoved && !duplicate) {\n        clearTimeout(interaction.autoStartHoldTimer);\n        interaction.autoStartHoldTimer = null;\n      }\n    },\n    // prevent regular down->move autoStart\n    'autoStart:before-start': ({\n      interaction\n    }) => {\n      const holdDuration = getHoldDuration(interaction);\n\n      if (holdDuration > 0) {\n        interaction.prepared.name = null;\n      }\n    }\n  },\n  getHoldDuration\n};\nexport default hold;\n//# sourceMappingURL=hold.js.map","import autoStart from \"./base.js\";\nimport dragAxis from \"./dragAxis.js\";\nimport hold from \"./hold.js\";\nexport default {\n  id: 'auto-start',\n\n  install(scope) {\n    scope.usePlugin(autoStart);\n    scope.usePlugin(hold);\n    scope.usePlugin(dragAxis);\n  }\n\n};\n//# sourceMappingURL=plugin.js.map","/* eslint-disable import/order, no-console, eol-last */\nimport interact, { init } from \"../interact/index.js\";\nimport plugin from \"./plugin.js\";\n\nif (typeof window === 'object' && !!window) {\n  init(window);\n}\n\ninteract.use(plugin);\n//# sourceMappingURL=index.js.map","import { Interactable } from \"../../core/Interactable.js\";\nimport is from \"../../utils/is.js\";\n\nfunction install(scope) {\n  const {\n    actions,\n    Interactable,\n    defaults\n  } = scope;\n  Interactable.prototype.draggable = drag.draggable;\n  actions.map.drag = drag;\n  actions.methodDict.drag = 'draggable';\n  defaults.actions.drag = drag.defaults;\n}\n\nfunction beforeMove({\n  interaction\n}) {\n  if (interaction.prepared.name !== 'drag') {\n    return;\n  }\n\n  const axis = interaction.prepared.axis;\n\n  if (axis === 'x') {\n    interaction.coords.cur.page.y = interaction.coords.start.page.y;\n    interaction.coords.cur.client.y = interaction.coords.start.client.y;\n    interaction.coords.velocity.client.y = 0;\n    interaction.coords.velocity.page.y = 0;\n  } else if (axis === 'y') {\n    interaction.coords.cur.page.x = interaction.coords.start.page.x;\n    interaction.coords.cur.client.x = interaction.coords.start.client.x;\n    interaction.coords.velocity.client.x = 0;\n    interaction.coords.velocity.page.x = 0;\n  }\n}\n\nfunction move({\n  iEvent,\n  interaction\n}) {\n  if (interaction.prepared.name !== 'drag') {\n    return;\n  }\n\n  const axis = interaction.prepared.axis;\n\n  if (axis === 'x' || axis === 'y') {\n    const opposite = axis === 'x' ? 'y' : 'x';\n    iEvent.page[opposite] = interaction.coords.start.page[opposite];\n    iEvent.client[opposite] = interaction.coords.start.client[opposite];\n    iEvent.delta[opposite] = 0;\n  }\n}\n/**\n * ```js\n * interact(element).draggable({\n *     onstart: function (event) {},\n *     onmove : function (event) {},\n *     onend  : function (event) {},\n *\n *     // the axis in which the first movement must be\n *     // for the drag sequence to start\n *     // 'xy' by default - any direction\n *     startAxis: 'x' || 'y' || 'xy',\n *\n *     // 'xy' by default - don't restrict to one axis (move in any direction)\n *     // 'x' or 'y' to restrict movement to either axis\n *     // 'start' to restrict movement to the axis the drag started in\n *     lockAxis: 'x' || 'y' || 'xy' || 'start',\n *\n *     // max number of drags that can happen concurrently\n *     // with elements of this Interactable. Infinity by default\n *     max: Infinity,\n *\n *     // max number of drags that can target the same element+Interactable\n *     // 1 by default\n *     maxPerElement: 2\n * })\n *\n * var isDraggable = interact('element').draggable(); // true\n * ```\n *\n * Get or set whether drag actions can be performed on the target\n *\n * @alias Interactable.prototype.draggable\n *\n * @param {boolean | object} [options] true/false or An object with event\n * listeners to be fired on drag events (object makes the Interactable\n * draggable)\n * @return {boolean | Interactable} boolean indicating if this can be the\n * target of drag events, or this Interctable\n */\n\n\nconst draggable = function draggable(options) {\n  if (is.object(options)) {\n    this.options.drag.enabled = options.enabled !== false;\n    this.setPerAction('drag', options);\n    this.setOnEvents('drag', options);\n\n    if (/^(xy|x|y|start)$/.test(options.lockAxis)) {\n      this.options.drag.lockAxis = options.lockAxis;\n    }\n\n    if (/^(xy|x|y)$/.test(options.startAxis)) {\n      this.options.drag.startAxis = options.startAxis;\n    }\n\n    return this;\n  }\n\n  if (is.bool(options)) {\n    this.options.drag.enabled = options;\n    return this;\n  }\n\n  return this.options.drag;\n};\n\nconst drag = {\n  id: 'actions/drag',\n  install,\n  listeners: {\n    'interactions:before-action-move': beforeMove,\n    'interactions:action-resume': beforeMove,\n    // dragmove\n    'interactions:action-move': move,\n    'auto-start:check': arg => {\n      const {\n        interaction,\n        interactable,\n        buttons\n      } = arg;\n      const dragOptions = interactable.options.drag;\n\n      if (!(dragOptions && dragOptions.enabled) || // check mouseButton setting if the pointer is down\n      interaction.pointerIsDown && /mouse|pointer/.test(interaction.pointerType) && (buttons & interactable.options.drag.mouseButtons) === 0) {\n        return undefined;\n      }\n\n      arg.action = {\n        name: 'drag',\n        axis: dragOptions.lockAxis === 'start' ? dragOptions.startAxis : dragOptions.lockAxis\n      };\n      return false;\n    }\n  },\n  draggable,\n  beforeMove,\n  move,\n  defaults: {\n    startAxis: 'xy',\n    lockAxis: 'xy'\n  },\n\n  getCursor() {\n    return 'move';\n  }\n\n};\nexport default drag;\n//# sourceMappingURL=plugin.js.map","/* eslint-disable import/order, no-console, eol-last */\nimport interact, { init } from \"../../interact/index.js\";\nimport plugin from \"./plugin.js\";\n\nif (typeof window === 'object' && !!window) {\n  init(window);\n}\n\ninteract.use(plugin);\n//# sourceMappingURL=index.js.map","import { Interactable } from \"../../core/Interactable.js\";\nimport { Interaction } from \"../../core/Interaction.js\";\nimport * as dom from \"../../utils/domUtils.js\";\nimport extend from \"../../utils/extend.js\";\nimport is from \"../../utils/is.js\";\n\nfunction install(scope) {\n  const {\n    actions,\n    browser,\n\n    /** @lends Interactable */\n    Interactable,\n    // tslint:disable-line no-shadowed-variable\n    defaults\n  } = scope; // Less Precision with touch input\n\n  resize.cursors = initCursors(browser);\n  resize.defaultMargin = browser.supportsTouch || browser.supportsPointerEvent ? 20 : 10;\n  /**\n   * ```js\n   * interact(element).resizable({\n   *   onstart: function (event) {},\n   *   onmove : function (event) {},\n   *   onend  : function (event) {},\n   *\n   *   edges: {\n   *     top   : true,       // Use pointer coords to check for resize.\n   *     left  : false,      // Disable resizing from left edge.\n   *     bottom: '.resize-s',// Resize if pointer target matches selector\n   *     right : handleEl    // Resize if pointer target is the given Element\n   *   },\n   *\n   *     // Width and height can be adjusted independently. When `true`, width and\n   *     // height are adjusted at a 1:1 ratio.\n   *     square: false,\n   *\n   *     // Width and height can be adjusted independently. When `true`, width and\n   *     // height maintain the aspect ratio they had when resizing started.\n   *     preserveAspectRatio: false,\n   *\n   *   // a value of 'none' will limit the resize rect to a minimum of 0x0\n   *   // 'negate' will allow the rect to have negative width/height\n   *   // 'reposition' will keep the width/height positive by swapping\n   *   // the top and bottom edges and/or swapping the left and right edges\n   *   invert: 'none' || 'negate' || 'reposition'\n   *\n   *   // limit multiple resizes.\n   *   // See the explanation in the {@link Interactable.draggable} example\n   *   max: Infinity,\n   *   maxPerElement: 1,\n   * })\n   *\n   * var isResizeable = interact(element).resizable()\n   * ```\n   *\n   * Gets or sets whether resize actions can be performed on the target\n   *\n   * @param {boolean | object} [options] true/false or An object with event\n   * listeners to be fired on resize events (object makes the Interactable\n   * resizable)\n   * @return {boolean | Interactable} A boolean indicating if this can be the\n   * target of resize elements, or this Interactable\n   */\n\n  Interactable.prototype.resizable = function (options) {\n    return resizable(this, options, scope);\n  };\n\n  actions.map.resize = resize;\n  actions.methodDict.resize = 'resizable';\n  defaults.actions.resize = resize.defaults;\n}\n\nfunction resizeChecker(arg) {\n  const {\n    interaction,\n    interactable,\n    element,\n    rect,\n    buttons\n  } = arg;\n\n  if (!rect) {\n    return undefined;\n  }\n\n  const page = extend({}, interaction.coords.cur.page);\n  const resizeOptions = interactable.options.resize;\n\n  if (!(resizeOptions && resizeOptions.enabled) || // check mouseButton setting if the pointer is down\n  interaction.pointerIsDown && /mouse|pointer/.test(interaction.pointerType) && (buttons & resizeOptions.mouseButtons) === 0) {\n    return undefined;\n  } // if using resize.edges\n\n\n  if (is.object(resizeOptions.edges)) {\n    const resizeEdges = {\n      left: false,\n      right: false,\n      top: false,\n      bottom: false\n    };\n\n    for (const edge in resizeEdges) {\n      resizeEdges[edge] = checkResizeEdge(edge, resizeOptions.edges[edge], page, interaction._latestPointer.eventTarget, element, rect, resizeOptions.margin || resize.defaultMargin);\n    }\n\n    resizeEdges.left = resizeEdges.left && !resizeEdges.right;\n    resizeEdges.top = resizeEdges.top && !resizeEdges.bottom;\n\n    if (resizeEdges.left || resizeEdges.right || resizeEdges.top || resizeEdges.bottom) {\n      arg.action = {\n        name: 'resize',\n        edges: resizeEdges\n      };\n    }\n  } else {\n    const right = resizeOptions.axis !== 'y' && page.x > rect.right - resize.defaultMargin;\n    const bottom = resizeOptions.axis !== 'x' && page.y > rect.bottom - resize.defaultMargin;\n\n    if (right || bottom) {\n      arg.action = {\n        name: 'resize',\n        axes: (right ? 'x' : '') + (bottom ? 'y' : '')\n      };\n    }\n  }\n\n  return arg.action ? false : undefined;\n}\n\nfunction resizable(interactable, options, scope) {\n  if (is.object(options)) {\n    interactable.options.resize.enabled = options.enabled !== false;\n    interactable.setPerAction('resize', options);\n    interactable.setOnEvents('resize', options);\n\n    if (is.string(options.axis) && /^x$|^y$|^xy$/.test(options.axis)) {\n      interactable.options.resize.axis = options.axis;\n    } else if (options.axis === null) {\n      interactable.options.resize.axis = scope.defaults.actions.resize.axis;\n    }\n\n    if (is.bool(options.preserveAspectRatio)) {\n      interactable.options.resize.preserveAspectRatio = options.preserveAspectRatio;\n    } else if (is.bool(options.square)) {\n      interactable.options.resize.square = options.square;\n    }\n\n    return interactable;\n  }\n\n  if (is.bool(options)) {\n    interactable.options.resize.enabled = options;\n    return interactable;\n  }\n\n  return interactable.options.resize;\n}\n\nfunction checkResizeEdge(name, value, page, element, interactableElement, rect, margin) {\n  // false, '', undefined, null\n  if (!value) {\n    return false;\n  } // true value, use pointer coords and element rect\n\n\n  if (value === true) {\n    // if dimensions are negative, \"switch\" edges\n    const width = is.number(rect.width) ? rect.width : rect.right - rect.left;\n    const height = is.number(rect.height) ? rect.height : rect.bottom - rect.top; // don't use margin greater than half the relevent dimension\n\n    margin = Math.min(margin, Math.abs((name === 'left' || name === 'right' ? width : height) / 2));\n\n    if (width < 0) {\n      if (name === 'left') {\n        name = 'right';\n      } else if (name === 'right') {\n        name = 'left';\n      }\n    }\n\n    if (height < 0) {\n      if (name === 'top') {\n        name = 'bottom';\n      } else if (name === 'bottom') {\n        name = 'top';\n      }\n    }\n\n    if (name === 'left') {\n      return page.x < (width >= 0 ? rect.left : rect.right) + margin;\n    }\n\n    if (name === 'top') {\n      return page.y < (height >= 0 ? rect.top : rect.bottom) + margin;\n    }\n\n    if (name === 'right') {\n      return page.x > (width >= 0 ? rect.right : rect.left) - margin;\n    }\n\n    if (name === 'bottom') {\n      return page.y > (height >= 0 ? rect.bottom : rect.top) - margin;\n    }\n  } // the remaining checks require an element\n\n\n  if (!is.element(element)) {\n    return false;\n  }\n\n  return is.element(value) // the value is an element to use as a resize handle\n  ? value === element // otherwise check if element matches value as selector\n  : dom.matchesUpTo(element, value, interactableElement);\n}\n/* eslint-disable multiline-ternary */\n\n\nfunction initCursors(browser) {\n  return browser.isIe9 ? {\n    x: 'e-resize',\n    y: 's-resize',\n    xy: 'se-resize',\n    top: 'n-resize',\n    left: 'w-resize',\n    bottom: 's-resize',\n    right: 'e-resize',\n    topleft: 'se-resize',\n    bottomright: 'se-resize',\n    topright: 'ne-resize',\n    bottomleft: 'ne-resize'\n  } : {\n    x: 'ew-resize',\n    y: 'ns-resize',\n    xy: 'nwse-resize',\n    top: 'ns-resize',\n    left: 'ew-resize',\n    bottom: 'ns-resize',\n    right: 'ew-resize',\n    topleft: 'nwse-resize',\n    bottomright: 'nwse-resize',\n    topright: 'nesw-resize',\n    bottomleft: 'nesw-resize'\n  };\n}\n/* eslint-enable multiline-ternary */\n\n\nfunction start({\n  iEvent,\n  interaction\n}) {\n  if (interaction.prepared.name !== 'resize' || !interaction.prepared.edges) {\n    return;\n  }\n\n  const resizeEvent = iEvent;\n  const rect = interaction.rect;\n  interaction._rects = {\n    start: extend({}, rect),\n    corrected: extend({}, rect),\n    previous: extend({}, rect),\n    delta: {\n      left: 0,\n      right: 0,\n      width: 0,\n      top: 0,\n      bottom: 0,\n      height: 0\n    }\n  };\n  resizeEvent.edges = interaction.prepared.edges;\n  resizeEvent.rect = interaction._rects.corrected;\n  resizeEvent.deltaRect = interaction._rects.delta;\n}\n\nfunction move({\n  iEvent,\n  interaction\n}) {\n  if (interaction.prepared.name !== 'resize' || !interaction.prepared.edges) {\n    return;\n  }\n\n  const resizeEvent = iEvent;\n  const resizeOptions = interaction.interactable.options.resize;\n  const invert = resizeOptions.invert;\n  const invertible = invert === 'reposition' || invert === 'negate';\n  const current = interaction.rect;\n  const {\n    start: startRect,\n    corrected,\n    delta: deltaRect,\n    previous\n  } = interaction._rects;\n  extend(previous, corrected);\n\n  if (invertible) {\n    // if invertible, copy the current rect\n    extend(corrected, current);\n\n    if (invert === 'reposition') {\n      // swap edge values if necessary to keep width/height positive\n      if (corrected.top > corrected.bottom) {\n        const swap = corrected.top;\n        corrected.top = corrected.bottom;\n        corrected.bottom = swap;\n      }\n\n      if (corrected.left > corrected.right) {\n        const swap = corrected.left;\n        corrected.left = corrected.right;\n        corrected.right = swap;\n      }\n    }\n  } else {\n    // if not invertible, restrict to minimum of 0x0 rect\n    corrected.top = Math.min(current.top, startRect.bottom);\n    corrected.bottom = Math.max(current.bottom, startRect.top);\n    corrected.left = Math.min(current.left, startRect.right);\n    corrected.right = Math.max(current.right, startRect.left);\n  }\n\n  corrected.width = corrected.right - corrected.left;\n  corrected.height = corrected.bottom - corrected.top;\n\n  for (const edge in corrected) {\n    deltaRect[edge] = corrected[edge] - previous[edge];\n  }\n\n  resizeEvent.edges = interaction.prepared.edges;\n  resizeEvent.rect = corrected;\n  resizeEvent.deltaRect = deltaRect;\n}\n\nfunction end({\n  iEvent,\n  interaction\n}) {\n  if (interaction.prepared.name !== 'resize' || !interaction.prepared.edges) {\n    return;\n  }\n\n  const resizeEvent = iEvent;\n  resizeEvent.edges = interaction.prepared.edges;\n  resizeEvent.rect = interaction._rects.corrected;\n  resizeEvent.deltaRect = interaction._rects.delta;\n}\n\nfunction updateEventAxes({\n  iEvent,\n  interaction\n}) {\n  if (interaction.prepared.name !== 'resize' || !interaction.resizeAxes) {\n    return;\n  }\n\n  const options = interaction.interactable.options;\n  const resizeEvent = iEvent;\n\n  if (options.resize.square) {\n    if (interaction.resizeAxes === 'y') {\n      resizeEvent.delta.x = resizeEvent.delta.y;\n    } else {\n      resizeEvent.delta.y = resizeEvent.delta.x;\n    }\n\n    resizeEvent.axes = 'xy';\n  } else {\n    resizeEvent.axes = interaction.resizeAxes;\n\n    if (interaction.resizeAxes === 'x') {\n      resizeEvent.delta.y = 0;\n    } else if (interaction.resizeAxes === 'y') {\n      resizeEvent.delta.x = 0;\n    }\n  }\n}\n\nconst resize = {\n  id: 'actions/resize',\n  before: ['actions/drag'],\n  install,\n  listeners: {\n    'interactions:new': ({\n      interaction\n    }) => {\n      interaction.resizeAxes = 'xy';\n    },\n    'interactions:action-start': arg => {\n      start(arg);\n      updateEventAxes(arg);\n    },\n    'interactions:action-move': arg => {\n      move(arg);\n      updateEventAxes(arg);\n    },\n    'interactions:action-end': end,\n    'auto-start:check': resizeChecker\n  },\n  defaults: {\n    square: false,\n    preserveAspectRatio: false,\n    axis: 'xy',\n    // use default margin\n    margin: NaN,\n    // object with props left, right, top, bottom which are\n    // true/false values to resize when the pointer is over that edge,\n    // CSS selectors to match the handles for each direction\n    // or the Elements for each handle\n    edges: null,\n    // a value of 'none' will limit the resize rect to a minimum of 0x0\n    // 'negate' will alow the rect to have negative width/height\n    // 'reposition' will keep the width/height positive by swapping\n    // the top and bottom edges and/or swapping the left and right edges\n    invert: 'none'\n  },\n  cursors: null,\n\n  getCursor({\n    edges,\n    axis,\n    name\n  }) {\n    const cursors = resize.cursors;\n    let result = null;\n\n    if (axis) {\n      result = cursors[name + axis];\n    } else if (edges) {\n      let cursorKey = '';\n\n      for (const edge of ['top', 'bottom', 'left', 'right']) {\n        if (edges[edge]) {\n          cursorKey += edge;\n        }\n      }\n\n      result = cursors[cursorKey];\n    }\n\n    return result;\n  },\n\n  defaultMargin: null\n};\nexport default resize;\n//# sourceMappingURL=plugin.js.map","/* eslint-disable import/order, no-console, eol-last */\nimport interact, { init } from \"../../interact/index.js\";\nimport plugin from \"./plugin.js\";\n\nif (typeof window === 'object' && !!window) {\n  init(window);\n}\n\ninteract.use(plugin);\n//# sourceMappingURL=index.js.map","export default (() => {});\n//# sourceMappingURL=edgeTarget.js.map","export default (() => {});\n//# sourceMappingURL=elements.js.map","export default (grid => {\n  const coordFields = [['x', 'y'], ['left', 'top'], ['right', 'bottom'], ['width', 'height']].filter(([xField, yField]) => xField in grid || yField in grid);\n\n  const gridFunc = (x, y) => {\n    const {\n      range,\n      limits = {\n        left: -Infinity,\n        right: Infinity,\n        top: -Infinity,\n        bottom: Infinity\n      },\n      offset = {\n        x: 0,\n        y: 0\n      }\n    } = grid;\n    const result = {\n      range,\n      grid,\n      x: null,\n      y: null\n    };\n\n    for (const [xField, yField] of coordFields) {\n      const gridx = Math.round((x - offset.x) / grid[xField]);\n      const gridy = Math.round((y - offset.y) / grid[yField]);\n      result[xField] = Math.max(limits.left, Math.min(limits.right, gridx * grid[xField] + offset.x));\n      result[yField] = Math.max(limits.top, Math.min(limits.bottom, gridy * grid[yField] + offset.y));\n    }\n\n    return result;\n  };\n\n  gridFunc.grid = grid;\n  gridFunc.coordFields = coordFields;\n  return gridFunc;\n});\n//# sourceMappingURL=grid.js.map","export { default as edgeTarget } from \"./edgeTarget.js\";\nexport { default as elements } from \"./elements.js\";\nexport { default as grid } from \"./grid.js\";\n//# sourceMappingURL=all.js.map","import extend from \"../utils/extend.js\";\nimport * as allSnappers from \"./all.js\";\nconst snappersPlugin = {\n  id: 'snappers',\n\n  install(scope) {\n    const {\n      interactStatic: interact\n    } = scope;\n    interact.snappers = extend(interact.snappers || {}, allSnappers);\n    interact.createSnapGrid = interact.snappers.grid;\n  }\n\n};\nexport default snappersPlugin;\n//# sourceMappingURL=plugin.js.map","import clone from \"../utils/clone.js\";\nimport extend from \"../utils/extend.js\";\nimport * as rectUtils from \"../utils/rect.js\";\nexport default class Modification {\n  constructor(interaction) {\n    this.states = [];\n    this.startOffset = {\n      left: 0,\n      right: 0,\n      top: 0,\n      bottom: 0\n    };\n    this.startDelta = null;\n    this.result = null;\n    this.endResult = null;\n    this.edges = void 0;\n    this.interaction = void 0;\n    this.interaction = interaction;\n    this.result = createResult();\n  }\n\n  start({\n    phase\n  }, pageCoords) {\n    const {\n      interaction\n    } = this;\n    const modifierList = getModifierList(interaction);\n    this.prepareStates(modifierList);\n    this.edges = extend({}, interaction.edges);\n    this.startOffset = getRectOffset(interaction.rect, pageCoords);\n    this.startDelta = {\n      x: 0,\n      y: 0\n    };\n    const arg = {\n      phase,\n      pageCoords,\n      preEnd: false\n    };\n    this.result = createResult();\n    this.startAll(arg);\n    const result = this.result = this.setAll(arg);\n    return result;\n  }\n\n  fillArg(arg) {\n    const {\n      interaction\n    } = this;\n    arg.interaction = interaction;\n    arg.interactable = interaction.interactable;\n    arg.element = interaction.element;\n    arg.rect = arg.rect || interaction.rect;\n    arg.edges = this.edges;\n    arg.startOffset = this.startOffset;\n  }\n\n  startAll(arg) {\n    this.fillArg(arg);\n\n    for (const state of this.states) {\n      if (state.methods.start) {\n        arg.state = state;\n        state.methods.start(arg);\n      }\n    }\n  }\n\n  setAll(arg) {\n    this.fillArg(arg);\n    const {\n      phase,\n      preEnd,\n      skipModifiers,\n      rect: unmodifiedRect\n    } = arg;\n    arg.coords = extend({}, arg.pageCoords);\n    arg.rect = extend({}, unmodifiedRect);\n    const states = skipModifiers ? this.states.slice(skipModifiers) : this.states;\n    const newResult = createResult(arg.coords, arg.rect);\n\n    for (const state of states) {\n      const {\n        options\n      } = state;\n      const lastModifierCoords = extend({}, arg.coords);\n      let returnValue = null;\n\n      if (state.methods.set && this.shouldDo(options, preEnd, phase)) {\n        arg.state = state;\n        returnValue = state.methods.set(arg);\n        rectUtils.addEdges(this.interaction.edges, arg.rect, {\n          x: arg.coords.x - lastModifierCoords.x,\n          y: arg.coords.y - lastModifierCoords.y\n        });\n      }\n\n      newResult.eventProps.push(returnValue);\n    }\n\n    newResult.delta.x = arg.coords.x - arg.pageCoords.x;\n    newResult.delta.y = arg.coords.y - arg.pageCoords.y;\n    newResult.rectDelta.left = arg.rect.left - unmodifiedRect.left;\n    newResult.rectDelta.right = arg.rect.right - unmodifiedRect.right;\n    newResult.rectDelta.top = arg.rect.top - unmodifiedRect.top;\n    newResult.rectDelta.bottom = arg.rect.bottom - unmodifiedRect.bottom;\n    const prevCoords = this.result.coords;\n    const prevRect = this.result.rect;\n\n    if (prevCoords && prevRect) {\n      const rectChanged = newResult.rect.left !== prevRect.left || newResult.rect.right !== prevRect.right || newResult.rect.top !== prevRect.top || newResult.rect.bottom !== prevRect.bottom;\n      newResult.changed = rectChanged || prevCoords.x !== newResult.coords.x || prevCoords.y !== newResult.coords.y;\n    }\n\n    return newResult;\n  }\n\n  applyToInteraction(arg) {\n    const {\n      interaction\n    } = this;\n    const {\n      phase\n    } = arg;\n    const curCoords = interaction.coords.cur;\n    const startCoords = interaction.coords.start;\n    const {\n      result,\n      startDelta\n    } = this;\n    const curDelta = result.delta;\n\n    if (phase === 'start') {\n      extend(this.startDelta, result.delta);\n    }\n\n    for (const [coordsSet, delta] of [[startCoords, startDelta], [curCoords, curDelta]]) {\n      coordsSet.page.x += delta.x;\n      coordsSet.page.y += delta.y;\n      coordsSet.client.x += delta.x;\n      coordsSet.client.y += delta.y;\n    }\n\n    const {\n      rectDelta\n    } = this.result;\n    const rect = arg.rect || interaction.rect;\n    rect.left += rectDelta.left;\n    rect.right += rectDelta.right;\n    rect.top += rectDelta.top;\n    rect.bottom += rectDelta.bottom;\n    rect.width = rect.right - rect.left;\n    rect.height = rect.bottom - rect.top;\n  }\n\n  setAndApply(arg) {\n    const {\n      interaction\n    } = this;\n    const {\n      phase,\n      preEnd,\n      skipModifiers\n    } = arg;\n    const result = this.setAll({\n      preEnd,\n      phase,\n      pageCoords: arg.modifiedCoords || interaction.coords.cur.page\n    });\n    this.result = result; // don't fire an action move if a modifier would keep the event in the same\n    // cordinates as before\n\n    if (!result.changed && (!skipModifiers || skipModifiers < this.states.length) && interaction.interacting()) {\n      return false;\n    }\n\n    if (arg.modifiedCoords) {\n      const {\n        page\n      } = interaction.coords.cur;\n      const adjustment = {\n        x: arg.modifiedCoords.x - page.x,\n        y: arg.modifiedCoords.y - page.y\n      };\n      result.coords.x += adjustment.x;\n      result.coords.y += adjustment.y;\n      result.delta.x += adjustment.x;\n      result.delta.y += adjustment.y;\n    }\n\n    this.applyToInteraction(arg);\n  }\n\n  beforeEnd(arg) {\n    const {\n      interaction,\n      event\n    } = arg;\n    const states = this.states;\n\n    if (!states || !states.length) {\n      return;\n    }\n\n    let doPreend = false;\n\n    for (const state of states) {\n      arg.state = state;\n      const {\n        options,\n        methods\n      } = state;\n      const endPosition = methods.beforeEnd && methods.beforeEnd(arg);\n\n      if (endPosition) {\n        this.endResult = endPosition;\n        return false;\n      }\n\n      doPreend = doPreend || !doPreend && this.shouldDo(options, true, arg.phase, true);\n    }\n\n    if (doPreend) {\n      // trigger a final modified move before ending\n      interaction.move({\n        event,\n        preEnd: true\n      });\n    }\n  }\n\n  stop(arg) {\n    const {\n      interaction\n    } = arg;\n\n    if (!this.states || !this.states.length) {\n      return;\n    }\n\n    const modifierArg = extend({\n      states: this.states,\n      interactable: interaction.interactable,\n      element: interaction.element,\n      rect: null\n    }, arg);\n    this.fillArg(modifierArg);\n\n    for (const state of this.states) {\n      modifierArg.state = state;\n\n      if (state.methods.stop) {\n        state.methods.stop(modifierArg);\n      }\n    }\n\n    this.states = null;\n    this.endResult = null;\n  }\n\n  prepareStates(modifierList) {\n    this.states = [];\n\n    for (let index = 0; index < modifierList.length; index++) {\n      const {\n        options,\n        methods,\n        name\n      } = modifierList[index];\n      this.states.push({\n        options,\n        methods,\n        index,\n        name\n      });\n    }\n\n    return this.states;\n  }\n\n  restoreInteractionCoords({\n    interaction: {\n      coords,\n      rect,\n      modification\n    }\n  }) {\n    if (!modification.result) {\n      return;\n    }\n\n    const {\n      startDelta\n    } = modification;\n    const {\n      delta: curDelta,\n      rectDelta\n    } = modification.result;\n    const coordsAndDeltas = [[coords.start, startDelta], [coords.cur, curDelta]];\n\n    for (const [coordsSet, delta] of coordsAndDeltas) {\n      coordsSet.page.x -= delta.x;\n      coordsSet.page.y -= delta.y;\n      coordsSet.client.x -= delta.x;\n      coordsSet.client.y -= delta.y;\n    }\n\n    rect.left -= rectDelta.left;\n    rect.right -= rectDelta.right;\n    rect.top -= rectDelta.top;\n    rect.bottom -= rectDelta.bottom;\n  }\n\n  shouldDo(options, preEnd, phase, requireEndOnly) {\n    if ( // ignore disabled modifiers\n    !options || options.enabled === false || // check if we require endOnly option to fire move before end\n    requireEndOnly && !options.endOnly || // don't apply endOnly modifiers when not ending\n    options.endOnly && !preEnd || // check if modifier should run be applied on start\n    phase === 'start' && !options.setStart) {\n      return false;\n    }\n\n    return true;\n  }\n\n  copyFrom(other) {\n    this.startOffset = other.startOffset;\n    this.startDelta = other.startDelta;\n    this.edges = other.edges;\n    this.states = other.states.map(s => clone(s));\n    this.result = createResult(extend({}, other.result.coords), extend({}, other.result.rect));\n  }\n\n  destroy() {\n    for (const prop in this) {\n      this[prop] = null;\n    }\n  }\n\n}\n\nfunction createResult(coords, rect) {\n  return {\n    rect,\n    coords,\n    delta: {\n      x: 0,\n      y: 0\n    },\n    rectDelta: {\n      left: 0,\n      right: 0,\n      top: 0,\n      bottom: 0\n    },\n    eventProps: [],\n    changed: true\n  };\n}\n\nfunction getModifierList(interaction) {\n  const actionOptions = interaction.interactable.options[interaction.prepared.name];\n  const actionModifiers = actionOptions.modifiers;\n\n  if (actionModifiers && actionModifiers.length) {\n    return actionModifiers;\n  }\n\n  return ['snap', 'snapSize', 'snapEdges', 'restrict', 'restrictEdges', 'restrictSize'].map(type => {\n    const options = actionOptions[type];\n    return options && options.enabled && {\n      options,\n      methods: options._methods\n    };\n  }).filter(m => !!m);\n}\n\nexport function getRectOffset(rect, coords) {\n  return rect ? {\n    left: coords.x - rect.left,\n    top: coords.y - rect.top,\n    right: rect.right - coords.x,\n    bottom: rect.bottom - coords.y\n  } : {\n    left: 0,\n    top: 0,\n    right: 0,\n    bottom: 0\n  };\n}\n//# sourceMappingURL=Modification.js.map","import { InteractEvent } from \"../core/InteractEvent.js\";\nimport Interaction from \"../core/Interaction.js\";\nimport Modification from \"./Modification.js\";\nexport function makeModifier(module, name) {\n  const {\n    defaults\n  } = module;\n  const methods = {\n    start: module.start,\n    set: module.set,\n    beforeEnd: module.beforeEnd,\n    stop: module.stop\n  };\n\n  const modifier = _options => {\n    const options = _options || {};\n    options.enabled = options.enabled !== false; // add missing defaults to options\n\n    for (const prop in defaults) {\n      if (!(prop in options)) {\n        options[prop] = defaults[prop];\n      }\n    }\n\n    const m = {\n      options,\n      methods,\n      name,\n      enable: () => {\n        options.enabled = true;\n        return m;\n      },\n      disable: () => {\n        options.enabled = false;\n        return m;\n      }\n    };\n    return m;\n  };\n\n  if (name && typeof name === 'string') {\n    // for backwrads compatibility\n    modifier._defaults = defaults;\n    modifier._methods = methods;\n  }\n\n  return modifier;\n}\nexport function addEventModifiers({\n  iEvent,\n  interaction: {\n    modification: {\n      result\n    }\n  }\n}) {\n  if (result) {\n    iEvent.modifiers = result.eventProps;\n  }\n}\nconst modifiersBase = {\n  id: 'modifiers/base',\n  before: ['actions'],\n  install: scope => {\n    scope.defaults.perAction.modifiers = [];\n  },\n  listeners: {\n    'interactions:new': ({\n      interaction\n    }) => {\n      interaction.modification = new Modification(interaction);\n    },\n    'interactions:before-action-start': arg => {\n      const {\n        modification\n      } = arg.interaction;\n      modification.start(arg, arg.interaction.coords.start.page);\n      arg.interaction.edges = modification.edges;\n      modification.applyToInteraction(arg);\n    },\n    'interactions:before-action-move': arg => arg.interaction.modification.setAndApply(arg),\n    'interactions:before-action-end': arg => arg.interaction.modification.beforeEnd(arg),\n    'interactions:action-start': addEventModifiers,\n    'interactions:action-move': addEventModifiers,\n    'interactions:action-end': addEventModifiers,\n    'interactions:after-action-start': arg => arg.interaction.modification.restoreInteractionCoords(arg),\n    'interactions:after-action-move': arg => arg.interaction.modification.restoreInteractionCoords(arg),\n    'interactions:stop': arg => arg.interaction.modification.stop(arg)\n  }\n};\nexport default modifiersBase;\n//# sourceMappingURL=base.js.map","/**\n * @module modifiers/aspectRatio\n *\n * @description\n * This module forces elements to be resized with a specified dx/dy ratio.\n *\n * ```js\n * interact(target).resizable({\n *   modifiers: [\n *     interact.modifiers.snapSize({\n *       targets: [ interact.snappers.grid({ x: 20, y: 20 }) ],\n *     }),\n *     interact.aspectRatio({ ratio: 'preserve' }),\n *   ],\n * });\n * ```\n */\nimport extend from \"../utils/extend.js\";\nimport { addEdges } from \"../utils/rect.js\";\nimport Modification from \"./Modification.js\";\nimport { makeModifier } from \"./base.js\";\nconst aspectRatio = {\n  start(arg) {\n    const {\n      state,\n      rect,\n      edges: originalEdges,\n      pageCoords: coords\n    } = arg;\n    let {\n      ratio\n    } = state.options;\n    const {\n      equalDelta,\n      modifiers\n    } = state.options;\n\n    if (ratio === 'preserve') {\n      ratio = rect.width / rect.height;\n    }\n\n    state.startCoords = extend({}, coords);\n    state.startRect = extend({}, rect);\n    state.ratio = ratio;\n    state.equalDelta = equalDelta;\n    const linkedEdges = state.linkedEdges = {\n      top: originalEdges.top || originalEdges.left && !originalEdges.bottom,\n      left: originalEdges.left || originalEdges.top && !originalEdges.right,\n      bottom: originalEdges.bottom || originalEdges.right && !originalEdges.top,\n      right: originalEdges.right || originalEdges.bottom && !originalEdges.left\n    };\n    state.xIsPrimaryAxis = !!(originalEdges.left || originalEdges.right);\n\n    if (state.equalDelta) {\n      state.edgeSign = (linkedEdges.left ? 1 : -1) * (linkedEdges.top ? 1 : -1);\n    } else {\n      const negativeSecondaryEdge = state.xIsPrimaryAxis ? linkedEdges.top : linkedEdges.left;\n      state.edgeSign = negativeSecondaryEdge ? -1 : 1;\n    }\n\n    extend(arg.edges, linkedEdges);\n\n    if (!modifiers || !modifiers.length) {\n      return;\n    }\n\n    const subModification = new Modification(arg.interaction);\n    subModification.copyFrom(arg.interaction.modification);\n    subModification.prepareStates(modifiers);\n    state.subModification = subModification;\n    subModification.startAll({ ...arg\n    });\n  },\n\n  set(arg) {\n    const {\n      state,\n      rect,\n      coords\n    } = arg;\n    const initialCoords = extend({}, coords);\n    const aspectMethod = state.equalDelta ? setEqualDelta : setRatio;\n    aspectMethod(state, state.xIsPrimaryAxis, coords, rect);\n\n    if (!state.subModification) {\n      return null;\n    }\n\n    const correctedRect = extend({}, rect);\n    addEdges(state.linkedEdges, correctedRect, {\n      x: coords.x - initialCoords.x,\n      y: coords.y - initialCoords.y\n    });\n    const result = state.subModification.setAll({ ...arg,\n      rect: correctedRect,\n      edges: state.linkedEdges,\n      pageCoords: coords,\n      prevCoords: coords,\n      prevRect: correctedRect\n    });\n    const {\n      delta\n    } = result;\n\n    if (result.changed) {\n      const xIsCriticalAxis = Math.abs(delta.x) > Math.abs(delta.y); // do aspect modification again with critical edge axis as primary\n\n      aspectMethod(state, xIsCriticalAxis, result.coords, result.rect);\n      extend(coords, result.coords);\n    }\n\n    return result.eventProps;\n  },\n\n  defaults: {\n    ratio: 'preserve',\n    equalDelta: false,\n    modifiers: [],\n    enabled: false\n  }\n};\n\nfunction setEqualDelta({\n  startCoords,\n  edgeSign\n}, xIsPrimaryAxis, coords) {\n  if (xIsPrimaryAxis) {\n    coords.y = startCoords.y + (coords.x - startCoords.x) * edgeSign;\n  } else {\n    coords.x = startCoords.x + (coords.y - startCoords.y) * edgeSign;\n  }\n}\n\nfunction setRatio({\n  startRect,\n  startCoords,\n  ratio,\n  edgeSign\n}, xIsPrimaryAxis, coords, rect) {\n  if (xIsPrimaryAxis) {\n    const newHeight = rect.width / ratio;\n    coords.y = startCoords.y + (newHeight - startRect.height) * edgeSign;\n  } else {\n    const newWidth = rect.height * ratio;\n    coords.x = startCoords.x + (newWidth - startRect.width) * edgeSign;\n  }\n}\n\nexport default makeModifier(aspectRatio, 'aspectRatio');\nexport { aspectRatio };\n//# sourceMappingURL=aspectRatio.js.map","const noop = () => {};\n\nnoop._defaults = {};\nexport default noop;\n//# sourceMappingURL=noop.js.map","import extend from \"../../utils/extend.js\";\nimport is from \"../../utils/is.js\";\nimport * as rectUtils from \"../../utils/rect.js\";\nimport { makeModifier } from \"../base.js\";\n\nfunction start({\n  rect,\n  startOffset,\n  state,\n  interaction,\n  pageCoords\n}) {\n  const {\n    options\n  } = state;\n  const {\n    elementRect\n  } = options;\n  const offset = extend({\n    left: 0,\n    top: 0,\n    right: 0,\n    bottom: 0\n  }, options.offset || {});\n\n  if (rect && elementRect) {\n    const restriction = getRestrictionRect(options.restriction, interaction, pageCoords);\n\n    if (restriction) {\n      const widthDiff = restriction.right - restriction.left - rect.width;\n      const heightDiff = restriction.bottom - restriction.top - rect.height;\n\n      if (widthDiff < 0) {\n        offset.left += widthDiff;\n        offset.right += widthDiff;\n      }\n\n      if (heightDiff < 0) {\n        offset.top += heightDiff;\n        offset.bottom += heightDiff;\n      }\n    }\n\n    offset.left += startOffset.left - rect.width * elementRect.left;\n    offset.top += startOffset.top - rect.height * elementRect.top;\n    offset.right += startOffset.right - rect.width * (1 - elementRect.right);\n    offset.bottom += startOffset.bottom - rect.height * (1 - elementRect.bottom);\n  }\n\n  state.offset = offset;\n}\n\nfunction set({\n  coords,\n  interaction,\n  state\n}) {\n  const {\n    options,\n    offset\n  } = state;\n  const restriction = getRestrictionRect(options.restriction, interaction, coords);\n\n  if (!restriction) {\n    return;\n  }\n\n  const rect = rectUtils.xywhToTlbr(restriction);\n  coords.x = Math.max(Math.min(rect.right - offset.right, coords.x), rect.left + offset.left);\n  coords.y = Math.max(Math.min(rect.bottom - offset.bottom, coords.y), rect.top + offset.top);\n}\n\nexport function getRestrictionRect(value, interaction, coords) {\n  if (is.func(value)) {\n    return rectUtils.resolveRectLike(value, interaction.interactable, interaction.element, [coords.x, coords.y, interaction]);\n  } else {\n    return rectUtils.resolveRectLike(value, interaction.interactable, interaction.element);\n  }\n}\nconst defaults = {\n  restriction: null,\n  elementRect: null,\n  offset: null,\n  endOnly: false,\n  enabled: false\n};\nconst restrict = {\n  start,\n  set,\n  defaults\n};\nexport default makeModifier(restrict, 'restrict');\nexport { restrict };\n//# sourceMappingURL=pointer.js.map","// This module adds the options.resize.restrictEdges setting which sets min and\n// max for the top, left, bottom and right edges of the target being resized.\n//\n// interact(target).resize({\n//   edges: { top: true, left: true },\n//   restrictEdges: {\n//     inner: { top: 200, left: 200, right: 400, bottom: 400 },\n//     outer: { top:   0, left:   0, right: 600, bottom: 600 },\n//   },\n// })\nimport extend from \"../../utils/extend.js\";\nimport * as rectUtils from \"../../utils/rect.js\";\nimport { makeModifier } from \"../base.js\";\nimport { getRestrictionRect } from \"./pointer.js\";\nconst noInner = {\n  top: +Infinity,\n  left: +Infinity,\n  bottom: -Infinity,\n  right: -Infinity\n};\nconst noOuter = {\n  top: -Infinity,\n  left: -Infinity,\n  bottom: +Infinity,\n  right: +Infinity\n};\n\nfunction start({\n  interaction,\n  startOffset,\n  state\n}) {\n  const {\n    options\n  } = state;\n  let offset;\n\n  if (options) {\n    const offsetRect = getRestrictionRect(options.offset, interaction, interaction.coords.start.page);\n    offset = rectUtils.rectToXY(offsetRect);\n  }\n\n  offset = offset || {\n    x: 0,\n    y: 0\n  };\n  state.offset = {\n    top: offset.y + startOffset.top,\n    left: offset.x + startOffset.left,\n    bottom: offset.y - startOffset.bottom,\n    right: offset.x - startOffset.right\n  };\n}\n\nfunction set({\n  coords,\n  edges,\n  interaction,\n  state\n}) {\n  const {\n    offset,\n    options\n  } = state;\n\n  if (!edges) {\n    return;\n  }\n\n  const page = extend({}, coords);\n  const inner = getRestrictionRect(options.inner, interaction, page) || {};\n  const outer = getRestrictionRect(options.outer, interaction, page) || {};\n  fixRect(inner, noInner);\n  fixRect(outer, noOuter);\n\n  if (edges.top) {\n    coords.y = Math.min(Math.max(outer.top + offset.top, page.y), inner.top + offset.top);\n  } else if (edges.bottom) {\n    coords.y = Math.max(Math.min(outer.bottom + offset.bottom, page.y), inner.bottom + offset.bottom);\n  }\n\n  if (edges.left) {\n    coords.x = Math.min(Math.max(outer.left + offset.left, page.x), inner.left + offset.left);\n  } else if (edges.right) {\n    coords.x = Math.max(Math.min(outer.right + offset.right, page.x), inner.right + offset.right);\n  }\n}\n\nfunction fixRect(rect, defaults) {\n  for (const edge of ['top', 'left', 'bottom', 'right']) {\n    if (!(edge in rect)) {\n      rect[edge] = defaults[edge];\n    }\n  }\n\n  return rect;\n}\n\nconst defaults = {\n  inner: null,\n  outer: null,\n  offset: null,\n  endOnly: false,\n  enabled: false\n};\nconst restrictEdges = {\n  noInner,\n  noOuter,\n  start,\n  set,\n  defaults\n};\nexport default makeModifier(restrictEdges, 'restrictEdges');\nexport { restrictEdges };\n//# sourceMappingURL=edges.js.map","import extend from \"../../utils/extend.js\";\nimport { makeModifier } from \"../base.js\";\nimport { restrict } from \"./pointer.js\";\nconst defaults = extend({\n  get elementRect() {\n    return {\n      top: 0,\n      left: 0,\n      bottom: 1,\n      right: 1\n    };\n  },\n\n  set elementRect(_) {}\n\n}, restrict.defaults);\nconst restrictRect = {\n  start: restrict.start,\n  set: restrict.set,\n  defaults\n};\nexport default makeModifier(restrictRect, 'restrictRect');\nexport { restrictRect };\n//# sourceMappingURL=rect.js.map","import extend from \"../../utils/extend.js\";\nimport * as rectUtils from \"../../utils/rect.js\";\nimport { makeModifier } from \"../base.js\";\nimport { restrictEdges } from \"./edges.js\";\nimport { getRestrictionRect } from \"./pointer.js\";\nconst noMin = {\n  width: -Infinity,\n  height: -Infinity\n};\nconst noMax = {\n  width: +Infinity,\n  height: +Infinity\n};\n\nfunction start(arg) {\n  return restrictEdges.start(arg);\n}\n\nfunction set(arg) {\n  const {\n    interaction,\n    state,\n    rect,\n    edges\n  } = arg;\n  const {\n    options\n  } = state;\n\n  if (!edges) {\n    return;\n  }\n\n  const minSize = rectUtils.tlbrToXywh(getRestrictionRect(options.min, interaction, arg.coords)) || noMin;\n  const maxSize = rectUtils.tlbrToXywh(getRestrictionRect(options.max, interaction, arg.coords)) || noMax;\n  state.options = {\n    endOnly: options.endOnly,\n    inner: extend({}, restrictEdges.noInner),\n    outer: extend({}, restrictEdges.noOuter)\n  };\n\n  if (edges.top) {\n    state.options.inner.top = rect.bottom - minSize.height;\n    state.options.outer.top = rect.bottom - maxSize.height;\n  } else if (edges.bottom) {\n    state.options.inner.bottom = rect.top + minSize.height;\n    state.options.outer.bottom = rect.top + maxSize.height;\n  }\n\n  if (edges.left) {\n    state.options.inner.left = rect.right - minSize.width;\n    state.options.outer.left = rect.right - maxSize.width;\n  } else if (edges.right) {\n    state.options.inner.right = rect.left + minSize.width;\n    state.options.outer.right = rect.left + maxSize.width;\n  }\n\n  restrictEdges.set(arg);\n  state.options = options;\n}\n\nconst defaults = {\n  min: null,\n  max: null,\n  endOnly: false,\n  enabled: false\n};\nconst restrictSize = {\n  start,\n  set,\n  defaults\n};\nexport default makeModifier(restrictSize, 'restrictSize');\nexport { restrictSize };\n//# sourceMappingURL=size.js.map","import extend from \"../../utils/extend.js\";\nimport getOriginXY from \"../../utils/getOriginXY.js\";\nimport hypot from \"../../utils/hypot.js\";\nimport is from \"../../utils/is.js\";\nimport { resolveRectLike, rectToXY } from \"../../utils/rect.js\";\nimport { makeModifier } from \"../base.js\";\n\nfunction start(arg) {\n  const {\n    interaction,\n    interactable,\n    element,\n    rect,\n    state,\n    startOffset\n  } = arg;\n  const {\n    options\n  } = state;\n  const origin = options.offsetWithOrigin ? getOrigin(arg) : {\n    x: 0,\n    y: 0\n  };\n  let snapOffset;\n\n  if (options.offset === 'startCoords') {\n    snapOffset = {\n      x: interaction.coords.start.page.x,\n      y: interaction.coords.start.page.y\n    };\n  } else {\n    const offsetRect = resolveRectLike(options.offset, interactable, element, [interaction]);\n    snapOffset = rectToXY(offsetRect) || {\n      x: 0,\n      y: 0\n    };\n    snapOffset.x += origin.x;\n    snapOffset.y += origin.y;\n  }\n\n  const {\n    relativePoints\n  } = options;\n  state.offsets = rect && relativePoints && relativePoints.length ? relativePoints.map((relativePoint, index) => ({\n    index,\n    relativePoint,\n    x: startOffset.left - rect.width * relativePoint.x + snapOffset.x,\n    y: startOffset.top - rect.height * relativePoint.y + snapOffset.y\n  })) : [extend({\n    index: 0,\n    relativePoint: null\n  }, snapOffset)];\n}\n\nfunction set(arg) {\n  const {\n    interaction,\n    coords,\n    state\n  } = arg;\n  const {\n    options,\n    offsets\n  } = state;\n  const origin = getOriginXY(interaction.interactable, interaction.element, interaction.prepared.name);\n  const page = extend({}, coords);\n  const targets = [];\n\n  if (!options.offsetWithOrigin) {\n    page.x -= origin.x;\n    page.y -= origin.y;\n  }\n\n  for (const offset of offsets) {\n    const relativeX = page.x - offset.x;\n    const relativeY = page.y - offset.y;\n\n    for (let index = 0, len = options.targets.length; index < len; index++) {\n      const snapTarget = options.targets[index];\n      let target;\n\n      if (is.func(snapTarget)) {\n        target = snapTarget(relativeX, relativeY, interaction._proxy, offset, index);\n      } else {\n        target = snapTarget;\n      }\n\n      if (!target) {\n        continue;\n      }\n\n      targets.push({\n        x: (is.number(target.x) ? target.x : relativeX) + offset.x,\n        y: (is.number(target.y) ? target.y : relativeY) + offset.y,\n        range: is.number(target.range) ? target.range : options.range,\n        source: snapTarget,\n        index,\n        offset\n      });\n    }\n  }\n\n  const closest = {\n    target: null,\n    inRange: false,\n    distance: 0,\n    range: 0,\n    delta: {\n      x: 0,\n      y: 0\n    }\n  };\n\n  for (const target of targets) {\n    const range = target.range;\n    const dx = target.x - page.x;\n    const dy = target.y - page.y;\n    const distance = hypot(dx, dy);\n    let inRange = distance <= range; // Infinite targets count as being out of range\n    // compared to non infinite ones that are in range\n\n    if (range === Infinity && closest.inRange && closest.range !== Infinity) {\n      inRange = false;\n    }\n\n    if (!closest.target || (inRange // is the closest target in range?\n    ? closest.inRange && range !== Infinity // the pointer is relatively deeper in this target\n    ? distance / range < closest.distance / closest.range // this target has Infinite range and the closest doesn't\n    : range === Infinity && closest.range !== Infinity || // OR this target is closer that the previous closest\n    distance < closest.distance : // The other is not in range and the pointer is closer to this target\n    !closest.inRange && distance < closest.distance)) {\n      closest.target = target;\n      closest.distance = distance;\n      closest.range = range;\n      closest.inRange = inRange;\n      closest.delta.x = dx;\n      closest.delta.y = dy;\n    }\n  }\n\n  if (closest.inRange) {\n    coords.x = closest.target.x;\n    coords.y = closest.target.y;\n  }\n\n  state.closest = closest;\n  return closest;\n}\n\nfunction getOrigin(arg) {\n  const {\n    element\n  } = arg.interaction;\n  const optionsOrigin = rectToXY(resolveRectLike(arg.state.options.origin, null, null, [element]));\n  const origin = optionsOrigin || getOriginXY(arg.interactable, element, arg.interaction.prepared.name);\n  return origin;\n}\n\nconst defaults = {\n  range: Infinity,\n  targets: null,\n  offset: null,\n  offsetWithOrigin: true,\n  origin: null,\n  relativePoints: null,\n  endOnly: false,\n  enabled: false\n};\nconst snap = {\n  start,\n  set,\n  defaults\n};\nexport default makeModifier(snap, 'snap');\nexport { snap };\n//# sourceMappingURL=pointer.js.map","// This module allows snapping of the size of targets during resize\n// interactions.\nimport extend from \"../../utils/extend.js\";\nimport is from \"../../utils/is.js\";\nimport { makeModifier } from \"../base.js\";\nimport { snap } from \"./pointer.js\";\n\nfunction start(arg) {\n  const {\n    state,\n    edges\n  } = arg;\n  const {\n    options\n  } = state;\n\n  if (!edges) {\n    return null;\n  }\n\n  arg.state = {\n    options: {\n      targets: null,\n      relativePoints: [{\n        x: edges.left ? 0 : 1,\n        y: edges.top ? 0 : 1\n      }],\n      offset: options.offset || 'self',\n      origin: {\n        x: 0,\n        y: 0\n      },\n      range: options.range\n    }\n  };\n  state.targetFields = state.targetFields || [['width', 'height'], ['x', 'y']];\n  snap.start(arg);\n  state.offsets = arg.state.offsets;\n  arg.state = state;\n}\n\nfunction set(arg) {\n  const {\n    interaction,\n    state,\n    coords\n  } = arg;\n  const {\n    options,\n    offsets\n  } = state;\n  const relative = {\n    x: coords.x - offsets[0].x,\n    y: coords.y - offsets[0].y\n  };\n  state.options = extend({}, options);\n  state.options.targets = [];\n\n  for (const snapTarget of options.targets || []) {\n    let target;\n\n    if (is.func(snapTarget)) {\n      target = snapTarget(relative.x, relative.y, interaction);\n    } else {\n      target = snapTarget;\n    }\n\n    if (!target) {\n      continue;\n    }\n\n    for (const [xField, yField] of state.targetFields) {\n      if (xField in target || yField in target) {\n        target.x = target[xField];\n        target.y = target[yField];\n        break;\n      }\n    }\n\n    state.options.targets.push(target);\n  }\n\n  const returnValue = snap.set(arg);\n  state.options = options;\n  return returnValue;\n}\n\nconst defaults = {\n  range: Infinity,\n  targets: null,\n  offset: null,\n  endOnly: false,\n  enabled: false\n};\nconst snapSize = {\n  start,\n  set,\n  defaults\n};\nexport default makeModifier(snapSize, 'snapSize');\nexport { snapSize };\n//# sourceMappingURL=size.js.map","/**\n * @module modifiers/snapEdges\n *\n * @description\n * WOW> This module allows snapping of the edges of targets during resize\n * interactions.\n *\n * ```js\n * interact(target).resizable({\n *   snapEdges: {\n *     targets: [interact.snappers.grid({ x: 100, y: 50 })],\n *   },\n * })\n *\n * interact(target).resizable({\n *   snapEdges: {\n *     targets: [\n *       interact.snappers.grid({\n *        top: 50,\n *        left: 50,\n *        bottom: 100,\n *        right: 100,\n *       }),\n *     ],\n *   },\n * })\n * ```\n */\nimport clone from \"../../utils/clone.js\";\nimport extend from \"../../utils/extend.js\";\nimport { makeModifier } from \"../base.js\";\nimport { snapSize } from \"./size.js\";\n\nfunction start(arg) {\n  const {\n    edges\n  } = arg;\n\n  if (!edges) {\n    return null;\n  }\n\n  arg.state.targetFields = arg.state.targetFields || [[edges.left ? 'left' : 'right', edges.top ? 'top' : 'bottom']];\n  return snapSize.start(arg);\n}\n\nconst snapEdges = {\n  start,\n  set: snapSize.set,\n  defaults: extend(clone(snapSize.defaults), {\n    targets: null,\n    range: null,\n    offset: {\n      x: 0,\n      y: 0\n    }\n  })\n};\nexport default makeModifier(snapEdges, 'snapEdges');\nexport { snapEdges };\n//# sourceMappingURL=edges.js.map","/* eslint-disable node/no-extraneous-import */\nimport aspectRatio from \"./aspectRatio.js\";\nimport avoid from \"./avoid.js\";\nimport restrictEdges from \"./restrict/edges.js\";\nimport restrict from \"./restrict/pointer.js\";\nimport restrictRect from \"./restrict/rect.js\";\nimport restrictSize from \"./restrict/size.js\";\nimport rubberband from \"./rubberband.js\";\nimport snapEdges from \"./snap/edges.js\";\nimport snap from \"./snap/pointer.js\";\nimport snapSize from \"./snap/size.js\";\nimport spring from \"./spring.js\";\nimport transform from \"./transform.js\";\nexport default {\n  aspectRatio,\n  restrictEdges,\n  restrict,\n  restrictRect,\n  restrictSize,\n  snapEdges,\n  snap,\n  snapSize,\n  spring,\n  avoid,\n  transform,\n  rubberband\n};\n//# sourceMappingURL=all.js.map","import snappers from \"../snappers/plugin.js\";\nimport all from \"./all.js\";\nimport base from \"./base.js\";\nconst modifiers = {\n  id: 'modifiers',\n\n  install(scope) {\n    const {\n      interactStatic: interact\n    } = scope;\n    scope.usePlugin(base);\n    scope.usePlugin(snappers);\n    interact.modifiers = all; // for backwrads compatibility\n\n    for (const type in all) {\n      const {\n        _defaults,\n        _methods\n      } = all[type];\n      _defaults._methods = _methods;\n      scope.defaults.perAction[type] = _defaults;\n    }\n  }\n\n};\nexport default modifiers;\n//# sourceMappingURL=plugin.js.map","/* eslint-disable import/order, no-console, eol-last */\nimport interact, { init } from \"../interact/index.js\";\nimport plugin from \"./plugin.js\";\n\nif (typeof window === 'object' && !!window) {\n  init(window);\n}\n\ninteract.use(plugin);\n//# sourceMappingURL=index.js.map","/* eslint-disable no-console */\nimport { Scope } from \"../core/scope.js\";\nimport domObjects from \"../utils/domObjects.js\";\nimport { parentNode } from \"../utils/domUtils.js\";\nimport extend from \"../utils/extend.js\";\nimport is from \"../utils/is.js\";\nimport * as win from \"../utils/window.js\";\nvar CheckName;\n\n(function (CheckName) {\n  CheckName[\"touchAction\"] = \"touchAction\";\n  CheckName[\"boxSizing\"] = \"boxSizing\";\n  CheckName[\"noListeners\"] = \"noListeners\";\n})(CheckName || (CheckName = {}));\n\nconst prefix = '[interact.js] ';\nconst links = {\n  touchAction: 'https://developer.mozilla.org/en-US/docs/Web/CSS/touch-action',\n  boxSizing: 'https://developer.mozilla.org/en-US/docs/Web/CSS/box-sizing'\n}; // eslint-disable-next-line no-undef\n\nconst isProduction = \"development\" === 'production'; // eslint-disable-next-line no-restricted-syntax\n\nfunction install(scope, {\n  logger\n} = {}) {\n  const {\n    Interactable,\n    defaults\n  } = scope;\n  scope.logger = logger || console;\n  defaults.base.devTools = {\n    ignore: {}\n  };\n\n  Interactable.prototype.devTools = function (options) {\n    if (options) {\n      extend(this.options.devTools, options);\n      return this;\n    }\n\n    return this.options.devTools;\n  };\n}\n\nconst checks = [{\n  name: CheckName.touchAction,\n\n  perform({\n    element\n  }) {\n    return !parentHasStyle(element, 'touchAction', /pan-|pinch|none/);\n  },\n\n  getInfo({\n    element\n  }) {\n    return [element, links.touchAction];\n  },\n\n  text: 'Consider adding CSS \"touch-action: none\" to this element\\n'\n}, {\n  name: CheckName.boxSizing,\n\n  perform(interaction) {\n    const {\n      element\n    } = interaction;\n    return interaction.prepared.name === 'resize' && element instanceof domObjects.HTMLElement && !hasStyle(element, 'boxSizing', /border-box/);\n  },\n\n  text: 'Consider adding CSS \"box-sizing: border-box\" to this resizable element',\n\n  getInfo({\n    element\n  }) {\n    return [element, links.boxSizing];\n  }\n\n}, {\n  name: CheckName.noListeners,\n\n  perform(interaction) {\n    const actionName = interaction.prepared.name;\n    const moveListeners = interaction.interactable.events.types[`${actionName}move`] || [];\n    return !moveListeners.length;\n  },\n\n  getInfo(interaction) {\n    return [interaction.prepared.name, interaction.interactable];\n  },\n\n  text: 'There are no listeners set for this action'\n}];\n\nfunction hasStyle(element, prop, styleRe) {\n  const value = element.style[prop] || win.window.getComputedStyle(element)[prop];\n  return styleRe.test((value || '').toString());\n}\n\nfunction parentHasStyle(element, prop, styleRe) {\n  let parent = element;\n\n  while (is.element(parent)) {\n    if (hasStyle(parent, prop, styleRe)) {\n      return true;\n    }\n\n    parent = parentNode(parent);\n  }\n\n  return false;\n}\n\nconst id = 'dev-tools';\nconst defaultExport = isProduction ? {\n  id,\n  install: () => {}\n} : {\n  id,\n  install,\n  listeners: {\n    'interactions:action-start': ({\n      interaction\n    }, scope) => {\n      for (const check of checks) {\n        const options = interaction.interactable && interaction.interactable.options;\n\n        if (!(options && options.devTools && options.devTools.ignore[check.name]) && check.perform(interaction)) {\n          scope.logger.warn(prefix + check.text, ...check.getInfo(interaction));\n        }\n      }\n    }\n  },\n  checks,\n  CheckName,\n  links,\n  prefix\n};\nexport default defaultExport;\n//# sourceMappingURL=plugin.js.map","/* eslint-disable import/order, no-console, eol-last */\nimport interact, { init } from \"../interact/index.js\";\nimport plugin from \"./plugin.js\";\n\nif (typeof window === 'object' && !!window) {\n  init(window);\n}\n\ninteract.use(plugin);\n//# sourceMappingURL=index.js.map","export { default } from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./GridItem.vue?vue&type=script&lang=js\"; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./GridItem.vue?vue&type=script&lang=js\"","import { render } from \"./GridItem.vue?vue&type=template&id=46ff2fc8\"\nimport script from \"./GridItem.vue?vue&type=script&lang=js\"\nexport * from \"./GridItem.vue?vue&type=script&lang=js\"\n\nimport \"./GridItem.vue?vue&type=style&index=0&id=46ff2fc8&lang=css\"\nscript.render = render\n\nexport default script","<template>\r\n    <div ref=\"item\" class=\"vue-grid-layout\" :style=\"mergedStyle\">\r\n        <slot></slot>\r\n        <grid-item class=\"vue-grid-placeholder\"\r\n                   v-show=\"isDragging\"\r\n                   :x=\"placeholder.x\"\r\n                   :y=\"placeholder.y\"\r\n                   :w=\"placeholder.w\"\r\n                   :h=\"placeholder.h\"\r\n                   :i=\"placeholder.i\"></grid-item>\r\n    </div>\r\n</template>\r\n<style>\r\n    .vue-grid-layout {\r\n        position: relative;\r\n        transition: height 200ms ease;\r\n    }\r\n</style>\r\n<script>\r\n    import mitt from 'mitt';\r\n    const elementResizeDetectorMaker = require(\"element-resize-detector\");\r\n\r\n    import {bottom, compact, getLayoutItem, moveElement, validateLayout, cloneLayout, getAllCollisions} from '@/helpers/utils';\r\n    import {getBreakpointFromWidth, getColsFromBreakpoint, findOrGenerateResponsiveLayout} from \"@/helpers/responsiveUtils\";\r\n    //var eventBus = require('./eventBus');\r\n\r\n    import GridItem from './GridItem.vue'\r\n    import {addWindowEventListener, removeWindowEventListener} from \"@/helpers/DOM\";\r\n\r\n    export default {\r\n        name: \"GridLayout\",\r\n        provide() {\r\n            return {\r\n                eventBus: this.eventBus,\r\n                layout: this\r\n            }\r\n        },\r\n        components: {\r\n            GridItem,\r\n        },\r\n        props: {\r\n            // If true, the container height swells and contracts to fit contents\r\n            autoSize: {\r\n                type: Boolean,\r\n                default: true\r\n            },\r\n            colNum: {\r\n                type: Number,\r\n                default: 12\r\n            },\r\n            rowHeight: {\r\n                type: Number,\r\n                default: 150\r\n            },\r\n            maxRows: {\r\n                type: Number,\r\n                default: Infinity\r\n            },\r\n            margin: {\r\n                type: Array,\r\n                default: function () {\r\n                    return [10, 10];\r\n                }\r\n            },\r\n            isDraggable: {\r\n                type: Boolean,\r\n                default: true\r\n            },\r\n            isResizable: {\r\n                type: Boolean,\r\n                default: true\r\n            },\r\n            isMirrored: {\r\n                type: Boolean,\r\n                default: false\r\n            },\r\n            useCssTransforms: {\r\n                type: Boolean,\r\n                default: true\r\n            },\r\n            verticalCompact: {\r\n                type: Boolean,\r\n                default: true\r\n            },\r\n            layout: {\r\n                type: Array,\r\n                required: true\r\n            },\r\n            responsive: {\r\n                type: Boolean,\r\n                default: false\r\n            },\r\n            responsiveLayouts: {\r\n                type: Object,\r\n                default: function() {\r\n                    return {};\r\n                }\r\n            },\r\n            breakpoints:{\r\n                type: Object,\r\n                default: function(){return{ lg: 1200, md: 996, sm: 768, xs: 480, xxs: 0 }}\r\n            },\r\n            cols:{\r\n                type: Object,\r\n                default: function(){return{ lg: 12, md: 10, sm: 6, xs: 4, xxs: 2 }},\r\n            },\r\n            preventCollision: {\r\n                type: Boolean,\r\n                default: false\r\n            },\r\n            useStyleCursor: {\r\n                type: Boolean,\r\n                default: true\r\n            }\r\n        },\r\n        data: function () {\r\n            return {\r\n                eventBus: mitt(),\r\n                width: null,\r\n                mergedStyle: {},\r\n                lastLayoutLength: 0,\r\n                isDragging: false,\r\n                placeholder: {\r\n                    x: 0,\r\n                    y: 0,\r\n                    w: 0,\r\n                    h: 0,\r\n                    i: -1\r\n                },\r\n                layouts: {}, // array to store all layouts from different breakpoints\r\n                lastBreakpoint: null, // store last active breakpoint\r\n                originalLayout: null, // store original Layout\r\n                // layout: JSON.parse(JSON.stringify(this.value)),\r\n            };\r\n        },\r\n        created () {\r\n            const self = this;\r\n\r\n            // Accessible refernces of functions for removing in beforeUnmount\r\n            self.resizeEventHandler = function({eventType, i, x, y, h, w}) {\r\n                self.resizeEvent(eventType, i, x, y, h, w);\r\n            };\r\n\r\n            self.dragEventHandler = function({eventType, i, x, y, h, w}) {\r\n                self.dragEvent(eventType, i, x, y, h, w);\r\n            };\r\n\r\n            self.eventBus.on('resizeEvent', self.resizeEventHandler);\r\n            self.eventBus.on('dragEvent', self.dragEventHandler);\r\n            self.$emit('layout-created', self.layout);\r\n        },\r\n        beforeUnmount: function(){\r\n            //Remove listeners\r\n            this.eventBus.off('resizeEvent', this.resizeEventHandler);\r\n            this.eventBus.off('dragEvent', this.dragEventHandler);\r\n            removeWindowEventListener(\"resize\", this.onWindowResize);\r\n            if (this.erd) {\r\n                this.erd.uninstall(this.$refs.item);\r\n            }\r\n        },\r\n        beforeMount: function() {\r\n            this.$emit('layout-before-mount', this.layout);\r\n        },\r\n        mounted: function() {\r\n            this.$emit('layout-mounted', this.layout);\r\n            this.$nextTick(function () {\r\n                validateLayout(this.layout);\r\n\r\n                this.originalLayout = this.layout;\r\n                const self = this;\r\n                this.$nextTick(function() {\r\n                    self.onWindowResize();\r\n\r\n                    self.initResponsiveFeatures();\r\n\r\n                    //self.width = self.$el.offsetWidth;\r\n                    addWindowEventListener('resize', self.onWindowResize);\r\n\r\n                    compact(self.layout, self.verticalCompact);\r\n\r\n                    self.$emit('layout-updated',self.layout)\r\n\r\n                    self.updateHeight();\r\n                    self.$nextTick(function () {\r\n                        this.erd = elementResizeDetectorMaker({\r\n                            strategy: \"scroll\", //<- For ultra performance.\r\n                            // See https://github.com/wnr/element-resize-detector/issues/110 about callOnAdd.\r\n                            callOnAdd: false,\r\n                        });\r\n                        this.erd.listenTo(self.$refs.item, function () {\r\n                            self.onWindowResize();\r\n                        });\r\n                    });\r\n                });\r\n            });\r\n        },\r\n        watch: {\r\n            width: function (newval, oldval) {\r\n                const self = this;\r\n                this.$nextTick(function () {\r\n                    //this.$broadcast(\"updateWidth\", this.width);\r\n                    this.eventBus.emit(\"updateWidth\", this.width);\r\n                    if (oldval === null) {\r\n                        /*\r\n                            If oldval == null is when the width has never been\r\n                            set before. That only occurs when mouting is\r\n                            finished, and onWindowResize has been called and\r\n                            this.width has been changed the first time after it\r\n                            got set to null in the constructor. It is now time\r\n                            to issue layout-ready events as the GridItems have\r\n                            their sizes configured properly.\r\n\r\n                            The reason for emitting the layout-ready events on\r\n                            the next tick is to allow for the newly-emitted\r\n                            updateWidth event (above) to have reached the\r\n                            children GridItem-s and had their effect, so we're\r\n                            sure that they have the final size before we emit\r\n                            layout-ready (for this GridLayout) and\r\n                            item-layout-ready (for the GridItem-s).\r\n\r\n                            This way any client event handlers can reliably\r\n                            invistigate stable sizes of GridItem-s.\r\n                        */\r\n                        this.$nextTick(() => {\r\n                            this.$emit('layout-ready', self.layout);\r\n                        });\r\n                    }\r\n                    this.updateHeight();\r\n                });\r\n            },\r\n            layout() {\r\n                this.layoutUpdate();\r\n            },\r\n            colNum: function (val) {\r\n                this.eventBus.emit(\"setColNum\", val);\r\n            },\r\n            rowHeight: function() {\r\n                this.eventBus.emit(\"setRowHeight\", this.rowHeight);\r\n            },\r\n            isDraggable: function() {\r\n                this.eventBus.emit(\"setDraggable\", this.isDraggable);\r\n            },\r\n            isResizable: function() {\r\n                this.eventBus.emit(\"setResizable\", this.isResizable);\r\n            },\r\n            responsive() {\r\n                if (!this.responsive) {\r\n                    this.$emit('update:layout', this.originalLayout);\r\n                    this.eventBus.emit(\"setColNum\", this.colNum);\r\n                }\r\n                this.onWindowResize();\r\n            },\r\n            maxRows: function() {\r\n                this.eventBus.emit(\"setMaxRows\", this.maxRows);\r\n            },\r\n            margin() {\r\n                this.updateHeight();\r\n            }\r\n        },\r\n        methods: {\r\n            layoutUpdate() {\r\n                if (this.layout !== undefined && this.originalLayout !== null) {\r\n                    if (this.layout.length !== this.originalLayout.length) {\r\n                        // console.log(\"### LAYOUT UPDATE!\", this.layout.length, this.originalLayout.length);\r\n\r\n                        let diff = this.findDifference(this.layout, this.originalLayout);\r\n                        if (diff.length > 0){\r\n                            // console.log(diff);\r\n                            if (this.layout.length > this.originalLayout.length) {\r\n                                this.originalLayout = this.originalLayout.concat(diff);\r\n                            } else {\r\n                                this.originalLayout = this.originalLayout.filter(obj => {\r\n                                    return !diff.some(obj2 => {\r\n                                        return obj.i === obj2.i;\r\n                                    });\r\n                                });\r\n                            }\r\n                        }\r\n\r\n                        this.lastLayoutLength = this.layout.length;\r\n                        this.initResponsiveFeatures();\r\n                    }\r\n\r\n                    compact(this.layout, this.verticalCompact);\r\n                    this.eventBus.emit(\"updateWidth\", this.width);\r\n                    this.updateHeight();\r\n\r\n                    this.$emit('layout-updated',this.layout)\r\n                }\r\n            },\r\n            updateHeight: function () {\r\n                this.mergedStyle = {\r\n                    height: this.containerHeight()\r\n                };\r\n            },\r\n            onWindowResize: function () {\r\n                if (this.$refs !== null && this.$refs.item !== null && this.$refs.item !== undefined) {\r\n                    this.width = this.$refs.item.offsetWidth;\r\n                }\r\n                this.eventBus.emit(\"resizeEvent\", {});\r\n            },\r\n            containerHeight: function () {\r\n                if (!this.autoSize) return;\r\n                // console.log(\"bottom: \" + bottom(this.layout))\r\n                // console.log(\"rowHeight + margins: \" + (this.rowHeight + this.margin[1]) + this.margin[1])\r\n                const containerHeight =  bottom(this.layout) * (this.rowHeight + this.margin[1]) + this.margin[1] + 'px';\r\n                return containerHeight;\r\n            },\r\n            dragEvent: function (eventName, id, x, y, h, w) {\r\n                //console.log(eventName + \" id=\" + id + \", x=\" + x + \", y=\" + y);\r\n                let l = getLayoutItem(this.layout, id);\r\n                //GetLayoutItem sometimes returns null object\r\n                if (l === undefined || l === null){\r\n                    l = {x:0, y:0}\r\n                }\r\n\r\n                if (eventName === \"dragmove\" || eventName === \"dragstart\") {\r\n                    this.placeholder.i = id;\r\n                    this.placeholder.x = l.x;\r\n                    this.placeholder.y = l.y;\r\n                    this.placeholder.w = w;\r\n                    this.placeholder.h = h;\r\n                    this.$nextTick(function() {\r\n                        this.isDragging = true;\r\n                    });\r\n                    //this.$broadcast(\"updateWidth\", this.width);\r\n                    this.eventBus.emit(\"updateWidth\", this.width);\r\n                } else {\r\n                    this.$nextTick(function() {\r\n                        this.isDragging = false;\r\n                    });\r\n                }\r\n\r\n                // Move the element to the dragged location.\r\n                this.$emit(\"update:layout\", moveElement(this.layout, l, x, y, true, this.preventCollision));\r\n                compact(this.layout, this.verticalCompact);\r\n                // needed because vue can't detect changes on array element properties\r\n                this.eventBus.emit(\"compact\");\r\n                this.updateHeight();\r\n                if (eventName === 'dragend') this.$emit('layout-updated', this.layout);\r\n            },\r\n            resizeEvent: function (eventName, id, x, y, h, w) {\r\n                let l = getLayoutItem(this.layout, id);\r\n                //GetLayoutItem sometimes return null object\r\n                if (l === undefined || l === null){\r\n                    l = {h:0, w:0}\r\n                }\r\n\r\n                let hasCollisions;\r\n                if (this.preventCollision) {\r\n                    const collisions = getAllCollisions(this.layout, { ...l, w, h }).filter(\r\n                        layoutItem => layoutItem.i !== l.i\r\n                    );\r\n                    hasCollisions = collisions.length > 0;\r\n\r\n                    // If we're colliding, we need adjust the placeholder.\r\n                    if (hasCollisions) {\r\n                        // adjust w && h to maximum allowed space\r\n                        let leastX = Infinity,\r\n                        leastY = Infinity;\r\n                        collisions.forEach(layoutItem => {\r\n                        if (layoutItem.x > l.x) leastX = Math.min(leastX, layoutItem.x);\r\n                        if (layoutItem.y > l.y) leastY = Math.min(leastY, layoutItem.y);\r\n                        });\r\n\r\n                        if (Number.isFinite(leastX)) l.w = leastX - l.x;\r\n                        if (Number.isFinite(leastY)) l.h = leastY - l.y;\r\n                    }\r\n                }\r\n\r\n                if (!hasCollisions) {\r\n                    // Set new width and height.\r\n                    l.w = w;\r\n                    l.h = h;\r\n                }\r\n\r\n                if (eventName === \"resizestart\" || eventName === \"resizemove\") {\r\n                    this.placeholder.i = id;\r\n                    this.placeholder.x = x;\r\n                    this.placeholder.y = y;\r\n                    this.placeholder.w = l.w;\r\n                    this.placeholder.h = l.h;\r\n                    this.$nextTick(function() {\r\n                        this.isDragging = true;\r\n                    });\r\n                    //this.$broadcast(\"updateWidth\", this.width);\r\n                    this.eventBus.emit(\"updateWidth\", this.width);\r\n\r\n                } else {\r\n                    this.$nextTick(function() {\r\n                        this.isDragging = false;\r\n                    });\r\n                }\r\n\r\n                if (this.responsive) this.responsiveGridLayout();\r\n\r\n                compact(this.layout, this.verticalCompact);\r\n                this.eventBus.emit(\"compact\");\r\n                this.updateHeight();\r\n\r\n                if (eventName === 'resizeend') this.$emit('layout-updated', this.layout);\r\n            },\r\n\r\n            // finds or generates new layouts for set breakpoints\r\n            responsiveGridLayout(){\r\n                let newBreakpoint = getBreakpointFromWidth(this.breakpoints, this.width);\r\n                let newCols = getColsFromBreakpoint(newBreakpoint, this.cols);\r\n\r\n                // save actual layout in layouts\r\n                if(this.lastBreakpoint != null && !this.layouts[this.lastBreakpoint])\r\n                    this.layouts[this.lastBreakpoint] = cloneLayout(this.layout);\r\n\r\n                // Find or generate a new layout.\r\n                let layout = findOrGenerateResponsiveLayout(\r\n                    this.originalLayout,\r\n                    this.layouts,\r\n                    this.breakpoints,\r\n                    newBreakpoint,\r\n                    this.lastBreakpoint,\r\n                    newCols,\r\n                    this.verticalCompact\r\n                );\r\n\r\n                // Store the new layout.\r\n                this.layouts[newBreakpoint] = layout;\r\n\r\n                if (this.lastBreakpoint !== newBreakpoint) {\r\n                    this.$emit('breakpoint-changed', newBreakpoint, layout);\r\n                }\r\n\r\n                // new prop sync\r\n                this.$emit('update:layout', layout);\r\n\r\n                this.lastBreakpoint = newBreakpoint;\r\n                this.eventBus.emit(\"setColNum\", getColsFromBreakpoint(newBreakpoint, this.cols));\r\n            },\r\n\r\n            // clear all responsive layouts\r\n            initResponsiveFeatures(){\r\n                // clear layouts\r\n                this.layouts = Object.assign({}, this.responsiveLayouts);\r\n            },\r\n\r\n            // find difference in layouts\r\n            findDifference(layout, originalLayout){\r\n\r\n                //Find values that are in result1 but not in result2\r\n                let uniqueResultOne = layout.filter(function(obj) {\r\n                    return !originalLayout.some(function(obj2) {\r\n                        return obj.i === obj2.i;\r\n                    });\r\n                });\r\n\r\n                //Find values that are in result2 but not in result1\r\n                let uniqueResultTwo = originalLayout.filter(function(obj) {\r\n                    return !layout.some(function(obj2) {\r\n                        return obj.i === obj2.i;\r\n                    });\r\n                });\r\n\r\n                //Combine the two arrays of unique entries#\r\n                return uniqueResultOne.concat(uniqueResultTwo);\r\n            }\r\n        },\r\n    }\r\n</script>\r\n","export default function _defineProperty(obj, key, value) {\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n\n  return obj;\n}","export default function(n){return{all:n=n||new Map,on:function(t,e){var i=n.get(t);i&&i.push(e)||n.set(t,[e])},off:function(t,e){var i=n.get(t);i&&i.splice(i.indexOf(e)>>>0,1)},emit:function(t,e){(n.get(t)||[]).slice().map(function(n){n(e)}),(n.get(\"*\")||[]).slice().map(function(n){n(t,e)})}}}\n//# sourceMappingURL=mitt.es.js.map\n","export { default } from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./GridLayout.vue?vue&type=script&lang=js\"; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./GridLayout.vue?vue&type=script&lang=js\"","import { render } from \"./GridLayout.vue?vue&type=template&id=fc5948f6\"\nimport script from \"./GridLayout.vue?vue&type=script&lang=js\"\nexport * from \"./GridLayout.vue?vue&type=script&lang=js\"\n\nimport \"./GridLayout.vue?vue&type=style&index=0&id=fc5948f6&lang=css\"\nscript.render = render\n\nexport default script","import { App } from 'vue';\r\n\r\nimport GridItem from './GridItem.vue';\r\nimport GridLayout from './GridLayout.vue';\r\n\r\nexport { GridLayout, GridItem };\r\n\r\nconst install = (app: App) => {\r\n    app.component('grid-layout', GridLayout)\r\n    app.component('grid-item', GridItem)\r\n}\r\n\r\nexport default install;","import './setPublicPath'\nimport mod from '~entry'\nexport default mod\nexport * from '~entry'\n","// 20.1.2.2 Number.isFinite(number)\nvar $export = require('./_export');\nvar _isFinite = require('./_global').isFinite;\n\n$export($export.S, 'Number', {\n  isFinite: function isFinite(it) {\n    return typeof it == 'number' && _isFinite(it);\n  }\n});\n","module.exports = '\\x09\\x0A\\x0B\\x0C\\x0D\\x20\\xA0\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003' +\n  '\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n"],"sourceRoot":""}
\ No newline at end of file
+{"version":3,"sources":["webpack://VueGridLayout/webpack/universalModuleDefinition","webpack://VueGridLayout/webpack/bootstrap","webpack://VueGridLayout/./node_modules/core-js/modules/_iter-define.js","webpack://VueGridLayout/./node_modules/core-js/modules/_string-at.js","webpack://VueGridLayout/./node_modules/core-js/modules/_advance-string-index.js","webpack://VueGridLayout/./node_modules/core-js/library/modules/_has.js","webpack://VueGridLayout/./src/components/GridItem.vue?d411","webpack://VueGridLayout/./node_modules/core-js/modules/_flags.js","webpack://VueGridLayout/./node_modules/core-js/modules/_object-keys.js","webpack://VueGridLayout/./node_modules/core-js/modules/_object-gopd.js","webpack://VueGridLayout/./node_modules/core-js/modules/_object-dps.js","webpack://VueGridLayout/./node_modules/element-resize-detector/src/detection-strategy/object.js","webpack://VueGridLayout/./node_modules/element-resize-detector/src/browser-detector.js","webpack://VueGridLayout/./node_modules/core-js/library/modules/_to-primitive.js","webpack://VueGridLayout/./node_modules/core-js/library/modules/_dom-create.js","webpack://VueGridLayout/./node_modules/core-js/modules/_fix-re-wks.js","webpack://VueGridLayout/./node_modules/core-js/modules/_dom-create.js","webpack://VueGridLayout/./node_modules/core-js/modules/_classof.js","webpack://VueGridLayout/./node_modules/css-loader/dist/runtime/api.js","webpack://VueGridLayout/./node_modules/core-js/modules/_object-gops.js","webpack://VueGridLayout/./node_modules/core-js/library/modules/_fails.js","webpack://VueGridLayout/./node_modules/core-js/modules/_redefine.js","webpack://VueGridLayout/./node_modules/core-js/modules/_object-create.js","webpack://VueGridLayout/./node_modules/core-js/modules/_wks.js","webpack://VueGridLayout/./node_modules/element-resize-detector/src/id-generator.js","webpack://VueGridLayout/./node_modules/core-js/modules/_library.js","webpack://VueGridLayout/./node_modules/core-js/modules/_cof.js","webpack://VueGridLayout/./node_modules/core-js/modules/_strict-method.js","webpack://VueGridLayout/./node_modules/core-js/modules/_hide.js","webpack://VueGridLayout/./node_modules/core-js/library/modules/_hide.js","webpack://VueGridLayout/./node_modules/core-js/modules/_object-gpo.js","webpack://VueGridLayout/./node_modules/core-js/modules/_iter-create.js","webpack://VueGridLayout/./node_modules/core-js/library/fn/object/define-property.js","webpack://VueGridLayout/./node_modules/core-js/modules/es6.object.keys.js","webpack://VueGridLayout/./node_modules/core-js/modules/_to-integer.js","webpack://VueGridLayout/./node_modules/core-js/modules/_property-desc.js","webpack://VueGridLayout/./node_modules/core-js/library/modules/es6.object.define-property.js","webpack://VueGridLayout/./node_modules/core-js/modules/es6.regexp.match.js","webpack://VueGridLayout/./src/components/GridItem.vue?3b34","webpack://VueGridLayout/./node_modules/vue-style-loader/lib/listToStyles.js","webpack://VueGridLayout/./node_modules/vue-style-loader/lib/addStylesClient.js","webpack://VueGridLayout/./node_modules/element-resize-detector/src/listener-handler.js","webpack://VueGridLayout/./node_modules/core-js/modules/_to-object.js","webpack://VueGridLayout/./node_modules/element-resize-detector/src/id-handler.js","webpack://VueGridLayout/./node_modules/batch-processor/src/utils.js","webpack://VueGridLayout/./node_modules/core-js/modules/_regexp-exec.js","webpack://VueGridLayout/./node_modules/core-js/modules/_object-pie.js","webpack://VueGridLayout/./node_modules/core-js/modules/_shared.js","webpack://VueGridLayout/./node_modules/core-js/modules/es6.array.sort.js","webpack://VueGridLayout/./node_modules/core-js/library/modules/_core.js","webpack://VueGridLayout/./node_modules/element-resize-detector/src/element-utils.js","webpack://VueGridLayout/./node_modules/core-js/modules/_export.js","webpack://VueGridLayout/./node_modules/core-js/modules/_inherit-if-required.js","webpack://VueGridLayout/./node_modules/core-js/modules/_object-sap.js","webpack://VueGridLayout/./node_modules/core-js/modules/_regexp-exec-abstract.js","webpack://VueGridLayout/./node_modules/core-js/modules/_shared-key.js","webpack://VueGridLayout/./node_modules/core-js/modules/_iobject.js","webpack://VueGridLayout/./node_modules/core-js/library/modules/_export.js","webpack://VueGridLayout/./src/components/GridLayout.vue?845a","webpack://VueGridLayout/./node_modules/core-js/modules/_to-iobject.js","webpack://VueGridLayout/./node_modules/core-js/modules/_has.js","webpack://VueGridLayout/./node_modules/core-js/modules/_to-primitive.js","webpack://VueGridLayout/./node_modules/vue-loader-v16/dist/exportHelper.js","webpack://VueGridLayout/./node_modules/core-js/modules/_global.js","webpack://VueGridLayout/./node_modules/core-js/modules/_to-absolute-index.js","webpack://VueGridLayout/./node_modules/core-js/library/modules/_ie8-dom-define.js","webpack://VueGridLayout/./node_modules/core-js/library/modules/_a-function.js","webpack://VueGridLayout/./node_modules/core-js/modules/_fails.js","webpack://VueGridLayout/./node_modules/core-js/modules/_set-to-string-tag.js","webpack://VueGridLayout/./node_modules/core-js/modules/_core.js","webpack://VueGridLayout/./src/components/GridLayout.vue?2bad","webpack://VueGridLayout/./node_modules/core-js/modules/_iterators.js","webpack://VueGridLayout/./node_modules/@babel/runtime-corejs2/core-js/object/define-property.js","webpack://VueGridLayout/./node_modules/core-js/modules/_object-dp.js","webpack://VueGridLayout/./node_modules/@soda/get-current-script/index.js","webpack://VueGridLayout/./node_modules/core-js/modules/_set-proto.js","webpack://VueGridLayout/external {\"commonjs\":\"vue\",\"commonjs2\":\"vue\",\"root\":\"Vue\"}","webpack://VueGridLayout/./node_modules/core-js/library/modules/_descriptors.js","webpack://VueGridLayout/./node_modules/core-js/modules/es7.object.get-own-property-descriptors.js","webpack://VueGridLayout/./node_modules/core-js/modules/_object-gopn.js","webpack://VueGridLayout/./src/components/GridLayout.vue?c712","webpack://VueGridLayout/./node_modules/core-js/modules/_own-keys.js","webpack://VueGridLayout/./node_modules/core-js/modules/_ctx.js","webpack://VueGridLayout/./node_modules/core-js/modules/_add-to-unscopables.js","webpack://VueGridLayout/./node_modules/core-js/modules/_to-length.js","webpack://VueGridLayout/./node_modules/core-js/modules/_descriptors.js","webpack://VueGridLayout/./node_modules/core-js/modules/es6.regexp.replace.js","webpack://VueGridLayout/./node_modules/core-js/modules/_string-trim.js","webpack://VueGridLayout/./node_modules/element-resize-detector/src/reporter.js","webpack://VueGridLayout/./node_modules/core-js/modules/web.dom.iterable.js","webpack://VueGridLayout/./node_modules/core-js/library/modules/_property-desc.js","webpack://VueGridLayout/./node_modules/core-js/modules/es6.regexp.exec.js","webpack://VueGridLayout/./node_modules/element-resize-detector/src/collection-utils.js","webpack://VueGridLayout/./node_modules/core-js/modules/_defined.js","webpack://VueGridLayout/./node_modules/batch-processor/src/batch-processor.js","webpack://VueGridLayout/./node_modules/core-js/modules/_array-includes.js","webpack://VueGridLayout/./src/components/GridItem.vue?1d19","webpack://VueGridLayout/./node_modules/core-js/modules/es6.number.constructor.js","webpack://VueGridLayout/./node_modules/core-js/modules/_ie8-dom-define.js","webpack://VueGridLayout/./node_modules/element-resize-detector/src/detection-strategy/scroll.js","webpack://VueGridLayout/./node_modules/core-js/modules/_uid.js","webpack://VueGridLayout/./node_modules/core-js/modules/es6.array.iterator.js","webpack://VueGridLayout/./node_modules/core-js/modules/_an-object.js","webpack://VueGridLayout/./node_modules/core-js/modules/_object-keys-internal.js","webpack://VueGridLayout/./node_modules/core-js/modules/_is-object.js","webpack://VueGridLayout/./node_modules/core-js/modules/_iter-step.js","webpack://VueGridLayout/./node_modules/element-resize-detector/src/state-handler.js","webpack://VueGridLayout/./node_modules/core-js/library/modules/_ctx.js","webpack://VueGridLayout/./node_modules/core-js/modules/_a-function.js","webpack://VueGridLayout/./node_modules/core-js/library/modules/_object-dp.js","webpack://VueGridLayout/./node_modules/core-js/modules/_enum-bug-keys.js","webpack://VueGridLayout/./node_modules/core-js/library/modules/_an-object.js","webpack://VueGridLayout/./node_modules/core-js/library/modules/_global.js","webpack://VueGridLayout/./node_modules/element-resize-detector/src/element-resize-detector.js","webpack://VueGridLayout/./node_modules/core-js/modules/_create-property.js","webpack://VueGridLayout/./node_modules/core-js/library/modules/_is-object.js","webpack://VueGridLayout/./node_modules/core-js/modules/_function-to-string.js","webpack://VueGridLayout/./node_modules/core-js/modules/_html.js","webpack://VueGridLayout/./node_modules/@vue/cli-service/lib/commands/build/setPublicPath.js","webpack://VueGridLayout/./src/components/GridItem.vue","webpack://VueGridLayout/./src/helpers/utils.js","webpack://VueGridLayout/./src/helpers/draggableUtils.js","webpack://VueGridLayout/./src/helpers/responsiveUtils.js","webpack://VueGridLayout/./src/helpers/DOM.js","webpack://VueGridLayout/./node_modules/@interactjs/utils/domObjects.js","webpack://VueGridLayout/./node_modules/@interactjs/utils/isWindow.js","webpack://VueGridLayout/./node_modules/@interactjs/utils/window.js","webpack://VueGridLayout/./node_modules/@interactjs/utils/is.js","webpack://VueGridLayout/./node_modules/@interactjs/utils/browser.js","webpack://VueGridLayout/./node_modules/@interactjs/utils/arr.js","webpack://VueGridLayout/./node_modules/@interactjs/utils/clone.js","webpack://VueGridLayout/./node_modules/@interactjs/utils/extend.js","webpack://VueGridLayout/./node_modules/@interactjs/utils/raf.js","webpack://VueGridLayout/./node_modules/@interactjs/utils/normalizeListeners.js","webpack://VueGridLayout/./node_modules/@interactjs/core/Eventable.js","webpack://VueGridLayout/./node_modules/@interactjs/utils/domUtils.js","webpack://VueGridLayout/./node_modules/@interactjs/utils/rect.js","webpack://VueGridLayout/./node_modules/@interactjs/utils/getOriginXY.js","webpack://VueGridLayout/./node_modules/@interactjs/utils/hypot.js","webpack://VueGridLayout/./node_modules/@interactjs/core/BaseEvent.js","webpack://VueGridLayout/./node_modules/@interactjs/core/defaultOptions.js","webpack://VueGridLayout/./node_modules/@interactjs/core/InteractEvent.js","webpack://VueGridLayout/./node_modules/@interactjs/core/isNonNativeEvent.js","webpack://VueGridLayout/./node_modules/@interactjs/core/Interactable.js","webpack://VueGridLayout/./node_modules/@interactjs/core/InteractableSet.js","webpack://VueGridLayout/./node_modules/@interactjs/utils/pointerExtend.js","webpack://VueGridLayout/./node_modules/@interactjs/utils/pointerUtils.js","webpack://VueGridLayout/./node_modules/@interactjs/core/events.js","webpack://VueGridLayout/./node_modules/@interactjs/utils/misc.js","webpack://VueGridLayout/./node_modules/@interactjs/core/interactStatic.js","webpack://VueGridLayout/./node_modules/@interactjs/core/PointerInfo.js","webpack://VueGridLayout/./node_modules/@interactjs/core/Interaction.js","webpack://VueGridLayout/./node_modules/@interactjs/core/interactablePreventDefault.js","webpack://VueGridLayout/./node_modules/@interactjs/core/interactionFinder.js","webpack://VueGridLayout/./node_modules/@interactjs/core/interactions.js","webpack://VueGridLayout/./node_modules/@interactjs/core/scope.js","webpack://VueGridLayout/./node_modules/@interactjs/interact/index.js","webpack://VueGridLayout/./node_modules/@interactjs/auto-start/InteractableMethods.js","webpack://VueGridLayout/./node_modules/@interactjs/auto-start/base.js","webpack://VueGridLayout/./node_modules/@interactjs/auto-start/dragAxis.js","webpack://VueGridLayout/./node_modules/@interactjs/auto-start/hold.js","webpack://VueGridLayout/./node_modules/@interactjs/auto-start/plugin.js","webpack://VueGridLayout/./node_modules/@interactjs/auto-start/index.js","webpack://VueGridLayout/./node_modules/@interactjs/actions/drag/plugin.js","webpack://VueGridLayout/./node_modules/@interactjs/actions/drag/index.js","webpack://VueGridLayout/./node_modules/@interactjs/actions/resize/plugin.js","webpack://VueGridLayout/./node_modules/@interactjs/actions/resize/index.js","webpack://VueGridLayout/./node_modules/@interactjs/snappers/edgeTarget.js","webpack://VueGridLayout/./node_modules/@interactjs/snappers/elements.js","webpack://VueGridLayout/./node_modules/@interactjs/snappers/grid.js","webpack://VueGridLayout/./node_modules/@interactjs/snappers/all.js","webpack://VueGridLayout/./node_modules/@interactjs/snappers/plugin.js","webpack://VueGridLayout/./node_modules/@interactjs/modifiers/Modification.js","webpack://VueGridLayout/./node_modules/@interactjs/modifiers/base.js","webpack://VueGridLayout/./node_modules/@interactjs/modifiers/aspectRatio.js","webpack://VueGridLayout/./node_modules/@interactjs/modifiers/noop.js","webpack://VueGridLayout/./node_modules/@interactjs/modifiers/restrict/pointer.js","webpack://VueGridLayout/./node_modules/@interactjs/modifiers/restrict/edges.js","webpack://VueGridLayout/./node_modules/@interactjs/modifiers/restrict/rect.js","webpack://VueGridLayout/./node_modules/@interactjs/modifiers/restrict/size.js","webpack://VueGridLayout/./node_modules/@interactjs/modifiers/snap/pointer.js","webpack://VueGridLayout/./node_modules/@interactjs/modifiers/snap/size.js","webpack://VueGridLayout/./node_modules/@interactjs/modifiers/snap/edges.js","webpack://VueGridLayout/./node_modules/@interactjs/modifiers/all.js","webpack://VueGridLayout/./node_modules/@interactjs/modifiers/plugin.js","webpack://VueGridLayout/./node_modules/@interactjs/modifiers/index.js","webpack://VueGridLayout/./node_modules/@interactjs/dev-tools/plugin.js","webpack://VueGridLayout/./node_modules/@interactjs/dev-tools/index.js","webpack://VueGridLayout/./src/components/GridItem.vue?b8d1","webpack://VueGridLayout/./src/components/GridItem.vue?0590","webpack://VueGridLayout/./src/components/GridLayout.vue","webpack://VueGridLayout/./node_modules/@babel/runtime-corejs2/helpers/esm/defineProperty.js","webpack://VueGridLayout/./node_modules/mitt/dist/mitt.es.js","webpack://VueGridLayout/./src/components/GridLayout.vue?373d","webpack://VueGridLayout/./src/components/GridLayout.vue?19aa","webpack://VueGridLayout/./src/components/index.js","webpack://VueGridLayout/./node_modules/@vue/cli-service/lib/commands/build/entry-lib.js","webpack://VueGridLayout/./node_modules/core-js/modules/es6.number.is-finite.js","webpack://VueGridLayout/./node_modules/core-js/modules/_string-ws.js"],"names":["bottom","layout","max","bottomY","i","len","length","y","h","cloneLayout","newLayout","Array","cloneLayoutItem","layoutItem","JSON","parse","stringify","collides","l1","l2","x","w","compact","verticalCompact","compareWith","getStatics","sorted","sortLayoutItemsByRowCol","out","l","static","compactItem","push","indexOf","moved","getFirstCollision","correctBounds","bounds","collidesWith","cols","getLayoutItem","id","getAllCollisions","filter","moveElement","isUserAction","preventCollision","oldX","oldY","movingUp","reverse","collisions","collision","moveElementAwayFromCollision","itemToMove","fakeItem","Math","undefined","perc","num","setTransform","top","left","width","height","translate","transform","WebkitTransform","MozTransform","msTransform","OTransform","position","setTransformRtl","right","setTopLeft","setTopRight","concat","sort","a","b","validateLayout","contextName","subProps","keyArr","isArray","Error","item","j","autoBindHandlers","el","fns","forEach","key","bind","createMarkup","obj","keys","Object","result","val","hyphenate","addPx","IS_UNITLESS","animationIterationCount","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridRow","gridColumn","fontWeight","lineClamp","lineHeight","opacity","order","orphans","tabSize","widows","zIndex","zoom","fillOpacity","stopOpacity","strokeDashoffset","strokeOpacity","strokeWidth","name","value","hyphenateRE","str","replace","toLowerCase","findItemInArray","array","property","findAndRemove","index","splice","getControlPosition","e","offsetXYFromParentOf","evt","offsetParent","target","document","body","offsetParentRect","getBoundingClientRect","clientX","scrollLeft","clientY","scrollTop","createCoreData","lastX","lastY","isStart","isNum","deltaX","deltaY","isNaN","getBreakpointFromWidth","breakpoints","sortBreakpoints","matching","breakpointName","getColsFromBreakpoint","breakpoint","findOrGenerateResponsiveLayout","orgLayout","layouts","lastBreakpoint","breakpointsSorted","breakpointsAbove","slice","generateResponsiveLayout","currentDir","hasDocument","hasWindow","window","getDocumentDir","direction","dir","getElementsByTagName","getAttribute","setDocumentDir","html","setAttribute","addWindowEventListener","event","callback","addEventListener","removeWindowEventListener","removeEventListener","install","app","component","GridLayout","GridItem"],"mappings":";AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,O;QCVA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;;;QAGA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA,0CAA0C,gCAAgC;QAC1E;QACA;;QAEA;QACA;QACA;QACA,wDAAwD,kBAAkB;QAC1E;QACA,iDAAiD,cAAc;QAC/D;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA,yCAAyC,iCAAiC;QAC1E,gHAAgH,mBAAmB,EAAE;QACrI;QACA;;QAEA;QACA;QACA;QACA,2BAA2B,0BAA0B,EAAE;QACvD,iCAAiC,eAAe;QAChD;QACA;QACA;;QAEA;QACA,sDAAsD,+DAA+D;;QAErH;QACA;;;QAGA;QACA;;;;;;;;;AClFa;AACb,cAAc,mBAAO,CAAC,MAAY;AAClC,cAAc,mBAAO,CAAC,MAAW;AACjC,eAAe,mBAAO,CAAC,MAAa;AACpC,WAAW,mBAAO,CAAC,MAAS;AAC5B,gBAAgB,mBAAO,CAAC,MAAc;AACtC,kBAAkB,mBAAO,CAAC,MAAgB;AAC1C,qBAAqB,mBAAO,CAAC,MAAsB;AACnD,qBAAqB,mBAAO,CAAC,MAAe;AAC5C,eAAe,mBAAO,CAAC,MAAQ;AAC/B,8CAA8C;AAC9C;AACA;AACA;;AAEA,8BAA8B,aAAa;;AAE3C;AACA;AACA;AACA;AACA;AACA,yCAAyC,oCAAoC;AAC7E,6CAA6C,oCAAoC;AACjF,KAAK,4BAA4B,oCAAoC;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,mBAAmB;AACnC;AACA;AACA,kCAAkC,2BAA2B;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;;;;;;;ACpEA,gBAAgB,mBAAO,CAAC,MAAe;AACvC,cAAc,mBAAO,CAAC,MAAY;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AChBa;AACb,SAAS,mBAAO,CAAC,MAAc;;AAE/B;AACA;AACA;AACA;AACA;;;;;;;;ACPA,uBAAuB;AACvB;AACA;AACA;;;;;;;;;ACHA;AAAA;AAAA;;;;;;;;;ACAa;AACb;AACA,eAAe,mBAAO,CAAC,MAAc;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACZA;AACA,YAAY,mBAAO,CAAC,MAAyB;AAC7C,kBAAkB,mBAAO,CAAC,MAAkB;;AAE5C;AACA;AACA;;;;;;;;ACNA,UAAU,mBAAO,CAAC,MAAe;AACjC,iBAAiB,mBAAO,CAAC,MAAkB;AAC3C,gBAAgB,mBAAO,CAAC,MAAe;AACvC,kBAAkB,mBAAO,CAAC,MAAiB;AAC3C,UAAU,mBAAO,CAAC,MAAQ;AAC1B,qBAAqB,mBAAO,CAAC,MAAmB;AAChD;;AAEA,YAAY,mBAAO,CAAC,MAAgB;AACpC;AACA;AACA;AACA;AACA,GAAG,YAAY;AACf;AACA;;;;;;;;ACfA,SAAS,mBAAO,CAAC,MAAc;AAC/B,eAAe,mBAAO,CAAC,MAAc;AACrC,cAAc,mBAAO,CAAC,MAAgB;;AAEtC,iBAAiB,mBAAO,CAAC,MAAgB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACZA;AACA;AACA;AACA;;AAEa;;AAEb,sBAAsB,mBAAO,CAAC,MAAqB;;AAEnD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,QAAQ;AACvB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,yDAAyD,OAAO;;AAEhE;AACA;;AAEA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,QAAQ;AACvB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;;AAE7B;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACtPa;;AAEb;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;;;;;;;;ACtCA;AACA,eAAe,mBAAO,CAAC,MAAc;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACXA,eAAe,mBAAO,CAAC,MAAc;AACrC,eAAe,mBAAO,CAAC,MAAW;AAClC;AACA;AACA;AACA;AACA;;;;;;;;;ACNa;AACb,mBAAO,CAAC,MAAmB;AAC3B,eAAe,mBAAO,CAAC,MAAa;AACpC,WAAW,mBAAO,CAAC,MAAS;AAC5B,YAAY,mBAAO,CAAC,MAAU;AAC9B,cAAc,mBAAO,CAAC,MAAY;AAClC,UAAU,mBAAO,CAAC,MAAQ;AAC1B,iBAAiB,mBAAO,CAAC,MAAgB;;AAEzC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,yBAAyB,4CAA4C;AACrE;AACA;AACA,CAAC;;AAED;AACA;;AAEA;AACA;AACA;AACA,6BAA6B,UAAU;AACvC;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,2BAA2B,mBAAmB,aAAa;AAC3D;AACA;AACA;AACA;AACA,6CAA6C,WAAW;AACxD;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA,kBAAkB;AAClB;AACA,gBAAgB;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gCAAgC,qCAAqC;AACrE;AACA;AACA,2BAA2B,gCAAgC;AAC3D;AACA;AACA;;;;;;;;AC/FA,eAAe,mBAAO,CAAC,MAAc;AACrC,eAAe,mBAAO,CAAC,MAAW;AAClC;AACA;AACA;AACA;AACA;;;;;;;;ACNA;AACA,UAAU,mBAAO,CAAC,MAAQ;AAC1B,UAAU,mBAAO,CAAC,MAAQ;AAC1B;AACA,2BAA2B,kBAAkB,EAAE;;AAE/C;AACA;AACA;AACA;AACA,GAAG,YAAY;AACf;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACtBa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;;AAEhB;AACA;AACA;;AAEA;AACA,4CAA4C,qBAAqB;AACjE;;AAEA;AACA,KAAK;AACL,IAAI;AACJ;;;AAGA;AACA;AACA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A;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEe;AACf;;AAEA;;AAEA,eAAe,YAAY;AAC3B;;AAEA;AACA;AACA,mBAAmB,mBAAmB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,YAAY;AAC3B;AACA,KAAK;AACL;AACA;AACA,mBAAmB,sBAAsB;AACzC;AACA;AACA,uBAAuB,2BAA2B;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iBAAiB,mBAAmB;AACpC;AACA;AACA;AACA;AACA,qBAAqB,2BAA2B;AAChD;AACA;AACA,YAAY,uBAAuB;AACnC;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,qBAAqB,uBAAuB;AAC5C;AACA;AACA,8BAA8B;AAC9B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,yDAAyD;AACzD;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC7Na;;AAEb;AACA;;AAEA;AACA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,eAAe,QAAQ;AACvB,eAAe,SAAS;AACxB;AACA;AACA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,eAAe,mBAAO,CAAC,MAAc;AACrC,eAAe,mBAAO,CAAC,MAAc;AACrC,gBAAgB,mBAAO,CAAC,MAAe;AACvC,yBAAyB,mBAAO,CAAC,MAAyB;AAC1D,iBAAiB,mBAAO,CAAC,MAAyB;AAClD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,mBAAO,CAAC,MAAe;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,oBAAoB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,mBAAmB;AAC1C;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,CAAC;;;;;;;;ACrHD,cAAc,mBAAO,CAAC,MAAW;AACjC,cAAc,mBAAO,CAAC,MAAY;AAClC,YAAY,mBAAO,CAAC,MAAU;AAC9B,aAAa,mBAAO,CAAC,MAAc;AACnC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;AC7Ba;;AAEb;;AAEA;AACA;AACA;AACA,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA,iBAAiB;AACjB,mCAAmC,sBAAsB;AACzD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,E;;;;;;;AC1CA,iBAAiB,mBAAO,CAAC,MAAsB;AAC/C,cAAc,mBAAO,CAAC,MAAgB;AACtC,eAAe,mBAAO,CAAC,MAAa;AACpC,aAAa,mBAAO,CAAC,MAAW;AAChC,WAAW,mBAAO,CAAC,MAAS;AAC5B,gBAAgB,mBAAO,CAAC,MAAc;AACtC,UAAU,mBAAO,CAAC,MAAQ;AAC1B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,oDAAoD,wBAAwB;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACzDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPa;AACb,iBAAiB,mBAAO,CAAC,MAAgB;AACzC,mBAAO,CAAC,MAAW;AACnB;AACA;AACA;AACA,CAAC;AACD;AACA,CAAC;;;;;;;;;ACRY;;AAEb;;AAEA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,SAAS;AACpB,aAAa,EAAE;AACf;AACA;AACA,kBAAkB,uBAAuB;AACzC;AACA;AACA;AACA;AACA;AACA;;;;;;;;AClBA;AACA;AACA;AACA;AACA;;;;;;;;;ACJa;;AAEb,YAAY,mBAAO,CAAC,MAAS;;AAE7B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,4IAA4I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Ae,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,mCAAmC,iBAAiB;AACpD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,oEAAoE;AACpE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,iBAAiB;;AAEjB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,qBAAqB;AACrB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACppBA;AACA;AACA;AACA;AACA;;;;;;;;;ACJa;AACb,uBAAuB,mBAAO,CAAC,MAAuB;AACtD,WAAW,mBAAO,CAAC,MAAc;AACjC,gBAAgB,mBAAO,CAAC,MAAc;AACtC,gBAAgB,mBAAO,CAAC,MAAe;;AAEvC;AACA;AACA;AACA;AACA,iBAAiB,mBAAO,CAAC,MAAgB;AACzC,gCAAgC;AAChC,cAAc;AACd,iBAAiB;AACjB;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;;AAEA;AACA;AACA;;;;;;;;ACjCA,eAAe,mBAAO,CAAC,MAAc;AACrC;AACA;AACA;AACA;;;;;;;;ACJA,UAAU,mBAAO,CAAC,MAAQ;AAC1B,gBAAgB,mBAAO,CAAC,MAAe;AACvC,mBAAmB,mBAAO,CAAC,MAAmB;AAC9C,eAAe,mBAAO,CAAC,MAAe;;AAEtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AChBA;AACA;AACA;;;;;;;;ACFA;AACA,UAAU;AACV;;;;;;;;;ACFa;;AAEb;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;;;;;ACrBA;AACA,gBAAgB,mBAAO,CAAC,MAAe;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACnBA;AACA;AACA;AACA;;;;;;;;ACHA,eAAe,mBAAO,CAAC,MAAc;AACrC,qBAAqB,mBAAO,CAAC,MAAmB;AAChD,kBAAkB,mBAAO,CAAC,MAAiB;AAC3C;;AAEA,YAAY,mBAAO,CAAC,MAAgB;AACpC;AACA;AACA;AACA;AACA;AACA,GAAG,YAAY;AACf;AACA;AACA;AACA;;;;;;;;ACfA;AACA;AACA;AACA;;;;;;;;ACHA,eAAe,mBAAO,CAAC,MAAc;AACrC;AACA;AACA;AACA;;;;;;;;ACJA;AACA;AACA;AACA;AACA;AACA,yCAAyC;;;;;;;;;ACL5B;;AAEb,8BAA8B,mBAAO,CAAC,MAAoB;AAC1D,8BAA8B,mBAAO,CAAC,MAAiB;AACvD,8BAA8B,mBAAO,CAAC,MAAoB;AAC1D,8BAA8B,mBAAO,CAAC,MAAgB;AACtD,8BAA8B,mBAAO,CAAC,MAAc;AACpD,8BAA8B,mBAAO,CAAC,MAAY;AAClD,8BAA8B,mBAAO,CAAC,MAAoB;AAC1D,8BAA8B,mBAAO,CAAC,MAAiB;AACvD,8BAA8B,mBAAO,CAAC,MAAiB;;AAEvD;AACA,8BAA8B,mBAAO,CAAC,MAAgC;AACtE,8BAA8B,mBAAO,CAAC,MAAgC;;AAEtE;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,UAAU;AACV,cAAc,SAAS;AACvB,cAAc,SAAS;AACvB;;AAEA;AACA;AACA,UAAU;AACV,cAAc,QAAQ;AACtB;AACA;AACA,cAAc,UAAU;AACxB;AACA,cAAc,SAAS;AACvB;AACA;AACA,cAAc,QAAQ;AACtB;;AAEA;AACA;AACA;AACA,WAAW,SAAS;AACpB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,qCAAqC,6CAA6C,EAAE;AACpF;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,mFAAmF,qBAAqB;;AAExG;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,SAAS;AACxB,eAAe,kBAAkB;AACjC,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;;AAEA;AACA,8EAA8E;AAC9E;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AAEA;AACA;AACA;AACA,kC;;ACRA;AACA;AACA;;AAEA,SAAS,QAAI;AACb;AACA;;AAEA;AACA;;AAEA;AACA,0BAA0B,OAAO;AACjC,yBAAyB,OAAO,oCAAoC,OAAO;AAC3E;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,iEAAiE;;AAEjE;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;;AAEe;AACf;AACA;AACA,MAAM;AACN,CAAC,EAAC;AACF,+B;;ACzCiC;AACR;AACV;AACf;;AAEA,MAAM,EAAE;AACR;AACA;;AAEA,MAAM,EAAE;AACR,mCAAmC,MAAM;AACzC,GAAG,MAAM,WAAW,WAAW,WAAW;;;AAG1C,MAAM,EAAE;AACR;AACA;AACA;;AAEA,MAAM,EAAE;AACR;AACA;AACA,GAAG,UAAU,EAAE;AACf;AACA;AACA;AACA,GAAG,UAAU,EAAE;AACf;AACA,sDAAsD,KAAK,EAAE,EAAE;AAC/D;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,8C;;ACvCuC;AACC;AACe;;AAEvD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEO,MAAM,mBAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,MAAM,GAAG,eAAe;AAC3C;;AAEA;AACA;AACA,+BAA+B;AAC/B;;AAEA;AACA;AACA,KAAK;;;AAGL;AACA;AACA;AACA;;AAEA;AACA,sBAAsB,SAAS;;AAE/B;AACA,yBAAyB,KAAS;AAClC;AACA;;AAEA;AACA,sBAAsB,SAAS;;AAE/B;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,qC;;ACxEmC;AACM;AAChB;AACU;AAC5B;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACO,SAAS,gBAAO;AACvB,SAAS,EAAE;AACX;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACO;AACP;;AAEA,MAAM,EAAE;AACR;AACA;AACA,qCAAqC,EAAE;AACvC;AACA;;AAEA;AACA;;AAEA;AACA;AACO;AACP;AACA,MAAM,GAAU,KAAK,UAAc;AACnC;AACA;;AAEA,iBAAiB,aAAO;AACxB;;AAEA,iDAAiD;;;AAG1C;AACP;AACA;;AAEA,iBAAiB,qBAAqB;AACtC;AACA,mDAAmD;;AAEnD;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,qDAAqD;AACrD;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,OAAO;;;AAGP;AACA;AACA;AACA;;AAEA;AACA,KAAK;;;AAGL;AACA,sBAAsB;;AAEtB,+BAA+B,gBAAU,uCAAuC,gBAAU,wCAAwC,gBAAU;AAC5I;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;;AAEA;AACA,wBAAwB;;AAExB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,+BAA+B,SAAa;AAC5C,8BAA8B,SAAa;AAC3C;AACA;;AAEO;AACP,SAAS,EAAE;AACX;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACO;AACP;AACA;AACO;AACP,qCAAqC,GAAU;AAC/C;AACA;AACA;AACA;AACA;AACO;AACP,wCAAwC,gBAAU;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;;AAEA,OAAO,aAAO;AACd,+BAA+B,SAAa;AAC5C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACO;AACP;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACO;AACP,OAAO,EAAE;AACT;AACA,GAAG;;;AAGH,EAAE,gBAAU;AACZ;AACA;AACA,oC;;AC/NoE;AACnC;AACR;AAClB;AACP;AACA,WAAW,UAAU;AACrB;;AAEA;AACA;AACA;;AAEA,SAAS,gBAAO;AAChB;AACO;AACP;;AAEA,MAAM,EAAE;AACR;AACA,GAAG,UAAU,EAAE;AACf;AACA;;AAEA,MAAM,EAAE;AACR,kBAAkB,cAAc;AAChC;;AAEA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA,WAAW,MAAM,GAAG;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACO;AACP;AACA,WAAW,MAAM,GAAG;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACO;AACP;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,gC;;AC7EsD;AACvC;AACf;AACA;AACA;AACA,qBAAqB,eAAe;AACpC,SAAS,QAAQ;AACjB;AACA;AACA;AACA,CAAC;AACD,uC;;ACXgB,4EAAkC,EAAE;AACpD,iC;;ACDO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA,CAAC;AACD;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;;AAEA,CAAC;AACD,qC;;AC5CA;AACA;AACO,MAAM,uBAAQ;AACrB;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,0C;;AChBwC;AACU;AACZ;AACK;AACI;AACxC,MAAM,2BAAa,SAAS,SAAS;AAC5C;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,uBAAQ;AAC7D,mBAAmB,WAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,gBAAgB,MAAM,GAAG;AACzB,kBAAkB,MAAM,GAAG;AAC3B,gBAAgB,MAAM,GAAG;AACzB;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA,6CAA6C;;AAE7C,oBAAoB,MAAM,GAAG;AAC7B,iBAAiB,KAAK;AACtB;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA,CAAC;AACD;;AAEA,wBAAwB,2BAAa;AACrC;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA,GAAG;AACH;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA,GAAG;AACH;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA,GAAG;AACH;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA,GAAG;AACH;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA,GAAG;AACH;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA,GAAG;AACH;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA,GAAG;AACH;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA,CAAC;AACD,yC;;AC3Oe;AACf;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,4C;;ACbA;AACuC;AACG;AACJ;AACwD;AACtD;AACR;AACgC;AACjB;AACJ;AACU;;AAErD;AACO,MAAM,yBAAY;AACzB;AACA;AACA;AACA,cAAc;AACd,mBAAmB;AACnB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,sBAAsB,mBAAS;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,SAAS,CAAC,WAAW;AACrC;AACA;AACA;AACA;;AAEA;AACA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W;;AAEX;AACA;AACA;;AAEA,4CAA4C,QAAQ;AACpD;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA,wC;;AC/YuC;AACU;AACT;AACR;AACzB,MAAM,+BAAe;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT,+BAA+B,EAAE;AACjC,4BAA4B,SAAa;;AAEzC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;;AAEA;AACA,cAAc,MAAM,cAAc;AAClC;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,QAAQ,EAAE;AACV;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA,uBAAuB,EAAE;AACzB;;AAEA;AACA;AACA;;AAEA,kBAAkB,IAAQ;AAC1B;AACA;;AAEA;AACA;AACA;;AAEA,WAAW,EAAE;AACb,QAAQ,EAAE,kBAAkB,eAAwB;AACpD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,2C;;ACtGA;AACA;AACA;AACA,2BAA2B;;AAE3B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACe,qEAAa,EAAC;AAC7B,yC;;ACzBmC;AACD;AACQ;AACX;AACN;AACsB;AACxC;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP,4BAA4B,gBAAG,6BAA6B,gBAAG;AAC/D,CAAC;;AAEM;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,IAAI;;AAEJ,MAAM,aAAO;AACb;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACO;AACP;;AAEA,MAAM,aAAO;AACb;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACO;AACP,SAAS,EAAE;AACX;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP,qBAAqB;;AAErB,MAAM,EAAE;AACR;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,SAAS,KAAK;AACd;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,SAAS,EAAE,qDAAqD,EAAE;AAClE;AACA,qDAAqD,gBAAG;AACxD,CAAC;;AAEM;AACP,eAAe,EAAE;AACjB,UAAU,gBAAyB,iCAAiC,gBAAyB;AAC7F;AACO;AACP;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACO;AACP;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;AACyB;AACzB,wC;;ACzPmC;AACI;AACU;AACT;AACR;AACgB;AACS;;AAEzD,SAAS,cAAO;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA,GAAG;AACH;;AAEA;AACA;AACA,iBAAiB,IAAQ;;AAEzB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,yCAAyC,QAAY;AACrD;AACA;AACA;AACA;;AAEA;AACA;AACA,wBAAwB,SAAa;AACrC;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,8CAA8C,QAAQ;AACtD;AACA;;AAEA;AACA,OAAO;AACP,uBAAuB,0BAA0B;AACjD;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,iCAAiC;;AAEjC;AACA;AACA;AACA;AACA;;AAEA;AACA,mBAAmB,IAAQ;;AAE3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;;AAGL,sCAAsC,YAAY;AAClD,mCAAmC;;AAEnC;AACA;AACA;AACA,SAAS,OAAO;;AAEhB,0CAA0C,QAAQ;AAClD;AACA;AACA;AACA,WAAW,iBAAiB;;AAE5B;AACA;AACA,mCAAmC;AACnC;;AAEA;AACA,yCAAyC;;AAEzC;AACA;AACA,aAAa;;;AAGb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;;AAGA;AACA;AACA,0BAA0B,gBAAS;AACnC;AACA,0BAA0B,eAA4B;AACtD,8BAA8B;;AAE9B,WAAW,EAAE;AACb,qBAAqB,sBAAsB;AAC3C;AACA;AACA;AACA;AACA,SAAS;;AAET,YAAY,eAAwB,uBAAuB,YAAqB,0BAA0B,YAAqB;AAC/H;AACA;AACA,WAAW;AACX;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;;AAEA,gBAAgB,UAAmB;AACnC;AACA;;AAEA;AACA;AACA,GAAG;;;AAGH;AACA;;AAEA,MAAM,gBAAS;AACf;AACA;AACA;AACA;AACA,uCAAuC;;AAEvC,IAAI,mBAAO;AACX;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,OAAO,EAAE;AACT;AACA;AACA;AACA;AACA;;AAEA,kBAAkB,MAAM,GAAG;AAC3B;AACA;AACA;AACA;;AAEe;AACf;AACA,SAAS;AACT,CAAC,EAAC;AACF,kC;;ACpRqC;AAC9B;AACP;AACA;AACA;AACA,MAAM,GAAM;AACZ;AACA;;AAEA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,gC;;AClBA;AAC0C;AACO;AACjB;AACyB;AACb;AACS;AAC9C;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,iBAAiB;AAC9B;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,IAAI;;;AAGJ,+BAA+B,cAA2B;AAC1D,0BAA0B,SAAsB;AAChD,8BAA8B,aAA0B;AACxD,2BAA2B,UAAuB;AAClD,4BAA4B,cAAuB;AACnD,kCAAkC,oBAA6B;AAC/D,6BAA6B,eAAwB;AACrD,qBAAqB,gBAAgB;AACrC,6BAA6B;;AAE7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,4DAA4D;AAC5D;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,cAAc,QAAQ;AACtB;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,wBAAwB;AACrC,aAAa,SAAS;AACtB,aAAa,iBAAiB;AAC9B;AACA,cAAc,OAAO;AACrB;;;AAGA,gBAAgB,QAAQ;AACxB,QAAQ,EAAE;AACV;AACA;;AAEA,QAAQ,EAAE;AACV;AACA;AACA;;AAEA;AACA;;AAEA,QAAQ,EAAE;AACV;AACA;AACA;;AAEA;AACA,KAAK;;;AAGL,QAAQ,gBAAgB;AACxB;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,wBAAwB;AACrC;AACA,aAAa,SAAS;AACtB,aAAa,iBAAiB;AAC9B;AACA,cAAc,OAAO;AACrB;;AAEA,iBAAiB,QAAQ;AACzB,QAAQ,EAAE;AACV;AACA;;AAEA,QAAQ,EAAE;AACV;AACA;AACA;;AAEA;AACA;;AAEA,QAAQ,EAAE;AACV;AACA;AACA;;AAEA;AACA;;AAEA,QAAQ,gBAAgB;AACxB;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,QAAQ;AACtB;;;AAGA;AACA,WAAW,aAAO;AAClB;AACA;AACA;AACA;AACA,cAAc,QAAQ;AACtB;;;AAGA;AACA,WAAW,aAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,OAAO;AACrB;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,cAAc;AACd;;;AAGA;AACA,QAAQ,EAAE;AACV;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,0C;;AC7PO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,uC;;ACfuC;AACC;AACF;AACkB;AACC;AACX;AACK;AACJ;AACxC;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,oCAAoC;;AAE9B;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,sCAAsC;;AAEvC;AACO,MAAM,uBAAW;AACxB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,QAAQ;AAC1B;AACA,KAAK;AACL;AACA;AACA,aAAa,SAAsB;AACnC;AACA,YAAY,SAAsB;AAClC;AACA,WAAW,SAAsB;AACjC;AACA,aAAa,SAAsB;AACnC;AACA,gBAAgB,SAAsB;AACtC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,OAAO;AACP;;AAEA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA,8BAA8B,eAAe;AAC7C;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,qBAAqB;AAClE;AACA;AACA,aAAa,OAAO;AACpB,aAAa,aAAa;AAC1B,aAAa,QAAQ;AACrB,cAAc,QAAQ;AACtB;;;AAGA;AACA;AACA;AACA;;AAEA,IAAI,UAAU;AACd;AACA;AACA;AACA,uCAAuC,MAAM,GAAG;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW;;AAEX;AACA;AACA;AACA,6BAA6B,KAAK;AAClC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAM,gBAA6B;AACnC;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,QAAQ,UAAuB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,QAAQ,eAAe;AAChE;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,MAAM,aAA0B;AAChC;;AAEA,gBAAgB,MAAM;AACtB;AACA;AACA;AACA;AACA,KAAK,iBAAiB;AACtB;;AAEA;AACA,GAAG;;;AAGH;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA,oCAAoC,KAAK;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA,aAAa,aAAa;AAC1B;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA,sBAAsB,YAAyB,UAAU;;AAEzD,mGAAmG,SAAa;AAChH;;AAEA;AACA;AACA;;AAEA;AACA,eAAe,YAAyB;AACxC;AACA;AACA;;AAEA;AACA,wBAAwB,WAAW;AACnC;AACA;AACA,KAAK;AACL;AACA;;AAEA,IAAI,SAAsB;AAC1B,IAAI,cAA2B;;AAE/B;AACA;AACA;AACA;AACA,MAAM,mBAA0B;;AAEhC;AACA,QAAQ,UAAuB;AAC/B,QAAQ,UAAuB;AAC/B;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,eAAe,2BAAa;AAC5B;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;;AAEL;AACA;AACA,MAAM,QAAkB;AACxB;AACA;AACA;;AAEA,uEAAuE,MAAM;;AAE7E;AACA;AACA;;AAEA;;AAEA,2CAA2C,MAAM;;AAEjD;AACA;AACA;;AAEA;;AAEA,iDAAiD,MAAM;;AAEvD;AACA;;AAEA;AACA;AACA;;AAEA;AACe,4EAAW,EAAC;AACJ;AACvB,uC;;ACxgBiD;AACoB;AACrC;AACe;;AAE/C;AACA;AACA;AACA;AACA;;AAEA,MAAM,EAAE;AACR;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA,mCAAmC,WAAW;AAC9C;;;AAGA;AACA,gBAAgB,SAAS;AACzB;;AAEA;AACA;AACA;AACA,GAAG;;;AAGH;AACA;AACA,GAAG;;;AAGH,MAAM,EAAE,0BAA0B,eAAe;AACjD;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;;AAEO,SAAS,kCAAO;AACvB;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,cAAc,sBAAsB;AACpC;;AAEA;;AAEA;AACA;AACA,IAAI;;;AAGJ;AACA;;AAEA;AACA;AACA,4EAA4E,YAAY;AACxF;AACA;AACA;AACA;AACA;;AAEA,GAAG;AACH;AACe;AACf;AACA,SAAS;AACT;AACA,wBAAwB,UAAU;AAClC;AACA,GAAG,IAAI;AACP,CAAC,EAAC;AACF,sD;;AC/G4C;AAC5C;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,oBAAoB,UAAc;AAClC;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;;;AAGT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,KAAK;AACL;;;AAGA;AACA;AACA,KAAK;AACL;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,gDAAgD;AAChD;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEe,4DAAM,EAAC;AACtB,6C;;AC/I+C;AACL;AACM;AACI;AACK;AACV;AAC0B;AAC7B;AAC5C;;AAEA,SAAS,oBAAO;AAChB;;AAEA;AACA;AACA;;AAEA,sBAAsB,aAAO;AAC7B;;AAEA,MAAM,gBAAU;AAChB;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,GAAG,EAAE;;AAEL;AACA,oCAAoC,gBAAe;AACnD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;;;AAGP;AACA;AACA;AACA,SAAS,KAAK,YAAY;AAC1B;AACA;AACA;AACA;AACA;AACA;;AAEA,kBAAkB,0BAA0B;AAC5C;;AAEA;AACA;AACA;AACA,wBAAwB,cAA2B;AACnD,0CAA0C,eAA4B;AACtE,uBAAuB;;AAEvB;AACA,wCAAwC;;AAExC;AACA;AACA,0BAA0B,YAAyB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA,WAAW,aAAO;AAClB;AACA,uBAAuB,4CAA4C;AACnE;AACA,SAAS;AACT;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA,qBAAqB,YAAyB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;;AAGL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH,2BAA2B,iBAAM;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,GAAG;;;AAGH;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA,MAAM,yBAAY;AAClB;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,sDAAsD,QAAQ;AAC9D;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACe,+EAAY,EAAC;AAC5B,wC;;ACrR0C;AACJ;AACU;AACR;AACN;AACQ;AACC;AACQ;AACkB;AACd;AACR;AACd;AAC0B;AACd;AACtC,MAAM,WAAK;AAClB;AACA;AACA;AACA;AACA;AACA,kCAAkC,gCAAgC;AAClE;AACA;AACA,mBAAmB,aAAO;AAC1B,oBAAoB,KAAK,CAAC,uBAAQ;AAClC,qBAAqB,mBAAS;AAC9B;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,OAAO;AACP,oBAAoB;AACpB;AACA;AACA,0BAA0B,oBAAoB;AAC9C,yBAAyB,2BAAa;AACtC;AACA,6BAA6B,+BAAe;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,sCAAsC,yBAAgB;AACtD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,IAAI;;AAEX,YAAY,aAAa;AACzB;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,SAAa;AAChC,wBAAwB,MAAM,GAAG;AACjC;AACA;AACA;AACA,KAAK;AACL,oCAAoC;AACpC;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA,mBAAmB,SAAa;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA,mBAAmB,2BAA2B;AAC9C;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACO;AACP;AACA,EAAE,WAAQ;AACV,EAAE,gBAAU;AACZ,EAAE,aAAO;AACT,EAAE,GAAG;AACL;AACA;AACA,kBAAkB,iBAAY;AAC9B,kBAAkB,MAAM;AACxB;AACA;;AAEA;AACA;AACA;AACA,iC;;ACxOyC;AACzC,MAAM,cAAK,OAAO,WAAK;AACvB,MAAM,iBAAQ,GAAG,cAAK;AACP,0EAAQ,EAAC;AACjB,MAAM,aAAI,UAAU,cAAK;;AAEhC;AACA,EAAE,aAAI;AACN;AACA,iC;;ACTuD;AACvB;AACY;;AAE5C,SAAS,2BAAO;AAChB;AACA;AACA;;AAEA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA,QAAQ;AACR;AACA;AACA,aAAa,wBAAwB;AACrC;AACA,cAAc,0BAA0B;AACxC;AACA;;;AAGA,sCAAsC,QAAQ;AAC9C;AACA,GAAG,6EAA6E,qBAAqB;AACrG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA,aAAa,wBAAwB;AACrC;AACA,cAAc,0BAA0B;AACxC;AACA;;AAEA,qCAAqC,QAAQ;AAC7C;AACA,GAAG,4EAA4E,oBAAoB;AACnG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA,aAAa,gBAAgB;AAC7B;AACA;AACA;AACA;AACA,cAAc,wBAAwB;AACtC;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,cAAc,uBAAuB;AACrC;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,MAAM,EAAE;AACR;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,MAAM,EAAE;AACR;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEe;AACf;AACA,SAAS;AACT,CAAC,EAAC;AACF,+C;;AC7KqD;AACJ;AACT;AACR;AACc;AACa;;AAE3D,SAAS,YAAO;AAChB;AACA;AACA;AACA,GAAG;AACH,kBAAkB,mBAAmB;AACrC;AACA;AACA,EAAE,MAAM;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC;AACD;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,CAAC;AACD;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,uCAAuC,SAAS;AAChD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,SAAS,EAAE;AACX;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,cAAc,UAAmB;AACjC;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,EAAE,UAAU;AACZ;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;;AAEvB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,MAAM,EAAE;AACR;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA,QAAQ,EAAE;AACV;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;AACA;AACA;AACA;AACe,kDAAS,EAAC;AACzB,gC;;AC9TkD;AAClB;AACE;;AAElC;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA,GAAG;;;AAGH;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;;AAE3B;AACA;AACA,qCAAqC;;AAErC;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA,6FAA6F,IAAS;AACtG;AACA;AACA;AACA,MAAM;;;AAGN,WAAW,EAAE;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,gBAAgB,UAAU;AAC1B;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEe;AACf;AACA;AACA;AACA;AACA,CAAC,EAAC;AACF,oC;;AC5EiD;AACd;;AAEnC,SAAS,YAAO;AAChB;AACA;AACA,GAAG;AACH,kBAAkB,IAAU;AAC5B;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACe,wDAAI,EAAC;AACpB,gC;;AClEkC;AACG;AACR;AACd;AACf;;AAEA;AACA,oBAAoB,IAAS;AAC7B,oBAAoB,eAAI;AACxB,oBAAoB,QAAQ;AAC5B;;AAEA,CAAC,EAAC;AACF,kC;;ACbA;AACsD;AACrB;;AAEjC;AACA,EAAE,aAAI;AACN;;AAEA,oBAAQ,KAAK,iBAAM;AACnB,iC;;ACT0D;AACvB;;AAEnC,SAAS,cAAO;AAChB;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC;AACD;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC;AACnC,mCAAmC;AACnC,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA,qDAAqD;AACrD;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,iBAAiB;AAC5B;AACA;AACA,YAAY,uBAAuB;AACnC;AACA;;;AAGA,MAAM,gBAAS;AACf,MAAM,EAAE;AACR;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,MAAM,EAAE;AACR;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,WAAW;AACX;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACe,oDAAI,EAAC;AACpB,kC;;AClKA;AACyD;AACxB;;AAEjC;AACA,EAAE,aAAI;AACN;;AAEA,oBAAQ,KAAK,WAAM;AACnB,iC;;ACT0D;AACF;AACT;AACJ;AACR;;AAEnC,SAAS,qBAAO;AAChB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG,SAAS;;AAEZ;AACA;AACA;AACA;AACA;AACA,mCAAmC;AACnC,mCAAmC;AACnC,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,6BAA6B;AACnE;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,iBAAiB;AAC9B;AACA;AACA,cAAc,uBAAuB;AACrC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA,eAAe,MAAM,GAAG;AACxB;;AAEA;AACA;AACA;AACA,GAAG;;;AAGH,MAAM,EAAE;AACR;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,MAAM,EAAE;AACR;AACA;AACA;;AAEA,QAAQ,EAAE;AACV;AACA,KAAK;AACL;AACA;;AAEA,QAAQ,EAAE;AACV;AACA,KAAK,UAAU,EAAE;AACjB;AACA;;AAEA;AACA;;AAEA,MAAM,EAAE;AACR;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;;AAGH;AACA;AACA,kBAAkB,EAAE;AACpB,mBAAmB,EAAE,4DAA4D;;AAEjF;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;;AAGH,OAAO,EAAE;AACT;AACA;;AAEA,SAAS,EAAE;AACX;AACA,IAAI,WAAe;AACnB;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,MAAM,GAAG;AACpB,eAAe,MAAM,GAAG;AACxB,cAAc,MAAM,GAAG;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS,WAAI;AACb;AACA;AACA,CAAC;AACD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE,MAAM;;AAER;AACA;AACA,IAAI,MAAM;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA,GAAG;AACH;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA,MAAM,WAAI;AACV;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACe,wDAAM,EAAC;AACtB,kC;;ACjcA;AACyD;AACxB;;AAEjC;AACA,EAAE,aAAI;AACN;;AAEA,oBAAQ,KAAK,aAAM;AACnB,iC;;ACTgB,uDAAQ,EAAE;AAC1B,sC;;ACDgB,8DAAQ,EAAE;AAC1B,oC;;ACDgB;AAChB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,CAAC,EAAE;AACH,gC;;ACtCwD;AACJ;AACR;AAC5C,+B;;ACHwC;AACA;AACxC;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL,wBAAwB,MAAM,wBAAwB,EAAE,mBAAW;AACnE;AACA;;AAEA;AACe,kEAAc,EAAC;AAC9B,kC;;ACfsC;AACE;AACM;AAC/B,MAAM,yBAAY;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA,KAAK;AACL;AACA;AACA,iBAAiB,MAAM,GAAG;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,iBAAiB,MAAM,GAAG;AAC1B,eAAe,MAAM,GAAG;AACxB;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP,iCAAiC,MAAM,GAAG;AAC1C;;AAEA;AACA;AACA;AACA,QAAQ,QAAkB;AAC1B;AACA;AACA,SAAS;AACT;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA,MAAM,MAAM;AACZ;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL,yBAAyB;AACzB;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA,wBAAwB,MAAM;AAC9B;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,uBAAuB,6BAA6B;AACpD;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,wCAAwC,KAAK;AAC7C,+BAA+B,MAAM,GAAG,wBAAwB,MAAM,GAAG;AACzE;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,wC;;ACvYyD;AACR;AACJ;AACtC;AACP;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,gDAAgD;;AAEhD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,KAAK;AACL,qCAAqC,yBAAY;AACjD,KAAK;AACL;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,gEAAa,EAAC;AAC7B,gC;;AC3FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,eAAe;AAC3D,QAAQ;AACR,6BAA6B,oBAAoB;AACjD;AACA,IAAI;AACJ;AACA;AACwC;AACI;AACC;AACJ;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA,wBAAwB,MAAM,GAAG;AACjC,sBAAsB,MAAM,GAAG;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA,IAAI,MAAM;;AAEV;AACA;AACA;;AAEA,gCAAgC,yBAAY;AAC5C;AACA;AACA;AACA,8BAA8B;AAC9B,KAAK;AACL,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,0BAA0B,MAAM,GAAG;AACnC;AACA;;AAEA;AACA;AACA;;AAEA,0BAA0B,MAAM,GAAG;AACnC,IAAI,QAAQ;AACZ;AACA;AACA,KAAK;AACL,iDAAiD;AACjD;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;;AAEL;AACA,oEAAoE;;AAEpE;AACA,MAAM,MAAM;AACZ;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEe,sEAAY,4BAA4B,EAAC;AACjC;AACvB,uC;;ACtJA;;AAEA;AACe,uDAAI,EAAC;AACpB,gC;;ACJ2C;AACR;AACc;AACP;;AAE1C,SAAS,aAAK;AACd;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH,iBAAiB,MAAM;AACvB;AACA;AACA;AACA;AACA,GAAG,sBAAsB;;AAEzB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA,eAAe,UAAoB;AACnC;AACA;AACA;;AAEO;AACP,MAAM,EAAE;AACR,WAAW,eAAyB;AACpC,GAAG;AACH,WAAW,eAAyB;AACpC;AACA;AACA,MAAM,gBAAQ;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,UAAU;AACV;AACe,iEAAY,sBAAsB,EAAC;AAC9B;AACpB,mC;;AC7FA;AACA;AACA;AACA;AACA,aAAa,wBAAwB;AACrC;AACA,eAAe,+CAA+C;AAC9D,eAAe,+CAA+C;AAC9D,MAAM;AACN,IAAI;AACuC;AACM;AACP;AACQ;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS,WAAK;AACd;AACA;AACA;AACA,CAAC;AACD;AACA;AACA,GAAG;AACH;;AAEA;AACA,uBAAuB,kBAAkB;AACzC,aAAa,QAAkB;AAC/B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS,SAAG;AACZ;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA,eAAe,MAAM,GAAG;AACxB,gBAAgB,kBAAkB;AAClC,gBAAgB,kBAAkB;AAClC;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,MAAM,cAAQ;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL,UAAU;AACV;AACe,+DAAY,gCAAgC,EAAC;AACnC;AACzB,iC;;AClH2C;AACD;AACF;AACxC,MAAM,aAAQ,GAAG,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;;AAEA,CAAC,EAAE,QAAQ;AACX;AACA,SAAS,QAAQ;AACjB,OAAO,QAAQ;AACf,UAAU;AACV;AACe,8DAAY,8BAA8B,EAAC;AAClC;AACxB,gC;;ACvB2C;AACM;AACP;AACC;AACO;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS,UAAK;AACd,SAAS,aAAa;AACtB;;AAEA,SAAS,QAAG;AACZ;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA,kBAAkB,UAAoB,CAAC,kBAAkB;AACzD,kBAAkB,UAAoB,CAAC,kBAAkB;AACzD;AACA;AACA,WAAW,MAAM,GAAG,EAAE,aAAa;AACnC,WAAW,MAAM,GAAG,EAAE,aAAa;AACnC;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA,EAAE,aAAa;AACf;AACA;;AAEA,MAAM,aAAQ;AACd;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL,UAAU;AACV;AACe,qDAAY,8BAA8B,EAAC;AAClC;AACxB,gC;;AC1E2C;AACU;AACZ;AACN;AAC6B;AACtB;;AAE1C,SAAS,kBAAK;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,uBAAuB,eAAe;AACtC,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG,MAAM,MAAM;AACf;AACA;AACA,GAAG;AACH;;AAEA,SAAS,WAAG;AACZ;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH,iBAAiB,WAAW;AAC5B,eAAe,MAAM,GAAG;AACxB;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,qDAAqD,aAAa;AAClE;AACA;;AAEA,UAAU,EAAE;AACZ;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA,YAAY,EAAE;AACd,YAAY,EAAE;AACd,eAAe,EAAE;AACjB;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,qBAAqB,KAAK;AAC1B,oCAAoC;AACpC;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH,wBAAwB,QAAQ,CAAC,eAAe;AAChD,kCAAkC,WAAW;AAC7C;AACA;;AAEA,MAAM,qBAAQ;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL,UAAU;AACV;AACe,6DAAY,cAAc,EAAC;AAC1B;AAChB,mC;;AC/KA;AACA;AAC2C;AACR;AACO;AACN;;AAEpC,SAAS,eAAK;AACd;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,EAAE,IAAI;AACN;AACA;AACA;;AAEA,SAAS,aAAG;AACZ;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,kBAAkB,MAAM,GAAG;AAC3B;;AAEA;AACA;;AAEA,QAAQ,EAAE;AACV;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,sBAAsB,IAAI;AAC1B;AACA;AACA;;AAEA,MAAM,kBAAQ;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL,UAAU;AACV;AACe,0DAAY,sBAAsB,EAAC;AAC9B;AACpB,gC;;ACrGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,gBAAgB;AACzD,MAAM;AACN,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA,MAAM;AACN,IAAI;AACJ;AACA;AACyC;AACE;AACD;AACL;;AAErC,SAAS,gBAAK;AACd;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA,SAAS,QAAQ;AACjB;;AAEA;AACA,OAAO;AACP,OAAO,QAAQ;AACf,YAAY,MAAM,CAAC,KAAK,CAAC,QAAQ;AACjC;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACe,2DAAY,wBAAwB,EAAC;AAC/B;AACrB,iC;;AC5DA;AAC2C;AACZ;AACiB;AACH;AACC;AACA;AACL;AACD;A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","file":"vue-grid-layout.umd.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"vue\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"VueGridLayout\"] = factory(require(\"vue\"));\n\telse\n\t\troot[\"VueGridLayout\"] = factory(root[\"Vue\"]);\n})((typeof self !== 'undefined' ? self : this), function(__WEBPACK_EXTERNAL_MODULE__8bbf__) {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"fb15\");\n","'use strict';\nvar LIBRARY = require('./_library');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar $iterCreate = require('./_iter-create');\nvar setToStringTag = require('./_set-to-string-tag');\nvar getPrototypeOf = require('./_object-gpo');\nvar ITERATOR = require('./_wks')('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n  $iterCreate(Constructor, NAME, next);\n  var getMethod = function (kind) {\n    if (!BUGGY && kind in proto) return proto[kind];\n    switch (kind) {\n      case KEYS: return function keys() { return new Constructor(this, kind); };\n      case VALUES: return function values() { return new Constructor(this, kind); };\n    } return function entries() { return new Constructor(this, kind); };\n  };\n  var TAG = NAME + ' Iterator';\n  var DEF_VALUES = DEFAULT == VALUES;\n  var VALUES_BUG = false;\n  var proto = Base.prototype;\n  var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n  var $default = $native || getMethod(DEFAULT);\n  var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n  var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n  var methods, key, IteratorPrototype;\n  // Fix native\n  if ($anyNative) {\n    IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n    if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n      // Set @@toStringTag to native iterators\n      setToStringTag(IteratorPrototype, TAG, true);\n      // fix for some old engines\n      if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);\n    }\n  }\n  // fix Array#{values, @@iterator}.name in V8 / FF\n  if (DEF_VALUES && $native && $native.name !== VALUES) {\n    VALUES_BUG = true;\n    $default = function values() { return $native.call(this); };\n  }\n  // Define iterator\n  if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n    hide(proto, ITERATOR, $default);\n  }\n  // Plug for library\n  Iterators[NAME] = $default;\n  Iterators[TAG] = returnThis;\n  if (DEFAULT) {\n    methods = {\n      values: DEF_VALUES ? $default : getMethod(VALUES),\n      keys: IS_SET ? $default : getMethod(KEYS),\n      entries: $entries\n    };\n    if (FORCED) for (key in methods) {\n      if (!(key in proto)) redefine(proto, key, methods[key]);\n    } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n  }\n  return methods;\n};\n","var toInteger = require('./_to-integer');\nvar defined = require('./_defined');\n// true  -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n  return function (that, pos) {\n    var s = String(defined(that));\n    var i = toInteger(pos);\n    var l = s.length;\n    var a, b;\n    if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n    a = s.charCodeAt(i);\n    return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n      ? TO_STRING ? s.charAt(i) : a\n      : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n  };\n};\n","'use strict';\nvar at = require('./_string-at')(true);\n\n // `AdvanceStringIndex` abstract operation\n// https://tc39.github.io/ecma262/#sec-advancestringindex\nmodule.exports = function (S, index, unicode) {\n  return index + (unicode ? at(S, index).length : 1);\n};\n","var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n  return hasOwnProperty.call(it, key);\n};\n","export * from \"-!../../node_modules/vue-style-loader/index.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./GridItem.vue?vue&type=style&index=0&id=46ff2fc8&lang=css\"","'use strict';\n// 21.2.5.3 get RegExp.prototype.flags\nvar anObject = require('./_an-object');\nmodule.exports = function () {\n  var that = anObject(this);\n  var result = '';\n  if (that.global) result += 'g';\n  if (that.ignoreCase) result += 'i';\n  if (that.multiline) result += 'm';\n  if (that.unicode) result += 'u';\n  if (that.sticky) result += 'y';\n  return result;\n};\n","// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = require('./_object-keys-internal');\nvar enumBugKeys = require('./_enum-bug-keys');\n\nmodule.exports = Object.keys || function keys(O) {\n  return $keys(O, enumBugKeys);\n};\n","var pIE = require('./_object-pie');\nvar createDesc = require('./_property-desc');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar has = require('./_has');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nexports.f = require('./_descriptors') ? gOPD : function getOwnPropertyDescriptor(O, P) {\n  O = toIObject(O);\n  P = toPrimitive(P, true);\n  if (IE8_DOM_DEFINE) try {\n    return gOPD(O, P);\n  } catch (e) { /* empty */ }\n  if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);\n};\n","var dP = require('./_object-dp');\nvar anObject = require('./_an-object');\nvar getKeys = require('./_object-keys');\n\nmodule.exports = require('./_descriptors') ? Object.defineProperties : function defineProperties(O, Properties) {\n  anObject(O);\n  var keys = getKeys(Properties);\n  var length = keys.length;\n  var i = 0;\n  var P;\n  while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n  return O;\n};\n","/**\n * Resize detection strategy that injects objects to elements in order to detect resize events.\n * Heavily inspired by: http://www.backalleycoder.com/2013/03/18/cross-browser-event-based-element-resize-detection/\n */\n\n\"use strict\";\n\nvar browserDetector = require(\"../browser-detector\");\n\nmodule.exports = function(options) {\n    options             = options || {};\n    var reporter        = options.reporter;\n    var batchProcessor  = options.batchProcessor;\n    var getState        = options.stateHandler.getState;\n\n    if(!reporter) {\n        throw new Error(\"Missing required dependency: reporter.\");\n    }\n\n    /**\n     * Adds a resize event listener to the element.\n     * @public\n     * @param {element} element The element that should have the listener added.\n     * @param {function} listener The listener callback to be called for each resize event of the element. The element will be given as a parameter to the listener callback.\n     */\n    function addListener(element, listener) {\n        function listenerProxy() {\n            listener(element);\n        }\n\n        if(browserDetector.isIE(8)) {\n            //IE 8 does not support object, but supports the resize event directly on elements.\n            getState(element).object = {\n                proxy: listenerProxy\n            };\n            element.attachEvent(\"onresize\", listenerProxy);\n        } else {\n            var object = getObject(element);\n\n            if(!object) {\n                throw new Error(\"Element is not detectable by this strategy.\");\n            }\n\n            object.contentDocument.defaultView.addEventListener(\"resize\", listenerProxy);\n        }\n    }\n\n    function buildCssTextString(rules) {\n        var seperator = options.important ? \" !important; \" : \"; \";\n\n        return (rules.join(seperator) + seperator).trim();\n    }\n\n    /**\n     * Makes an element detectable and ready to be listened for resize events. Will call the callback when the element is ready to be listened for resize changes.\n     * @private\n     * @param {object} options Optional options object.\n     * @param {element} element The element to make detectable\n     * @param {function} callback The callback to be called when the element is ready to be listened for resize changes. Will be called with the element as first parameter.\n     */\n    function makeDetectable(options, element, callback) {\n        if (!callback) {\n            callback = element;\n            element = options;\n            options = null;\n        }\n\n        options = options || {};\n        var debug = options.debug;\n\n        function injectObject(element, callback) {\n            var OBJECT_STYLE = buildCssTextString([\"display: block\", \"position: absolute\", \"top: 0\", \"left: 0\", \"width: 100%\", \"height: 100%\", \"border: none\", \"padding: 0\", \"margin: 0\", \"opacity: 0\", \"z-index: -1000\", \"pointer-events: none\"]);\n\n            //The target element needs to be positioned (everything except static) so the absolute positioned object will be positioned relative to the target element.\n\n            // Position altering may be performed directly or on object load, depending on if style resolution is possible directly or not.\n            var positionCheckPerformed = false;\n\n            // The element may not yet be attached to the DOM, and therefore the style object may be empty in some browsers.\n            // Since the style object is a reference, it will be updated as soon as the element is attached to the DOM.\n            var style = window.getComputedStyle(element);\n            var width = element.offsetWidth;\n            var height = element.offsetHeight;\n\n            getState(element).startSize = {\n                width: width,\n                height: height\n            };\n\n            function mutateDom() {\n                function alterPositionStyles() {\n                    if(style.position === \"static\") {\n                        element.style.setProperty(\"position\", \"relative\", options.important ? \"important\" : \"\");\n\n                        var removeRelativeStyles = function(reporter, element, style, property) {\n                            function getNumericalValue(value) {\n                                return value.replace(/[^-\\d\\.]/g, \"\");\n                            }\n\n                            var value = style[property];\n\n                            if(value !== \"auto\" && getNumericalValue(value) !== \"0\") {\n                                reporter.warn(\"An element that is positioned static has style.\" + property + \"=\" + value + \" which is ignored due to the static positioning. The element will need to be positioned relative, so the style.\" + property + \" will be set to 0. Element: \", element);\n                                element.style.setProperty(property, \"0\", options.important ? \"important\" : \"\");\n                            }\n                        };\n\n                        //Check so that there are no accidental styles that will make the element styled differently now that is is relative.\n                        //If there are any, set them to 0 (this should be okay with the user since the style properties did nothing before [since the element was positioned static] anyway).\n                        removeRelativeStyles(reporter, element, style, \"top\");\n                        removeRelativeStyles(reporter, element, style, \"right\");\n                        removeRelativeStyles(reporter, element, style, \"bottom\");\n                        removeRelativeStyles(reporter, element, style, \"left\");\n                    }\n                }\n\n                function onObjectLoad() {\n                    // The object has been loaded, which means that the element now is guaranteed to be attached to the DOM.\n                    if (!positionCheckPerformed) {\n                        alterPositionStyles();\n                    }\n\n                    /*jshint validthis: true */\n\n                    function getDocument(element, callback) {\n                        //Opera 12 seem to call the object.onload before the actual document has been created.\n                        //So if it is not present, poll it with an timeout until it is present.\n                        //TODO: Could maybe be handled better with object.onreadystatechange or similar.\n                        if(!element.contentDocument) {\n                            var state = getState(element);\n                            if (state.checkForObjectDocumentTimeoutId) {\n                                window.clearTimeout(state.checkForObjectDocumentTimeoutId);\n                            }\n                            state.checkForObjectDocumentTimeoutId = setTimeout(function checkForObjectDocument() {\n                                state.checkForObjectDocumentTimeoutId = 0;\n                                getDocument(element, callback);\n                            }, 100);\n\n                            return;\n                        }\n\n                        callback(element.contentDocument);\n                    }\n\n                    //Mutating the object element here seems to fire another load event.\n                    //Mutating the inner document of the object element is fine though.\n                    var objectElement = this;\n\n                    //Create the style element to be added to the object.\n                    getDocument(objectElement, function onObjectDocumentReady(objectDocument) {\n                        //Notify that the element is ready to be listened to.\n                        callback(element);\n                    });\n                }\n\n                // The element may be detached from the DOM, and some browsers does not support style resolving of detached elements.\n                // The alterPositionStyles needs to be delayed until we know the element has been attached to the DOM (which we are sure of when the onObjectLoad has been fired), if style resolution is not possible.\n                if (style.position !== \"\") {\n                    alterPositionStyles(style);\n                    positionCheckPerformed = true;\n                }\n\n                //Add an object element as a child to the target element that will be listened to for resize events.\n                var object = document.createElement(\"object\");\n                object.style.cssText = OBJECT_STYLE;\n                object.tabIndex = -1;\n                object.type = \"text/html\";\n                object.setAttribute(\"aria-hidden\", \"true\");\n                object.onload = onObjectLoad;\n\n                //Safari: This must occur before adding the object to the DOM.\n                //IE: Does not like that this happens before, even if it is also added after.\n                if(!browserDetector.isIE()) {\n                    object.data = \"about:blank\";\n                }\n\n                if (!getState(element)) {\n                    // The element has been uninstalled before the actual loading happened.\n                    return;\n                }\n\n                element.appendChild(object);\n                getState(element).object = object;\n\n                //IE: This must occur after adding the object to the DOM.\n                if(browserDetector.isIE()) {\n                    object.data = \"about:blank\";\n                }\n            }\n\n            if(batchProcessor) {\n                batchProcessor.add(mutateDom);\n            } else {\n                mutateDom();\n            }\n        }\n\n        if(browserDetector.isIE(8)) {\n            //IE 8 does not support objects properly. Luckily they do support the resize event.\n            //So do not inject the object and notify that the element is already ready to be listened to.\n            //The event handler for the resize event is attached in the utils.addListener instead.\n            callback(element);\n        } else {\n            injectObject(element, callback);\n        }\n    }\n\n    /**\n     * Returns the child object of the target element.\n     * @private\n     * @param {element} element The target element.\n     * @returns The object element of the target.\n     */\n    function getObject(element) {\n        return getState(element).object;\n    }\n\n    function uninstall(element) {\n        if (!getState(element)) {\n            return;\n        }\n\n        var object = getObject(element);\n\n        if (!object) {\n            return;\n        }\n\n        if (browserDetector.isIE(8)) {\n            element.detachEvent(\"onresize\", object.proxy);\n        } else {\n            element.removeChild(object);\n        }\n\n        if (getState(element).checkForObjectDocumentTimeoutId) {\n            window.clearTimeout(getState(element).checkForObjectDocumentTimeoutId);\n        }\n\n        delete getState(element).object;\n    }\n\n    return {\n        makeDetectable: makeDetectable,\n        addListener: addListener,\n        uninstall: uninstall\n    };\n};\n","\"use strict\";\n\nvar detector = module.exports = {};\n\ndetector.isIE = function(version) {\n    function isAnyIeVersion() {\n        var agent = navigator.userAgent.toLowerCase();\n        return agent.indexOf(\"msie\") !== -1 || agent.indexOf(\"trident\") !== -1 || agent.indexOf(\" edge/\") !== -1;\n    }\n\n    if(!isAnyIeVersion()) {\n        return false;\n    }\n\n    if(!version) {\n        return true;\n    }\n\n    //Shamelessly stolen from https://gist.github.com/padolsey/527683\n    var ieVersion = (function(){\n        var undef,\n            v = 3,\n            div = document.createElement(\"div\"),\n            all = div.getElementsByTagName(\"i\");\n\n        do {\n            div.innerHTML = \"<!--[if gt IE \" + (++v) + \"]><i></i><![endif]-->\";\n        }\n        while (all[0]);\n\n        return v > 4 ? v : undef;\n    }());\n\n    return version === ieVersion;\n};\n\ndetector.isLegacyOpera = function() {\n    return !!window.opera;\n};\n","// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n  if (!isObject(it)) return it;\n  var fn, val;\n  if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n  if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n  if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n  throw TypeError(\"Can't convert object to primitive value\");\n};\n","var isObject = require('./_is-object');\nvar document = require('./_global').document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n  return is ? document.createElement(it) : {};\n};\n","'use strict';\nrequire('./es6.regexp.exec');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar fails = require('./_fails');\nvar defined = require('./_defined');\nvar wks = require('./_wks');\nvar regexpExec = require('./_regexp-exec');\n\nvar SPECIES = wks('species');\n\nvar REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {\n  // #replace needs built-in support for named groups.\n  // #match works fine because it just return the exec results, even if it has\n  // a \"grops\" property.\n  var re = /./;\n  re.exec = function () {\n    var result = [];\n    result.groups = { a: '7' };\n    return result;\n  };\n  return ''.replace(re, '$<a>') !== '7';\n});\n\nvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = (function () {\n  // Chrome 51 has a buggy \"split\" implementation when RegExp#exec !== nativeExec\n  var re = /(?:)/;\n  var originalExec = re.exec;\n  re.exec = function () { return originalExec.apply(this, arguments); };\n  var result = 'ab'.split(re);\n  return result.length === 2 && result[0] === 'a' && result[1] === 'b';\n})();\n\nmodule.exports = function (KEY, length, exec) {\n  var SYMBOL = wks(KEY);\n\n  var DELEGATES_TO_SYMBOL = !fails(function () {\n    // String methods call symbol-named RegEp methods\n    var O = {};\n    O[SYMBOL] = function () { return 7; };\n    return ''[KEY](O) != 7;\n  });\n\n  var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL ? !fails(function () {\n    // Symbol-named RegExp methods call .exec\n    var execCalled = false;\n    var re = /a/;\n    re.exec = function () { execCalled = true; return null; };\n    if (KEY === 'split') {\n      // RegExp[@@split] doesn't call the regex's exec method, but first creates\n      // a new one. We need to return the patched regex when creating the new one.\n      re.constructor = {};\n      re.constructor[SPECIES] = function () { return re; };\n    }\n    re[SYMBOL]('');\n    return !execCalled;\n  }) : undefined;\n\n  if (\n    !DELEGATES_TO_SYMBOL ||\n    !DELEGATES_TO_EXEC ||\n    (KEY === 'replace' && !REPLACE_SUPPORTS_NAMED_GROUPS) ||\n    (KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC)\n  ) {\n    var nativeRegExpMethod = /./[SYMBOL];\n    var fns = exec(\n      defined,\n      SYMBOL,\n      ''[KEY],\n      function maybeCallNative(nativeMethod, regexp, str, arg2, forceStringMethod) {\n        if (regexp.exec === regexpExec) {\n          if (DELEGATES_TO_SYMBOL && !forceStringMethod) {\n            // The native String method already delegates to @@method (this\n            // polyfilled function), leasing to infinite recursion.\n            // We avoid it by directly calling the native @@method method.\n            return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) };\n          }\n          return { done: true, value: nativeMethod.call(str, regexp, arg2) };\n        }\n        return { done: false };\n      }\n    );\n    var strfn = fns[0];\n    var rxfn = fns[1];\n\n    redefine(String.prototype, KEY, strfn);\n    hide(RegExp.prototype, SYMBOL, length == 2\n      // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)\n      // 21.2.5.11 RegExp.prototype[@@split](string, limit)\n      ? function (string, arg) { return rxfn.call(string, this, arg); }\n      // 21.2.5.6 RegExp.prototype[@@match](string)\n      // 21.2.5.9 RegExp.prototype[@@search](string)\n      : function (string) { return rxfn.call(string, this); }\n    );\n  }\n};\n","var isObject = require('./_is-object');\nvar document = require('./_global').document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n  return is ? document.createElement(it) : {};\n};\n","// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = require('./_cof');\nvar TAG = require('./_wks')('toStringTag');\n// ES3 wrong here\nvar ARG = cof(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n  try {\n    return it[key];\n  } catch (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n  var O, T, B;\n  return it === undefined ? 'Undefined' : it === null ? 'Null'\n    // @@toStringTag case\n    : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n    // builtinTag case\n    : ARG ? cof(O)\n    // ES3 arguments fallback\n    : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n","\"use strict\";\n\n/*\n  MIT License http://www.opensource.org/licenses/mit-license.php\n  Author Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\n// eslint-disable-next-line func-names\nmodule.exports = function (useSourceMap) {\n  var list = []; // return the list of modules as css string\n\n  list.toString = function toString() {\n    return this.map(function (item) {\n      var content = cssWithMappingToString(item, useSourceMap);\n\n      if (item[2]) {\n        return \"@media \".concat(item[2], \" {\").concat(content, \"}\");\n      }\n\n      return content;\n    }).join('');\n  }; // import a list of modules into the list\n  // eslint-disable-next-line func-names\n\n\n  list.i = function (modules, mediaQuery, dedupe) {\n    if (typeof modules === 'string') {\n      // eslint-disable-next-line no-param-reassign\n      modules = [[null, modules, '']];\n    }\n\n    var alreadyImportedModules = {};\n\n    if (dedupe) {\n      for (var i = 0; i < this.length; i++) {\n        // eslint-disable-next-line prefer-destructuring\n        var id = this[i][0];\n\n        if (id != null) {\n          alreadyImportedModules[id] = true;\n        }\n      }\n    }\n\n    for (var _i = 0; _i < modules.length; _i++) {\n      var item = [].concat(modules[_i]);\n\n      if (dedupe && alreadyImportedModules[item[0]]) {\n        // eslint-disable-next-line no-continue\n        continue;\n      }\n\n      if (mediaQuery) {\n        if (!item[2]) {\n          item[2] = mediaQuery;\n        } else {\n          item[2] = \"\".concat(mediaQuery, \" and \").concat(item[2]);\n        }\n      }\n\n      list.push(item);\n    }\n  };\n\n  return list;\n};\n\nfunction cssWithMappingToString(item, useSourceMap) {\n  var content = item[1] || ''; // eslint-disable-next-line prefer-destructuring\n\n  var cssMapping = item[3];\n\n  if (!cssMapping) {\n    return content;\n  }\n\n  if (useSourceMap && typeof btoa === 'function') {\n    var sourceMapping = toComment(cssMapping);\n    var sourceURLs = cssMapping.sources.map(function (source) {\n      return \"/*# sourceURL=\".concat(cssMapping.sourceRoot || '').concat(source, \" */\");\n    });\n    return [content].concat(sourceURLs).concat([sourceMapping]).join('\\n');\n  }\n\n  return [content].join('\\n');\n} // Adapted from convert-source-map (MIT)\n\n\nfunction toComment(sourceMap) {\n  // eslint-disable-next-line no-undef\n  var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));\n  var data = \"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(base64);\n  return \"/*# \".concat(data, \" */\");\n}","exports.f = Object.getOwnPropertySymbols;\n","module.exports = function (exec) {\n  try {\n    return !!exec();\n  } catch (e) {\n    return true;\n  }\n};\n","var global = require('./_global');\nvar hide = require('./_hide');\nvar has = require('./_has');\nvar SRC = require('./_uid')('src');\nvar $toString = require('./_function-to-string');\nvar TO_STRING = 'toString';\nvar TPL = ('' + $toString).split(TO_STRING);\n\nrequire('./_core').inspectSource = function (it) {\n  return $toString.call(it);\n};\n\n(module.exports = function (O, key, val, safe) {\n  var isFunction = typeof val == 'function';\n  if (isFunction) has(val, 'name') || hide(val, 'name', key);\n  if (O[key] === val) return;\n  if (isFunction) has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key)));\n  if (O === global) {\n    O[key] = val;\n  } else if (!safe) {\n    delete O[key];\n    hide(O, key, val);\n  } else if (O[key]) {\n    O[key] = val;\n  } else {\n    hide(O, key, val);\n  }\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, TO_STRING, function toString() {\n  return typeof this == 'function' && this[SRC] || $toString.call(this);\n});\n","// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = require('./_an-object');\nvar dPs = require('./_object-dps');\nvar enumBugKeys = require('./_enum-bug-keys');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n  // Thrash, waste and sodomy: IE GC bug\n  var iframe = require('./_dom-create')('iframe');\n  var i = enumBugKeys.length;\n  var lt = '<';\n  var gt = '>';\n  var iframeDocument;\n  iframe.style.display = 'none';\n  require('./_html').appendChild(iframe);\n  iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n  // createDict = iframe.contentWindow.Object;\n  // html.removeChild(iframe);\n  iframeDocument = iframe.contentWindow.document;\n  iframeDocument.open();\n  iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n  iframeDocument.close();\n  createDict = iframeDocument.F;\n  while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n  return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n  var result;\n  if (O !== null) {\n    Empty[PROTOTYPE] = anObject(O);\n    result = new Empty();\n    Empty[PROTOTYPE] = null;\n    // add \"__proto__\" for Object.getPrototypeOf polyfill\n    result[IE_PROTO] = O;\n  } else result = createDict();\n  return Properties === undefined ? result : dPs(result, Properties);\n};\n","var store = require('./_shared')('wks');\nvar uid = require('./_uid');\nvar Symbol = require('./_global').Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n  return store[name] || (store[name] =\n    USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n","\"use strict\";\n\nmodule.exports = function() {\n    var idCount = 1;\n\n    /**\n     * Generates a new unique id in the context.\n     * @public\n     * @returns {number} A unique id in the context.\n     */\n    function generate() {\n        return idCount++;\n    }\n\n    return {\n        generate: generate\n    };\n};\n","module.exports = false;\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n  return toString.call(it).slice(8, -1);\n};\n","'use strict';\nvar fails = require('./_fails');\n\nmodule.exports = function (method, arg) {\n  return !!method && fails(function () {\n    // eslint-disable-next-line no-useless-call\n    arg ? method.call(null, function () { /* empty */ }, 1) : method.call(null);\n  });\n};\n","var dP = require('./_object-dp');\nvar createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function (object, key, value) {\n  return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n  object[key] = value;\n  return object;\n};\n","var dP = require('./_object-dp');\nvar createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function (object, key, value) {\n  return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n  object[key] = value;\n  return object;\n};\n","// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = require('./_has');\nvar toObject = require('./_to-object');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n  O = toObject(O);\n  if (has(O, IE_PROTO)) return O[IE_PROTO];\n  if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n    return O.constructor.prototype;\n  } return O instanceof Object ? ObjectProto : null;\n};\n","'use strict';\nvar create = require('./_object-create');\nvar descriptor = require('./_property-desc');\nvar setToStringTag = require('./_set-to-string-tag');\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nrequire('./_hide')(IteratorPrototype, require('./_wks')('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n  Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n  setToStringTag(Constructor, NAME + ' Iterator');\n};\n","require('../../modules/es6.object.define-property');\nvar $Object = require('../../modules/_core').Object;\nmodule.exports = function defineProperty(it, key, desc) {\n  return $Object.defineProperty(it, key, desc);\n};\n","// 19.1.2.14 Object.keys(O)\nvar toObject = require('./_to-object');\nvar $keys = require('./_object-keys');\n\nrequire('./_object-sap')('keys', function () {\n  return function keys(it) {\n    return $keys(toObject(it));\n  };\n});\n","// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n  return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n","module.exports = function (bitmap, value) {\n  return {\n    enumerable: !(bitmap & 1),\n    configurable: !(bitmap & 2),\n    writable: !(bitmap & 4),\n    value: value\n  };\n};\n","var $export = require('./_export');\n// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)\n$export($export.S + $export.F * !require('./_descriptors'), 'Object', { defineProperty: require('./_object-dp').f });\n","'use strict';\n\nvar anObject = require('./_an-object');\nvar toLength = require('./_to-length');\nvar advanceStringIndex = require('./_advance-string-index');\nvar regExpExec = require('./_regexp-exec-abstract');\n\n// @@match logic\nrequire('./_fix-re-wks')('match', 1, function (defined, MATCH, $match, maybeCallNative) {\n  return [\n    // `String.prototype.match` method\n    // https://tc39.github.io/ecma262/#sec-string.prototype.match\n    function match(regexp) {\n      var O = defined(this);\n      var fn = regexp == undefined ? undefined : regexp[MATCH];\n      return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[MATCH](String(O));\n    },\n    // `RegExp.prototype[@@match]` method\n    // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@match\n    function (regexp) {\n      var res = maybeCallNative($match, regexp, this);\n      if (res.done) return res.value;\n      var rx = anObject(regexp);\n      var S = String(this);\n      if (!rx.global) return regExpExec(rx, S);\n      var fullUnicode = rx.unicode;\n      rx.lastIndex = 0;\n      var A = [];\n      var n = 0;\n      var result;\n      while ((result = regExpExec(rx, S)) !== null) {\n        var matchStr = String(result[0]);\n        A[n] = matchStr;\n        if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n        n++;\n      }\n      return n === 0 ? null : A;\n    }\n  ];\n});\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".vue-grid-item{-webkit-transition:all .2s ease;transition:all .2s ease;-webkit-transition-property:left,top,right;transition-property:left,top,right}.vue-grid-item,.vue-grid-item.no-touch{-ms-touch-action:none;touch-action:none}.vue-grid-item.cssTransforms{-webkit-transition-property:-webkit-transform;transition-property:-webkit-transform;transition-property:transform;transition-property:transform,-webkit-transform;left:0;right:auto}.vue-grid-item.cssTransforms.render-rtl{left:auto;right:0}.vue-grid-item.resizing{opacity:.6;z-index:3}.vue-grid-item.vue-draggable-dragging{-webkit-transition:none;transition:none;z-index:3}.vue-grid-item.vue-grid-placeholder{background:red;opacity:.2;-webkit-transition-duration:.1s;transition-duration:.1s;z-index:2;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none}.vue-grid-item>.vue-resizable-handle{position:absolute;width:20px;height:20px;bottom:0;right:0;background:url(\\\"data:image/svg+xml;base64,PHN2ZyBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjojZmZmZmZmMDAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjYiIGhlaWdodD0iNiI+PHBhdGggZD0iTTYgNkgwVjQuMmg0LjJWMEg2djZ6IiBvcGFjaXR5PSIuMzAyIi8+PC9zdmc+\\\");background-position:100% 100%;padding:0 3px 3px 0;background-repeat:no-repeat;background-origin:content-box;-webkit-box-sizing:border-box;box-sizing:border-box;cursor:se-resize}.vue-grid-item>.vue-rtl-resizable-handle{bottom:0;left:0;background:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTAiIGhlaWdodD0iMTAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbD0ibm9uZSIgZD0iTS0xLTFoMTJ2MTJILTF6Ii8+PGc+PHBhdGggc3Ryb2tlLWxpbmVjYXA9InVuZGVmaW5lZCIgc3Ryb2tlLWxpbmVqb2luPSJ1bmRlZmluZWQiIHN0cm9rZS13aWR0aD0iMS41IiBzdHJva2U9IiMwMDAiIGZpbGw9Im5vbmUiIGQ9Ik0xNDQuODIxLTM4LjM5M2wtMjAuMzU3LTMxLjc4NSIvPjxwYXRoIHN0cm9rZT0iIzY2NiIgc3Ryb2tlLWxpbmVjYXA9InVuZGVmaW5lZCIgc3Ryb2tlLWxpbmVqb2luPSJ1bmRlZmluZWQiIHN0cm9rZS13aWR0aD0iMiIgZmlsbD0ibm9uZSIgZD0iTS45NDctLjAxOHY5LjEyNU0tLjY1NiA5aDEwLjczIi8+PC9nPjwvc3ZnPg==);background-position:0 100%;padding-left:3px;background-repeat:no-repeat;background-origin:content-box;cursor:sw-resize;right:auto}.vue-grid-item.disable-userselect{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}\", \"\"]);\n// Exports\nmodule.exports = exports;\n","/**\n * Translates the list format produced by css-loader into something\n * easier to manipulate.\n */\nexport default function listToStyles (parentId, list) {\n  var styles = []\n  var newStyles = {}\n  for (var i = 0; i < list.length; i++) {\n    var item = list[i]\n    var id = item[0]\n    var css = item[1]\n    var media = item[2]\n    var sourceMap = item[3]\n    var part = {\n      id: parentId + ':' + i,\n      css: css,\n      media: media,\n      sourceMap: sourceMap\n    }\n    if (!newStyles[id]) {\n      styles.push(newStyles[id] = { id: id, parts: [part] })\n    } else {\n      newStyles[id].parts.push(part)\n    }\n  }\n  return styles\n}\n","/*\n  MIT License http://www.opensource.org/licenses/mit-license.php\n  Author Tobias Koppers @sokra\n  Modified by Evan You @yyx990803\n*/\n\nimport listToStyles from './listToStyles'\n\nvar hasDocument = typeof document !== 'undefined'\n\nif (typeof DEBUG !== 'undefined' && DEBUG) {\n  if (!hasDocument) {\n    throw new Error(\n    'vue-style-loader cannot be used in a non-browser environment. ' +\n    \"Use { target: 'node' } in your Webpack config to indicate a server-rendering environment.\"\n  ) }\n}\n\n/*\ntype StyleObject = {\n  id: number;\n  parts: Array<StyleObjectPart>\n}\n\ntype StyleObjectPart = {\n  css: string;\n  media: string;\n  sourceMap: ?string\n}\n*/\n\nvar stylesInDom = {/*\n  [id: number]: {\n    id: number,\n    refs: number,\n    parts: Array<(obj?: StyleObjectPart) => void>\n  }\n*/}\n\nvar head = hasDocument && (document.head || document.getElementsByTagName('head')[0])\nvar singletonElement = null\nvar singletonCounter = 0\nvar isProduction = false\nvar noop = function () {}\nvar options = null\nvar ssrIdKey = 'data-vue-ssr-id'\n\n// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>\n// tags it will allow on a page\nvar isOldIE = typeof navigator !== 'undefined' && /msie [6-9]\\b/.test(navigator.userAgent.toLowerCase())\n\nexport default function addStylesClient (parentId, list, _isProduction, _options) {\n  isProduction = _isProduction\n\n  options = _options || {}\n\n  var styles = listToStyles(parentId, list)\n  addStylesToDom(styles)\n\n  return function update (newList) {\n    var mayRemove = []\n    for (var i = 0; i < styles.length; i++) {\n      var item = styles[i]\n      var domStyle = stylesInDom[item.id]\n      domStyle.refs--\n      mayRemove.push(domStyle)\n    }\n    if (newList) {\n      styles = listToStyles(parentId, newList)\n      addStylesToDom(styles)\n    } else {\n      styles = []\n    }\n    for (var i = 0; i < mayRemove.length; i++) {\n      var domStyle = mayRemove[i]\n      if (domStyle.refs === 0) {\n        for (var j = 0; j < domStyle.parts.length; j++) {\n          domStyle.parts[j]()\n        }\n        delete stylesInDom[domStyle.id]\n      }\n    }\n  }\n}\n\nfunction addStylesToDom (styles /* Array<StyleObject> */) {\n  for (var i = 0; i < styles.length; i++) {\n    var item = styles[i]\n    var domStyle = stylesInDom[item.id]\n    if (domStyle) {\n      domStyle.refs++\n      for (var j = 0; j < domStyle.parts.length; j++) {\n        domStyle.parts[j](item.parts[j])\n      }\n      for (; j < item.parts.length; j++) {\n        domStyle.parts.push(addStyle(item.parts[j]))\n      }\n      if (domStyle.parts.length > item.parts.length) {\n        domStyle.parts.length = item.parts.length\n      }\n    } else {\n      var parts = []\n      for (var j = 0; j < item.parts.length; j++) {\n        parts.push(addStyle(item.parts[j]))\n      }\n      stylesInDom[item.id] = { id: item.id, refs: 1, parts: parts }\n    }\n  }\n}\n\nfunction createStyleElement () {\n  var styleElement = document.createElement('style')\n  styleElement.type = 'text/css'\n  head.appendChild(styleElement)\n  return styleElement\n}\n\nfunction addStyle (obj /* StyleObjectPart */) {\n  var update, remove\n  var styleElement = document.querySelector('style[' + ssrIdKey + '~=\"' + obj.id + '\"]')\n\n  if (styleElement) {\n    if (isProduction) {\n      // has SSR styles and in production mode.\n      // simply do nothing.\n      return noop\n    } else {\n      // has SSR styles but in dev mode.\n      // for some reason Chrome can't handle source map in server-rendered\n      // style tags - source maps in <style> only works if the style tag is\n      // created and inserted dynamically. So we remove the server rendered\n      // styles and inject new ones.\n      styleElement.parentNode.removeChild(styleElement)\n    }\n  }\n\n  if (isOldIE) {\n    // use singleton mode for IE9.\n    var styleIndex = singletonCounter++\n    styleElement = singletonElement || (singletonElement = createStyleElement())\n    update = applyToSingletonTag.bind(null, styleElement, styleIndex, false)\n    remove = applyToSingletonTag.bind(null, styleElement, styleIndex, true)\n  } else {\n    // use multi-style-tag mode in all other cases\n    styleElement = createStyleElement()\n    update = applyToTag.bind(null, styleElement)\n    remove = function () {\n      styleElement.parentNode.removeChild(styleElement)\n    }\n  }\n\n  update(obj)\n\n  return function updateStyle (newObj /* StyleObjectPart */) {\n    if (newObj) {\n      if (newObj.css === obj.css &&\n          newObj.media === obj.media &&\n          newObj.sourceMap === obj.sourceMap) {\n        return\n      }\n      update(obj = newObj)\n    } else {\n      remove()\n    }\n  }\n}\n\nvar replaceText = (function () {\n  var textStore = []\n\n  return function (index, replacement) {\n    textStore[index] = replacement\n    return textStore.filter(Boolean).join('\\n')\n  }\n})()\n\nfunction applyToSingletonTag (styleElement, index, remove, obj) {\n  var css = remove ? '' : obj.css\n\n  if (styleElement.styleSheet) {\n    styleElement.styleSheet.cssText = replaceText(index, css)\n  } else {\n    var cssNode = document.createTextNode(css)\n    var childNodes = styleElement.childNodes\n    if (childNodes[index]) styleElement.removeChild(childNodes[index])\n    if (childNodes.length) {\n      styleElement.insertBefore(cssNode, childNodes[index])\n    } else {\n      styleElement.appendChild(cssNode)\n    }\n  }\n}\n\nfunction applyToTag (styleElement, obj) {\n  var css = obj.css\n  var media = obj.media\n  var sourceMap = obj.sourceMap\n\n  if (media) {\n    styleElement.setAttribute('media', media)\n  }\n  if (options.ssrId) {\n    styleElement.setAttribute(ssrIdKey, obj.id)\n  }\n\n  if (sourceMap) {\n    // https://developer.chrome.com/devtools/docs/javascript-debugging\n    // this makes source maps inside style tags work properly in Chrome\n    css += '\\n/*# sourceURL=' + sourceMap.sources[0] + ' */'\n    // http://stackoverflow.com/a/26603875\n    css += '\\n/*# sourceMappingURL=data:application/json;base64,' + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + ' */'\n  }\n\n  if (styleElement.styleSheet) {\n    styleElement.styleSheet.cssText = css\n  } else {\n    while (styleElement.firstChild) {\n      styleElement.removeChild(styleElement.firstChild)\n    }\n    styleElement.appendChild(document.createTextNode(css))\n  }\n}\n","\"use strict\";\n\nmodule.exports = function(idHandler) {\n    var eventListeners = {};\n\n    /**\n     * Gets all listeners for the given element.\n     * @public\n     * @param {element} element The element to get all listeners for.\n     * @returns All listeners for the given element.\n     */\n    function getListeners(element) {\n        var id = idHandler.get(element);\n\n        if (id === undefined) {\n            return [];\n        }\n\n        return eventListeners[id] || [];\n    }\n\n    /**\n     * Stores the given listener for the given element. Will not actually add the listener to the element.\n     * @public\n     * @param {element} element The element that should have the listener added.\n     * @param {function} listener The callback that the element has added.\n     */\n    function addListener(element, listener) {\n        var id = idHandler.get(element);\n\n        if(!eventListeners[id]) {\n            eventListeners[id] = [];\n        }\n\n        eventListeners[id].push(listener);\n    }\n\n    function removeListener(element, listener) {\n        var listeners = getListeners(element);\n        for (var i = 0, len = listeners.length; i < len; ++i) {\n            if (listeners[i] === listener) {\n              listeners.splice(i, 1);\n              break;\n            }\n        }\n    }\n\n    function removeAllListeners(element) {\n      var listeners = getListeners(element);\n      if (!listeners) { return; }\n      listeners.length = 0;\n    }\n\n    return {\n        get: getListeners,\n        add: addListener,\n        removeListener: removeListener,\n        removeAllListeners: removeAllListeners\n    };\n};\n","// 7.1.13 ToObject(argument)\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n  return Object(defined(it));\n};\n","\"use strict\";\n\nmodule.exports = function(options) {\n    var idGenerator     = options.idGenerator;\n    var getState        = options.stateHandler.getState;\n\n    /**\n     * Gets the resize detector id of the element.\n     * @public\n     * @param {element} element The target element to get the id of.\n     * @returns {string|number|null} The id of the element. Null if it has no id.\n     */\n    function getId(element) {\n        var state = getState(element);\n\n        if (state && state.id !== undefined) {\n            return state.id;\n        }\n\n        return null;\n    }\n\n    /**\n     * Sets the resize detector id of the element. Requires the element to have a resize detector state initialized.\n     * @public\n     * @param {element} element The target element to set the id of.\n     * @returns {string|number|null} The id of the element.\n     */\n    function setId(element) {\n        var state = getState(element);\n\n        if (!state) {\n            throw new Error(\"setId required the element to have a resize detection state.\");\n        }\n\n        var id = idGenerator.generate();\n\n        state.id = id;\n\n        return id;\n    }\n\n    return {\n        get: getId,\n        set: setId\n    };\n};\n","\"use strict\";\n\nvar utils = module.exports = {};\n\nutils.getOption = getOption;\n\nfunction getOption(options, name, defaultValue) {\n    var value = options[name];\n\n    if((value === undefined || value === null) && defaultValue !== undefined) {\n        return defaultValue;\n    }\n\n    return value;\n}\n","'use strict';\n\nvar regexpFlags = require('./_flags');\n\nvar nativeExec = RegExp.prototype.exec;\n// This always refers to the native implementation, because the\n// String#replace polyfill uses ./fix-regexp-well-known-symbol-logic.js,\n// which loads this file before patching the method.\nvar nativeReplace = String.prototype.replace;\n\nvar patchedExec = nativeExec;\n\nvar LAST_INDEX = 'lastIndex';\n\nvar UPDATES_LAST_INDEX_WRONG = (function () {\n  var re1 = /a/,\n      re2 = /b*/g;\n  nativeExec.call(re1, 'a');\n  nativeExec.call(re2, 'a');\n  return re1[LAST_INDEX] !== 0 || re2[LAST_INDEX] !== 0;\n})();\n\n// nonparticipating capturing group, copied from es5-shim's String#split patch.\nvar NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;\n\nvar PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED;\n\nif (PATCH) {\n  patchedExec = function exec(str) {\n    var re = this;\n    var lastIndex, reCopy, match, i;\n\n    if (NPCG_INCLUDED) {\n      reCopy = new RegExp('^' + re.source + '$(?!\\\\s)', regexpFlags.call(re));\n    }\n    if (UPDATES_LAST_INDEX_WRONG) lastIndex = re[LAST_INDEX];\n\n    match = nativeExec.call(re, str);\n\n    if (UPDATES_LAST_INDEX_WRONG && match) {\n      re[LAST_INDEX] = re.global ? match.index + match[0].length : lastIndex;\n    }\n    if (NPCG_INCLUDED && match && match.length > 1) {\n      // Fix browsers whose `exec` methods don't consistently return `undefined`\n      // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/\n      // eslint-disable-next-line no-loop-func\n      nativeReplace.call(match[0], reCopy, function () {\n        for (i = 1; i < arguments.length - 2; i++) {\n          if (arguments[i] === undefined) match[i] = undefined;\n        }\n      });\n    }\n\n    return match;\n  };\n}\n\nmodule.exports = patchedExec;\n","exports.f = {}.propertyIsEnumerable;\n","var core = require('./_core');\nvar global = require('./_global');\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n  return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n  version: core.version,\n  mode: require('./_library') ? 'pure' : 'global',\n  copyright: '© 2020 Denis Pushkarev (zloirock.ru)'\n});\n","'use strict';\nvar $export = require('./_export');\nvar aFunction = require('./_a-function');\nvar toObject = require('./_to-object');\nvar fails = require('./_fails');\nvar $sort = [].sort;\nvar test = [1, 2, 3];\n\n$export($export.P + $export.F * (fails(function () {\n  // IE8-\n  test.sort(undefined);\n}) || !fails(function () {\n  // V8 bug\n  test.sort(null);\n  // Old WebKit\n}) || !require('./_strict-method')($sort)), 'Array', {\n  // 22.1.3.25 Array.prototype.sort(comparefn)\n  sort: function sort(comparefn) {\n    return comparefn === undefined\n      ? $sort.call(toObject(this))\n      : $sort.call(toObject(this), aFunction(comparefn));\n  }\n});\n","var core = module.exports = { version: '2.6.12' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n","\"use strict\";\n\nmodule.exports = function(options) {\n    var getState = options.stateHandler.getState;\n\n    /**\n     * Tells if the element has been made detectable and ready to be listened for resize events.\n     * @public\n     * @param {element} The element to check.\n     * @returns {boolean} True or false depending on if the element is detectable or not.\n     */\n    function isDetectable(element) {\n        var state = getState(element);\n        return state && !!state.isDetectable;\n    }\n\n    /**\n     * Marks the element that it has been made detectable and ready to be listened for resize events.\n     * @public\n     * @param {element} The element to mark.\n     */\n    function markAsDetectable(element) {\n        getState(element).isDetectable = true;\n    }\n\n    /**\n     * Tells if the element is busy or not.\n     * @public\n     * @param {element} The element to check.\n     * @returns {boolean} True or false depending on if the element is busy or not.\n     */\n    function isBusy(element) {\n        return !!getState(element).busy;\n    }\n\n    /**\n     * Marks the object is busy and should not be made detectable.\n     * @public\n     * @param {element} element The element to mark.\n     * @param {boolean} busy If the element is busy or not.\n     */\n    function markBusy(element, busy) {\n        getState(element).busy = !!busy;\n    }\n\n    return {\n        isDetectable: isDetectable,\n        markAsDetectable: markAsDetectable,\n        isBusy: isBusy,\n        markBusy: markBusy\n    };\n};\n","var global = require('./_global');\nvar core = require('./_core');\nvar hide = require('./_hide');\nvar redefine = require('./_redefine');\nvar ctx = require('./_ctx');\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n  var IS_FORCED = type & $export.F;\n  var IS_GLOBAL = type & $export.G;\n  var IS_STATIC = type & $export.S;\n  var IS_PROTO = type & $export.P;\n  var IS_BIND = type & $export.B;\n  var target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE];\n  var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n  var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {});\n  var key, own, out, exp;\n  if (IS_GLOBAL) source = name;\n  for (key in source) {\n    // contains in native\n    own = !IS_FORCED && target && target[key] !== undefined;\n    // export native or passed\n    out = (own ? target : source)[key];\n    // bind timers to global for call from export context\n    exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n    // extend global\n    if (target) redefine(target, key, out, type & $export.U);\n    // export\n    if (exports[key] != out) hide(exports, key, exp);\n    if (IS_PROTO && expProto[key] != out) expProto[key] = out;\n  }\n};\nglobal.core = core;\n// type bitmap\n$export.F = 1;   // forced\n$export.G = 2;   // global\n$export.S = 4;   // static\n$export.P = 8;   // proto\n$export.B = 16;  // bind\n$export.W = 32;  // wrap\n$export.U = 64;  // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n","var isObject = require('./_is-object');\nvar setPrototypeOf = require('./_set-proto').set;\nmodule.exports = function (that, target, C) {\n  var S = target.constructor;\n  var P;\n  if (S !== C && typeof S == 'function' && (P = S.prototype) !== C.prototype && isObject(P) && setPrototypeOf) {\n    setPrototypeOf(that, P);\n  } return that;\n};\n","// most Object methods by ES6 should accept primitives\nvar $export = require('./_export');\nvar core = require('./_core');\nvar fails = require('./_fails');\nmodule.exports = function (KEY, exec) {\n  var fn = (core.Object || {})[KEY] || Object[KEY];\n  var exp = {};\n  exp[KEY] = exec(fn);\n  $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);\n};\n","'use strict';\n\nvar classof = require('./_classof');\nvar builtinExec = RegExp.prototype.exec;\n\n // `RegExpExec` abstract operation\n// https://tc39.github.io/ecma262/#sec-regexpexec\nmodule.exports = function (R, S) {\n  var exec = R.exec;\n  if (typeof exec === 'function') {\n    var result = exec.call(R, S);\n    if (typeof result !== 'object') {\n      throw new TypeError('RegExp exec method returned something other than an Object or null');\n    }\n    return result;\n  }\n  if (classof(R) !== 'RegExp') {\n    throw new TypeError('RegExp#exec called on incompatible receiver');\n  }\n  return builtinExec.call(R, S);\n};\n","var shared = require('./_shared')('keys');\nvar uid = require('./_uid');\nmodule.exports = function (key) {\n  return shared[key] || (shared[key] = uid(key));\n};\n","// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = require('./_cof');\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n  return cof(it) == 'String' ? it.split('') : Object(it);\n};\n","var global = require('./_global');\nvar core = require('./_core');\nvar ctx = require('./_ctx');\nvar hide = require('./_hide');\nvar has = require('./_has');\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n  var IS_FORCED = type & $export.F;\n  var IS_GLOBAL = type & $export.G;\n  var IS_STATIC = type & $export.S;\n  var IS_PROTO = type & $export.P;\n  var IS_BIND = type & $export.B;\n  var IS_WRAP = type & $export.W;\n  var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n  var expProto = exports[PROTOTYPE];\n  var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE];\n  var key, own, out;\n  if (IS_GLOBAL) source = name;\n  for (key in source) {\n    // contains in native\n    own = !IS_FORCED && target && target[key] !== undefined;\n    if (own && has(exports, key)) continue;\n    // export native or passed\n    out = own ? target[key] : source[key];\n    // prevent global pollution for namespaces\n    exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]\n    // bind timers to global for call from export context\n    : IS_BIND && own ? ctx(out, global)\n    // wrap global constructors for prevent change them in library\n    : IS_WRAP && target[key] == out ? (function (C) {\n      var F = function (a, b, c) {\n        if (this instanceof C) {\n          switch (arguments.length) {\n            case 0: return new C();\n            case 1: return new C(a);\n            case 2: return new C(a, b);\n          } return new C(a, b, c);\n        } return C.apply(this, arguments);\n      };\n      F[PROTOTYPE] = C[PROTOTYPE];\n      return F;\n    // make static versions for prototype methods\n    })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n    // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%\n    if (IS_PROTO) {\n      (exports.virtual || (exports.virtual = {}))[key] = out;\n      // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%\n      if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out);\n    }\n  }\n};\n// type bitmap\n$export.F = 1;   // forced\n$export.G = 2;   // global\n$export.S = 4;   // static\n$export.P = 8;   // proto\n$export.B = 16;  // bind\n$export.W = 32;  // wrap\n$export.U = 64;  // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n","export * from \"-!../../node_modules/vue-style-loader/index.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./GridLayout.vue?vue&type=style&index=0&id=fc5948f6&lang=css\"","// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = require('./_iobject');\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n  return IObject(defined(it));\n};\n","var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n  return hasOwnProperty.call(it, key);\n};\n","// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n  if (!isObject(it)) return it;\n  var fn, val;\n  if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n  if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n  if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n  throw TypeError(\"Can't convert object to primitive value\");\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n// runtime helper for setting properties on components\n// in a tree-shakable way\nexports.default = (sfc, props) => {\n    const target = sfc.__vccOpts || sfc;\n    for (const [key, val] of props) {\n        target[key] = val;\n    }\n    return target;\n};\n","// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n  ? window : typeof self != 'undefined' && self.Math == Math ? self\n  // eslint-disable-next-line no-new-func\n  : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n","var toInteger = require('./_to-integer');\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n  index = toInteger(index);\n  return index < 0 ? max(index + length, 0) : min(index, length);\n};\n","module.exports = !require('./_descriptors') && !require('./_fails')(function () {\n  return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n","module.exports = function (it) {\n  if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n  return it;\n};\n","module.exports = function (exec) {\n  try {\n    return !!exec();\n  } catch (e) {\n    return true;\n  }\n};\n","var def = require('./_object-dp').f;\nvar has = require('./_has');\nvar TAG = require('./_wks')('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n  if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n","var core = module.exports = { version: '2.6.12' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".vue-grid-layout{position:relative;-webkit-transition:height .2s ease;transition:height .2s ease}\", \"\"]);\n// Exports\nmodule.exports = exports;\n","module.exports = {};\n","module.exports = require(\"core-js/library/fn/object/define-property\");","var anObject = require('./_an-object');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar toPrimitive = require('./_to-primitive');\nvar dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n  anObject(O);\n  P = toPrimitive(P, true);\n  anObject(Attributes);\n  if (IE8_DOM_DEFINE) try {\n    return dP(O, P, Attributes);\n  } catch (e) { /* empty */ }\n  if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n  if ('value' in Attributes) O[P] = Attributes.value;\n  return O;\n};\n","// addapted from the document.currentScript polyfill by Adam Miller\n// MIT license\n// source: https://github.com/amiller-gh/currentScript-polyfill\n\n// added support for Firefox https://bugzilla.mozilla.org/show_bug.cgi?id=1620505\n\n(function (root, factory) {\n  if (typeof define === 'function' && define.amd) {\n    define([], factory);\n  } else if (typeof module === 'object' && module.exports) {\n    module.exports = factory();\n  } else {\n    root.getCurrentScript = factory();\n  }\n}(typeof self !== 'undefined' ? self : this, function () {\n  function getCurrentScript () {\n    var descriptor = Object.getOwnPropertyDescriptor(document, 'currentScript')\n    // for chrome\n    if (!descriptor && 'currentScript' in document && document.currentScript) {\n      return document.currentScript\n    }\n\n    // for other browsers with native support for currentScript\n    if (descriptor && descriptor.get !== getCurrentScript && document.currentScript) {\n      return document.currentScript\n    }\n  \n    // IE 8-10 support script readyState\n    // IE 11+ & Firefox support stack trace\n    try {\n      throw new Error();\n    }\n    catch (err) {\n      // Find the second match for the \"at\" string to get file src url from stack.\n      var ieStackRegExp = /.*at [^(]*\\((.*):(.+):(.+)\\)$/ig,\n        ffStackRegExp = /@([^@]*):(\\d+):(\\d+)\\s*$/ig,\n        stackDetails = ieStackRegExp.exec(err.stack) || ffStackRegExp.exec(err.stack),\n        scriptLocation = (stackDetails && stackDetails[1]) || false,\n        line = (stackDetails && stackDetails[2]) || false,\n        currentLocation = document.location.href.replace(document.location.hash, ''),\n        pageSource,\n        inlineScriptSourceRegExp,\n        inlineScriptSource,\n        scripts = document.getElementsByTagName('script'); // Live NodeList collection\n  \n      if (scriptLocation === currentLocation) {\n        pageSource = document.documentElement.outerHTML;\n        inlineScriptSourceRegExp = new RegExp('(?:[^\\\\n]+?\\\\n){0,' + (line - 2) + '}[^<]*<script>([\\\\d\\\\D]*?)<\\\\/script>[\\\\d\\\\D]*', 'i');\n        inlineScriptSource = pageSource.replace(inlineScriptSourceRegExp, '$1').trim();\n      }\n  \n      for (var i = 0; i < scripts.length; i++) {\n        // If ready state is interactive, return the script tag\n        if (scripts[i].readyState === 'interactive') {\n          return scripts[i];\n        }\n  \n        // If src matches, return the script tag\n        if (scripts[i].src === scriptLocation) {\n          return scripts[i];\n        }\n  \n        // If inline source matches, return the script tag\n        if (\n          scriptLocation === currentLocation &&\n          scripts[i].innerHTML &&\n          scripts[i].innerHTML.trim() === inlineScriptSource\n        ) {\n          return scripts[i];\n        }\n      }\n  \n      // If no match, return null\n      return null;\n    }\n  };\n\n  return getCurrentScript\n}));\n","// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nvar isObject = require('./_is-object');\nvar anObject = require('./_an-object');\nvar check = function (O, proto) {\n  anObject(O);\n  if (!isObject(proto) && proto !== null) throw TypeError(proto + \": can't set as prototype!\");\n};\nmodule.exports = {\n  set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line\n    function (test, buggy, set) {\n      try {\n        set = require('./_ctx')(Function.call, require('./_object-gopd').f(Object.prototype, '__proto__').set, 2);\n        set(test, []);\n        buggy = !(test instanceof Array);\n      } catch (e) { buggy = true; }\n      return function setPrototypeOf(O, proto) {\n        check(O, proto);\n        if (buggy) O.__proto__ = proto;\n        else set(O, proto);\n        return O;\n      };\n    }({}, false) : undefined),\n  check: check\n};\n","module.exports = __WEBPACK_EXTERNAL_MODULE__8bbf__;","// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function () {\n  return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n","// https://github.com/tc39/proposal-object-getownpropertydescriptors\nvar $export = require('./_export');\nvar ownKeys = require('./_own-keys');\nvar toIObject = require('./_to-iobject');\nvar gOPD = require('./_object-gopd');\nvar createProperty = require('./_create-property');\n\n$export($export.S, 'Object', {\n  getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object) {\n    var O = toIObject(object);\n    var getDesc = gOPD.f;\n    var keys = ownKeys(O);\n    var result = {};\n    var i = 0;\n    var key, desc;\n    while (keys.length > i) {\n      desc = getDesc(O, key = keys[i++]);\n      if (desc !== undefined) createProperty(result, key, desc);\n    }\n    return result;\n  }\n});\n","// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)\nvar $keys = require('./_object-keys-internal');\nvar hiddenKeys = require('./_enum-bug-keys').concat('length', 'prototype');\n\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n  return $keys(O, hiddenKeys);\n};\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./GridLayout.vue?vue&type=style&index=0&id=fc5948f6&lang=css\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"ff1827d0\", content, true, {\"sourceMap\":false,\"shadowMode\":false});","// all object keys, includes non-enumerable and symbols\nvar gOPN = require('./_object-gopn');\nvar gOPS = require('./_object-gops');\nvar anObject = require('./_an-object');\nvar Reflect = require('./_global').Reflect;\nmodule.exports = Reflect && Reflect.ownKeys || function ownKeys(it) {\n  var keys = gOPN.f(anObject(it));\n  var getSymbols = gOPS.f;\n  return getSymbols ? keys.concat(getSymbols(it)) : keys;\n};\n","// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function (fn, that, length) {\n  aFunction(fn);\n  if (that === undefined) return fn;\n  switch (length) {\n    case 1: return function (a) {\n      return fn.call(that, a);\n    };\n    case 2: return function (a, b) {\n      return fn.call(that, a, b);\n    };\n    case 3: return function (a, b, c) {\n      return fn.call(that, a, b, c);\n    };\n  }\n  return function (/* ...args */) {\n    return fn.apply(that, arguments);\n  };\n};\n","// 22.1.3.31 Array.prototype[@@unscopables]\nvar UNSCOPABLES = require('./_wks')('unscopables');\nvar ArrayProto = Array.prototype;\nif (ArrayProto[UNSCOPABLES] == undefined) require('./_hide')(ArrayProto, UNSCOPABLES, {});\nmodule.exports = function (key) {\n  ArrayProto[UNSCOPABLES][key] = true;\n};\n","// 7.1.15 ToLength\nvar toInteger = require('./_to-integer');\nvar min = Math.min;\nmodule.exports = function (it) {\n  return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n","// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function () {\n  return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n","'use strict';\n\nvar anObject = require('./_an-object');\nvar toObject = require('./_to-object');\nvar toLength = require('./_to-length');\nvar toInteger = require('./_to-integer');\nvar advanceStringIndex = require('./_advance-string-index');\nvar regExpExec = require('./_regexp-exec-abstract');\nvar max = Math.max;\nvar min = Math.min;\nvar floor = Math.floor;\nvar SUBSTITUTION_SYMBOLS = /\\$([$&`']|\\d\\d?|<[^>]*>)/g;\nvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\$([$&`']|\\d\\d?)/g;\n\nvar maybeToString = function (it) {\n  return it === undefined ? it : String(it);\n};\n\n// @@replace logic\nrequire('./_fix-re-wks')('replace', 2, function (defined, REPLACE, $replace, maybeCallNative) {\n  return [\n    // `String.prototype.replace` method\n    // https://tc39.github.io/ecma262/#sec-string.prototype.replace\n    function replace(searchValue, replaceValue) {\n      var O = defined(this);\n      var fn = searchValue == undefined ? undefined : searchValue[REPLACE];\n      return fn !== undefined\n        ? fn.call(searchValue, O, replaceValue)\n        : $replace.call(String(O), searchValue, replaceValue);\n    },\n    // `RegExp.prototype[@@replace]` method\n    // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@replace\n    function (regexp, replaceValue) {\n      var res = maybeCallNative($replace, regexp, this, replaceValue);\n      if (res.done) return res.value;\n\n      var rx = anObject(regexp);\n      var S = String(this);\n      var functionalReplace = typeof replaceValue === 'function';\n      if (!functionalReplace) replaceValue = String(replaceValue);\n      var global = rx.global;\n      if (global) {\n        var fullUnicode = rx.unicode;\n        rx.lastIndex = 0;\n      }\n      var results = [];\n      while (true) {\n        var result = regExpExec(rx, S);\n        if (result === null) break;\n        results.push(result);\n        if (!global) break;\n        var matchStr = String(result[0]);\n        if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n      }\n      var accumulatedResult = '';\n      var nextSourcePosition = 0;\n      for (var i = 0; i < results.length; i++) {\n        result = results[i];\n        var matched = String(result[0]);\n        var position = max(min(toInteger(result.index), S.length), 0);\n        var captures = [];\n        // NOTE: This is equivalent to\n        //   captures = result.slice(1).map(maybeToString)\n        // but for some reason `nativeSlice.call(result, 1, result.length)` (called in\n        // the slice polyfill when slicing native arrays) \"doesn't work\" in safari 9 and\n        // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.\n        for (var j = 1; j < result.length; j++) captures.push(maybeToString(result[j]));\n        var namedCaptures = result.groups;\n        if (functionalReplace) {\n          var replacerArgs = [matched].concat(captures, position, S);\n          if (namedCaptures !== undefined) replacerArgs.push(namedCaptures);\n          var replacement = String(replaceValue.apply(undefined, replacerArgs));\n        } else {\n          replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);\n        }\n        if (position >= nextSourcePosition) {\n          accumulatedResult += S.slice(nextSourcePosition, position) + replacement;\n          nextSourcePosition = position + matched.length;\n        }\n      }\n      return accumulatedResult + S.slice(nextSourcePosition);\n    }\n  ];\n\n    // https://tc39.github.io/ecma262/#sec-getsubstitution\n  function getSubstitution(matched, str, position, captures, namedCaptures, replacement) {\n    var tailPos = position + matched.length;\n    var m = captures.length;\n    var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;\n    if (namedCaptures !== undefined) {\n      namedCaptures = toObject(namedCaptures);\n      symbols = SUBSTITUTION_SYMBOLS;\n    }\n    return $replace.call(replacement, symbols, function (match, ch) {\n      var capture;\n      switch (ch.charAt(0)) {\n        case '$': return '$';\n        case '&': return matched;\n        case '`': return str.slice(0, position);\n        case \"'\": return str.slice(tailPos);\n        case '<':\n          capture = namedCaptures[ch.slice(1, -1)];\n          break;\n        default: // \\d\\d?\n          var n = +ch;\n          if (n === 0) return match;\n          if (n > m) {\n            var f = floor(n / 10);\n            if (f === 0) return match;\n            if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1);\n            return match;\n          }\n          capture = captures[n - 1];\n      }\n      return capture === undefined ? '' : capture;\n    });\n  }\n});\n","var $export = require('./_export');\nvar defined = require('./_defined');\nvar fails = require('./_fails');\nvar spaces = require('./_string-ws');\nvar space = '[' + spaces + ']';\nvar non = '\\u200b\\u0085';\nvar ltrim = RegExp('^' + space + space + '*');\nvar rtrim = RegExp(space + space + '*$');\n\nvar exporter = function (KEY, exec, ALIAS) {\n  var exp = {};\n  var FORCE = fails(function () {\n    return !!spaces[KEY]() || non[KEY]() != non;\n  });\n  var fn = exp[KEY] = FORCE ? exec(trim) : spaces[KEY];\n  if (ALIAS) exp[ALIAS] = fn;\n  $export($export.P + $export.F * FORCE, 'String', exp);\n};\n\n// 1 -> String#trimLeft\n// 2 -> String#trimRight\n// 3 -> String#trim\nvar trim = exporter.trim = function (string, TYPE) {\n  string = String(defined(string));\n  if (TYPE & 1) string = string.replace(ltrim, '');\n  if (TYPE & 2) string = string.replace(rtrim, '');\n  return string;\n};\n\nmodule.exports = exporter;\n","\"use strict\";\n\n/* global console: false */\n\n/**\n * Reporter that handles the reporting of logs, warnings and errors.\n * @public\n * @param {boolean} quiet Tells if the reporter should be quiet or not.\n */\nmodule.exports = function(quiet) {\n    function noop() {\n        //Does nothing.\n    }\n\n    var reporter = {\n        log: noop,\n        warn: noop,\n        error: noop\n    };\n\n    if(!quiet && window.console) {\n        var attachFunction = function(reporter, name) {\n            //The proxy is needed to be able to call the method with the console context,\n            //since we cannot use bind.\n            reporter[name] = function reporterProxy() {\n                var f = console[name];\n                if (f.apply) { //IE9 does not support console.log.apply :)\n                    f.apply(console, arguments);\n                } else {\n                    for (var i = 0; i < arguments.length; i++) {\n                        f(arguments[i]);\n                    }\n                }\n            };\n        };\n\n        attachFunction(reporter, \"log\");\n        attachFunction(reporter, \"warn\");\n        attachFunction(reporter, \"error\");\n    }\n\n    return reporter;\n};","var $iterators = require('./es6.array.iterator');\nvar getKeys = require('./_object-keys');\nvar redefine = require('./_redefine');\nvar global = require('./_global');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar wks = require('./_wks');\nvar ITERATOR = wks('iterator');\nvar TO_STRING_TAG = wks('toStringTag');\nvar ArrayValues = Iterators.Array;\n\nvar DOMIterables = {\n  CSSRuleList: true, // TODO: Not spec compliant, should be false.\n  CSSStyleDeclaration: false,\n  CSSValueList: false,\n  ClientRectList: false,\n  DOMRectList: false,\n  DOMStringList: false,\n  DOMTokenList: true,\n  DataTransferItemList: false,\n  FileList: false,\n  HTMLAllCollection: false,\n  HTMLCollection: false,\n  HTMLFormElement: false,\n  HTMLSelectElement: false,\n  MediaList: true, // TODO: Not spec compliant, should be false.\n  MimeTypeArray: false,\n  NamedNodeMap: false,\n  NodeList: true,\n  PaintRequestList: false,\n  Plugin: false,\n  PluginArray: false,\n  SVGLengthList: false,\n  SVGNumberList: false,\n  SVGPathSegList: false,\n  SVGPointList: false,\n  SVGStringList: false,\n  SVGTransformList: false,\n  SourceBufferList: false,\n  StyleSheetList: true, // TODO: Not spec compliant, should be false.\n  TextTrackCueList: false,\n  TextTrackList: false,\n  TouchList: false\n};\n\nfor (var collections = getKeys(DOMIterables), i = 0; i < collections.length; i++) {\n  var NAME = collections[i];\n  var explicit = DOMIterables[NAME];\n  var Collection = global[NAME];\n  var proto = Collection && Collection.prototype;\n  var key;\n  if (proto) {\n    if (!proto[ITERATOR]) hide(proto, ITERATOR, ArrayValues);\n    if (!proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n    Iterators[NAME] = ArrayValues;\n    if (explicit) for (key in $iterators) if (!proto[key]) redefine(proto, key, $iterators[key], true);\n  }\n}\n","module.exports = function (bitmap, value) {\n  return {\n    enumerable: !(bitmap & 1),\n    configurable: !(bitmap & 2),\n    writable: !(bitmap & 4),\n    value: value\n  };\n};\n","'use strict';\nvar regexpExec = require('./_regexp-exec');\nrequire('./_export')({\n  target: 'RegExp',\n  proto: true,\n  forced: regexpExec !== /./.exec\n}, {\n  exec: regexpExec\n});\n","\"use strict\";\n\nvar utils = module.exports = {};\n\n/**\n * Loops through the collection and calls the callback for each element. if the callback returns truthy, the loop is broken and returns the same value.\n * @public\n * @param {*} collection The collection to loop through. Needs to have a length property set and have indices set from 0 to length - 1.\n * @param {function} callback The callback to be called for each element. The element will be given as a parameter to the callback. If this callback returns truthy, the loop is broken and the same value is returned.\n * @returns {*} The value that a callback has returned (if truthy). Otherwise nothing.\n */\nutils.forEach = function(collection, callback) {\n    for(var i = 0; i < collection.length; i++) {\n        var result = callback(collection[i]);\n        if(result) {\n            return result;\n        }\n    }\n};\n","// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n  if (it == undefined) throw TypeError(\"Can't call method on  \" + it);\n  return it;\n};\n","\"use strict\";\n\nvar utils = require(\"./utils\");\n\nmodule.exports = function batchProcessorMaker(options) {\n    options             = options || {};\n    var reporter        = options.reporter;\n    var asyncProcess    = utils.getOption(options, \"async\", true);\n    var autoProcess     = utils.getOption(options, \"auto\", true);\n\n    if(autoProcess && !asyncProcess) {\n        reporter && reporter.warn(\"Invalid options combination. auto=true and async=false is invalid. Setting async=true.\");\n        asyncProcess = true;\n    }\n\n    var batch = Batch();\n    var asyncFrameHandler;\n    var isProcessing = false;\n\n    function addFunction(level, fn) {\n        if(!isProcessing && autoProcess && asyncProcess && batch.size() === 0) {\n            // Since this is async, it is guaranteed to be executed after that the fn is added to the batch.\n            // This needs to be done before, since we're checking the size of the batch to be 0.\n            processBatchAsync();\n        }\n\n        batch.add(level, fn);\n    }\n\n    function processBatch() {\n        // Save the current batch, and create a new batch so that incoming functions are not added into the currently processing batch.\n        // Continue processing until the top-level batch is empty (functions may be added to the new batch while processing, and so on).\n        isProcessing = true;\n        while (batch.size()) {\n            var processingBatch = batch;\n            batch = Batch();\n            processingBatch.process();\n        }\n        isProcessing = false;\n    }\n\n    function forceProcessBatch(localAsyncProcess) {\n        if (isProcessing) {\n            return;\n        }\n\n        if(localAsyncProcess === undefined) {\n            localAsyncProcess = asyncProcess;\n        }\n\n        if(asyncFrameHandler) {\n            cancelFrame(asyncFrameHandler);\n            asyncFrameHandler = null;\n        }\n\n        if(localAsyncProcess) {\n            processBatchAsync();\n        } else {\n            processBatch();\n        }\n    }\n\n    function processBatchAsync() {\n        asyncFrameHandler = requestFrame(processBatch);\n    }\n\n    function clearBatch() {\n        batch           = {};\n        batchSize       = 0;\n        topLevel        = 0;\n        bottomLevel     = 0;\n    }\n\n    function cancelFrame(listener) {\n        // var cancel = window.cancelAnimationFrame || window.mozCancelAnimationFrame || window.webkitCancelAnimationFrame || window.clearTimeout;\n        var cancel = clearTimeout;\n        return cancel(listener);\n    }\n\n    function requestFrame(callback) {\n        // var raf = window.requestAnimationFrame || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame || function(fn) { return window.setTimeout(fn, 20); };\n        var raf = function(fn) { return setTimeout(fn, 0); };\n        return raf(callback);\n    }\n\n    return {\n        add: addFunction,\n        force: forceProcessBatch\n    };\n};\n\nfunction Batch() {\n    var batch       = {};\n    var size        = 0;\n    var topLevel    = 0;\n    var bottomLevel = 0;\n\n    function add(level, fn) {\n        if(!fn) {\n            fn = level;\n            level = 0;\n        }\n\n        if(level > topLevel) {\n            topLevel = level;\n        } else if(level < bottomLevel) {\n            bottomLevel = level;\n        }\n\n        if(!batch[level]) {\n            batch[level] = [];\n        }\n\n        batch[level].push(fn);\n        size++;\n    }\n\n    function process() {\n        for(var level = bottomLevel; level <= topLevel; level++) {\n            var fns = batch[level];\n\n            for(var i = 0; i < fns.length; i++) {\n                var fn = fns[i];\n                fn();\n            }\n        }\n    }\n\n    function getSize() {\n        return size;\n    }\n\n    return {\n        add: add,\n        process: process,\n        size: getSize\n    };\n}\n","// false -> Array#indexOf\n// true  -> Array#includes\nvar toIObject = require('./_to-iobject');\nvar toLength = require('./_to-length');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nmodule.exports = function (IS_INCLUDES) {\n  return function ($this, el, fromIndex) {\n    var O = toIObject($this);\n    var length = toLength(O.length);\n    var index = toAbsoluteIndex(fromIndex, length);\n    var value;\n    // Array#includes uses SameValueZero equality algorithm\n    // eslint-disable-next-line no-self-compare\n    if (IS_INCLUDES && el != el) while (length > index) {\n      value = O[index++];\n      // eslint-disable-next-line no-self-compare\n      if (value != value) return true;\n    // Array#indexOf ignores holes, Array#includes - not\n    } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n      if (O[index] === el) return IS_INCLUDES || index || 0;\n    } return !IS_INCLUDES && -1;\n  };\n};\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./GridItem.vue?vue&type=style&index=0&id=46ff2fc8&lang=css\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"40158674\", content, true, {\"sourceMap\":false,\"shadowMode\":false});","'use strict';\nvar global = require('./_global');\nvar has = require('./_has');\nvar cof = require('./_cof');\nvar inheritIfRequired = require('./_inherit-if-required');\nvar toPrimitive = require('./_to-primitive');\nvar fails = require('./_fails');\nvar gOPN = require('./_object-gopn').f;\nvar gOPD = require('./_object-gopd').f;\nvar dP = require('./_object-dp').f;\nvar $trim = require('./_string-trim').trim;\nvar NUMBER = 'Number';\nvar $Number = global[NUMBER];\nvar Base = $Number;\nvar proto = $Number.prototype;\n// Opera ~12 has broken Object#toString\nvar BROKEN_COF = cof(require('./_object-create')(proto)) == NUMBER;\nvar TRIM = 'trim' in String.prototype;\n\n// 7.1.3 ToNumber(argument)\nvar toNumber = function (argument) {\n  var it = toPrimitive(argument, false);\n  if (typeof it == 'string' && it.length > 2) {\n    it = TRIM ? it.trim() : $trim(it, 3);\n    var first = it.charCodeAt(0);\n    var third, radix, maxCode;\n    if (first === 43 || first === 45) {\n      third = it.charCodeAt(2);\n      if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix\n    } else if (first === 48) {\n      switch (it.charCodeAt(1)) {\n        case 66: case 98: radix = 2; maxCode = 49; break; // fast equal /^0b[01]+$/i\n        case 79: case 111: radix = 8; maxCode = 55; break; // fast equal /^0o[0-7]+$/i\n        default: return +it;\n      }\n      for (var digits = it.slice(2), i = 0, l = digits.length, code; i < l; i++) {\n        code = digits.charCodeAt(i);\n        // parseInt parses a string to a first unavailable symbol\n        // but ToNumber should return NaN if a string contains unavailable symbols\n        if (code < 48 || code > maxCode) return NaN;\n      } return parseInt(digits, radix);\n    }\n  } return +it;\n};\n\nif (!$Number(' 0o1') || !$Number('0b1') || $Number('+0x1')) {\n  $Number = function Number(value) {\n    var it = arguments.length < 1 ? 0 : value;\n    var that = this;\n    return that instanceof $Number\n      // check on 1..constructor(foo) case\n      && (BROKEN_COF ? fails(function () { proto.valueOf.call(that); }) : cof(that) != NUMBER)\n        ? inheritIfRequired(new Base(toNumber(it)), that, $Number) : toNumber(it);\n  };\n  for (var keys = require('./_descriptors') ? gOPN(Base) : (\n    // ES3:\n    'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' +\n    // ES6 (in case, if modules with ES6 Number statics required before):\n    'EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,' +\n    'MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger'\n  ).split(','), j = 0, key; keys.length > j; j++) {\n    if (has(Base, key = keys[j]) && !has($Number, key)) {\n      dP($Number, key, gOPD(Base, key));\n    }\n  }\n  $Number.prototype = proto;\n  proto.constructor = $Number;\n  require('./_redefine')(global, NUMBER, $Number);\n}\n","module.exports = !require('./_descriptors') && !require('./_fails')(function () {\n  return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n","/**\n * Resize detection strategy that injects divs to elements in order to detect resize events on scroll events.\n * Heavily inspired by: https://github.com/marcj/css-element-queries/blob/master/src/ResizeSensor.js\n */\n\n\"use strict\";\n\nvar forEach = require(\"../collection-utils\").forEach;\n\nmodule.exports = function(options) {\n    options             = options || {};\n    var reporter        = options.reporter;\n    var batchProcessor  = options.batchProcessor;\n    var getState        = options.stateHandler.getState;\n    var hasState        = options.stateHandler.hasState;\n    var idHandler       = options.idHandler;\n\n    if (!batchProcessor) {\n        throw new Error(\"Missing required dependency: batchProcessor\");\n    }\n\n    if (!reporter) {\n        throw new Error(\"Missing required dependency: reporter.\");\n    }\n\n    //TODO: Could this perhaps be done at installation time?\n    var scrollbarSizes = getScrollbarSizes();\n\n    var styleId = \"erd_scroll_detection_scrollbar_style\";\n    var detectionContainerClass = \"erd_scroll_detection_container\";\n\n    function initDocument(targetDocument) {\n        // Inject the scrollbar styling that prevents them from appearing sometimes in Chrome.\n        // The injected container needs to have a class, so that it may be styled with CSS (pseudo elements).\n        injectScrollStyle(targetDocument, styleId, detectionContainerClass);\n    }\n\n    initDocument(window.document);\n\n    function buildCssTextString(rules) {\n        var seperator = options.important ? \" !important; \" : \"; \";\n\n        return (rules.join(seperator) + seperator).trim();\n    }\n\n    function getScrollbarSizes() {\n        var width = 500;\n        var height = 500;\n\n        var child = document.createElement(\"div\");\n        child.style.cssText = buildCssTextString([\"position: absolute\", \"width: \" + width*2 + \"px\", \"height: \" + height*2 + \"px\", \"visibility: hidden\", \"margin: 0\", \"padding: 0\"]);\n\n        var container = document.createElement(\"div\");\n        container.style.cssText = buildCssTextString([\"position: absolute\", \"width: \" + width + \"px\", \"height: \" + height + \"px\", \"overflow: scroll\", \"visibility: none\", \"top: \" + -width*3 + \"px\", \"left: \" + -height*3 + \"px\", \"visibility: hidden\", \"margin: 0\", \"padding: 0\"]);\n\n        container.appendChild(child);\n\n        document.body.insertBefore(container, document.body.firstChild);\n\n        var widthSize = width - container.clientWidth;\n        var heightSize = height - container.clientHeight;\n\n        document.body.removeChild(container);\n\n        return {\n            width: widthSize,\n            height: heightSize\n        };\n    }\n\n    function injectScrollStyle(targetDocument, styleId, containerClass) {\n        function injectStyle(style, method) {\n            method = method || function (element) {\n                targetDocument.head.appendChild(element);\n            };\n\n            var styleElement = targetDocument.createElement(\"style\");\n            styleElement.innerHTML = style;\n            styleElement.id = styleId;\n            method(styleElement);\n            return styleElement;\n        }\n\n        if (!targetDocument.getElementById(styleId)) {\n            var containerAnimationClass = containerClass + \"_animation\";\n            var containerAnimationActiveClass = containerClass + \"_animation_active\";\n            var style = \"/* Created by the element-resize-detector library. */\\n\";\n            style += \".\" + containerClass + \" > div::-webkit-scrollbar { \" + buildCssTextString([\"display: none\"]) + \" }\\n\\n\";\n            style += \".\" + containerAnimationActiveClass + \" { \" + buildCssTextString([\"-webkit-animation-duration: 0.1s\", \"animation-duration: 0.1s\", \"-webkit-animation-name: \" + containerAnimationClass, \"animation-name: \" + containerAnimationClass]) + \" }\\n\";\n            style += \"@-webkit-keyframes \" + containerAnimationClass +  \" { 0% { opacity: 1; } 50% { opacity: 0; } 100% { opacity: 1; } }\\n\";\n            style += \"@keyframes \" + containerAnimationClass +          \" { 0% { opacity: 1; } 50% { opacity: 0; } 100% { opacity: 1; } }\";\n            injectStyle(style);\n        }\n    }\n\n    function addAnimationClass(element) {\n        element.className += \" \" + detectionContainerClass + \"_animation_active\";\n    }\n\n    function addEvent(el, name, cb) {\n        if (el.addEventListener) {\n            el.addEventListener(name, cb);\n        } else if(el.attachEvent) {\n            el.attachEvent(\"on\" + name, cb);\n        } else {\n            return reporter.error(\"[scroll] Don't know how to add event listeners.\");\n        }\n    }\n\n    function removeEvent(el, name, cb) {\n        if (el.removeEventListener) {\n            el.removeEventListener(name, cb);\n        } else if(el.detachEvent) {\n            el.detachEvent(\"on\" + name, cb);\n        } else {\n            return reporter.error(\"[scroll] Don't know how to remove event listeners.\");\n        }\n    }\n\n    function getExpandElement(element) {\n        return getState(element).container.childNodes[0].childNodes[0].childNodes[0];\n    }\n\n    function getShrinkElement(element) {\n        return getState(element).container.childNodes[0].childNodes[0].childNodes[1];\n    }\n\n    /**\n     * Adds a resize event listener to the element.\n     * @public\n     * @param {element} element The element that should have the listener added.\n     * @param {function} listener The listener callback to be called for each resize event of the element. The element will be given as a parameter to the listener callback.\n     */\n    function addListener(element, listener) {\n        var listeners = getState(element).listeners;\n\n        if (!listeners.push) {\n            throw new Error(\"Cannot add listener to an element that is not detectable.\");\n        }\n\n        getState(element).listeners.push(listener);\n    }\n\n    /**\n     * Makes an element detectable and ready to be listened for resize events. Will call the callback when the element is ready to be listened for resize changes.\n     * @private\n     * @param {object} options Optional options object.\n     * @param {element} element The element to make detectable\n     * @param {function} callback The callback to be called when the element is ready to be listened for resize changes. Will be called with the element as first parameter.\n     */\n    function makeDetectable(options, element, callback) {\n        if (!callback) {\n            callback = element;\n            element = options;\n            options = null;\n        }\n\n        options = options || {};\n\n        function debug() {\n            if (options.debug) {\n                var args = Array.prototype.slice.call(arguments);\n                args.unshift(idHandler.get(element), \"Scroll: \");\n                if (reporter.log.apply) {\n                    reporter.log.apply(null, args);\n                } else {\n                    for (var i = 0; i < args.length; i++) {\n                        reporter.log(args[i]);\n                    }\n                }\n            }\n        }\n\n        function isDetached(element) {\n            function isInDocument(element) {\n                return element === element.ownerDocument.body || element.ownerDocument.body.contains(element);\n            }\n\n            if (!isInDocument(element)) {\n                return true;\n            }\n\n            // FireFox returns null style in hidden iframes. See https://github.com/wnr/element-resize-detector/issues/68 and https://bugzilla.mozilla.org/show_bug.cgi?id=795520\n            if (window.getComputedStyle(element) === null) {\n                return true;\n            }\n\n            return false;\n        }\n\n        function isUnrendered(element) {\n            // Check the absolute positioned container since the top level container is display: inline.\n            var container = getState(element).container.childNodes[0];\n            var style = window.getComputedStyle(container);\n            return !style.width || style.width.indexOf(\"px\") === -1; //Can only compute pixel value when rendered.\n        }\n\n        function getStyle() {\n            // Some browsers only force layouts when actually reading the style properties of the style object, so make sure that they are all read here,\n            // so that the user of the function can be sure that it will perform the layout here, instead of later (important for batching).\n            var elementStyle            = window.getComputedStyle(element);\n            var style                   = {};\n            style.position              = elementStyle.position;\n            style.width                 = element.offsetWidth;\n            style.height                = element.offsetHeight;\n            style.top                   = elementStyle.top;\n            style.right                 = elementStyle.right;\n            style.bottom                = elementStyle.bottom;\n            style.left                  = elementStyle.left;\n            style.widthCSS              = elementStyle.width;\n            style.heightCSS             = elementStyle.height;\n            return style;\n        }\n\n        function storeStartSize() {\n            var style = getStyle();\n            getState(element).startSize = {\n                width: style.width,\n                height: style.height\n            };\n            debug(\"Element start size\", getState(element).startSize);\n        }\n\n        function initListeners() {\n            getState(element).listeners = [];\n        }\n\n        function storeStyle() {\n            debug(\"storeStyle invoked.\");\n            if (!getState(element)) {\n                debug(\"Aborting because element has been uninstalled\");\n                return;\n            }\n\n            var style = getStyle();\n            getState(element).style = style;\n        }\n\n        function storeCurrentSize(element, width, height) {\n            getState(element).lastWidth = width;\n            getState(element).lastHeight  = height;\n        }\n\n        function getExpandChildElement(element) {\n            return getExpandElement(element).childNodes[0];\n        }\n\n        function getWidthOffset() {\n            return 2 * scrollbarSizes.width + 1;\n        }\n\n        function getHeightOffset() {\n            return 2 * scrollbarSizes.height + 1;\n        }\n\n        function getExpandWidth(width) {\n            return width + 10 + getWidthOffset();\n        }\n\n        function getExpandHeight(height) {\n            return height + 10 + getHeightOffset();\n        }\n\n        function getShrinkWidth(width) {\n            return width * 2 + getWidthOffset();\n        }\n\n        function getShrinkHeight(height) {\n            return height * 2 + getHeightOffset();\n        }\n\n        function positionScrollbars(element, width, height) {\n            var expand          = getExpandElement(element);\n            var shrink          = getShrinkElement(element);\n            var expandWidth     = getExpandWidth(width);\n            var expandHeight    = getExpandHeight(height);\n            var shrinkWidth     = getShrinkWidth(width);\n            var shrinkHeight    = getShrinkHeight(height);\n            expand.scrollLeft   = expandWidth;\n            expand.scrollTop    = expandHeight;\n            shrink.scrollLeft   = shrinkWidth;\n            shrink.scrollTop    = shrinkHeight;\n        }\n\n        function injectContainerElement() {\n            var container = getState(element).container;\n\n            if (!container) {\n                container                   = document.createElement(\"div\");\n                container.className         = detectionContainerClass;\n                container.style.cssText     = buildCssTextString([\"visibility: hidden\", \"display: inline\", \"width: 0px\", \"height: 0px\", \"z-index: -1\", \"overflow: hidden\", \"margin: 0\", \"padding: 0\"]);\n                getState(element).container = container;\n                addAnimationClass(container);\n                element.appendChild(container);\n\n                var onAnimationStart = function () {\n                    getState(element).onRendered && getState(element).onRendered();\n                };\n\n                addEvent(container, \"animationstart\", onAnimationStart);\n\n                // Store the event handler here so that they may be removed when uninstall is called.\n                // See uninstall function for an explanation why it is needed.\n                getState(element).onAnimationStart = onAnimationStart;\n            }\n\n            return container;\n        }\n\n        function injectScrollElements() {\n            function alterPositionStyles() {\n                var style = getState(element).style;\n\n                if(style.position === \"static\") {\n                    element.style.setProperty(\"position\", \"relative\",options.important ? \"important\" : \"\");\n\n                    var removeRelativeStyles = function(reporter, element, style, property) {\n                        function getNumericalValue(value) {\n                            return value.replace(/[^-\\d\\.]/g, \"\");\n                        }\n\n                        var value = style[property];\n\n                        if(value !== \"auto\" && getNumericalValue(value) !== \"0\") {\n                            reporter.warn(\"An element that is positioned static has style.\" + property + \"=\" + value + \" which is ignored due to the static positioning. The element will need to be positioned relative, so the style.\" + property + \" will be set to 0. Element: \", element);\n                            element.style[property] = 0;\n                        }\n                    };\n\n                    //Check so that there are no accidental styles that will make the element styled differently now that is is relative.\n                    //If there are any, set them to 0 (this should be okay with the user since the style properties did nothing before [since the element was positioned static] anyway).\n                    removeRelativeStyles(reporter, element, style, \"top\");\n                    removeRelativeStyles(reporter, element, style, \"right\");\n                    removeRelativeStyles(reporter, element, style, \"bottom\");\n                    removeRelativeStyles(reporter, element, style, \"left\");\n                }\n            }\n\n            function getLeftTopBottomRightCssText(left, top, bottom, right) {\n                left = (!left ? \"0\" : (left + \"px\"));\n                top = (!top ? \"0\" : (top + \"px\"));\n                bottom = (!bottom ? \"0\" : (bottom + \"px\"));\n                right = (!right ? \"0\" : (right + \"px\"));\n\n                return [\"left: \" + left, \"top: \" + top, \"right: \" + right, \"bottom: \" + bottom];\n            }\n\n            debug(\"Injecting elements\");\n\n            if (!getState(element)) {\n                debug(\"Aborting because element has been uninstalled\");\n                return;\n            }\n\n            alterPositionStyles();\n\n            var rootContainer = getState(element).container;\n\n            if (!rootContainer) {\n                rootContainer = injectContainerElement();\n            }\n\n            // Due to this WebKit bug https://bugs.webkit.org/show_bug.cgi?id=80808 (currently fixed in Blink, but still present in WebKit browsers such as Safari),\n            // we need to inject two containers, one that is width/height 100% and another that is left/top -1px so that the final container always is 1x1 pixels bigger than\n            // the targeted element.\n            // When the bug is resolved, \"containerContainer\" may be removed.\n\n            // The outer container can occasionally be less wide than the targeted when inside inline elements element in WebKit (see https://bugs.webkit.org/show_bug.cgi?id=152980).\n            // This should be no problem since the inner container either way makes sure the injected scroll elements are at least 1x1 px.\n\n            var scrollbarWidth          = scrollbarSizes.width;\n            var scrollbarHeight         = scrollbarSizes.height;\n            var containerContainerStyle = buildCssTextString([\"position: absolute\", \"flex: none\", \"overflow: hidden\", \"z-index: -1\", \"visibility: hidden\", \"width: 100%\", \"height: 100%\", \"left: 0px\", \"top: 0px\"]);\n            var containerStyle          = buildCssTextString([\"position: absolute\", \"flex: none\", \"overflow: hidden\", \"z-index: -1\", \"visibility: hidden\"].concat(getLeftTopBottomRightCssText(-(1 + scrollbarWidth), -(1 + scrollbarHeight), -scrollbarHeight, -scrollbarWidth)));\n            var expandStyle             = buildCssTextString([\"position: absolute\", \"flex: none\", \"overflow: scroll\", \"z-index: -1\", \"visibility: hidden\", \"width: 100%\", \"height: 100%\"]);\n            var shrinkStyle             = buildCssTextString([\"position: absolute\", \"flex: none\", \"overflow: scroll\", \"z-index: -1\", \"visibility: hidden\", \"width: 100%\", \"height: 100%\"]);\n            var expandChildStyle        = buildCssTextString([\"position: absolute\", \"left: 0\", \"top: 0\"]);\n            var shrinkChildStyle        = buildCssTextString([\"position: absolute\", \"width: 200%\", \"height: 200%\"]);\n\n            var containerContainer      = document.createElement(\"div\");\n            var container               = document.createElement(\"div\");\n            var expand                  = document.createElement(\"div\");\n            var expandChild             = document.createElement(\"div\");\n            var shrink                  = document.createElement(\"div\");\n            var shrinkChild             = document.createElement(\"div\");\n\n            // Some browsers choke on the resize system being rtl, so force it to ltr. https://github.com/wnr/element-resize-detector/issues/56\n            // However, dir should not be set on the top level container as it alters the dimensions of the target element in some browsers.\n            containerContainer.dir              = \"ltr\";\n\n            containerContainer.style.cssText    = containerContainerStyle;\n            containerContainer.className        = detectionContainerClass;\n            container.className                 = detectionContainerClass;\n            container.style.cssText             = containerStyle;\n            expand.style.cssText                = expandStyle;\n            expandChild.style.cssText           = expandChildStyle;\n            shrink.style.cssText                = shrinkStyle;\n            shrinkChild.style.cssText           = shrinkChildStyle;\n\n            expand.appendChild(expandChild);\n            shrink.appendChild(shrinkChild);\n            container.appendChild(expand);\n            container.appendChild(shrink);\n            containerContainer.appendChild(container);\n            rootContainer.appendChild(containerContainer);\n\n            function onExpandScroll() {\n                getState(element).onExpand && getState(element).onExpand();\n            }\n\n            function onShrinkScroll() {\n                getState(element).onShrink && getState(element).onShrink();\n            }\n\n            addEvent(expand, \"scroll\", onExpandScroll);\n            addEvent(shrink, \"scroll\", onShrinkScroll);\n\n            // Store the event handlers here so that they may be removed when uninstall is called.\n            // See uninstall function for an explanation why it is needed.\n            getState(element).onExpandScroll = onExpandScroll;\n            getState(element).onShrinkScroll = onShrinkScroll;\n        }\n\n        function registerListenersAndPositionElements() {\n            function updateChildSizes(element, width, height) {\n                var expandChild             = getExpandChildElement(element);\n                var expandWidth             = getExpandWidth(width);\n                var expandHeight            = getExpandHeight(height);\n                expandChild.style.setProperty(\"width\", expandWidth + \"px\", options.important ? \"important\" : \"\");\n                expandChild.style.setProperty(\"height\", expandHeight + \"px\", options.important ? \"important\" : \"\");\n            }\n\n            function updateDetectorElements(done) {\n                var width           = element.offsetWidth;\n                var height          = element.offsetHeight;\n\n                // Check whether the size has actually changed since last time the algorithm ran. If not, some steps may be skipped.\n                var sizeChanged = width !== getState(element).lastWidth || height !== getState(element).lastHeight;\n\n                debug(\"Storing current size\", width, height);\n\n                // Store the size of the element sync here, so that multiple scroll events may be ignored in the event listeners.\n                // Otherwise the if-check in handleScroll is useless.\n                storeCurrentSize(element, width, height);\n\n                // Since we delay the processing of the batch, there is a risk that uninstall has been called before the batch gets to execute.\n                // Since there is no way to cancel the fn executions, we need to add an uninstall guard to all fns of the batch.\n\n                batchProcessor.add(0, function performUpdateChildSizes() {\n                    if (!sizeChanged) {\n                        return;\n                    }\n\n                    if (!getState(element)) {\n                        debug(\"Aborting because element has been uninstalled\");\n                        return;\n                    }\n\n                    if (!areElementsInjected()) {\n                        debug(\"Aborting because element container has not been initialized\");\n                        return;\n                    }\n\n                    if (options.debug) {\n                        var w = element.offsetWidth;\n                        var h = element.offsetHeight;\n\n                        if (w !== width || h !== height) {\n                            reporter.warn(idHandler.get(element), \"Scroll: Size changed before updating detector elements.\");\n                        }\n                    }\n\n                    updateChildSizes(element, width, height);\n                });\n\n                batchProcessor.add(1, function updateScrollbars() {\n                    // This function needs to be invoked event though the size is unchanged. The element could have been resized very quickly and then\n                    // been restored to the original size, which will have changed the scrollbar positions.\n\n                    if (!getState(element)) {\n                        debug(\"Aborting because element has been uninstalled\");\n                        return;\n                    }\n\n                    if (!areElementsInjected()) {\n                        debug(\"Aborting because element container has not been initialized\");\n                        return;\n                    }\n\n                    positionScrollbars(element, width, height);\n                });\n\n                if (sizeChanged && done) {\n                    batchProcessor.add(2, function () {\n                        if (!getState(element)) {\n                            debug(\"Aborting because element has been uninstalled\");\n                            return;\n                        }\n\n                        if (!areElementsInjected()) {\n                          debug(\"Aborting because element container has not been initialized\");\n                          return;\n                        }\n\n                        done();\n                    });\n                }\n            }\n\n            function areElementsInjected() {\n                return !!getState(element).container;\n            }\n\n            function notifyListenersIfNeeded() {\n                function isFirstNotify() {\n                    return getState(element).lastNotifiedWidth === undefined;\n                }\n\n                debug(\"notifyListenersIfNeeded invoked\");\n\n                var state = getState(element);\n\n                // Don't notify if the current size is the start size, and this is the first notification.\n                if (isFirstNotify() && state.lastWidth === state.startSize.width && state.lastHeight === state.startSize.height) {\n                    return debug(\"Not notifying: Size is the same as the start size, and there has been no notification yet.\");\n                }\n\n                // Don't notify if the size already has been notified.\n                if (state.lastWidth === state.lastNotifiedWidth && state.lastHeight === state.lastNotifiedHeight) {\n                    return debug(\"Not notifying: Size already notified\");\n                }\n\n\n                debug(\"Current size not notified, notifying...\");\n                state.lastNotifiedWidth = state.lastWidth;\n                state.lastNotifiedHeight = state.lastHeight;\n                forEach(getState(element).listeners, function (listener) {\n                    listener(element);\n                });\n            }\n\n            function handleRender() {\n                debug(\"startanimation triggered.\");\n\n                if (isUnrendered(element)) {\n                    debug(\"Ignoring since element is still unrendered...\");\n                    return;\n                }\n\n                debug(\"Element rendered.\");\n                var expand = getExpandElement(element);\n                var shrink = getShrinkElement(element);\n                if (expand.scrollLeft === 0 || expand.scrollTop === 0 || shrink.scrollLeft === 0 || shrink.scrollTop === 0) {\n                    debug(\"Scrollbars out of sync. Updating detector elements...\");\n                    updateDetectorElements(notifyListenersIfNeeded);\n                }\n            }\n\n            function handleScroll() {\n                debug(\"Scroll detected.\");\n\n                if (isUnrendered(element)) {\n                    // Element is still unrendered. Skip this scroll event.\n                    debug(\"Scroll event fired while unrendered. Ignoring...\");\n                    return;\n                }\n\n                updateDetectorElements(notifyListenersIfNeeded);\n            }\n\n            debug(\"registerListenersAndPositionElements invoked.\");\n\n            if (!getState(element)) {\n                debug(\"Aborting because element has been uninstalled\");\n                return;\n            }\n\n            getState(element).onRendered = handleRender;\n            getState(element).onExpand = handleScroll;\n            getState(element).onShrink = handleScroll;\n\n            var style = getState(element).style;\n            updateChildSizes(element, style.width, style.height);\n        }\n\n        function finalizeDomMutation() {\n            debug(\"finalizeDomMutation invoked.\");\n\n            if (!getState(element)) {\n                debug(\"Aborting because element has been uninstalled\");\n                return;\n            }\n\n            var style = getState(element).style;\n            storeCurrentSize(element, style.width, style.height);\n            positionScrollbars(element, style.width, style.height);\n        }\n\n        function ready() {\n            callback(element);\n        }\n\n        function install() {\n            debug(\"Installing...\");\n            initListeners();\n            storeStartSize();\n\n            batchProcessor.add(0, storeStyle);\n            batchProcessor.add(1, injectScrollElements);\n            batchProcessor.add(2, registerListenersAndPositionElements);\n            batchProcessor.add(3, finalizeDomMutation);\n            batchProcessor.add(4, ready);\n        }\n\n        debug(\"Making detectable...\");\n\n        if (isDetached(element)) {\n            debug(\"Element is detached\");\n\n            injectContainerElement();\n\n            debug(\"Waiting until element is attached...\");\n\n            getState(element).onRendered = function () {\n                debug(\"Element is now attached\");\n                install();\n            };\n        } else {\n            install();\n        }\n    }\n\n    function uninstall(element) {\n        var state = getState(element);\n\n        if (!state) {\n            // Uninstall has been called on a non-erd element.\n            return;\n        }\n\n        // Uninstall may have been called in the following scenarios:\n        // (1) Right between the sync code and async batch (here state.busy = true, but nothing have been registered or injected).\n        // (2) In the ready callback of the last level of the batch by another element (here, state.busy = true, but all the stuff has been injected).\n        // (3) After the installation process (here, state.busy = false and all the stuff has been injected).\n        // So to be on the safe side, let's check for each thing before removing.\n\n        // We need to remove the event listeners, because otherwise the event might fire on an uninstall element which results in an error when trying to get the state of the element.\n        state.onExpandScroll && removeEvent(getExpandElement(element), \"scroll\", state.onExpandScroll);\n        state.onShrinkScroll && removeEvent(getShrinkElement(element), \"scroll\", state.onShrinkScroll);\n        state.onAnimationStart && removeEvent(state.container, \"animationstart\", state.onAnimationStart);\n\n        state.container && element.removeChild(state.container);\n    }\n\n    return {\n        makeDetectable: makeDetectable,\n        addListener: addListener,\n        uninstall: uninstall,\n        initDocument: initDocument\n    };\n};\n","var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n  return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n","'use strict';\nvar addToUnscopables = require('./_add-to-unscopables');\nvar step = require('./_iter-step');\nvar Iterators = require('./_iterators');\nvar toIObject = require('./_to-iobject');\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = require('./_iter-define')(Array, 'Array', function (iterated, kind) {\n  this._t = toIObject(iterated); // target\n  this._i = 0;                   // next index\n  this._k = kind;                // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n  var O = this._t;\n  var kind = this._k;\n  var index = this._i++;\n  if (!O || index >= O.length) {\n    this._t = undefined;\n    return step(1);\n  }\n  if (kind == 'keys') return step(0, index);\n  if (kind == 'values') return step(0, O[index]);\n  return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n","var isObject = require('./_is-object');\nmodule.exports = function (it) {\n  if (!isObject(it)) throw TypeError(it + ' is not an object!');\n  return it;\n};\n","var has = require('./_has');\nvar toIObject = require('./_to-iobject');\nvar arrayIndexOf = require('./_array-includes')(false);\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\n\nmodule.exports = function (object, names) {\n  var O = toIObject(object);\n  var i = 0;\n  var result = [];\n  var key;\n  for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n  // Don't enum bug & hidden keys\n  while (names.length > i) if (has(O, key = names[i++])) {\n    ~arrayIndexOf(result, key) || result.push(key);\n  }\n  return result;\n};\n","module.exports = function (it) {\n  return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","module.exports = function (done, value) {\n  return { value: value, done: !!done };\n};\n","\"use strict\";\n\nvar prop = \"_erd\";\n\nfunction initState(element) {\n    element[prop] = {};\n    return getState(element);\n}\n\nfunction getState(element) {\n    return element[prop];\n}\n\nfunction cleanState(element) {\n    delete element[prop];\n}\n\nmodule.exports = {\n    initState: initState,\n    getState: getState,\n    cleanState: cleanState\n};\n","// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function (fn, that, length) {\n  aFunction(fn);\n  if (that === undefined) return fn;\n  switch (length) {\n    case 1: return function (a) {\n      return fn.call(that, a);\n    };\n    case 2: return function (a, b) {\n      return fn.call(that, a, b);\n    };\n    case 3: return function (a, b, c) {\n      return fn.call(that, a, b, c);\n    };\n  }\n  return function (/* ...args */) {\n    return fn.apply(that, arguments);\n  };\n};\n","module.exports = function (it) {\n  if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n  return it;\n};\n","var anObject = require('./_an-object');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar toPrimitive = require('./_to-primitive');\nvar dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n  anObject(O);\n  P = toPrimitive(P, true);\n  anObject(Attributes);\n  if (IE8_DOM_DEFINE) try {\n    return dP(O, P, Attributes);\n  } catch (e) { /* empty */ }\n  if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n  if ('value' in Attributes) O[P] = Attributes.value;\n  return O;\n};\n","// IE 8- don't enum bug keys\nmodule.exports = (\n  'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n","var isObject = require('./_is-object');\nmodule.exports = function (it) {\n  if (!isObject(it)) throw TypeError(it + ' is not an object!');\n  return it;\n};\n","// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n  ? window : typeof self != 'undefined' && self.Math == Math ? self\n  // eslint-disable-next-line no-new-func\n  : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n","\"use strict\";\n\nvar forEach                 = require(\"./collection-utils\").forEach;\nvar elementUtilsMaker       = require(\"./element-utils\");\nvar listenerHandlerMaker    = require(\"./listener-handler\");\nvar idGeneratorMaker        = require(\"./id-generator\");\nvar idHandlerMaker          = require(\"./id-handler\");\nvar reporterMaker           = require(\"./reporter\");\nvar browserDetector         = require(\"./browser-detector\");\nvar batchProcessorMaker     = require(\"batch-processor\");\nvar stateHandler            = require(\"./state-handler\");\n\n//Detection strategies.\nvar objectStrategyMaker     = require(\"./detection-strategy/object.js\");\nvar scrollStrategyMaker     = require(\"./detection-strategy/scroll.js\");\n\nfunction isCollection(obj) {\n    return Array.isArray(obj) || obj.length !== undefined;\n}\n\nfunction toArray(collection) {\n    if (!Array.isArray(collection)) {\n        var array = [];\n        forEach(collection, function (obj) {\n            array.push(obj);\n        });\n        return array;\n    } else {\n        return collection;\n    }\n}\n\nfunction isElement(obj) {\n    return obj && obj.nodeType === 1;\n}\n\n/**\n * @typedef idHandler\n * @type {object}\n * @property {function} get Gets the resize detector id of the element.\n * @property {function} set Generate and sets the resize detector id of the element.\n */\n\n/**\n * @typedef Options\n * @type {object}\n * @property {boolean} callOnAdd    Determines if listeners should be called when they are getting added.\n                                    Default is true. If true, the listener is guaranteed to be called when it has been added.\n                                    If false, the listener will not be guarenteed to be called when it has been added (does not prevent it from being called).\n * @property {idHandler} idHandler  A custom id handler that is responsible for generating, setting and retrieving id's for elements.\n                                    If not provided, a default id handler will be used.\n * @property {reporter} reporter    A custom reporter that handles reporting logs, warnings and errors.\n                                    If not provided, a default id handler will be used.\n                                    If set to false, then nothing will be reported.\n * @property {boolean} debug        If set to true, the the system will report debug messages as default for the listenTo method.\n */\n\n/**\n * Creates an element resize detector instance.\n * @public\n * @param {Options?} options Optional global options object that will decide how this instance will work.\n */\nmodule.exports = function(options) {\n    options = options || {};\n\n    //idHandler is currently not an option to the listenTo function, so it should not be added to globalOptions.\n    var idHandler;\n\n    if (options.idHandler) {\n        // To maintain compatability with idHandler.get(element, readonly), make sure to wrap the given idHandler\n        // so that readonly flag always is true when it's used here. This may be removed next major version bump.\n        idHandler = {\n            get: function (element) { return options.idHandler.get(element, true); },\n            set: options.idHandler.set\n        };\n    } else {\n        var idGenerator = idGeneratorMaker();\n        var defaultIdHandler = idHandlerMaker({\n            idGenerator: idGenerator,\n            stateHandler: stateHandler\n        });\n        idHandler = defaultIdHandler;\n    }\n\n    //reporter is currently not an option to the listenTo function, so it should not be added to globalOptions.\n    var reporter = options.reporter;\n\n    if(!reporter) {\n        //If options.reporter is false, then the reporter should be quiet.\n        var quiet = reporter === false;\n        reporter = reporterMaker(quiet);\n    }\n\n    //batchProcessor is currently not an option to the listenTo function, so it should not be added to globalOptions.\n    var batchProcessor = getOption(options, \"batchProcessor\", batchProcessorMaker({ reporter: reporter }));\n\n    //Options to be used as default for the listenTo function.\n    var globalOptions = {};\n    globalOptions.callOnAdd     = !!getOption(options, \"callOnAdd\", true);\n    globalOptions.debug         = !!getOption(options, \"debug\", false);\n\n    var eventListenerHandler    = listenerHandlerMaker(idHandler);\n    var elementUtils            = elementUtilsMaker({\n        stateHandler: stateHandler\n    });\n\n    //The detection strategy to be used.\n    var detectionStrategy;\n    var desiredStrategy = getOption(options, \"strategy\", \"object\");\n    var importantCssRules = getOption(options, \"important\", false);\n    var strategyOptions = {\n        reporter: reporter,\n        batchProcessor: batchProcessor,\n        stateHandler: stateHandler,\n        idHandler: idHandler,\n        important: importantCssRules\n    };\n\n    if(desiredStrategy === \"scroll\") {\n        if (browserDetector.isLegacyOpera()) {\n            reporter.warn(\"Scroll strategy is not supported on legacy Opera. Changing to object strategy.\");\n            desiredStrategy = \"object\";\n        } else if (browserDetector.isIE(9)) {\n            reporter.warn(\"Scroll strategy is not supported on IE9. Changing to object strategy.\");\n            desiredStrategy = \"object\";\n        }\n    }\n\n    if(desiredStrategy === \"scroll\") {\n        detectionStrategy = scrollStrategyMaker(strategyOptions);\n    } else if(desiredStrategy === \"object\") {\n        detectionStrategy = objectStrategyMaker(strategyOptions);\n    } else {\n        throw new Error(\"Invalid strategy name: \" + desiredStrategy);\n    }\n\n    //Calls can be made to listenTo with elements that are still being installed.\n    //Also, same elements can occur in the elements list in the listenTo function.\n    //With this map, the ready callbacks can be synchronized between the calls\n    //so that the ready callback can always be called when an element is ready - even if\n    //it wasn't installed from the function itself.\n    var onReadyCallbacks = {};\n\n    /**\n     * Makes the given elements resize-detectable and starts listening to resize events on the elements. Calls the event callback for each event for each element.\n     * @public\n     * @param {Options?} options Optional options object. These options will override the global options. Some options may not be overriden, such as idHandler.\n     * @param {element[]|element} elements The given array of elements to detect resize events of. Single element is also valid.\n     * @param {function} listener The callback to be executed for each resize event for each element.\n     */\n    function listenTo(options, elements, listener) {\n        function onResizeCallback(element) {\n            var listeners = eventListenerHandler.get(element);\n            forEach(listeners, function callListenerProxy(listener) {\n                listener(element);\n            });\n        }\n\n        function addListener(callOnAdd, element, listener) {\n            eventListenerHandler.add(element, listener);\n\n            if(callOnAdd) {\n                listener(element);\n            }\n        }\n\n        //Options object may be omitted.\n        if(!listener) {\n            listener = elements;\n            elements = options;\n            options = {};\n        }\n\n        if(!elements) {\n            throw new Error(\"At least one element required.\");\n        }\n\n        if(!listener) {\n            throw new Error(\"Listener required.\");\n        }\n\n        if (isElement(elements)) {\n            // A single element has been passed in.\n            elements = [elements];\n        } else if (isCollection(elements)) {\n            // Convert collection to array for plugins.\n            // TODO: May want to check so that all the elements in the collection are valid elements.\n            elements = toArray(elements);\n        } else {\n            return reporter.error(\"Invalid arguments. Must be a DOM element or a collection of DOM elements.\");\n        }\n\n        var elementsReady = 0;\n\n        var callOnAdd = getOption(options, \"callOnAdd\", globalOptions.callOnAdd);\n        var onReadyCallback = getOption(options, \"onReady\", function noop() {});\n        var debug = getOption(options, \"debug\", globalOptions.debug);\n\n        forEach(elements, function attachListenerToElement(element) {\n            if (!stateHandler.getState(element)) {\n                stateHandler.initState(element);\n                idHandler.set(element);\n            }\n\n            var id = idHandler.get(element);\n\n            debug && reporter.log(\"Attaching listener to element\", id, element);\n\n            if(!elementUtils.isDetectable(element)) {\n                debug && reporter.log(id, \"Not detectable.\");\n                if(elementUtils.isBusy(element)) {\n                    debug && reporter.log(id, \"System busy making it detectable\");\n\n                    //The element is being prepared to be detectable. Do not make it detectable.\n                    //Just add the listener, because the element will soon be detectable.\n                    addListener(callOnAdd, element, listener);\n                    onReadyCallbacks[id] = onReadyCallbacks[id] || [];\n                    onReadyCallbacks[id].push(function onReady() {\n                        elementsReady++;\n\n                        if(elementsReady === elements.length) {\n                            onReadyCallback();\n                        }\n                    });\n                    return;\n                }\n\n                debug && reporter.log(id, \"Making detectable...\");\n                //The element is not prepared to be detectable, so do prepare it and add a listener to it.\n                elementUtils.markBusy(element, true);\n                return detectionStrategy.makeDetectable({ debug: debug, important: importantCssRules }, element, function onElementDetectable(element) {\n                    debug && reporter.log(id, \"onElementDetectable\");\n\n                    if (stateHandler.getState(element)) {\n                        elementUtils.markAsDetectable(element);\n                        elementUtils.markBusy(element, false);\n                        detectionStrategy.addListener(element, onResizeCallback);\n                        addListener(callOnAdd, element, listener);\n\n                        // Since the element size might have changed since the call to \"listenTo\", we need to check for this change,\n                        // so that a resize event may be emitted.\n                        // Having the startSize object is optional (since it does not make sense in some cases such as unrendered elements), so check for its existance before.\n                        // Also, check the state existance before since the element may have been uninstalled in the installation process.\n                        var state = stateHandler.getState(element);\n                        if (state && state.startSize) {\n                            var width = element.offsetWidth;\n                            var height = element.offsetHeight;\n                            if (state.startSize.width !== width || state.startSize.height !== height) {\n                                onResizeCallback(element);\n                            }\n                        }\n\n                        if(onReadyCallbacks[id]) {\n                            forEach(onReadyCallbacks[id], function(callback) {\n                                callback();\n                            });\n                        }\n                    } else {\n                        // The element has been unisntalled before being detectable.\n                        debug && reporter.log(id, \"Element uninstalled before being detectable.\");\n                    }\n\n                    delete onReadyCallbacks[id];\n\n                    elementsReady++;\n                    if(elementsReady === elements.length) {\n                        onReadyCallback();\n                    }\n                });\n            }\n\n            debug && reporter.log(id, \"Already detecable, adding listener.\");\n\n            //The element has been prepared to be detectable and is ready to be listened to.\n            addListener(callOnAdd, element, listener);\n            elementsReady++;\n        });\n\n        if(elementsReady === elements.length) {\n            onReadyCallback();\n        }\n    }\n\n    function uninstall(elements) {\n        if(!elements) {\n            return reporter.error(\"At least one element is required.\");\n        }\n\n        if (isElement(elements)) {\n            // A single element has been passed in.\n            elements = [elements];\n        } else if (isCollection(elements)) {\n            // Convert collection to array for plugins.\n            // TODO: May want to check so that all the elements in the collection are valid elements.\n            elements = toArray(elements);\n        } else {\n            return reporter.error(\"Invalid arguments. Must be a DOM element or a collection of DOM elements.\");\n        }\n\n        forEach(elements, function (element) {\n            eventListenerHandler.removeAllListeners(element);\n            detectionStrategy.uninstall(element);\n            stateHandler.cleanState(element);\n        });\n    }\n\n    function initDocument(targetDocument) {\n        detectionStrategy.initDocument && detectionStrategy.initDocument(targetDocument);\n    }\n\n    return {\n        listenTo: listenTo,\n        removeListener: eventListenerHandler.removeListener,\n        removeAllListeners: eventListenerHandler.removeAllListeners,\n        uninstall: uninstall,\n        initDocument: initDocument\n    };\n};\n\nfunction getOption(options, name, defaultValue) {\n    var value = options[name];\n\n    if((value === undefined || value === null) && defaultValue !== undefined) {\n        return defaultValue;\n    }\n\n    return value;\n}\n","'use strict';\nvar $defineProperty = require('./_object-dp');\nvar createDesc = require('./_property-desc');\n\nmodule.exports = function (object, index, value) {\n  if (index in object) $defineProperty.f(object, index, createDesc(0, value));\n  else object[index] = value;\n};\n","module.exports = function (it) {\n  return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","module.exports = require('./_shared')('native-function-to-string', Function.toString);\n","var document = require('./_global').document;\nmodule.exports = document && document.documentElement;\n","// This file is imported into lib/wc client bundles.\n\nif (typeof window !== 'undefined') {\n  var currentScript = window.document.currentScript\n  if (process.env.NEED_CURRENTSCRIPT_POLYFILL) {\n    var getCurrentScript = require('@soda/get-current-script')\n    currentScript = getCurrentScript()\n\n    // for backward compatibility, because previously we directly included the polyfill\n    if (!('currentScript' in document)) {\n      Object.defineProperty(document, 'currentScript', { get: getCurrentScript })\n    }\n  }\n\n  var src = currentScript && currentScript.src.match(/(.+\\/)[^/]+\\.js(\\?.*)?$/)\n  if (src) {\n    __webpack_public_path__ = src[1] // eslint-disable-line\n  }\n}\n\n// Indicate to webpack that this file can be concatenated\nexport default null\n","<template>\n    <div ref=\"item\"\n         class=\"vue-grid-item\"\n         :class=\"classObj\"\n         :style=\"style\"\n    >\n        <slot></slot>\n        <span v-if=\"resizableAndNotStatic\" ref=\"handle\" :class=\"resizableHandleClass\"></span>\n        <!--<span v-if=\"draggable\" ref=\"dragHandle\" class=\"vue-draggable-handle\"></span>-->\n    </div>\n</template>\n<style>\n    .vue-grid-item {\n        touch-action: none;\n        transition: all 200ms ease;\n        transition-property: left, top, right;\n        /* add right for rtl */\n    }\n\n    .vue-grid-item.no-touch {\n        -ms-touch-action: none;\n        touch-action: none;\n    }\n\n    .vue-grid-item.cssTransforms {\n        transition-property: transform;\n        left: 0;\n        right: auto;\n    }\n\n    .vue-grid-item.cssTransforms.render-rtl {\n        left: auto;\n        right: 0;\n    }\n\n    .vue-grid-item.resizing {\n        opacity: 0.6;\n        z-index: 3;\n    }\n\n    .vue-grid-item.vue-draggable-dragging {\n        transition:none;\n        z-index: 3;\n    }\n\n    .vue-grid-item.vue-grid-placeholder {\n        background: red;\n        opacity: 0.2;\n        transition-duration: 100ms;\n        z-index: 2;\n        -webkit-user-select: none;\n        -moz-user-select: none;\n        -ms-user-select: none;\n        -o-user-select: none;\n        user-select: none;\n    }\n\n    .vue-grid-item > .vue-resizable-handle {\n        position: absolute;\n        width: 20px;\n        height: 20px;\n        bottom: 0;\n        right: 0;\n        background: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/Pg08IS0tIEdlbmVyYXRvcjogQWRvYmUgRmlyZXdvcmtzIENTNiwgRXhwb3J0IFNWRyBFeHRlbnNpb24gYnkgQWFyb24gQmVhbGwgKGh0dHA6Ly9maXJld29ya3MuYWJlYWxsLmNvbSkgLiBWZXJzaW9uOiAwLjYuMSAgLS0+DTwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+DTxzdmcgaWQ9IlVudGl0bGVkLVBhZ2UlMjAxIiB2aWV3Qm94PSIwIDAgNiA2IiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjojZmZmZmZmMDAiIHZlcnNpb249IjEuMSINCXhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhtbDpzcGFjZT0icHJlc2VydmUiDQl4PSIwcHgiIHk9IjBweCIgd2lkdGg9IjZweCIgaGVpZ2h0PSI2cHgiDT4NCTxnIG9wYWNpdHk9IjAuMzAyIj4NCQk8cGF0aCBkPSJNIDYgNiBMIDAgNiBMIDAgNC4yIEwgNCA0LjIgTCA0LjIgNC4yIEwgNC4yIDAgTCA2IDAgTCA2IDYgTCA2IDYgWiIgZmlsbD0iIzAwMDAwMCIvPg0JPC9nPg08L3N2Zz4=');\n        background-position: bottom right;\n        padding: 0 3px 3px 0;\n        background-repeat: no-repeat;\n        background-origin: content-box;\n        box-sizing: border-box;\n        cursor: se-resize;\n    }\n\n    .vue-grid-item > .vue-rtl-resizable-handle {\n        bottom: 0;\n        left: 0;\n        background: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTAuMDAwMDAwMDAwMDAwMDAyIiBoZWlnaHQ9IjEwLjAwMDAwMDAwMDAwMDAwMiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KIDwhLS0gQ3JlYXRlZCB3aXRoIE1ldGhvZCBEcmF3IC0gaHR0cDovL2dpdGh1Yi5jb20vZHVvcGl4ZWwvTWV0aG9kLURyYXcvIC0tPgogPGc+CiAgPHRpdGxlPmJhY2tncm91bmQ8L3RpdGxlPgogIDxyZWN0IGZpbGw9Im5vbmUiIGlkPSJjYW52YXNfYmFja2dyb3VuZCIgaGVpZ2h0PSIxMiIgd2lkdGg9IjEyIiB5PSItMSIgeD0iLTEiLz4KICA8ZyBkaXNwbGF5PSJub25lIiBvdmVyZmxvdz0idmlzaWJsZSIgeT0iMCIgeD0iMCIgaGVpZ2h0PSIxMDAlIiB3aWR0aD0iMTAwJSIgaWQ9ImNhbnZhc0dyaWQiPgogICA8cmVjdCBmaWxsPSJ1cmwoI2dyaWRwYXR0ZXJuKSIgc3Ryb2tlLXdpZHRoPSIwIiB5PSIwIiB4PSIwIiBoZWlnaHQ9IjEwMCUiIHdpZHRoPSIxMDAlIi8+CiAgPC9nPgogPC9nPgogPGc+CiAgPHRpdGxlPkxheWVyIDE8L3RpdGxlPgogIDxsaW5lIGNhbnZhcz0iI2ZmZmZmZiIgY2FudmFzLW9wYWNpdHk9IjEiIHN0cm9rZS1saW5lY2FwPSJ1bmRlZmluZWQiIHN0cm9rZS1saW5lam9pbj0idW5kZWZpbmVkIiBpZD0ic3ZnXzEiIHkyPSItNzAuMTc4NDA3IiB4Mj0iMTI0LjQ2NDE3NSIgeTE9Ii0zOC4zOTI3MzciIHgxPSIxNDQuODIxMjg5IiBzdHJva2Utd2lkdGg9IjEuNSIgc3Ryb2tlPSIjMDAwIiBmaWxsPSJub25lIi8+CiAgPGxpbmUgc3Ryb2tlPSIjNjY2NjY2IiBzdHJva2UtbGluZWNhcD0idW5kZWZpbmVkIiBzdHJva2UtbGluZWpvaW49InVuZGVmaW5lZCIgaWQ9InN2Z181IiB5Mj0iOS4xMDY5NTciIHgyPSIwLjk0NzI0NyIgeTE9Ii0wLjAxODEyOCIgeDE9IjAuOTQ3MjQ3IiBzdHJva2Utd2lkdGg9IjIiIGZpbGw9Im5vbmUiLz4KICA8bGluZSBzdHJva2UtbGluZWNhcD0idW5kZWZpbmVkIiBzdHJva2UtbGluZWpvaW49InVuZGVmaW5lZCIgaWQ9InN2Z183IiB5Mj0iOSIgeDI9IjEwLjA3MzUyOSIgeTE9IjkiIHgxPSItMC42NTU2NCIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2U9IiM2NjY2NjYiIGZpbGw9Im5vbmUiLz4KIDwvZz4KPC9zdmc+);\n        background-position: bottom left;\n        padding-left: 3px;\n        background-repeat: no-repeat;\n        background-origin: content-box;\n        cursor: sw-resize;\n        right: auto;\n    }\n\n    .vue-grid-item.disable-userselect {\n        user-select: none;\n    }\n</style>\n<script>\n    import {setTopLeft, setTopRight, setTransformRtl, setTransform} from '@/helpers/utils';\n    import {getControlPosition, createCoreData} from '@/helpers/draggableUtils';\n    import {getColsFromBreakpoint} from '@/helpers/responsiveUtils';\n    import {getDocumentDir} from \"@/helpers/DOM\";\n    //    var eventBus = require('./eventBus');\n\n    import '@interactjs/auto-start'\n    import '@interactjs/actions/drag'\n    import '@interactjs/actions/resize'\n    import '@interactjs/modifiers'\n    import '@interactjs/dev-tools'\n    import interact from '@interactjs/interact'\n\n    export default {\n        name: \"GridItem\",\n        props: {\n            /*cols: {\n             type: Number,\n             required: true\n             },*/\n            /*containerWidth: {\n             type: Number,\n             required: true\n\n             },\n             rowHeight: {\n             type: Number,\n             required: true\n             },\n             margin: {\n             type: Array,\n             required: true\n             },\n             maxRows: {\n             type: Number,\n             required: true\n             },*/\n            isDraggable: {\n                type: Boolean,\n                required: false,\n                default: null\n            },\n            isResizable: {\n                type: Boolean,\n                required: false,\n                default: null\n            },\n            /*useCssTransforms: {\n             type: Boolean,\n             required: true\n             },\n             */\n            static: {\n                type: Boolean,\n                required: false,\n                default: false\n            },\n            minH: {\n                type: Number,\n                required: false,\n                default: 1\n            },\n            minW: {\n                type: Number,\n                required: false,\n                default: 1\n            },\n            maxH: {\n                type: Number,\n                required: false,\n                default: Infinity\n            },\n            maxW: {\n                type: Number,\n                required: false,\n                default: Infinity\n            },\n            x: {\n                type: Number,\n                required: true\n            },\n            y: {\n                type: Number,\n                required: true\n            },\n            w: {\n                type: Number,\n                required: true\n            },\n            h: {\n                type: Number,\n                required: true\n            },\n            i: {\n                required: true\n            },\n            dragIgnoreFrom: {\n                type: String,\n                required: false,\n                default: 'a, button'\n            },\n            dragAllowFrom: {\n                type: String,\n                required: false,\n                default: null\n            },\n            resizeIgnoreFrom: {\n                type: String,\n                required: false,\n                default: 'a, button'\n            },\n            preserveAspectRatio: {\n                type: Boolean,\n                required: false,\n                default: false,\n            }\n        },\n        inject: [\"eventBus\", \"layout\"],\n        data: function () {\n            return {\n                cols: 1,\n                containerWidth: 100,\n                rowHeight: 30,\n                margin: [10, 10],\n                maxRows: Infinity,\n                draggable: null,\n                resizable: null,\n                useCssTransforms: true,\n                useStyleCursor: true,\n\n                isDragging: false,\n                dragging: null,\n                isResizing: false,\n                resizing: null,\n                lastX: NaN,\n                lastY: NaN,\n                lastW: NaN,\n                lastH: NaN,\n                style: {},\n                rtl: false,\n\n                dragEventSet: false,\n                resizeEventSet: false,\n\n                previousW: null,\n                previousH: null,\n                previousX: null,\n                previousY: null,\n                innerX: this.x,\n                innerY: this.y,\n                innerW: this.w,\n                innerH: this.h\n            }\n        },\n        created () {\n            let self = this;\n\n            // Accessible refernces of functions for removing in beforeUnmount\n            self.updateWidthHandler = function (width) {\n                self.updateWidth(width);\n            };\n\n            self.compactHandler = function (layout) {\n                self.compact(layout);\n            };\n\n            self.setDraggableHandler = function (isDraggable) {\n                if (self.isDraggable === null) {\n                    self.draggable = isDraggable;\n                }\n            };\n\n            self.setResizableHandler = function (isResizable) {\n                if (self.isResizable === null) {\n                    self.resizable = isResizable;\n                }\n            };\n\n            self.setRowHeightHandler = function (rowHeight) {\n                self.rowHeight = rowHeight;\n            };\n\n            self.setMaxRowsHandler = function (maxRows) {\n                self.maxRows = maxRows;\n            };\n\n            self.directionchangeHandler = () => {\n                this.rtl = getDocumentDir() === 'rtl';\n                this.compact();\n            };\n\n            self.setColNum = (colNum) => {\n               self.cols = parseInt(colNum);\n            }\n\n            this.eventBus.on('updateWidth', self.updateWidthHandler);\n            this.eventBus.on('compact', self.compactHandler);\n            this.eventBus.on('setDraggable', self.setDraggableHandler);\n            this.eventBus.on('setResizable', self.setResizableHandler);\n            this.eventBus.on('setRowHeight', self.setRowHeightHandler);\n            this.eventBus.on('setMaxRows', self.setMaxRowsHandler);\n            this.eventBus.on('directionchange', self.directionchangeHandler);\n            this.eventBus.on('setColNum', self.setColNum)\n\n            this.rtl = getDocumentDir() === 'rtl';\n        },\n        beforeUnmount: function(){\n            let self = this;\n            //Remove listeners\n            this.eventBus.off('updateWidth', self.updateWidthHandler);\n            this.eventBus.off('compact', self.compactHandler);\n            this.eventBus.off('setDraggable', self.setDraggableHandler);\n            this.eventBus.off('setResizable', self.setResizableHandler);\n            this.eventBus.off('setRowHeight', self.setRowHeightHandler);\n            this.eventBus.off('setMaxRows', self.setMaxRowsHandler);\n            this.eventBus.off('directionchange', self.directionchangeHandler);\n            this.eventBus.off('setColNum', self.setColNum);\n            if (this.interactObj) {\n                this.interactObj.unset() // destroy interact intance\n            }\n        },\n        mounted: function () {\n            if (this.layout.responsive && this.layout.lastBreakpoint) {\n                this.cols = getColsFromBreakpoint(this.layout.lastBreakpoint, this.layout.cols);\n            } else {\n                this.cols = this.layout.colNum;\n            }\n            this.rowHeight = this.layout.rowHeight;\n            this.containerWidth = this.layout.width !== null ? this.layout.width : 100;\n            this.margin = this.layout.margin !== undefined ? this.layout.margin : [10, 10];\n            this.maxRows = this.layout.maxRows;\n\n            if (this.isDraggable === null) {\n                this.draggable = this.layout.isDraggable;\n            } else {\n                this.draggable = this.isDraggable;\n            }\n            if (this.isResizable === null) {\n                this.resizable = this.layout.isResizable;\n            } else {\n                this.resizable = this.isResizable;\n            }\n            this.useCssTransforms = this.layout.useCssTransforms;\n            this.useStyleCursor = this.layout.useStyleCursor;\n            this.createStyle();\n        },\n        watch: {\n            isDraggable: function () {\n                this.draggable = this.isDraggable;\n            },\n            static: function () {\n                this.tryMakeDraggable();\n                this.tryMakeResizable();\n            },\n            draggable: function () {\n                this.tryMakeDraggable();\n            },\n            isResizable: function () {\n                this.resizable = this.isResizable;\n            },\n            resizable: function () {\n                this.tryMakeResizable();\n            },\n            rowHeight: function () {\n                this.createStyle();\n                this.emitContainerResized();\n            },\n            cols: function () {\n                this.tryMakeResizable();\n                this.createStyle();\n                this.emitContainerResized();\n            },\n            containerWidth: function () {\n                this.tryMakeResizable();\n                this.createStyle();\n                this.emitContainerResized();\n            },\n            x: function (newVal) {\n                this.innerX = newVal;\n                this.createStyle();\n            },\n            y: function (newVal) {\n                this.innerY = newVal;\n                this.createStyle();\n            },\n            h: function (newVal) {\n                this.innerH = newVal\n                this.createStyle();\n                // this.emitContainerResized();\n            },\n            w: function (newVal) {\n                this.innerW = newVal;\n                this.createStyle();\n                // this.emitContainerResized();\n            },\n            renderRtl: function () {\n                // console.log(\"### renderRtl\");\n                this.tryMakeResizable();\n                this.createStyle();\n            },\n            minH: function () {\n                this.tryMakeResizable();\n            },\n            maxH: function () {\n                this.tryMakeResizable();\n            },\n            minW: function () {\n                this.tryMakeResizable();\n            },\n            maxW: function () {\n                this.tryMakeResizable();\n            },\n            \"$parent.margin\": function (margin) {\n                if (!margin || (margin[0] == this.margin[0] && margin[1] == this.margin[1])) {\n                    return;\n                }\n                this.margin = margin.map(m => Number(m));\n                this.createStyle();\n                this.emitContainerResized();\n            },\n        },\n        computed: {\n            classObj() {\n                return {\n                    'vue-resizable' : this.resizableAndNotStatic,\n                    'static': this.static,\n                    'resizing' : this.isResizing,\n                    'vue-draggable-dragging' : this.isDragging,\n                    'cssTransforms' : this.useCssTransforms,\n                    'render-rtl' : this.renderRtl,\n                    'disable-userselect': this.isDragging,\n                    'no-touch': this.isAndroid && this.draggableOrResizableAndNotStatic\n                }\n            },\n            resizableAndNotStatic(){\n                return this.resizable && !this.static;\n            },\n            draggableOrResizableAndNotStatic(){\n                return (this.draggable || this.resizable) && !this.static;\n            },\n            isAndroid() {\n                return navigator.userAgent.toLowerCase().indexOf(\"android\") !== -1;\n            },\n            renderRtl() {\n                return (this.layout.isMirrored) ? !this.rtl : this.rtl;\n            },\n            resizableHandleClass() {\n                if (this.renderRtl) {\n                    return 'vue-resizable-handle vue-rtl-resizable-handle';\n                } else {\n                    return 'vue-resizable-handle';\n                }\n            }\n        },\n        methods: {\n            createStyle: function () {\n                if (this.x + this.w > this.cols) {\n                    this.innerX = 0;\n                    this.innerW = (this.w > this.cols) ? this.cols : this.w\n                } else {\n                  this.innerX = this.x;\n                  this.innerW = this.w;\n                }\n                let pos = this.calcPosition(this.innerX, this.innerY, this.innerW, this.innerH);\n\n\n                if (this.isDragging) {\n                    pos.top = this.dragging.top;\n//                    Add rtl support\n                    if (this.renderRtl) {\n                        pos.right = this.dragging.left;\n                    } else {\n                        pos.left = this.dragging.left;\n                    }\n                }\n                if (this.isResizing) {\n                    pos.width = this.resizing.width;\n                    pos.height = this.resizing.height;\n                }\n\n                let style;\n                // CSS Transforms support (default)\n                if (this.useCssTransforms) {\n//                    Add rtl support\n                    if (this.renderRtl) {\n                        style = setTransformRtl(pos.top, pos.right, pos.width, pos.height);\n                    } else {\n                        style = setTransform(pos.top, pos.left, pos.width, pos.height);\n                    }\n\n                } else { // top,left (slow)\n//                    Add rtl support\n                    if (this.renderRtl) {\n                        style = setTopRight(pos.top, pos.right, pos.width, pos.height);\n                    } else {\n                        style = setTopLeft(pos.top, pos.left, pos.width, pos.height);\n                    }\n                }\n                this.style = style;\n            },\n            emitContainerResized() {\n                // this.style has width and height with trailing 'px'. The\n                // resized event is without them\n                let styleProps = {};\n                for (let prop of ['width', 'height']) {\n                    let val = this.style[prop];\n                    let matches = val.match(/^(\\d+)px$/);\n                    if (! matches)\n                        return;\n                    styleProps[prop] = matches[1];\n                }\n                this.$emit(\"container-resized\", this.i, this.h, this.w, styleProps.height, styleProps.width);\n            },\n            handleResize: function (event) {\n                if (this.static) return;\n                const position = getControlPosition(event);\n                // Get the current drag point from the event. This is used as the offset.\n                if (position == null) return; // not possible but satisfies flow\n                const {x, y} = position;\n\n                const newSize = {width: 0, height: 0};\n                let pos;\n                switch (event.type) {\n                    case \"resizestart\": {\n                        this.previousW = this.innerW;\n                        this.previousH = this.innerH;\n                        pos = this.calcPosition(this.innerX, this.innerY, this.innerW, this.innerH);\n                        newSize.width = pos.width;\n                        newSize.height = pos.height;\n                        this.resizing = newSize;\n                        this.isResizing = true;\n                        break;\n                    }\n                    case \"resizemove\": {\n//                        console.log(\"### resize => \" + event.type + \", lastW=\" + this.lastW + \", lastH=\" + this.lastH);\n                        const coreEvent = createCoreData(this.lastW, this.lastH, x, y);\n                        if (this.renderRtl) {\n                            newSize.width = this.resizing.width - coreEvent.deltaX;\n                        } else {\n                            newSize.width = this.resizing.width + coreEvent.deltaX;\n                        }\n                        newSize.height = this.resizing.height + coreEvent.deltaY;\n\n                        ///console.log(\"### resize => \" + event.type + \", deltaX=\" + coreEvent.deltaX + \", deltaY=\" + coreEvent.deltaY);\n                        this.resizing = newSize;\n                        break;\n                    }\n                    case \"resizeend\": {\n                        //console.log(\"### resize end => x=\" +this.innerX + \" y=\" + this.innerY + \" w=\" + this.innerW + \" h=\" + this.innerH);\n                        pos = this.calcPosition(this.innerX, this.innerY, this.innerW, this.innerH);\n                        newSize.width = pos.width;\n                        newSize.height = pos.height;\n//                        console.log(\"### resize end => \" + JSON.stringify(newSize));\n                        this.resizing = null;\n                        this.isResizing = false;\n                        break;\n                    }\n                }\n\n                // Get new WH\n                pos = this.calcWH(newSize.height, newSize.width);\n                if (pos.w < this.minW) {\n                    pos.w = this.minW;\n                }\n                if (pos.w > this.maxW) {\n                    pos.w = this.maxW;\n                }\n                if (pos.h < this.minH) {\n                    pos.h = this.minH;\n                }\n                if (pos.h > this.maxH) {\n                    pos.h = this.maxH;\n                }\n\n                if (pos.h < 1) {\n                    pos.h = 1;\n                }\n                if (pos.w < 1) {\n                    pos.w = 1;\n                }\n\n                this.lastW = x;\n                this.lastH = y;\n\n                if (this.innerW !== pos.w || this.innerH !== pos.h) {\n                    this.$emit(\"resize\", this.i, pos.h, pos.w, newSize.height, newSize.width);\n                }\n                if (event.type === \"resizeend\" && (this.previousW !== this.innerW || this.previousH !== this.innerH)) {\n                    this.$emit(\"resized\", this.i, pos.h, pos.w, newSize.height, newSize.width);\n                }\n                this.eventBus.emit(\"resizeEvent\", {eventType: event.type, i: this.i, x: this.innerX, y: this.innerY, h: pos.h, w: pos.w});\n            },\n            handleDrag(event) {\n                if (this.static) return;\n                if (this.isResizing) return;\n\n                const position = getControlPosition(event);\n\n                // Get the current drag point from the event. This is used as the offset.\n                if (position === null) return; // not possible but satisfies flow\n                const {x, y} = position;\n\n                // let shouldUpdate = false;\n                let newPosition = {top: 0, left: 0};\n                switch (event.type) {\n                    case \"dragstart\": {\n                        this.previousX = this.innerX;\n                        this.previousY = this.innerY;\n\n                        let parentRect = event.target.offsetParent.getBoundingClientRect();\n                        let clientRect = event.target.getBoundingClientRect();\n                        if (this.renderRtl) {\n                            newPosition.left = (clientRect.right - parentRect.right) * -1;\n                        } else {\n                            newPosition.left = clientRect.left - parentRect.left;\n                        }\n                        newPosition.top = clientRect.top - parentRect.top;\n                        this.dragging = newPosition;\n                        this.isDragging = true;\n                        break;\n                    }\n                    case \"dragend\": {\n                        if (!this.isDragging) return;\n                        let parentRect = event.target.offsetParent.getBoundingClientRect();\n                        let clientRect = event.target.getBoundingClientRect();\n//                        Add rtl support\n                        if (this.renderRtl) {\n                            newPosition.left = (clientRect.right - parentRect.right) * -1;\n                        } else {\n                            newPosition.left = clientRect.left - parentRect.left;\n                        }\n                        newPosition.top = clientRect.top - parentRect.top;\n//                        console.log(\"### drag end => \" + JSON.stringify(newPosition));\n//                        console.log(\"### DROP: \" + JSON.stringify(newPosition));\n                        this.dragging = null;\n                        this.isDragging = false;\n                        // shouldUpdate = true;\n                        break;\n                    }\n                    case \"dragmove\": {\n                        const coreEvent = createCoreData(this.lastX, this.lastY, x, y);\n//                        Add rtl support\n                        if (this.renderRtl) {\n                            newPosition.left = this.dragging.left - coreEvent.deltaX;\n                        } else {\n                            newPosition.left = this.dragging.left + coreEvent.deltaX;\n                        }\n                        newPosition.top = this.dragging.top + coreEvent.deltaY;\n//                        console.log(\"### drag => \" + event.type + \", x=\" + x + \", y=\" + y);\n//                        console.log(\"### drag => \" + event.type + \", deltaX=\" + coreEvent.deltaX + \", deltaY=\" + coreEvent.deltaY);\n//                        console.log(\"### drag end => \" + JSON.stringify(newPosition));\n                        this.dragging = newPosition;\n                        break;\n                    }\n                }\n\n                // Get new XY\n                let pos;\n                if (this.renderRtl) {\n                    pos = this.calcXY(newPosition.top, newPosition.left);\n                } else {\n                    pos = this.calcXY(newPosition.top, newPosition.left);\n                }\n\n                this.lastX = x;\n                this.lastY = y;\n\n                if (this.innerX !== pos.x || this.innerY !== pos.y) {\n                    this.$emit(\"move\", this.i, pos.x, pos.y);\n                }\n                if (event.type === \"dragend\" && (this.previousX !== this.innerX || this.previousY !== this.innerY)) {\n                    this.$emit(\"moved\", this.i, pos.x, pos.y);\n                }\n                this.eventBus.emit(\"dragEvent\", {eventType: event.type, i: this.i, x: pos.x, y: pos.y, h: this.innerH, w: this.innerW});\n            },\n            calcPosition: function (x, y, w, h) {\n                const colWidth = this.calcColWidth();\n                // add rtl support\n                let out;\n                if (this.renderRtl) {\n                    out = {\n                        right: Math.round(colWidth * x + (x + 1) * this.margin[0]),\n                        top: Math.round(this.rowHeight * y + (y + 1) * this.margin[1]),\n                        // 0 * Infinity === NaN, which causes problems with resize constriants;\n                        // Fix this if it occurs.\n                        // Note we do it here rather than later because Math.round(Infinity) causes deopt\n                        width: w === Infinity ? w : Math.round(colWidth * w + Math.max(0, w - 1) * this.margin[0]),\n                        height: h === Infinity ? h : Math.round(this.rowHeight * h + Math.max(0, h - 1) * this.margin[1])\n                    };\n                } else {\n                    out = {\n                        left: Math.round(colWidth * x + (x + 1) * this.margin[0]),\n                        top: Math.round(this.rowHeight * y + (y + 1) * this.margin[1]),\n                        // 0 * Infinity === NaN, which causes problems with resize constriants;\n                        // Fix this if it occurs.\n                        // Note we do it here rather than later because Math.round(Infinity) causes deopt\n                        width: w === Infinity ? w : Math.round(colWidth * w + Math.max(0, w - 1) * this.margin[0]),\n                        height: h === Infinity ? h : Math.round(this.rowHeight * h + Math.max(0, h - 1) * this.margin[1])\n                    };\n                }\n\n\n                return out;\n            },\n            /**\n             * Translate x and y coordinates from pixels to grid units.\n             * @param  {Number} top  Top position (relative to parent) in pixels.\n             * @param  {Number} left Left position (relative to parent) in pixels.\n             * @return {Object} x and y in grid units.\n             */\n            // TODO check if this function needs change in order to support rtl.\n            calcXY(top, left) {\n                const colWidth = this.calcColWidth();\n\n                // left = colWidth * x + margin * (x + 1)\n                // l = cx + m(x+1)\n                // l = cx + mx + m\n                // l - m = cx + mx\n                // l - m = x(c + m)\n                // (l - m) / (c + m) = x\n                // x = (left - margin) / (coldWidth + margin)\n                let x = Math.round((left - this.margin[0]) / (colWidth + this.margin[0]));\n                let y = Math.round((top - this.margin[1]) / (this.rowHeight + this.margin[1]));\n\n                // Capping\n                x = Math.max(Math.min(x, this.cols - this.innerW), 0);\n                y = Math.max(Math.min(y, this.maxRows - this.innerH), 0);\n\n                return {x, y};\n            },\n            // Helper for generating column width\n            calcColWidth() {\n                const colWidth = (this.containerWidth - (this.margin[0] * (this.cols + 1))) / this.cols;\n               // console.log(\"### COLS=\" + this.cols + \" COL WIDTH=\" + colWidth + \" MARGIN \" + this.margin[0]);\n                return colWidth;\n            },\n\n            /**\n             * Given a height and width in pixel values, calculate grid units.\n             * @param  {Number} height Height in pixels.\n             * @param  {Number} width  Width in pixels.\n             * @param  {Boolean} autoSizeFlag  function autoSize identifier.\n             * @return {Object} w, h as grid units.\n             */\n            calcWH(height, width, autoSizeFlag = false) {\n                const colWidth = this.calcColWidth();\n\n                // width = colWidth * w - (margin * (w - 1))\n                // ...\n                // w = (width + margin) / (colWidth + margin)\n                let w = Math.round((width + this.margin[0]) / (colWidth + this.margin[0]));\n                let h = 0;\n                if (!autoSizeFlag) {\n                    h = Math.round((height + this.margin[1]) / (this.rowHeight + this.margin[1]));\n                } else {\n                    h = Math.ceil((height + this.margin[1]) / (this.rowHeight + this.margin[1]));\n                }\n\n                // Capping\n                w = Math.max(Math.min(w, this.cols - this.innerX), 0);\n                h = Math.max(Math.min(h, this.maxRows - this.innerY), 0);\n                return {w, h};\n            },\n            updateWidth: function (width, colNum) {\n                this.containerWidth = width;\n                if (colNum !== undefined && colNum !== null) {\n                    this.cols = colNum;\n                }\n            },\n            compact: function () {\n                this.createStyle();\n            },\n            tryMakeDraggable: function(){\n                const self = this;\n                if (this.interactObj === null || this.interactObj === undefined) {\n                    this.interactObj = interact(this.$refs.item);\n                    if (!this.useStyleCursor) {\n                        this.interactObj.styleCursor(false);\n                    }\n                }\n                if (this.draggable && !this.static) {\n                    const opts = {\n                        ignoreFrom: this.dragIgnoreFrom,\n                        allowFrom: this.dragAllowFrom\n                    };\n                    this.interactObj.draggable(opts);\n                    /*this.interactObj.draggable({allowFrom: '.vue-draggable-handle'});*/\n                    if (!this.dragEventSet) {\n                        this.dragEventSet = true;\n                        this.interactObj.on('dragstart dragmove dragend', function (event) {\n                            self.handleDrag(event);\n                        });\n                    }\n                } else {\n                    this.interactObj.draggable({\n                        enabled: false\n                    });\n                }\n            },\n            tryMakeResizable: function(){\n                const self = this;\n                if (this.interactObj === null || this.interactObj === undefined) {\n                    this.interactObj = interact(this.$refs.item);\n                    if (!this.useStyleCursor) {\n                        this.interactObj.styleCursor(false);\n                    }\n                }\n                if (this.resizable && !this.static) {\n                    let maximum = this.calcPosition(0,0,this.maxW, this.maxH);\n                    let minimum = this.calcPosition(0,0, this.minW, this.minH);\n\n                    // console.log(\"### MAX \" + JSON.stringify(maximum));\n                    // console.log(\"### MIN \" + JSON.stringify(minimum));\n\n                    const opts = {\n                        // allowFrom: \".\" + this.resizableHandleClass.trim().replace(\" \", \".\"),\n                        edges: {\n                            left: false,\n                            right: \".\" + this.resizableHandleClass.trim().replace(\" \", \".\"),\n                            bottom: \".\" + this.resizableHandleClass.trim().replace(\" \", \".\"),\n                            top: false\n                        },\n                        ignoreFrom: this.resizeIgnoreFrom,\n                        restrictSize: {\n                            min: {\n                                height: minimum.height,\n                                width: minimum.width\n                            },\n                            max: {\n                                height: maximum.height,\n                                width: maximum.width\n                            }\n                        }\n                    };\n\n                    if (this.preserveAspectRatio) {\n                        opts.modifiers = [\n                            interact.modifiers.aspectRatio({\n                                ratio: 'preserve'\n                            }),\n                        ]\n                    }\n\n                    this.interactObj.resizable(opts);\n                    if (!this.resizeEventSet) {\n                        this.resizeEventSet = true;\n                        this.interactObj\n                            .on('resizestart resizemove resizeend', function (event) {\n                                self.handleResize(event);\n                            });\n                    }\n                } else {\n                    this.interactObj.resizable({\n                        enabled: false\n                    });\n                }\n            },\n            autoSize: function() {\n                // ok here we want to calculate if a resize is needed\n                this.previousW = this.innerW;\n                this.previousH = this.innerH;\n\n                let newSize=this.$slots().default[0].elm.getBoundingClientRect();\n                let pos = this.calcWH(newSize.height, newSize.width, true);\n                if (pos.w < this.minW) {\n                    pos.w = this.minW;\n                }\n                if (pos.w > this.maxW) {\n                    pos.w = this.maxW;\n                }\n                if (pos.h < this.minH) {\n                    pos.h = this.minH;\n                }\n                if (pos.h > this.maxH) {\n                    pos.h = this.maxH;\n                }\n\n                if (pos.h < 1) {\n                    pos.h = 1;\n                }\n                if (pos.w < 1) {\n                    pos.w = 1;\n                }\n\n                // this.lastW = x; // basically, this is copied from resizehandler, but shouldn't be needed\n                // this.lastH = y;\n\n                if (this.innerW !== pos.w || this.innerH !== pos.h) {\n                    this.$emit(\"resize\", this.i, pos.h, pos.w, newSize.height, newSize.width);\n                }\n                if (this.previousW !== pos.w || this.previousH !== pos.h) {\n                    this.$emit(\"resized\", this.i, pos.h, pos.w, newSize.height, newSize.width);\n                    this.eventBus.emit(\"resizeEvent\", {eventType: \"resizeend\", i: this.i, x: this.innerX, y: this.innerY, h: pos.h, w: pos.w});\n                }\n            }\n        },\n    }\n</script>\n","// @flow\nexport type LayoutItemRequired = {w: number, h: number, x: number, y: number, i: string};\nexport type LayoutItem = LayoutItemRequired &\n                         {minW?: number, minH?: number, maxW?: number, maxH?: number,\n                          moved?: boolean, static?: boolean,\n                          isDraggable?: ?boolean, isResizable?: ?boolean};\nexport type Layout = Array<LayoutItem>;\n// export type Position = {left: number, top: number, width: number, height: number};\n/*\nexport type DragCallbackData = {\n  node: HTMLElement,\n  x: number, y: number,\n  deltaX: number, deltaY: number,\n  lastX: number, lastY: number\n};\n*/\n// export type DragEvent = {e: Event} & DragCallbackData;\nexport type Size = {width: number, height: number};\n// export type ResizeEvent = {e: Event, node: HTMLElement, size: Size};\n\n// const isProduction = process.env.NODE_ENV === 'production';\n/**\n * Return the bottom coordinate of the layout.\n *\n * @param  {Array} layout Layout array.\n * @return {Number}       Bottom coordinate.\n */\nexport function bottom(layout: Layout): number {\n  let max = 0, bottomY;\n  for (let i = 0, len = layout.length; i < len; i++) {\n    bottomY = layout[i]. y + layout[i].h;\n    if (bottomY > max) max = bottomY;\n  }\n  return max;\n}\n\nexport function cloneLayout(layout: Layout): Layout {\n  const newLayout = Array(layout.length);\n  for (let i = 0, len = layout.length; i < len; i++) {\n    newLayout[i] = cloneLayoutItem(layout[i]);\n  }\n  return newLayout;\n}\n\n// Fast path to cloning, since this is monomorphic\nexport function cloneLayoutItem(layoutItem: LayoutItem): LayoutItem {\n  /*return {\n    w: layoutItem.w, h: layoutItem.h, x: layoutItem.x, y: layoutItem.y, i: layoutItem.i,\n    minW: layoutItem.minW, maxW: layoutItem.maxW, minH: layoutItem.minH, maxH: layoutItem.maxH,\n    moved: Boolean(layoutItem.moved), static: Boolean(layoutItem.static),\n    // These can be null\n    isDraggable: layoutItem.isDraggable, isResizable: layoutItem.isResizable\n  };*/\n    return JSON.parse(JSON.stringify(layoutItem));\n}\n\n/**\n * Given two layoutitems, check if they collide.\n *\n * @return {Boolean}   True if colliding.\n */\nexport function collides(l1: LayoutItem, l2: LayoutItem): boolean {\n  if (l1 === l2) return false; // same element\n  if (l1.x + l1.w <= l2.x) return false; // l1 is left of l2\n  if (l1.x >= l2.x + l2.w) return false; // l1 is right of l2\n  if (l1.y + l1.h <= l2.y) return false; // l1 is above l2\n  if (l1.y >= l2.y + l2.h) return false; // l1 is below l2\n  return true; // boxes overlap\n}\n\n/**\n * Given a layout, compact it. This involves going down each y coordinate and removing gaps\n * between items.\n *\n * @param  {Array} layout Layout.\n * @param  {Boolean} verticalCompact Whether or not to compact the layout\n *   vertically.\n * @return {Array}       Compacted Layout.\n */\nexport function compact(layout: Layout, verticalCompact: Boolean): Layout {\n    // Statics go in the compareWith array right away so items flow around them.\n  const compareWith = getStatics(layout);\n  // We go through the items by row and column.\n  const sorted = sortLayoutItemsByRowCol(layout);\n  // Holding for new items.\n  const out = Array(layout.length);\n\n  for (let i = 0, len = sorted.length; i < len; i++) {\n    let l = sorted[i];\n\n    // Don't move static elements\n    if (!l.static) {\n      l = compactItem(compareWith, l, verticalCompact);\n\n      // Add to comparison array. We only collide with items before this one.\n      // Statics are already in this array.\n      compareWith.push(l);\n    }\n\n    // Add to output array to make sure they still come out in the right order.\n    out[layout.indexOf(l)] = l;\n\n    // Clear moved flag, if it exists.\n    l.moved = false;\n  }\n\n  return out;\n}\n\n/**\n * Compact an item in the layout.\n */\nexport function compactItem(compareWith: Layout, l: LayoutItem, verticalCompact: boolean): LayoutItem {\n  if (verticalCompact) {\n    // Move the element up as far as it can go without colliding.\n    while (l.y > 0 && !getFirstCollision(compareWith, l)) {\n      l.y--;\n    }\n  }\n\n  // Move it down, and keep moving it down if it's colliding.\n  let collides;\n  while((collides = getFirstCollision(compareWith, l))) {\n    l.y = collides.y + collides.h;\n  }\n  return l;\n}\n\n/**\n * Given a layout, make sure all elements fit within its bounds.\n *\n * @param  {Array} layout Layout array.\n * @param  {Number} bounds Number of columns.\n */\nexport function correctBounds(layout: Layout, bounds: {cols: number}): Layout {\n  const collidesWith = getStatics(layout);\n  for (let i = 0, len = layout.length; i < len; i++) {\n    const l = layout[i];\n    // Overflows right\n    if (l.x + l.w > bounds.cols) l.x = bounds.cols - l.w;\n    // Overflows left\n    if (l.x < 0) {\n      l.x = 0;\n      l.w = bounds.cols;\n    }\n    if (!l.static) collidesWith.push(l);\n    else {\n      // If this is static and collides with other statics, we must move it down.\n      // We have to do something nicer than just letting them overlap.\n      while(getFirstCollision(collidesWith, l)) {\n        l.y++;\n      }\n    }\n  }\n  return layout;\n}\n\n/**\n * Get a layout item by ID. Used so we can override later on if necessary.\n *\n * @param  {Array}  layout Layout array.\n * @param  {String} id     ID\n * @return {LayoutItem}    Item at ID.\n */\nexport function getLayoutItem(layout: Layout, id: string): ?LayoutItem {\n  for (let i = 0, len = layout.length; i < len; i++) {\n    if (layout[i].i === id) return layout[i];\n  }\n}\n\n/**\n * Returns the first item this layout collides with.\n * It doesn't appear to matter which order we approach this from, although\n * perhaps that is the wrong thing to do.\n *\n * @param  {Object} layoutItem Layout item.\n * @return {Object|undefined}  A colliding layout item, or undefined.\n */\nexport function getFirstCollision(layout: Layout, layoutItem: LayoutItem): ?LayoutItem {\n  for (let i = 0, len = layout.length; i < len; i++) {\n    if (collides(layout[i], layoutItem)) return layout[i];\n  }\n}\n\nexport function getAllCollisions(layout: Layout, layoutItem: LayoutItem): Array<LayoutItem> {\n  return layout.filter((l) => collides(l, layoutItem));\n}\n\n/**\n * Get all static elements.\n * @param  {Array} layout Array of layout objects.\n * @return {Array}        Array of static layout items..\n */\nexport function getStatics(layout: Layout): Array<LayoutItem> {\n    //return [];\n    return layout.filter((l) => l.static);\n}\n\n/**\n * Move an element. Responsible for doing cascading movements of other elements.\n *\n * @param  {Array}      layout Full layout to modify.\n * @param  {LayoutItem} l      element to move.\n * @param  {Number}     [x]    X position in grid units.\n * @param  {Number}     [y]    Y position in grid units.\n * @param  {Boolean}    [isUserAction] If true, designates that the item we're moving is\n *                                     being dragged/resized by th euser.\n */\nexport function moveElement(layout: Layout, l: LayoutItem, x: Number, y: Number, isUserAction: Boolean, preventCollision: Boolean): Layout {\n  if (l.static) return layout;\n\n  // Short-circuit if nothing to do.\n  //if (l.y === y && l.x === x) return layout;\n\n  const oldX = l.x;\n  const oldY = l.y;\n\n  const movingUp = y && l.y > y;\n  // This is quite a bit faster than extending the object\n  if (typeof x === 'number') l.x = x;\n  if (typeof y === 'number') l.y = y;\n  l.moved = true;\n\n  // If this collides with anything, move it.\n  // When doing this comparison, we have to sort the items we compare with\n  // to ensure, in the case of multiple collisions, that we're getting the\n  // nearest collision.\n  let sorted = sortLayoutItemsByRowCol(layout);\n  if (movingUp) sorted = sorted.reverse();\n  const collisions = getAllCollisions(sorted, l);\n\n  if (preventCollision && collisions.length) {\n    l.x = oldX;\n    l.y = oldY;\n    l.moved = false;\n    return layout;\n  }\n\n  // Move each item that collides away from this element.\n  for (let i = 0, len = collisions.length; i < len; i++) {\n    const collision = collisions[i];\n    // console.log('resolving collision between', l.i, 'at', l.y, 'and', collision.i, 'at', collision.y);\n\n    // Short circuit so we can't infinite loop\n    if (collision.moved) continue;\n\n    // This makes it feel a bit more precise by waiting to swap for just a bit when moving up.\n    if (l.y > collision.y && l.y - collision.y > collision.h / 4) continue;\n\n    // Don't move static items - we have to move *this* element away\n    if (collision.static) {\n      layout = moveElementAwayFromCollision(layout, collision, l, isUserAction);\n    } else {\n      layout = moveElementAwayFromCollision(layout, l, collision, isUserAction);\n    }\n  }\n\n  return layout;\n}\n\n/**\n * This is where the magic needs to happen - given a collision, move an element away from the collision.\n * We attempt to move it up if there's room, otherwise it goes below.\n *\n * @param  {Array} layout            Full layout to modify.\n * @param  {LayoutItem} collidesWith Layout item we're colliding with.\n * @param  {LayoutItem} itemToMove   Layout item we're moving.\n * @param  {Boolean} [isUserAction]  If true, designates that the item we're moving is being dragged/resized\n *                                   by the user.\n */\nexport function moveElementAwayFromCollision(layout: Layout, collidesWith: LayoutItem,\n                                             itemToMove: LayoutItem, isUserAction: ?boolean): Layout {\n\n  const preventCollision = false // we're already colliding\n  // If there is enough space above the collision to put this element, move it there.\n  // We only do this on the main collision as this can get funky in cascades and cause\n  // unwanted swapping behavior.\n  if (isUserAction) {\n    // Make a mock item so we don't modify the item here, only modify in moveElement.\n    const fakeItem: LayoutItem = {\n      x: itemToMove.x,\n      y: itemToMove.y,\n      w: itemToMove.w,\n      h: itemToMove.h,\n      i: '-1'\n    };\n    fakeItem.y = Math.max(collidesWith.y - itemToMove.h, 0);\n    if (!getFirstCollision(layout, fakeItem)) {\n      return moveElement(layout, itemToMove, undefined, fakeItem.y, preventCollision);\n    }\n  }\n\n  // Previously this was optimized to move below the collision directly, but this can cause problems\n  // with cascading moves, as an item may actually leapflog a collision and cause a reversal in order.\n  return moveElement(layout, itemToMove, undefined, itemToMove.y + 1, preventCollision);\n}\n\n/**\n * Helper to convert a number to a percentage string.\n *\n * @param  {Number} num Any number\n * @return {String}     That number as a percentage.\n */\nexport function perc(num: number): string {\n  return num * 100 + '%';\n}\n\nexport function setTransform(top, left, width, height): Object {\n  // Replace unitless items with px\n  const translate = \"translate3d(\" + left + \"px,\" + top + \"px, 0)\";\n  return {\n    transform: translate,\n    WebkitTransform: translate,\n    MozTransform: translate,\n    msTransform: translate,\n    OTransform: translate,\n    width: width + \"px\",\n    height: height + \"px\",\n    position: 'absolute'\n  };\n}\n/**\n * Just like the setTransform method, but instead it will return a negative value of right.\n *\n * @param top\n * @param right\n * @param width\n * @param height\n * @returns {{transform: string, WebkitTransform: string, MozTransform: string, msTransform: string, OTransform: string, width: string, height: string, position: string}}\n */\nexport function setTransformRtl(top, right, width, height): Object {\n    // Replace unitless items with px\n    const translate = \"translate3d(\" + right * -1 + \"px,\" + top + \"px, 0)\";\n    return {\n        transform: translate,\n        WebkitTransform: translate,\n        MozTransform: translate,\n        msTransform: translate,\n        OTransform: translate,\n        width: width + \"px\",\n        height: height + \"px\",\n        position: 'absolute'\n    };\n}\n\nexport function setTopLeft(top, left, width, height): Object {\n    return {\n        top: top + \"px\",\n        left: left + \"px\",\n        width: width + \"px\",\n        height: height + \"px\",\n        position: 'absolute'\n    };\n}\n/**\n * Just like the setTopLeft method, but instead, it will return a right property instead of left.\n *\n * @param top\n * @param right\n * @param width\n * @param height\n * @returns {{top: string, right: string, width: string, height: string, position: string}}\n */\nexport function setTopRight(top, right, width, height): Object {\n    return {\n        top: top + \"px\",\n        right: right+ \"px\",\n        width: width + \"px\",\n        height: height + \"px\",\n        position: 'absolute'\n    };\n}\n\n\n/**\n * Get layout items sorted from top left to right and down.\n *\n * @return {Array} Array of layout objects.\n * @return {Array}        Layout, sorted static items first.\n */\nexport function sortLayoutItemsByRowCol(layout: Layout): Layout {\n  return [].concat(layout).sort(function(a, b) {\n    if (a.y === b.y && a.x === b.x) {\n      return 0;\n    }\n\n    if (a.y > b.y || (a.y === b.y && a.x > b.x)) {\n      return 1;\n    }\n\n    return -1;\n  });\n}\n\n/**\n * Generate a layout using the initialLayout and children as a template.\n * Missing entries will be added, extraneous ones will be truncated.\n *\n * @param  {Array}  initialLayout Layout passed in through props.\n * @param  {String} breakpoint    Current responsive breakpoint.\n * @param  {Boolean} verticalCompact Whether or not to compact the layout vertically.\n * @return {Array}                Working layout.\n */\n/*\nexport function synchronizeLayoutWithChildren(initialLayout: Layout, children: Array<React.Element>|React.Element,\n                                              cols: number, verticalCompact: boolean): Layout {\n  // ensure 'children' is always an array\n  if (!Array.isArray(children)) {\n    children = [children];\n  }\n  initialLayout = initialLayout || [];\n\n  // Generate one layout item per child.\n  let layout: Layout = [];\n  for (let i = 0, len = children.length; i < len; i++) {\n    let newItem;\n    const child = children[i];\n\n    // Don't overwrite if it already exists.\n    const exists = getLayoutItem(initialLayout, child.key || \"1\" /!* FIXME satisfies Flow *!/);\n    if (exists) {\n      newItem = exists;\n    } else {\n      const g = child.props._grid;\n\n      // Hey, this item has a _grid property, use it.\n      if (g) {\n        if (!isProduction) {\n          validateLayout([g], 'ReactGridLayout.children');\n        }\n        // Validated; add it to the layout. Bottom 'y' possible is the bottom of the layout.\n        // This allows you to do nice stuff like specify {y: Infinity}\n        if (verticalCompact) {\n          newItem = cloneLayoutItem({...g, y: Math.min(bottom(layout), g.y), i: child.key});\n        } else {\n          newItem = cloneLayoutItem({...g, y: g.y, i: child.key});\n        }\n      }\n      // Nothing provided: ensure this is added to the bottom\n      else {\n        newItem = cloneLayoutItem({w: 1, h: 1, x: 0, y: bottom(layout), i: child.key || \"1\"});\n      }\n    }\n    layout[i] = newItem;\n  }\n\n  // Correct the layout.\n  layout = correctBounds(layout, {cols: cols});\n  layout = compact(layout, verticalCompact);\n\n  return layout;\n}\n*/\n\n/**\n * Validate a layout. Throws errors.\n *\n * @param  {Array}  layout        Array of layout items.\n * @param  {String} [contextName] Context name for errors.\n * @throw  {Error}                Validation error.\n */\nexport function validateLayout(layout: Layout, contextName: string): void {\n  contextName = contextName || \"Layout\";\n  const subProps = ['x', 'y', 'w', 'h'];\n  let keyArr = [];\n  if (!Array.isArray(layout)) throw new Error(contextName + \" must be an array!\");\n  for (let i = 0, len = layout.length; i < len; i++) {\n    const item = layout[i];\n    for (let j = 0; j < subProps.length; j++) {\n      if (typeof item[subProps[j]] !== 'number') {\n        throw new Error('VueGridLayout: ' + contextName + '[' + i + '].' + subProps[j] + ' must be a number!');\n      }\n    }\n\n    if (item.i === undefined || item.i === null) {\n      throw new Error('VueGridLayout: ' + contextName + '[' + i + '].i cannot be null!');\n    }\n\n    if (typeof item.i !== 'number' && typeof item.i !== 'string') {\n      throw new Error('VueGridLayout: ' + contextName + '[' + i + '].i must be a string or number!');\n    }\n\n    if (keyArr.indexOf(item.i) >= 0) {\n      throw new Error('VueGridLayout: ' + contextName + '[' + i + '].i must be unique!');\n    }\n    keyArr.push(item.i);\n\n    if (item.static !== undefined && typeof item.static !== 'boolean') {\n      throw new Error('VueGridLayout: ' + contextName + '[' + i + '].static must be a boolean!');\n    }\n  }\n}\n\n// Flow can't really figure this out, so we just use Object\nexport function autoBindHandlers(el: Object, fns: Array<string>): void {\n  fns.forEach((key) => el[key] = el[key].bind(el));\n}\n\n\n\n/**\n * Convert a JS object to CSS string. Similar to React's output of CSS.\n * @param obj\n * @returns {string}\n */\nexport function createMarkup(obj) {\n    var keys = Object.keys(obj);\n    if (!keys.length) return '';\n    var i, len = keys.length;\n    var result = '';\n\n    for (i = 0; i < len; i++) {\n        var key = keys[i];\n        var val = obj[key];\n        result += hyphenate(key) + ':' + addPx(key, val) + ';';\n    }\n\n    return result;\n}\n\n\n/* The following list is defined in React's core */\nexport var IS_UNITLESS = {\n    animationIterationCount: true,\n    boxFlex: true,\n    boxFlexGroup: true,\n    boxOrdinalGroup: true,\n    columnCount: true,\n    flex: true,\n    flexGrow: true,\n    flexPositive: true,\n    flexShrink: true,\n    flexNegative: true,\n    flexOrder: true,\n    gridRow: true,\n    gridColumn: true,\n    fontWeight: true,\n    lineClamp: true,\n    lineHeight: true,\n    opacity: true,\n    order: true,\n    orphans: true,\n    tabSize: true,\n    widows: true,\n    zIndex: true,\n    zoom: true,\n\n    // SVG-related properties\n    fillOpacity: true,\n    stopOpacity: true,\n    strokeDashoffset: true,\n    strokeOpacity: true,\n    strokeWidth: true\n};\n\n\n/**\n * Will add px to the end of style values which are Numbers.\n * @param name\n * @param value\n * @returns {*}\n */\nexport function addPx(name, value) {\n    if(typeof value === 'number' && !IS_UNITLESS[ name ]) {\n        return value + 'px';\n    } else {\n        return value;\n    }\n}\n\n\n/**\n * Hyphenate a camelCase string.\n *\n * @param {String} str\n * @return {String}\n */\n\nexport var hyphenateRE = /([a-z\\d])([A-Z])/g;\n\nexport function hyphenate(str) {\n    return str.replace(hyphenateRE, '$1-$2').toLowerCase();\n}\n\n\nexport function findItemInArray(array, property, value) {\n    for (var i=0; i < array.length; i++)\n        if (array[i][property] == value)\n            return true;\n\n    return false;\n}\n\nexport function findAndRemove(array, property, value) {\n    array.forEach(function (result, index) {\n        if (result[property] === value) {\n            //Remove from array\n            array.splice(index, 1);\n        }\n    });\n}\n","// Get {x, y} positions from event.\nexport function getControlPosition(e) {\n    return offsetXYFromParentOf(e);\n}\n\n\n// Get from offsetParent\nexport function offsetXYFromParentOf(evt) {\n    const offsetParent = evt.target.offsetParent || document.body;\n    const offsetParentRect = evt.offsetParent === document.body ? {left: 0, top: 0} : offsetParent.getBoundingClientRect();\n\n    const x = evt.clientX + offsetParent.scrollLeft - offsetParentRect.left;\n    const y = evt.clientY + offsetParent.scrollTop - offsetParentRect.top;\n\n    /*const x = Math.round(evt.clientX + offsetParent.scrollLeft - offsetParentRect.left);\n    const y = Math.round(evt.clientY + offsetParent.scrollTop - offsetParentRect.top);*/\n\n\n    return {x, y};\n}\n\n\n// Create an data object exposed by <DraggableCore>'s events\nexport function createCoreData(lastX, lastY, x, y) {\n    // State changes are often (but not always!) async. We want the latest value.\n    const isStart = !isNum(lastX);\n\n    if (isStart) {\n        // If this is our first move, use the x and y as last coords.\n        return {\n            deltaX: 0, deltaY: 0,\n            lastX: x, lastY: y,\n            x: x, y: y\n        };\n    } else {\n        // Otherwise calculate proper values.\n        return {\n            deltaX: x - lastX, deltaY: y - lastY,\n            lastX: lastX, lastY: lastY,\n            x: x, y: y\n        };\n    }\n}\n\n\nfunction isNum(num)  {\n    return typeof num === 'number' && !isNaN(num);\n}\n\n","// @flow\n\nimport {cloneLayout, compact, correctBounds} from './utils';\n\nimport type {Layout} from './utils';\nexport type ResponsiveLayout = {lg?: Layout, md?: Layout, sm?: Layout, xs?: Layout, xxs?: Layout};\ntype Breakpoint = string;\ntype Breakpoints = {lg?: number, md?: number, sm?: number, xs?: number, xxs?: number};\n\n/**\n * Given a width, find the highest breakpoint that matches is valid for it (width > breakpoint).\n *\n * @param  {Object} breakpoints Breakpoints object (e.g. {lg: 1200, md: 960, ...})\n * @param  {Number} width Screen width.\n * @return {String}       Highest breakpoint that is less than width.\n */\nexport function getBreakpointFromWidth(breakpoints: Breakpoints, width: number): Breakpoint {\n  const sorted = sortBreakpoints(breakpoints);\n  let matching = sorted[0];\n  for (let i = 1, len = sorted.length; i < len; i++) {\n    const breakpointName = sorted[i];\n    if (width > breakpoints[breakpointName]) matching = breakpointName;\n  }\n  return matching;\n}\n\n\n/**\n * Given a breakpoint, get the # of cols set for it.\n * @param  {String} breakpoint Breakpoint name.\n * @param  {Object} cols       Map of breakpoints to cols.\n * @return {Number}            Number of cols.\n */\nexport function getColsFromBreakpoint(breakpoint: Breakpoint, cols: Breakpoints): number {\n  if (!cols[breakpoint]) {\n    throw new Error(\"ResponsiveGridLayout: `cols` entry for breakpoint \" + breakpoint + \" is missing!\");\n  }\n  return cols[breakpoint];\n}\n\n/**\n * Given existing layouts and a new breakpoint, find or generate a new layout.\n *\n * This finds the layout above the new one and generates from it, if it exists.\n *\n * @param  {Array} orgLayout     Original layout.\n * @param  {Object} layouts     Existing layouts.\n * @param  {Array} breakpoints All breakpoints.\n * @param  {String} breakpoint New breakpoint.\n * @param  {String} breakpoint Last breakpoint (for fallback).\n * @param  {Number} cols       Column count at new breakpoint.\n * @param  {Boolean} verticalCompact Whether or not to compact the layout\n *   vertically.\n * @return {Array}             New layout.\n */\nexport function findOrGenerateResponsiveLayout(orgLayout: Layout, layouts: ResponsiveLayout, breakpoints: Breakpoints,\n                                               breakpoint: Breakpoint, lastBreakpoint: Breakpoint,\n                                               cols: number, verticalCompact: boolean): Layout {\n  // If it already exists, just return it.\n  if (layouts[breakpoint]) return cloneLayout(layouts[breakpoint]);\n  // Find or generate the next layout\n  let layout = orgLayout;\n\n  const breakpointsSorted = sortBreakpoints(breakpoints);\n  const breakpointsAbove = breakpointsSorted.slice(breakpointsSorted.indexOf(breakpoint));\n  for (let i = 0, len = breakpointsAbove.length; i < len; i++) {\n    const b = breakpointsAbove[i];\n    if (layouts[b]) {\n      layout = layouts[b];\n      break;\n    }\n  }\n  layout = cloneLayout(layout || []); // clone layout so we don't modify existing items\n  return compact(correctBounds(layout, {cols: cols}), verticalCompact);\n}\n\nexport function generateResponsiveLayout(layout: Layout, breakpoints: Breakpoints,\n                                               breakpoint: Breakpoint, lastBreakpoint: Breakpoint,\n                                               cols: number, verticalCompact: boolean): Layout {\n  // If it already exists, just return it.\n  /*if (layouts[breakpoint]) return cloneLayout(layouts[breakpoint]);\n  // Find or generate the next layout\n  let layout = layouts[lastBreakpoint];*/\n    /*const breakpointsSorted = sortBreakpoints(breakpoints);\n  const breakpointsAbove = breakpointsSorted.slice(breakpointsSorted.indexOf(breakpoint));\n  for (let i = 0, len = breakpointsAbove.length; i < len; i++) {\n    const b = breakpointsAbove[i];\n    if (layouts[b]) {\n      layout = layouts[b];\n      break;\n    }\n  }*/\n  layout = cloneLayout(layout || []); // clone layout so we don't modify existing items\n  return compact(correctBounds(layout, {cols: cols}), verticalCompact);\n}\n\n/**\n * Given breakpoints, return an array of breakpoints sorted by width. This is usually\n * e.g. ['xxs', 'xs', 'sm', ...]\n *\n * @param  {Object} breakpoints Key/value pair of breakpoint names to widths.\n * @return {Array}              Sorted breakpoints.\n */\nexport function sortBreakpoints(breakpoints: Breakpoints): Array<Breakpoint> {\n  const keys: Array<string> = Object.keys(breakpoints);\n  return keys.sort(function(a, b) {\n    return breakpoints[a] - breakpoints[b];\n  });\n}\n","let currentDir: \"ltr\" | \"rtl\" | \"auto\"  = \"auto\";\n// let currentDir = \"auto\";\n\nfunction hasDocument(){\n    return (typeof document !== \"undefined\");\n}\n\nfunction hasWindow(){\n    return (typeof window !== \"undefined\");\n}\n\nexport function getDocumentDir(){\n    if(!hasDocument()){\n        return currentDir;\n    }\n    const direction = (typeof document.dir !== \"undefined\") ?\n        document.dir :\n        document.getElementsByTagName(\"html\")[0].getAttribute(\"dir\");\n    return direction;\n}\n\nexport function setDocumentDir(dir: \"ltr\" | \"rtl\" | \"auto\"){\n// export function setDocumentDir(dir){\n    if(!hasDocument){\n        currentDir = dir;\n        return;\n    }\n\n    const html = document.getElementsByTagName(\"html\")[0];\n    html.setAttribute(\"dir\", dir);\n}\n\nexport function addWindowEventListener(event:string, callback: () => mixed){\n    if(!hasWindow){\n\n        callback();\n        return;\n    }\n    window.addEventListener(event, callback);\n}\n\nexport function removeWindowEventListener(event:string, callback: () => mixed){\n    if(!hasWindow){\n        return;\n    }\n    window.removeEventListener(event, callback);\n}\n\n\n\n","const domObjects = {\n  init,\n  document: null,\n  DocumentFragment: null,\n  SVGElement: null,\n  SVGSVGElement: null,\n  SVGElementInstance: null,\n  Element: null,\n  HTMLElement: null,\n  Event: null,\n  Touch: null,\n  PointerEvent: null\n};\n\nfunction blank() {}\n\nexport default domObjects;\n\nfunction init(window) {\n  const win = window;\n  domObjects.document = win.document;\n  domObjects.DocumentFragment = win.DocumentFragment || blank;\n  domObjects.SVGElement = win.SVGElement || blank;\n  domObjects.SVGSVGElement = win.SVGSVGElement || blank;\n  domObjects.SVGElementInstance = win.SVGElementInstance || blank;\n  domObjects.Element = win.Element || blank;\n  domObjects.HTMLElement = win.HTMLElement || domObjects.Element;\n  domObjects.Event = win.Event;\n  domObjects.Touch = win.Touch || blank;\n  domObjects.PointerEvent = win.PointerEvent || win.MSPointerEvent;\n}\n//# sourceMappingURL=domObjects.js.map","export default (thing => !!(thing && thing.Window) && thing instanceof thing.Window);\n//# sourceMappingURL=isWindow.js.map","import isWindow from \"./isWindow.js\";\nexport let realWindow = undefined;\nlet win = undefined;\nexport { win as window };\nexport function init(window) {\n  // get wrapped window if using Shadow DOM polyfill\n  realWindow = window; // create a TextNode\n\n  const el = window.document.createTextNode(''); // check if it's wrapped by a polyfill\n\n  if (el.ownerDocument !== window.document && typeof window.wrap === 'function' && window.wrap(el) === el) {\n    // use wrapped window\n    window = window.wrap(window);\n  }\n\n  win = window;\n}\n\nif (typeof window !== 'undefined' && !!window) {\n  init(window);\n}\n\nexport function getWindow(node) {\n  if (isWindow(node)) {\n    return node;\n  }\n\n  const rootNode = node.ownerDocument || node;\n  return rootNode.defaultView || win.window;\n}\n//# sourceMappingURL=window.js.map","import isWindow from \"./isWindow.js\";\nimport * as win from \"./window.js\";\n\nconst window = thing => thing === win.window || isWindow(thing);\n\nconst docFrag = thing => object(thing) && thing.nodeType === 11;\n\nconst object = thing => !!thing && typeof thing === 'object';\n\nconst func = thing => typeof thing === 'function';\n\nconst number = thing => typeof thing === 'number';\n\nconst bool = thing => typeof thing === 'boolean';\n\nconst string = thing => typeof thing === 'string';\n\nconst element = thing => {\n  if (!thing || typeof thing !== 'object') {\n    return false;\n  } // eslint-disable-next-line import/no-named-as-default-member\n\n\n  const _window = win.getWindow(thing) || win.window;\n\n  return /object|function/.test(typeof _window.Element) ? thing instanceof _window.Element // DOM2\n  : thing.nodeType === 1 && typeof thing.nodeName === 'string';\n};\n\nconst plainObject = thing => object(thing) && !!thing.constructor && /function Object\\b/.test(thing.constructor.toString());\n\nconst array = thing => object(thing) && typeof thing.length !== 'undefined' && func(thing.splice);\n\nexport default {\n  window,\n  docFrag,\n  object,\n  func,\n  number,\n  bool,\n  string,\n  element,\n  plainObject,\n  array\n};\n//# sourceMappingURL=is.js.map","import domObjects from \"./domObjects.js\";\nimport is from \"./is.js\";\nimport * as win from \"./window.js\";\nconst browser = {\n  init,\n  supportsTouch: null,\n  supportsPointerEvent: null,\n  isIOS7: null,\n  isIOS: null,\n  isIe9: null,\n  isOperaMobile: null,\n  prefixedMatchesSelector: null,\n  pEventTypes: null,\n  wheelEvent: null\n};\n\nfunction init(window) {\n  const Element = domObjects.Element;\n  const navigator = win.window.navigator; // Does the browser support touch input?\n\n  browser.supportsTouch = 'ontouchstart' in window || is.func(window.DocumentTouch) && domObjects.document instanceof window.DocumentTouch; // Does the browser support PointerEvents\n\n  browser.supportsPointerEvent = navigator.pointerEnabled !== false && !!domObjects.PointerEvent;\n  browser.isIOS = /iP(hone|od|ad)/.test(navigator.platform); // scrolling doesn't change the result of getClientRects on iOS 7\n\n  browser.isIOS7 = /iP(hone|od|ad)/.test(navigator.platform) && /OS 7[^\\d]/.test(navigator.appVersion);\n  browser.isIe9 = /MSIE 9/.test(navigator.userAgent); // Opera Mobile must be handled differently\n\n  browser.isOperaMobile = navigator.appName === 'Opera' && browser.supportsTouch && /Presto/.test(navigator.userAgent); // prefix matchesSelector\n\n  browser.prefixedMatchesSelector = 'matches' in Element.prototype ? 'matches' : 'webkitMatchesSelector' in Element.prototype ? 'webkitMatchesSelector' : 'mozMatchesSelector' in Element.prototype ? 'mozMatchesSelector' : 'oMatchesSelector' in Element.prototype ? 'oMatchesSelector' : 'msMatchesSelector';\n  browser.pEventTypes = browser.supportsPointerEvent ? domObjects.PointerEvent === window.MSPointerEvent ? {\n    up: 'MSPointerUp',\n    down: 'MSPointerDown',\n    over: 'mouseover',\n    out: 'mouseout',\n    move: 'MSPointerMove',\n    cancel: 'MSPointerCancel'\n  } : {\n    up: 'pointerup',\n    down: 'pointerdown',\n    over: 'pointerover',\n    out: 'pointerout',\n    move: 'pointermove',\n    cancel: 'pointercancel'\n  } : null; // because Webkit and Opera still use 'mousewheel' event type\n\n  browser.wheelEvent = 'onmousewheel' in domObjects.document ? 'mousewheel' : 'wheel';\n}\n\nexport default browser;\n//# sourceMappingURL=browser.js.map","export const contains = (array, target) => array.indexOf(target) !== -1;\nexport const remove = (array, target) => array.splice(array.indexOf(target), 1);\nexport const merge = (target, source) => {\n  for (const item of source) {\n    target.push(item);\n  }\n\n  return target;\n};\nexport const from = source => merge([], source);\nexport const findIndex = (array, func) => {\n  for (let i = 0; i < array.length; i++) {\n    if (func(array[i], i, array)) {\n      return i;\n    }\n  }\n\n  return -1;\n};\nexport const find = (array, func) => array[findIndex(array, func)];\n//# sourceMappingURL=arr.js.map","import * as arr from \"./arr.js\";\nimport is from \"./is.js\"; // tslint:disable-next-line ban-types\n\nexport default function clone(source) {\n  const dest = {};\n\n  for (const prop in source) {\n    const value = source[prop];\n\n    if (is.plainObject(value)) {\n      dest[prop] = clone(value);\n    } else if (is.array(value)) {\n      dest[prop] = arr.from(value);\n    } else {\n      dest[prop] = value;\n    }\n  }\n\n  return dest;\n}\n//# sourceMappingURL=clone.js.map","export default function extend(dest, source) {\n  for (const prop in source) {\n    dest[prop] = source[prop];\n  }\n\n  const ret = dest;\n  return ret;\n}\n//# sourceMappingURL=extend.js.map","let lastTime = 0;\nlet request;\nlet cancel;\n\nfunction init(window) {\n  request = window.requestAnimationFrame;\n  cancel = window.cancelAnimationFrame;\n\n  if (!request) {\n    const vendors = ['ms', 'moz', 'webkit', 'o'];\n\n    for (const vendor of vendors) {\n      request = window[`${vendor}RequestAnimationFrame`];\n      cancel = window[`${vendor}CancelAnimationFrame`] || window[`${vendor}CancelRequestAnimationFrame`];\n    }\n  }\n\n  request = request && request.bind(window);\n  cancel = cancel && cancel.bind(window);\n\n  if (!request) {\n    request = callback => {\n      const currTime = Date.now();\n      const timeToCall = Math.max(0, 16 - (currTime - lastTime)); // eslint-disable-next-line node/no-callback-literal\n\n      const token = window.setTimeout(() => {\n        callback(currTime + timeToCall);\n      }, timeToCall);\n      lastTime = currTime + timeToCall;\n      return token;\n    };\n\n    cancel = token => clearTimeout(token);\n  }\n}\n\nexport default {\n  request: callback => request(callback),\n  cancel: token => cancel(token),\n  init\n};\n//# sourceMappingURL=raf.js.map","import extend from \"./extend.js\";\nimport is from \"./is.js\";\nexport default function normalize(type, listeners, result) {\n  result = result || {};\n\n  if (is.string(type) && type.search(' ') !== -1) {\n    type = split(type);\n  }\n\n  if (is.array(type)) {\n    return type.reduce((acc, t) => extend(acc, normalize(t, listeners, result)), result);\n  } // ({ type: fn }) -> ('', { type: fn })\n\n\n  if (is.object(type)) {\n    listeners = type;\n    type = '';\n  }\n\n  if (is.func(listeners)) {\n    result[type] = result[type] || [];\n    result[type].push(listeners);\n  } else if (is.array(listeners)) {\n    for (const l of listeners) {\n      normalize(type, l, result);\n    }\n  } else if (is.object(listeners)) {\n    for (const prefix in listeners) {\n      const combinedTypes = split(prefix).map(p => `${type}${p}`);\n      normalize(combinedTypes, listeners[prefix], result);\n    }\n  }\n\n  return result;\n}\n\nfunction split(type) {\n  return type.trim().split(/ +/);\n}\n//# sourceMappingURL=normalizeListeners.js.map","import * as arr from \"../utils/arr.js\";\nimport extend from \"../utils/extend.js\";\nimport normalize from \"../utils/normalizeListeners.js\";\n\nfunction fireUntilImmediateStopped(event, listeners) {\n  for (const listener of listeners) {\n    if (event.immediatePropagationStopped) {\n      break;\n    }\n\n    listener(event);\n  }\n}\n\nexport class Eventable {\n  constructor(options) {\n    this.options = void 0;\n    this.types = {};\n    this.propagationStopped = false;\n    this.immediatePropagationStopped = false;\n    this.global = void 0;\n    this.options = extend({}, options || {});\n  }\n\n  fire(event) {\n    let listeners;\n    const global = this.global; // Interactable#on() listeners\n    // tslint:disable no-conditional-assignment\n\n    if (listeners = this.types[event.type]) {\n      fireUntilImmediateStopped(event, listeners);\n    } // interact.on() listeners\n\n\n    if (!event.propagationStopped && global && (listeners = global[event.type])) {\n      fireUntilImmediateStopped(event, listeners);\n    }\n  }\n\n  on(type, listener) {\n    const listeners = normalize(type, listener);\n\n    for (type in listeners) {\n      this.types[type] = arr.merge(this.types[type] || [], listeners[type]);\n    }\n  }\n\n  off(type, listener) {\n    const listeners = normalize(type, listener);\n\n    for (type in listeners) {\n      const eventList = this.types[type];\n\n      if (!eventList || !eventList.length) {\n        continue;\n      }\n\n      for (const subListener of listeners[type]) {\n        const index = eventList.indexOf(subListener);\n\n        if (index !== -1) {\n          eventList.splice(index, 1);\n        }\n      }\n    }\n  }\n\n  getRect(_element) {\n    return null;\n  }\n\n}\n//# sourceMappingURL=Eventable.js.map","import browser from \"./browser.js\";\nimport domObjects from \"./domObjects.js\";\nimport is from \"./is.js\";\nimport * as win from \"./window.js\";\nexport function nodeContains(parent, child) {\n  if (parent.contains) {\n    return parent.contains(child);\n  }\n\n  while (child) {\n    if (child === parent) {\n      return true;\n    }\n\n    child = child.parentNode;\n  }\n\n  return false;\n}\nexport function closest(element, selector) {\n  while (is.element(element)) {\n    if (matchesSelector(element, selector)) {\n      return element;\n    }\n\n    element = parentNode(element);\n  }\n\n  return null;\n}\nexport function parentNode(node) {\n  let parent = node.parentNode;\n\n  if (is.docFrag(parent)) {\n    // skip past #shado-root fragments\n    // tslint:disable-next-line\n    while ((parent = parent.host) && is.docFrag(parent)) {\n      continue;\n    }\n\n    return parent;\n  }\n\n  return parent;\n}\nexport function matchesSelector(element, selector) {\n  // remove /deep/ from selectors if shadowDOM polyfill is used\n  if (win.window !== win.realWindow) {\n    selector = selector.replace(/\\/deep\\//g, ' ');\n  }\n\n  return element[browser.prefixedMatchesSelector](selector);\n}\n\nconst getParent = el => el.parentNode || el.host; // Test for the element that's \"above\" all other qualifiers\n\n\nexport function indexOfDeepestElement(elements) {\n  let deepestNodeParents = [];\n  let deepestNodeIndex;\n\n  for (let i = 0; i < elements.length; i++) {\n    const currentNode = elements[i];\n    const deepestNode = elements[deepestNodeIndex]; // node may appear in elements array multiple times\n\n    if (!currentNode || i === deepestNodeIndex) {\n      continue;\n    }\n\n    if (!deepestNode) {\n      deepestNodeIndex = i;\n      continue;\n    }\n\n    const currentNodeParent = getParent(currentNode);\n    const deepestNodeParent = getParent(deepestNode); // check if the deepest or current are document.documentElement/rootElement\n    // - if the current node is, do nothing and continue\n\n    if (currentNodeParent === currentNode.ownerDocument) {\n      continue;\n    } // - if deepest is, update with the current node and continue to next\n    else if (deepestNodeParent === currentNode.ownerDocument) {\n        deepestNodeIndex = i;\n        continue;\n      } // compare zIndex of siblings\n\n\n    if (currentNodeParent === deepestNodeParent) {\n      if (zIndexIsHigherThan(currentNode, deepestNode)) {\n        deepestNodeIndex = i;\n      }\n\n      continue;\n    } // populate the ancestry array for the latest deepest node\n\n\n    deepestNodeParents = deepestNodeParents.length ? deepestNodeParents : getNodeParents(deepestNode);\n    let ancestryStart; // if the deepest node is an HTMLElement and the current node is a non root svg element\n\n    if (deepestNode instanceof domObjects.HTMLElement && currentNode instanceof domObjects.SVGElement && !(currentNode instanceof domObjects.SVGSVGElement)) {\n      // TODO: is this check necessary? Was this for HTML elements embedded in SVG?\n      if (currentNode === deepestNodeParent) {\n        continue;\n      }\n\n      ancestryStart = currentNode.ownerSVGElement;\n    } else {\n      ancestryStart = currentNode;\n    }\n\n    const currentNodeParents = getNodeParents(ancestryStart, deepestNode.ownerDocument);\n    let commonIndex = 0; // get (position of closest common ancestor) + 1\n\n    while (currentNodeParents[commonIndex] && currentNodeParents[commonIndex] === deepestNodeParents[commonIndex]) {\n      commonIndex++;\n    }\n\n    const parents = [currentNodeParents[commonIndex - 1], currentNodeParents[commonIndex], deepestNodeParents[commonIndex]];\n    let child = parents[0].lastChild;\n\n    while (child) {\n      if (child === parents[1]) {\n        deepestNodeIndex = i;\n        deepestNodeParents = currentNodeParents;\n        break;\n      } else if (child === parents[2]) {\n        break;\n      }\n\n      child = child.previousSibling;\n    }\n  }\n\n  return deepestNodeIndex;\n}\n\nfunction getNodeParents(node, limit) {\n  const parents = [];\n  let parent = node;\n  let parentParent;\n\n  while ((parentParent = getParent(parent)) && parent !== limit && parentParent !== parent.ownerDocument) {\n    parents.unshift(parent);\n    parent = parentParent;\n  }\n\n  return parents;\n}\n\nfunction zIndexIsHigherThan(higherNode, lowerNode) {\n  const higherIndex = parseInt(win.getWindow(higherNode).getComputedStyle(higherNode).zIndex, 10) || 0;\n  const lowerIndex = parseInt(win.getWindow(lowerNode).getComputedStyle(lowerNode).zIndex, 10) || 0;\n  return higherIndex >= lowerIndex;\n}\n\nexport function matchesUpTo(element, selector, limit) {\n  while (is.element(element)) {\n    if (matchesSelector(element, selector)) {\n      return true;\n    }\n\n    element = parentNode(element);\n\n    if (element === limit) {\n      return matchesSelector(element, selector);\n    }\n  }\n\n  return false;\n}\nexport function getActualElement(element) {\n  return element.correspondingUseElement || element;\n}\nexport function getScrollXY(relevantWindow) {\n  relevantWindow = relevantWindow || win.window;\n  return {\n    x: relevantWindow.scrollX || relevantWindow.document.documentElement.scrollLeft,\n    y: relevantWindow.scrollY || relevantWindow.document.documentElement.scrollTop\n  };\n}\nexport function getElementClientRect(element) {\n  const clientRect = element instanceof domObjects.SVGElement ? element.getBoundingClientRect() : element.getClientRects()[0];\n  return clientRect && {\n    left: clientRect.left,\n    right: clientRect.right,\n    top: clientRect.top,\n    bottom: clientRect.bottom,\n    width: clientRect.width || clientRect.right - clientRect.left,\n    height: clientRect.height || clientRect.bottom - clientRect.top\n  };\n}\nexport function getElementRect(element) {\n  const clientRect = getElementClientRect(element);\n\n  if (!browser.isIOS7 && clientRect) {\n    const scroll = getScrollXY(win.getWindow(element));\n    clientRect.left += scroll.x;\n    clientRect.right += scroll.x;\n    clientRect.top += scroll.y;\n    clientRect.bottom += scroll.y;\n  }\n\n  return clientRect;\n}\nexport function getPath(node) {\n  const path = [];\n\n  while (node) {\n    path.push(node);\n    node = parentNode(node);\n  }\n\n  return path;\n}\nexport function trySelector(value) {\n  if (!is.string(value)) {\n    return false;\n  } // an exception will be raised if it is invalid\n\n\n  domObjects.document.querySelector(value);\n  return true;\n}\n//# sourceMappingURL=domUtils.js.map","import { closest, getElementRect, parentNode } from \"./domUtils.js\";\nimport extend from \"./extend.js\";\nimport is from \"./is.js\";\nexport function getStringOptionResult(value, target, element) {\n  if (value === 'parent') {\n    return parentNode(element);\n  }\n\n  if (value === 'self') {\n    return target.getRect(element);\n  }\n\n  return closest(element, value);\n}\nexport function resolveRectLike(value, target, element, functionArgs) {\n  let returnValue = value;\n\n  if (is.string(returnValue)) {\n    returnValue = getStringOptionResult(returnValue, target, element);\n  } else if (is.func(returnValue)) {\n    returnValue = returnValue(...functionArgs);\n  }\n\n  if (is.element(returnValue)) {\n    returnValue = getElementRect(returnValue);\n  }\n\n  return returnValue;\n}\nexport function rectToXY(rect) {\n  return rect && {\n    x: 'x' in rect ? rect.x : rect.left,\n    y: 'y' in rect ? rect.y : rect.top\n  };\n}\nexport function xywhToTlbr(rect) {\n  if (rect && !('left' in rect && 'top' in rect)) {\n    rect = extend({}, rect);\n    rect.left = rect.x || 0;\n    rect.top = rect.y || 0;\n    rect.right = rect.right || rect.left + rect.width;\n    rect.bottom = rect.bottom || rect.top + rect.height;\n  }\n\n  return rect;\n}\nexport function tlbrToXywh(rect) {\n  if (rect && !('x' in rect && 'y' in rect)) {\n    rect = extend({}, rect);\n    rect.x = rect.left || 0;\n    rect.y = rect.top || 0;\n    rect.width = rect.width || (rect.right || 0) - rect.x;\n    rect.height = rect.height || (rect.bottom || 0) - rect.y;\n  }\n\n  return rect;\n}\nexport function addEdges(edges, rect, delta) {\n  if (edges.left) {\n    rect.left += delta.x;\n  }\n\n  if (edges.right) {\n    rect.right += delta.x;\n  }\n\n  if (edges.top) {\n    rect.top += delta.y;\n  }\n\n  if (edges.bottom) {\n    rect.bottom += delta.y;\n  }\n\n  rect.width = rect.right - rect.left;\n  rect.height = rect.bottom - rect.top;\n}\n//# sourceMappingURL=rect.js.map","import { rectToXY, resolveRectLike } from \"./rect.js\";\nexport default function (target, element, actionName) {\n  const actionOptions = target.options[actionName];\n  const actionOrigin = actionOptions && actionOptions.origin;\n  const origin = actionOrigin || target.options.origin;\n  const originRect = resolveRectLike(origin, target, element, [target && element]);\n  return rectToXY(originRect) || {\n    x: 0,\n    y: 0\n  };\n}\n//# sourceMappingURL=getOriginXY.js.map","export default ((x, y) => Math.sqrt(x * x + y * y));\n//# sourceMappingURL=hypot.js.map","export class BaseEvent {\n  constructor(interaction) {\n    this.type = void 0;\n    this.target = void 0;\n    this.currentTarget = void 0;\n    this.interactable = void 0;\n    this._interaction = void 0;\n    this.timeStamp = void 0;\n    this.immediatePropagationStopped = false;\n    this.propagationStopped = false;\n    this._interaction = interaction;\n  }\n\n  preventDefault() {}\n  /**\n   * Don't call any other listeners (even on the current target)\n   */\n\n\n  stopPropagation() {\n    this.propagationStopped = true;\n  }\n  /**\n   * Don't call listeners on the remaining targets\n   */\n\n\n  stopImmediatePropagation() {\n    this.immediatePropagationStopped = this.propagationStopped = true;\n  }\n\n} // defined outside of class definition to avoid assignment of undefined during\n// construction\n\n// getters and setters defined here to support typescript 3.6 and below which\n// don't support getter and setters in .d.ts files\nObject.defineProperty(BaseEvent.prototype, 'interaction', {\n  get() {\n    return this._interaction._proxy;\n  },\n\n  set() {}\n\n});\n//# sourceMappingURL=BaseEvent.js.map","// eslint-disable-next-line @typescript-eslint/no-empty-interface\n// export interface Options extends BaseDefaults, PerActionDefaults {}\nexport const defaults = {\n  base: {\n    preventDefault: 'auto',\n    deltaSource: 'page'\n  },\n  perAction: {\n    enabled: false,\n    origin: {\n      x: 0,\n      y: 0\n    }\n  },\n  actions: {}\n};\n//# sourceMappingURL=defaultOptions.js.map","import extend from \"../utils/extend.js\";\nimport getOriginXY from \"../utils/getOriginXY.js\";\nimport hypot from \"../utils/hypot.js\";\nimport { BaseEvent } from \"./BaseEvent.js\";\nimport { defaults } from \"./defaultOptions.js\";\nexport class InteractEvent extends BaseEvent {\n  // resize\n\n  /** */\n  constructor(interaction, event, actionName, phase, element, preEnd, type) {\n    super(interaction);\n    this.target = void 0;\n    this.currentTarget = void 0;\n    this.relatedTarget = null;\n    this.screenX = void 0;\n    this.screenY = void 0;\n    this.button = void 0;\n    this.buttons = void 0;\n    this.ctrlKey = void 0;\n    this.shiftKey = void 0;\n    this.altKey = void 0;\n    this.metaKey = void 0;\n    this.page = void 0;\n    this.client = void 0;\n    this.delta = void 0;\n    this.rect = void 0;\n    this.x0 = void 0;\n    this.y0 = void 0;\n    this.t0 = void 0;\n    this.dt = void 0;\n    this.duration = void 0;\n    this.clientX0 = void 0;\n    this.clientY0 = void 0;\n    this.velocity = void 0;\n    this.speed = void 0;\n    this.swipe = void 0;\n    this.timeStamp = void 0;\n    this.axes = void 0;\n    this.preEnd = void 0;\n    element = element || interaction.element;\n    const target = interaction.interactable;\n    const deltaSource = (target && target.options || defaults).deltaSource;\n    const origin = getOriginXY(target, element, actionName);\n    const starting = phase === 'start';\n    const ending = phase === 'end';\n    const prevEvent = starting ? this : interaction.prevEvent;\n    const coords = starting ? interaction.coords.start : ending ? {\n      page: prevEvent.page,\n      client: prevEvent.client,\n      timeStamp: interaction.coords.cur.timeStamp\n    } : interaction.coords.cur;\n    this.page = extend({}, coords.page);\n    this.client = extend({}, coords.client);\n    this.rect = extend({}, interaction.rect);\n    this.timeStamp = coords.timeStamp;\n\n    if (!ending) {\n      this.page.x -= origin.x;\n      this.page.y -= origin.y;\n      this.client.x -= origin.x;\n      this.client.y -= origin.y;\n    }\n\n    this.ctrlKey = event.ctrlKey;\n    this.altKey = event.altKey;\n    this.shiftKey = event.shiftKey;\n    this.metaKey = event.metaKey;\n    this.button = event.button;\n    this.buttons = event.buttons;\n    this.target = element;\n    this.currentTarget = element;\n    this.preEnd = preEnd;\n    this.type = type || actionName + (phase || '');\n    this.interactable = target;\n    this.t0 = starting ? interaction.pointers[interaction.pointers.length - 1].downTime : prevEvent.t0;\n    this.x0 = interaction.coords.start.page.x - origin.x;\n    this.y0 = interaction.coords.start.page.y - origin.y;\n    this.clientX0 = interaction.coords.start.client.x - origin.x;\n    this.clientY0 = interaction.coords.start.client.y - origin.y;\n\n    if (starting || ending) {\n      this.delta = {\n        x: 0,\n        y: 0\n      };\n    } else {\n      this.delta = {\n        x: this[deltaSource].x - prevEvent[deltaSource].x,\n        y: this[deltaSource].y - prevEvent[deltaSource].y\n      };\n    }\n\n    this.dt = interaction.coords.delta.timeStamp;\n    this.duration = this.timeStamp - this.t0; // velocity and speed in pixels per second\n\n    this.velocity = extend({}, interaction.coords.velocity[deltaSource]);\n    this.speed = hypot(this.velocity.x, this.velocity.y);\n    this.swipe = ending || phase === 'inertiastart' ? this.getSwipe() : null;\n  }\n\n  getSwipe() {\n    const interaction = this._interaction;\n\n    if (interaction.prevEvent.speed < 600 || this.timeStamp - interaction.prevEvent.timeStamp > 150) {\n      return null;\n    }\n\n    let angle = 180 * Math.atan2(interaction.prevEvent.velocityY, interaction.prevEvent.velocityX) / Math.PI;\n    const overlap = 22.5;\n\n    if (angle < 0) {\n      angle += 360;\n    }\n\n    const left = 135 - overlap <= angle && angle < 225 + overlap;\n    const up = 225 - overlap <= angle && angle < 315 + overlap;\n    const right = !left && (315 - overlap <= angle || angle < 45 + overlap);\n    const down = !up && 45 - overlap <= angle && angle < 135 + overlap;\n    return {\n      up,\n      down,\n      left,\n      right,\n      angle,\n      speed: interaction.prevEvent.speed,\n      velocity: {\n        x: interaction.prevEvent.velocityX,\n        y: interaction.prevEvent.velocityY\n      }\n    };\n  }\n\n  preventDefault() {}\n  /**\n   * Don't call listeners on the remaining targets\n   */\n\n\n  stopImmediatePropagation() {\n    this.immediatePropagationStopped = this.propagationStopped = true;\n  }\n  /**\n   * Don't call any other listeners (even on the current target)\n   */\n\n\n  stopPropagation() {\n    this.propagationStopped = true;\n  }\n\n} // getters and setters defined here to support typescript 3.6 and below which\n// don't support getter and setters in .d.ts files\n\nObject.defineProperties(InteractEvent.prototype, {\n  pageX: {\n    get() {\n      return this.page.x;\n    },\n\n    set(value) {\n      this.page.x = value;\n    }\n\n  },\n  pageY: {\n    get() {\n      return this.page.y;\n    },\n\n    set(value) {\n      this.page.y = value;\n    }\n\n  },\n  clientX: {\n    get() {\n      return this.client.x;\n    },\n\n    set(value) {\n      this.client.x = value;\n    }\n\n  },\n  clientY: {\n    get() {\n      return this.client.y;\n    },\n\n    set(value) {\n      this.client.y = value;\n    }\n\n  },\n  dx: {\n    get() {\n      return this.delta.x;\n    },\n\n    set(value) {\n      this.delta.x = value;\n    }\n\n  },\n  dy: {\n    get() {\n      return this.delta.y;\n    },\n\n    set(value) {\n      this.delta.y = value;\n    }\n\n  },\n  velocityX: {\n    get() {\n      return this.velocity.x;\n    },\n\n    set(value) {\n      this.velocity.x = value;\n    }\n\n  },\n  velocityY: {\n    get() {\n      return this.velocity.y;\n    },\n\n    set(value) {\n      this.velocity.y = value;\n    }\n\n  }\n});\n//# sourceMappingURL=InteractEvent.js.map","export default function isNonNativeEvent(type, actions) {\n  if (actions.phaselessTypes[type]) {\n    return true;\n  }\n\n  for (const name in actions.map) {\n    if (type.indexOf(name) === 0 && type.substr(name.length) in actions.phases) {\n      return true;\n    }\n  }\n\n  return false;\n}\n//# sourceMappingURL=isNonNativeEvent.js.map","/* eslint-disable no-dupe-class-members */\nimport * as arr from \"../utils/arr.js\";\nimport browser from \"../utils/browser.js\";\nimport clone from \"../utils/clone.js\";\nimport { getElementRect, matchesUpTo, nodeContains, trySelector } from \"../utils/domUtils.js\";\nimport extend from \"../utils/extend.js\";\nimport is from \"../utils/is.js\";\nimport normalizeListeners from \"../utils/normalizeListeners.js\";\nimport { getWindow } from \"../utils/window.js\";\nimport { Eventable } from \"./Eventable.js\";\nimport isNonNativeEvent from \"./isNonNativeEvent.js\";\n\n/** */\nexport class Interactable {\n  /** @internal */\n  get _defaults() {\n    return {\n      base: {},\n      perAction: {},\n      actions: {}\n    };\n  }\n\n  /** */\n  constructor(target, options, defaultContext, scopeEvents) {\n    this.options = void 0;\n    this._actions = void 0;\n    this.target = void 0;\n    this.events = new Eventable();\n    this._context = void 0;\n    this._win = void 0;\n    this._doc = void 0;\n    this._scopeEvents = void 0;\n    this._rectChecker = void 0;\n    this._actions = options.actions;\n    this.target = target;\n    this._context = options.context || defaultContext;\n    this._win = getWindow(trySelector(target) ? this._context : target);\n    this._doc = this._win.document;\n    this._scopeEvents = scopeEvents;\n    this.set(options);\n  }\n\n  setOnEvents(actionName, phases) {\n    if (is.func(phases.onstart)) {\n      this.on(`${actionName}start`, phases.onstart);\n    }\n\n    if (is.func(phases.onmove)) {\n      this.on(`${actionName}move`, phases.onmove);\n    }\n\n    if (is.func(phases.onend)) {\n      this.on(`${actionName}end`, phases.onend);\n    }\n\n    if (is.func(phases.oninertiastart)) {\n      this.on(`${actionName}inertiastart`, phases.oninertiastart);\n    }\n\n    return this;\n  }\n\n  updatePerActionListeners(actionName, prev, cur) {\n    if (is.array(prev) || is.object(prev)) {\n      this.off(actionName, prev);\n    }\n\n    if (is.array(cur) || is.object(cur)) {\n      this.on(actionName, cur);\n    }\n  }\n\n  setPerAction(actionName, options) {\n    const defaults = this._defaults; // for all the default per-action options\n\n    for (const optionName_ in options) {\n      const optionName = optionName_;\n      const actionOptions = this.options[actionName];\n      const optionValue = options[optionName]; // remove old event listeners and add new ones\n\n      if (optionName === 'listeners') {\n        this.updatePerActionListeners(actionName, actionOptions.listeners, optionValue);\n      } // if the option value is an array\n\n\n      if (is.array(optionValue)) {\n        actionOptions[optionName] = arr.from(optionValue);\n      } // if the option value is an object\n      else if (is.plainObject(optionValue)) {\n          // copy the object\n          actionOptions[optionName] = extend(actionOptions[optionName] || {}, clone(optionValue)); // set anabled field to true if it exists in the defaults\n\n          if (is.object(defaults.perAction[optionName]) && 'enabled' in defaults.perAction[optionName]) {\n            actionOptions[optionName].enabled = optionValue.enabled !== false;\n          }\n        } // if the option value is a boolean and the default is an object\n        else if (is.bool(optionValue) && is.object(defaults.perAction[optionName])) {\n            actionOptions[optionName].enabled = optionValue;\n          } // if it's anything else, do a plain assignment\n          else {\n              actionOptions[optionName] = optionValue;\n            }\n    }\n  }\n  /**\n   * The default function to get an Interactables bounding rect. Can be\n   * overridden using {@link Interactable.rectChecker}.\n   *\n   * @param {Element} [element] The element to measure.\n   * @return {Rect} The object's bounding rectangle.\n   */\n\n\n  getRect(element) {\n    element = element || (is.element(this.target) ? this.target : null);\n\n    if (is.string(this.target)) {\n      element = element || this._context.querySelector(this.target);\n    }\n\n    return getElementRect(element);\n  }\n  /**\n   * Returns or sets the function used to calculate the interactable's\n   * element's rectangle\n   *\n   * @param {function} [checker] A function which returns this Interactable's\n   * bounding rectangle. See {@link Interactable.getRect}\n   * @return {function | object} The checker function or this Interactable\n   */\n\n\n  rectChecker(checker) {\n    if (is.func(checker)) {\n      this._rectChecker = checker;\n\n      this.getRect = element => {\n        const rect = extend({}, this._rectChecker(element));\n\n        if (!('width' in rect)) {\n          rect.width = rect.right - rect.left;\n          rect.height = rect.bottom - rect.top;\n        }\n\n        return rect;\n      };\n\n      return this;\n    }\n\n    if (checker === null) {\n      delete this.getRect;\n      delete this._rectChecker;\n      return this;\n    }\n\n    return this.getRect;\n  }\n\n  _backCompatOption(optionName, newValue) {\n    if (trySelector(newValue) || is.object(newValue)) {\n      this.options[optionName] = newValue;\n\n      for (const action in this._actions.map) {\n        this.options[action][optionName] = newValue;\n      }\n\n      return this;\n    }\n\n    return this.options[optionName];\n  }\n  /**\n   * Gets or sets the origin of the Interactable's element.  The x and y\n   * of the origin will be subtracted from action event coordinates.\n   *\n   * @param {Element | object | string} [origin] An HTML or SVG Element whose\n   * rect will be used, an object eg. { x: 0, y: 0 } or string 'parent', 'self'\n   * or any CSS selector\n   *\n   * @return {object} The current origin or this Interactable\n   */\n\n\n  origin(newValue) {\n    return this._backCompatOption('origin', newValue);\n  }\n  /**\n   * Returns or sets the mouse coordinate types used to calculate the\n   * movement of the pointer.\n   *\n   * @param {string} [newValue] Use 'client' if you will be scrolling while\n   * interacting; Use 'page' if you want autoScroll to work\n   * @return {string | object} The current deltaSource or this Interactable\n   */\n\n\n  deltaSource(newValue) {\n    if (newValue === 'page' || newValue === 'client') {\n      this.options.deltaSource = newValue;\n      return this;\n    }\n\n    return this.options.deltaSource;\n  }\n  /**\n   * Gets the selector context Node of the Interactable. The default is\n   * `window.document`.\n   *\n   * @return {Node} The context Node of this Interactable\n   */\n\n\n  context() {\n    return this._context;\n  }\n\n  inContext(element) {\n    return this._context === element.ownerDocument || nodeContains(this._context, element);\n  }\n\n  testIgnoreAllow(options, targetNode, eventTarget) {\n    return !this.testIgnore(options.ignoreFrom, targetNode, eventTarget) && this.testAllow(options.allowFrom, targetNode, eventTarget);\n  }\n\n  testAllow(allowFrom, targetNode, element) {\n    if (!allowFrom) {\n      return true;\n    }\n\n    if (!is.element(element)) {\n      return false;\n    }\n\n    if (is.string(allowFrom)) {\n      return matchesUpTo(element, allowFrom, targetNode);\n    } else if (is.element(allowFrom)) {\n      return nodeContains(allowFrom, element);\n    }\n\n    return false;\n  }\n\n  testIgnore(ignoreFrom, targetNode, element) {\n    if (!ignoreFrom || !is.element(element)) {\n      return false;\n    }\n\n    if (is.string(ignoreFrom)) {\n      return matchesUpTo(element, ignoreFrom, targetNode);\n    } else if (is.element(ignoreFrom)) {\n      return nodeContains(ignoreFrom, element);\n    }\n\n    return false;\n  }\n  /**\n   * Calls listeners for the given InteractEvent type bound globally\n   * and directly to this Interactable\n   *\n   * @param {InteractEvent} iEvent The InteractEvent object to be fired on this\n   * Interactable\n   * @return {Interactable} this Interactable\n   */\n\n\n  fire(iEvent) {\n    this.events.fire(iEvent);\n    return this;\n  }\n\n  _onOff(method, typeArg, listenerArg, options) {\n    if (is.object(typeArg) && !is.array(typeArg)) {\n      options = listenerArg;\n      listenerArg = null;\n    }\n\n    const addRemove = method === 'on' ? 'add' : 'remove';\n    const listeners = normalizeListeners(typeArg, listenerArg);\n\n    for (let type in listeners) {\n      if (type === 'wheel') {\n        type = browser.wheelEvent;\n      }\n\n      for (const listener of listeners[type]) {\n        // if it is an action event type\n        if (isNonNativeEvent(type, this._actions)) {\n          this.events[method](type, listener);\n        } // delegated event\n        else if (is.string(this.target)) {\n            this._scopeEvents[`${addRemove}Delegate`](this.target, this._context, type, listener, options);\n          } // remove listener from this Interactable's element\n          else {\n              this._scopeEvents[addRemove](this.target, type, listener, options);\n            }\n      }\n    }\n\n    return this;\n  }\n  /**\n   * Binds a listener for an InteractEvent, pointerEvent or DOM event.\n   *\n   * @param {string | array | object} types The types of events to listen\n   * for\n   * @param {function | array | object} [listener] The event listener function(s)\n   * @param {object | boolean} [options] options object or useCapture flag for\n   * addEventListener\n   * @return {Interactable} This Interactable\n   */\n\n\n  on(types, listener, options) {\n    return this._onOff('on', types, listener, options);\n  }\n  /**\n   * Removes an InteractEvent, pointerEvent or DOM event listener.\n   *\n   * @param {string | array | object} types The types of events that were\n   * listened for\n   * @param {function | array | object} [listener] The event listener function(s)\n   * @param {object | boolean} [options] options object or useCapture flag for\n   * removeEventListener\n   * @return {Interactable} This Interactable\n   */\n\n\n  off(types, listener, options) {\n    return this._onOff('off', types, listener, options);\n  }\n  /**\n   * Reset the options of this Interactable\n   *\n   * @param {object} options The new settings to apply\n   * @return {object} This Interactable\n   */\n\n\n  set(options) {\n    const defaults = this._defaults;\n\n    if (!is.object(options)) {\n      options = {};\n    }\n\n    this.options = clone(defaults.base);\n\n    for (const actionName_ in this._actions.methodDict) {\n      const actionName = actionName_;\n      const methodName = this._actions.methodDict[actionName];\n      this.options[actionName] = {};\n      this.setPerAction(actionName, extend(extend({}, defaults.perAction), defaults.actions[actionName]));\n      this[methodName](options[actionName]);\n    }\n\n    for (const setting in options) {\n      if (is.func(this[setting])) {\n        this[setting](options[setting]);\n      }\n    }\n\n    return this;\n  }\n  /**\n   * Remove this interactable from the list of interactables and remove it's\n   * action capabilities and event listeners\n   */\n\n\n  unset() {\n    if (is.string(this.target)) {\n      // remove delegated events\n      for (const type in this._scopeEvents.delegatedEvents) {\n        const delegated = this._scopeEvents.delegatedEvents[type];\n\n        for (let i = delegated.length - 1; i >= 0; i--) {\n          const {\n            selector,\n            context,\n            listeners\n          } = delegated[i];\n\n          if (selector === this.target && context === this._context) {\n            delegated.splice(i, 1);\n          }\n\n          for (let l = listeners.length - 1; l >= 0; l--) {\n            this._scopeEvents.removeDelegate(this.target, this._context, type, listeners[l][0], listeners[l][1]);\n          }\n        }\n      }\n    } else {\n      this._scopeEvents.remove(this.target, 'all');\n    }\n  }\n\n}\n//# sourceMappingURL=Interactable.js.map","import * as arr from \"../utils/arr.js\";\nimport * as domUtils from \"../utils/domUtils.js\";\nimport extend from \"../utils/extend.js\";\nimport is from \"../utils/is.js\";\nexport class InteractableSet {\n  // all set interactables\n  constructor(scope) {\n    this.list = [];\n    this.selectorMap = {};\n    this.scope = void 0;\n    this.scope = scope;\n    scope.addListeners({\n      'interactable:unset': ({\n        interactable\n      }) => {\n        const {\n          target,\n          _context: context\n        } = interactable;\n        const targetMappings = is.string(target) ? this.selectorMap[target] : target[this.scope.id];\n        const targetIndex = arr.findIndex(targetMappings, m => m.context === context);\n\n        if (targetMappings[targetIndex]) {\n          // Destroying mappingInfo's context and interactable\n          targetMappings[targetIndex].context = null;\n          targetMappings[targetIndex].interactable = null;\n        }\n\n        targetMappings.splice(targetIndex, 1);\n      }\n    });\n  }\n\n  new(target, options) {\n    options = extend(options || {}, {\n      actions: this.scope.actions\n    });\n    const interactable = new this.scope.Interactable(target, options, this.scope.document, this.scope.events);\n    const mappingInfo = {\n      context: interactable._context,\n      interactable\n    };\n    this.scope.addDocument(interactable._doc);\n    this.list.push(interactable);\n\n    if (is.string(target)) {\n      if (!this.selectorMap[target]) {\n        this.selectorMap[target] = [];\n      }\n\n      this.selectorMap[target].push(mappingInfo);\n    } else {\n      if (!interactable.target[this.scope.id]) {\n        Object.defineProperty(target, this.scope.id, {\n          value: [],\n          configurable: true\n        });\n      }\n\n      target[this.scope.id].push(mappingInfo);\n    }\n\n    this.scope.fire('interactable:new', {\n      target,\n      options,\n      interactable,\n      win: this.scope._win\n    });\n    return interactable;\n  }\n\n  get(target, options) {\n    const context = options && options.context || this.scope.document;\n    const isSelector = is.string(target);\n    const targetMappings = isSelector ? this.selectorMap[target] : target[this.scope.id];\n\n    if (!targetMappings) {\n      return null;\n    }\n\n    const found = arr.find(targetMappings, m => m.context === context && (isSelector || m.interactable.inContext(target)));\n    return found && found.interactable;\n  }\n\n  forEachMatch(node, callback) {\n    for (const interactable of this.list) {\n      let ret;\n\n      if ((is.string(interactable.target) // target is a selector and the element matches\n      ? is.element(node) && domUtils.matchesSelector(node, interactable.target) : // target is the element\n      node === interactable.target) && // the element is in context\n      interactable.inContext(node)) {\n        ret = callback(interactable);\n      }\n\n      if (ret !== undefined) {\n        return ret;\n      }\n    }\n  }\n\n}\n//# sourceMappingURL=InteractableSet.js.map","function pointerExtend(dest, source) {\n  for (const prop in source) {\n    const prefixedPropREs = pointerExtend.prefixedPropREs;\n    let deprecated = false; // skip deprecated prefixed properties\n\n    for (const vendor in prefixedPropREs) {\n      if (prop.indexOf(vendor) === 0 && prefixedPropREs[vendor].test(prop)) {\n        deprecated = true;\n        break;\n      }\n    }\n\n    if (!deprecated && typeof source[prop] !== 'function') {\n      dest[prop] = source[prop];\n    }\n  }\n\n  return dest;\n}\n\npointerExtend.prefixedPropREs = {\n  webkit: /(Movement[XY]|Radius[XY]|RotationAngle|Force)$/,\n  moz: /(Pressure)$/\n};\nexport default pointerExtend;\n//# sourceMappingURL=pointerExtend.js.map","import browser from \"./browser.js\";\nimport dom from \"./domObjects.js\";\nimport * as domUtils from \"./domUtils.js\";\nimport hypot from \"./hypot.js\";\nimport is from \"./is.js\";\nimport pointerExtend from \"./pointerExtend.js\";\nexport function copyCoords(dest, src) {\n  dest.page = dest.page || {};\n  dest.page.x = src.page.x;\n  dest.page.y = src.page.y;\n  dest.client = dest.client || {};\n  dest.client.x = src.client.x;\n  dest.client.y = src.client.y;\n  dest.timeStamp = src.timeStamp;\n}\nexport function setCoordDeltas(targetObj, prev, cur) {\n  targetObj.page.x = cur.page.x - prev.page.x;\n  targetObj.page.y = cur.page.y - prev.page.y;\n  targetObj.client.x = cur.client.x - prev.client.x;\n  targetObj.client.y = cur.client.y - prev.client.y;\n  targetObj.timeStamp = cur.timeStamp - prev.timeStamp;\n}\nexport function setCoordVelocity(targetObj, delta) {\n  const dt = Math.max(delta.timeStamp / 1000, 0.001);\n  targetObj.page.x = delta.page.x / dt;\n  targetObj.page.y = delta.page.y / dt;\n  targetObj.client.x = delta.client.x / dt;\n  targetObj.client.y = delta.client.y / dt;\n  targetObj.timeStamp = dt;\n}\nexport function setZeroCoords(targetObj) {\n  targetObj.page.x = 0;\n  targetObj.page.y = 0;\n  targetObj.client.x = 0;\n  targetObj.client.y = 0;\n}\nexport function isNativePointer(pointer) {\n  return pointer instanceof dom.Event || pointer instanceof dom.Touch;\n} // Get specified X/Y coords for mouse or event.touches[0]\n\nexport function getXY(type, pointer, xy) {\n  xy = xy || {};\n  type = type || 'page';\n  xy.x = pointer[type + 'X'];\n  xy.y = pointer[type + 'Y'];\n  return xy;\n}\nexport function getPageXY(pointer, page) {\n  page = page || {\n    x: 0,\n    y: 0\n  }; // Opera Mobile handles the viewport and scrolling oddly\n\n  if (browser.isOperaMobile && isNativePointer(pointer)) {\n    getXY('screen', pointer, page);\n    page.x += window.scrollX;\n    page.y += window.scrollY;\n  } else {\n    getXY('page', pointer, page);\n  }\n\n  return page;\n}\nexport function getClientXY(pointer, client) {\n  client = client || {};\n\n  if (browser.isOperaMobile && isNativePointer(pointer)) {\n    // Opera Mobile handles the viewport and scrolling oddly\n    getXY('screen', pointer, client);\n  } else {\n    getXY('client', pointer, client);\n  }\n\n  return client;\n}\nexport function getPointerId(pointer) {\n  return is.number(pointer.pointerId) ? pointer.pointerId : pointer.identifier;\n}\nexport function setCoords(dest, pointers, timeStamp) {\n  const pointer = pointers.length > 1 ? pointerAverage(pointers) : pointers[0];\n  getPageXY(pointer, dest.page);\n  getClientXY(pointer, dest.client);\n  dest.timeStamp = timeStamp;\n}\nexport function getTouchPair(event) {\n  const touches = []; // array of touches is supplied\n\n  if (is.array(event)) {\n    touches[0] = event[0];\n    touches[1] = event[1];\n  } // an event\n  else {\n      if (event.type === 'touchend') {\n        if (event.touches.length === 1) {\n          touches[0] = event.touches[0];\n          touches[1] = event.changedTouches[0];\n        } else if (event.touches.length === 0) {\n          touches[0] = event.changedTouches[0];\n          touches[1] = event.changedTouches[1];\n        }\n      } else {\n        touches[0] = event.touches[0];\n        touches[1] = event.touches[1];\n      }\n    }\n\n  return touches;\n}\nexport function pointerAverage(pointers) {\n  const average = {\n    pageX: 0,\n    pageY: 0,\n    clientX: 0,\n    clientY: 0,\n    screenX: 0,\n    screenY: 0\n  };\n\n  for (const pointer of pointers) {\n    for (const prop in average) {\n      average[prop] += pointer[prop];\n    }\n  }\n\n  for (const prop in average) {\n    average[prop] /= pointers.length;\n  }\n\n  return average;\n}\nexport function touchBBox(event) {\n  if (!event.length) {\n    return null;\n  }\n\n  const touches = getTouchPair(event);\n  const minX = Math.min(touches[0].pageX, touches[1].pageX);\n  const minY = Math.min(touches[0].pageY, touches[1].pageY);\n  const maxX = Math.max(touches[0].pageX, touches[1].pageX);\n  const maxY = Math.max(touches[0].pageY, touches[1].pageY);\n  return {\n    x: minX,\n    y: minY,\n    left: minX,\n    top: minY,\n    right: maxX,\n    bottom: maxY,\n    width: maxX - minX,\n    height: maxY - minY\n  };\n}\nexport function touchDistance(event, deltaSource) {\n  const sourceX = deltaSource + 'X';\n  const sourceY = deltaSource + 'Y';\n  const touches = getTouchPair(event);\n  const dx = touches[0][sourceX] - touches[1][sourceX];\n  const dy = touches[0][sourceY] - touches[1][sourceY];\n  return hypot(dx, dy);\n}\nexport function touchAngle(event, deltaSource) {\n  const sourceX = deltaSource + 'X';\n  const sourceY = deltaSource + 'Y';\n  const touches = getTouchPair(event);\n  const dx = touches[1][sourceX] - touches[0][sourceX];\n  const dy = touches[1][sourceY] - touches[0][sourceY];\n  const angle = 180 * Math.atan2(dy, dx) / Math.PI;\n  return angle;\n}\nexport function getPointerType(pointer) {\n  return is.string(pointer.pointerType) ? pointer.pointerType : is.number(pointer.pointerType) ? [undefined, undefined, 'touch', 'pen', 'mouse'][pointer.pointerType] // if the PointerEvent API isn't available, then the \"pointer\" must\n  // be either a MouseEvent, TouchEvent, or Touch object\n  : /touch/.test(pointer.type) || pointer instanceof dom.Touch ? 'touch' : 'mouse';\n} // [ event.target, event.currentTarget ]\n\nexport function getEventTargets(event) {\n  const path = is.func(event.composedPath) ? event.composedPath() : event.path;\n  return [domUtils.getActualElement(path ? path[0] : event.target), domUtils.getActualElement(event.currentTarget)];\n}\nexport function newCoords() {\n  return {\n    page: {\n      x: 0,\n      y: 0\n    },\n    client: {\n      x: 0,\n      y: 0\n    },\n    timeStamp: 0\n  };\n}\nexport function coordsToEvent(coords) {\n  const event = {\n    coords,\n\n    get page() {\n      return this.coords.page;\n    },\n\n    get client() {\n      return this.coords.client;\n    },\n\n    get timeStamp() {\n      return this.coords.timeStamp;\n    },\n\n    get pageX() {\n      return this.coords.page.x;\n    },\n\n    get pageY() {\n      return this.coords.page.y;\n    },\n\n    get clientX() {\n      return this.coords.client.x;\n    },\n\n    get clientY() {\n      return this.coords.client.y;\n    },\n\n    get pointerId() {\n      return this.coords.pointerId;\n    },\n\n    get target() {\n      return this.coords.target;\n    },\n\n    get type() {\n      return this.coords.type;\n    },\n\n    get pointerType() {\n      return this.coords.pointerType;\n    },\n\n    get buttons() {\n      return this.coords.buttons;\n    },\n\n    preventDefault() {}\n\n  };\n  return event;\n}\nexport { pointerExtend };\n//# sourceMappingURL=pointerUtils.js.map","import { Scope } from \"./scope.js\";\nimport * as arr from \"../utils/arr.js\";\nimport * as domUtils from \"../utils/domUtils.js\";\nimport extend from \"../utils/extend.js\";\nimport is from \"../utils/is.js\";\nimport pExtend from \"../utils/pointerExtend.js\";\nimport * as pointerUtils from \"../utils/pointerUtils.js\";\n\nfunction install(scope) {\n  const targets = [];\n  const delegatedEvents = {};\n  const documents = [];\n  const eventsMethods = {\n    add,\n    remove,\n    addDelegate,\n    removeDelegate,\n    delegateListener,\n    delegateUseCapture,\n    delegatedEvents,\n    documents,\n    targets,\n    supportsOptions: false,\n    supportsPassive: false\n  }; // check if browser supports passive events and options arg\n\n  scope.document.createElement('div').addEventListener('test', null, {\n    get capture() {\n      return eventsMethods.supportsOptions = true;\n    },\n\n    get passive() {\n      return eventsMethods.supportsPassive = true;\n    }\n\n  });\n  scope.events = eventsMethods;\n\n  function add(eventTarget, type, listener, optionalArg) {\n    const options = getOptions(optionalArg);\n    let target = arr.find(targets, t => t.eventTarget === eventTarget);\n\n    if (!target) {\n      target = {\n        eventTarget,\n        events: {}\n      };\n      targets.push(target);\n    }\n\n    if (!target.events[type]) {\n      target.events[type] = [];\n    }\n\n    if (eventTarget.addEventListener && !arr.contains(target.events[type], listener)) {\n      eventTarget.addEventListener(type, listener, eventsMethods.supportsOptions ? options : options.capture);\n      target.events[type].push(listener);\n    }\n  }\n\n  function remove(eventTarget, type, listener, optionalArg) {\n    const options = getOptions(optionalArg);\n    const targetIndex = arr.findIndex(targets, t => t.eventTarget === eventTarget);\n    const target = targets[targetIndex];\n\n    if (!target || !target.events) {\n      return;\n    }\n\n    if (type === 'all') {\n      for (type in target.events) {\n        if (target.events.hasOwnProperty(type)) {\n          remove(eventTarget, type, 'all');\n        }\n      }\n\n      return;\n    }\n\n    let typeIsEmpty = false;\n    const typeListeners = target.events[type];\n\n    if (typeListeners) {\n      if (listener === 'all') {\n        for (let i = typeListeners.length - 1; i >= 0; i--) {\n          remove(eventTarget, type, typeListeners[i], options);\n        }\n\n        return;\n      } else {\n        for (let i = 0; i < typeListeners.length; i++) {\n          if (typeListeners[i] === listener) {\n            eventTarget.removeEventListener(type, listener, eventsMethods.supportsOptions ? options : options.capture);\n            typeListeners.splice(i, 1);\n\n            if (typeListeners.length === 0) {\n              delete target.events[type];\n              typeIsEmpty = true;\n            }\n\n            break;\n          }\n        }\n      }\n    }\n\n    if (typeIsEmpty && !Object.keys(target.events).length) {\n      targets.splice(targetIndex, 1);\n    }\n  }\n\n  function addDelegate(selector, context, type, listener, optionalArg) {\n    const options = getOptions(optionalArg);\n\n    if (!delegatedEvents[type]) {\n      delegatedEvents[type] = []; // add delegate listener functions\n\n      for (const doc of documents) {\n        add(doc, type, delegateListener);\n        add(doc, type, delegateUseCapture, true);\n      }\n    }\n\n    const delegates = delegatedEvents[type];\n    let delegate = arr.find(delegates, d => d.selector === selector && d.context === context);\n\n    if (!delegate) {\n      delegate = {\n        selector,\n        context,\n        listeners: []\n      };\n      delegates.push(delegate);\n    }\n\n    delegate.listeners.push([listener, options]);\n  }\n\n  function removeDelegate(selector, context, type, listener, optionalArg) {\n    const options = getOptions(optionalArg);\n    const delegates = delegatedEvents[type];\n    let matchFound = false;\n    let index;\n\n    if (!delegates) {\n      return;\n    } // count from last index of delegated to 0\n\n\n    for (index = delegates.length - 1; index >= 0; index--) {\n      const cur = delegates[index]; // look for matching selector and context Node\n\n      if (cur.selector === selector && cur.context === context) {\n        const {\n          listeners\n        } = cur; // each item of the listeners array is an array: [function, capture, passive]\n\n        for (let i = listeners.length - 1; i >= 0; i--) {\n          const [fn, {\n            capture,\n            passive\n          }] = listeners[i]; // check if the listener functions and capture and passive flags match\n\n          if (fn === listener && capture === options.capture && passive === options.passive) {\n            // remove the listener from the array of listeners\n            listeners.splice(i, 1); // if all listeners for this target have been removed\n            // remove the target from the delegates array\n\n            if (!listeners.length) {\n              delegates.splice(index, 1); // remove delegate function from context\n\n              remove(context, type, delegateListener);\n              remove(context, type, delegateUseCapture, true);\n            } // only remove one listener\n\n\n            matchFound = true;\n            break;\n          }\n        }\n\n        if (matchFound) {\n          break;\n        }\n      }\n    }\n  } // bound to the interactable context when a DOM event\n  // listener is added to a selector interactable\n\n\n  function delegateListener(event, optionalArg) {\n    const options = getOptions(optionalArg);\n    const fakeEvent = new FakeEvent(event);\n    const delegates = delegatedEvents[event.type];\n    const [eventTarget] = pointerUtils.getEventTargets(event);\n    let element = eventTarget; // climb up document tree looking for selector matches\n\n    while (is.element(element)) {\n      for (let i = 0; i < delegates.length; i++) {\n        const cur = delegates[i];\n        const {\n          selector,\n          context\n        } = cur;\n\n        if (domUtils.matchesSelector(element, selector) && domUtils.nodeContains(context, eventTarget) && domUtils.nodeContains(context, element)) {\n          const {\n            listeners\n          } = cur;\n          fakeEvent.currentTarget = element;\n\n          for (const [fn, {\n            capture,\n            passive\n          }] of listeners) {\n            if (capture === options.capture && passive === options.passive) {\n              fn(fakeEvent);\n            }\n          }\n        }\n      }\n\n      element = domUtils.parentNode(element);\n    }\n  }\n\n  function delegateUseCapture(event) {\n    return delegateListener.call(this, event, true);\n  } // for type inferrence\n\n\n  return eventsMethods;\n}\n\nclass FakeEvent {\n  constructor(originalEvent) {\n    this.currentTarget = void 0;\n    this.originalEvent = void 0;\n    this.type = void 0;\n    this.originalEvent = originalEvent; // duplicate the event so that currentTarget can be changed\n\n    pExtend(this, originalEvent);\n  }\n\n  preventOriginalDefault() {\n    this.originalEvent.preventDefault();\n  }\n\n  stopPropagation() {\n    this.originalEvent.stopPropagation();\n  }\n\n  stopImmediatePropagation() {\n    this.originalEvent.stopImmediatePropagation();\n  }\n\n}\n\nfunction getOptions(param) {\n  if (!is.object(param)) {\n    return {\n      capture: !!param,\n      passive: false\n    };\n  }\n\n  const options = extend({}, param);\n  options.capture = !!param.capture;\n  options.passive = !!param.passive;\n  return options;\n}\n\nexport default {\n  id: 'events',\n  install\n};\n//# sourceMappingURL=events.js.map","import { window } from \"./window.js\";\nexport function warnOnce(method, message) {\n  let warned = false;\n  return function () {\n    if (!warned) {\n      window.console.warn(message);\n      warned = true;\n    }\n\n    return method.apply(this, arguments);\n  };\n}\nexport function copyAction(dest, src) {\n  dest.name = src.name;\n  dest.axis = src.axis;\n  dest.edges = src.edges;\n  return dest;\n}\n//# sourceMappingURL=misc.js.map","/** @module interact */\nimport browser from \"../utils/browser.js\";\nimport * as domUtils from \"../utils/domUtils.js\";\nimport is from \"../utils/is.js\";\nimport * as pointerUtils from \"../utils/pointerUtils.js\";\nimport { warnOnce } from \"../utils/misc.js\";\nimport isNonNativeEvent from \"./isNonNativeEvent.js\";\nexport function createInteractStatic(scope) {\n  /**\n   * ```js\n   * interact('#draggable').draggable(true)\n   *\n   * var rectables = interact('rect')\n   * rectables\n   *   .gesturable(true)\n   *   .on('gesturemove', function (event) {\n   *       // ...\n   *   })\n   * ```\n   *\n   * The methods of this variable can be used to set elements as interactables\n   * and also to change various default settings.\n   *\n   * Calling it as a function and passing an element or a valid CSS selector\n   * string returns an Interactable object which has various methods to configure\n   * it.\n   *\n   * @global\n   *\n   * @param {Element | string} target The HTML or SVG Element to interact with\n   * or CSS selector\n   * @return {Interactable}\n   */\n  const interact = (target, options) => {\n    let interactable = scope.interactables.get(target, options);\n\n    if (!interactable) {\n      interactable = scope.interactables.new(target, options);\n      interactable.events.global = interact.globalEvents;\n    }\n\n    return interactable;\n  }; // expose the functions used to calculate multi-touch properties\n\n\n  interact.getPointerAverage = pointerUtils.pointerAverage;\n  interact.getTouchBBox = pointerUtils.touchBBox;\n  interact.getTouchDistance = pointerUtils.touchDistance;\n  interact.getTouchAngle = pointerUtils.touchAngle;\n  interact.getElementRect = domUtils.getElementRect;\n  interact.getElementClientRect = domUtils.getElementClientRect;\n  interact.matchesSelector = domUtils.matchesSelector;\n  interact.closest = domUtils.closest;\n  interact.globalEvents = {}; // eslint-disable-next-line no-undef\n\n  interact.version = \"1.10.2\";\n  interact.scope = scope;\n  /**\n  * Use a plugin\n  *\n  * @alias module:interact.use\n  *\n   */\n\n  interact.use = function (plugin, options) {\n    this.scope.usePlugin(plugin, options);\n    return this;\n  };\n  /**\n   * Check if an element or selector has been set with the {@link interact}\n   * function\n   *\n   * @alias module:interact.isSet\n   *\n   * @param {Target} target The Element or string being searched for\n   * @param {object} options\n   * @return {boolean} Indicates if the element or CSS selector was previously\n   * passed to interact\n   */\n\n\n  interact.isSet = function (target, options) {\n    return !!this.scope.interactables.get(target, options && options.context);\n  };\n  /**\n   * @deprecated\n   * Add a global listener for an InteractEvent or adds a DOM event to `document`\n   *\n   * @alias module:interact.on\n   *\n   * @param {string | array | object} type The types of events to listen for\n   * @param {function} listener The function event (s)\n   * @param {object | boolean} [options] object or useCapture flag for\n   * addEventListener\n   * @return {object} interact\n   */\n\n\n  interact.on = warnOnce(function on(type, listener, options) {\n    if (is.string(type) && type.search(' ') !== -1) {\n      type = type.trim().split(/ +/);\n    }\n\n    if (is.array(type)) {\n      for (const eventType of type) {\n        this.on(eventType, listener, options);\n      }\n\n      return this;\n    }\n\n    if (is.object(type)) {\n      for (const prop in type) {\n        this.on(prop, type[prop], listener);\n      }\n\n      return this;\n    } // if it is an InteractEvent type, add listener to globalEvents\n\n\n    if (isNonNativeEvent(type, this.scope.actions)) {\n      // if this type of event was never bound\n      if (!this.globalEvents[type]) {\n        this.globalEvents[type] = [listener];\n      } else {\n        this.globalEvents[type].push(listener);\n      }\n    } // If non InteractEvent type, addEventListener to document\n    else {\n        this.scope.events.add(this.scope.document, type, listener, {\n          options\n        });\n      }\n\n    return this;\n  }, 'The interact.on() method is being deprecated');\n  /**\n   * @deprecated\n   * Removes a global InteractEvent listener or DOM event from `document`\n   *\n   * @alias module:interact.off\n   *\n   * @param {string | array | object} type The types of events that were listened\n   * for\n   * @param {function} listener The listener function to be removed\n   * @param {object | boolean} options [options] object or useCapture flag for\n   * removeEventListener\n   * @return {object} interact\n   */\n\n  interact.off = warnOnce(function off(type, listener, options) {\n    if (is.string(type) && type.search(' ') !== -1) {\n      type = type.trim().split(/ +/);\n    }\n\n    if (is.array(type)) {\n      for (const eventType of type) {\n        this.off(eventType, listener, options);\n      }\n\n      return this;\n    }\n\n    if (is.object(type)) {\n      for (const prop in type) {\n        this.off(prop, type[prop], listener);\n      }\n\n      return this;\n    }\n\n    if (isNonNativeEvent(type, this.scope.actions)) {\n      let index;\n\n      if (type in this.globalEvents && (index = this.globalEvents[type].indexOf(listener)) !== -1) {\n        this.globalEvents[type].splice(index, 1);\n      }\n    } else {\n      this.scope.events.remove(this.scope.document, type, listener, options);\n    }\n\n    return this;\n  }, 'The interact.off() method is being deprecated');\n\n  interact.debug = function () {\n    return this.scope;\n  };\n  /**\n   * @alias module:interact.supportsTouch\n   *\n   * @return {boolean} Whether or not the browser supports touch input\n   */\n\n\n  interact.supportsTouch = function () {\n    return browser.supportsTouch;\n  };\n  /**\n   * @alias module:interact.supportsPointerEvent\n   *\n   * @return {boolean} Whether or not the browser supports PointerEvents\n   */\n\n\n  interact.supportsPointerEvent = function () {\n    return browser.supportsPointerEvent;\n  };\n  /**\n   * Cancels all interactions (end events are not fired)\n   *\n   * @alias module:interact.stop\n   *\n   * @return {object} interact\n   */\n\n\n  interact.stop = function () {\n    for (const interaction of this.scope.interactions.list) {\n      interaction.stop();\n    }\n\n    return this;\n  };\n  /**\n   * Returns or sets the distance the pointer must be moved before an action\n   * sequence occurs. This also affects tolerance for tap events.\n   *\n   * @alias module:interact.pointerMoveTolerance\n   *\n   * @param {number} [newValue] The movement from the start position must be greater than this value\n   * @return {interact | number}\n   */\n\n\n  interact.pointerMoveTolerance = function (newValue) {\n    if (is.number(newValue)) {\n      this.scope.interactions.pointerMoveTolerance = newValue;\n      return this;\n    }\n\n    return this.scope.interactions.pointerMoveTolerance;\n  };\n\n  interact.addDocument = function (doc, options) {\n    this.scope.addDocument(doc, options);\n  };\n\n  interact.removeDocument = function (doc) {\n    this.scope.removeDocument(doc);\n  };\n\n  return interact;\n}\n//# sourceMappingURL=interactStatic.js.map","export class PointerInfo {\n  constructor(id, pointer, event, downTime, downTarget) {\n    this.id = void 0;\n    this.pointer = void 0;\n    this.event = void 0;\n    this.downTime = void 0;\n    this.downTarget = void 0;\n    this.id = id;\n    this.pointer = pointer;\n    this.event = event;\n    this.downTime = downTime;\n    this.downTarget = downTarget;\n  }\n\n}\n//# sourceMappingURL=PointerInfo.js.map","import * as arr from \"../utils/arr.js\";\nimport extend from \"../utils/extend.js\";\nimport hypot from \"../utils/hypot.js\";\nimport { warnOnce, copyAction } from \"../utils/misc.js\";\nimport * as pointerUtils from \"../utils/pointerUtils.js\";\nimport * as rectUtils from \"../utils/rect.js\";\nimport { InteractEvent } from \"./InteractEvent.js\";\nimport { PointerInfo } from \"./PointerInfo.js\";\nexport let _ProxyValues;\n\n(function (_ProxyValues) {\n  _ProxyValues[\"interactable\"] = \"\";\n  _ProxyValues[\"element\"] = \"\";\n  _ProxyValues[\"prepared\"] = \"\";\n  _ProxyValues[\"pointerIsDown\"] = \"\";\n  _ProxyValues[\"pointerWasMoved\"] = \"\";\n  _ProxyValues[\"_proxy\"] = \"\";\n})(_ProxyValues || (_ProxyValues = {}));\n\nexport let _ProxyMethods;\n\n(function (_ProxyMethods) {\n  _ProxyMethods[\"start\"] = \"\";\n  _ProxyMethods[\"move\"] = \"\";\n  _ProxyMethods[\"end\"] = \"\";\n  _ProxyMethods[\"stop\"] = \"\";\n  _ProxyMethods[\"interacting\"] = \"\";\n})(_ProxyMethods || (_ProxyMethods = {}));\n\nlet idCounter = 0;\nexport class Interaction {\n  // current interactable being interacted with\n  // the target element of the interactable\n  // action that's ready to be fired on next move event\n  // keep track of added pointers\n  // pointerdown/mousedown/touchstart event\n  // previous action event\n\n  /** @internal */\n  get pointerMoveTolerance() {\n    return 1;\n  }\n  /**\n   * @alias Interaction.prototype.move\n   */\n\n\n  /** */\n  constructor({\n    pointerType,\n    scopeFire\n  }) {\n    this.interactable = null;\n    this.element = null;\n    this.rect = void 0;\n    this._rects = void 0;\n    this.edges = void 0;\n    this._scopeFire = void 0;\n    this.prepared = {\n      name: null,\n      axis: null,\n      edges: null\n    };\n    this.pointerType = void 0;\n    this.pointers = [];\n    this.downEvent = null;\n    this.downPointer = {};\n    this._latestPointer = {\n      pointer: null,\n      event: null,\n      eventTarget: null\n    };\n    this.prevEvent = null;\n    this.pointerIsDown = false;\n    this.pointerWasMoved = false;\n    this._interacting = false;\n    this._ending = false;\n    this._stopped = true;\n    this._proxy = null;\n    this.simulation = null;\n    this.doMove = warnOnce(function (signalArg) {\n      this.move(signalArg);\n    }, 'The interaction.doMove() method has been renamed to interaction.move()');\n    this.coords = {\n      // Starting InteractEvent pointer coordinates\n      start: pointerUtils.newCoords(),\n      // Previous native pointer move event coordinates\n      prev: pointerUtils.newCoords(),\n      // current native pointer move event coordinates\n      cur: pointerUtils.newCoords(),\n      // Change in coordinates and time of the pointer\n      delta: pointerUtils.newCoords(),\n      // pointer velocity\n      velocity: pointerUtils.newCoords()\n    };\n    this._id = idCounter++;\n    this._scopeFire = scopeFire;\n    this.pointerType = pointerType;\n    const that = this;\n    this._proxy = {};\n\n    for (const key in _ProxyValues) {\n      Object.defineProperty(this._proxy, key, {\n        get() {\n          return that[key];\n        }\n\n      });\n    }\n\n    for (const key in _ProxyMethods) {\n      Object.defineProperty(this._proxy, key, {\n        value: (...args) => that[key](...args)\n      });\n    }\n\n    this._scopeFire('interactions:new', {\n      interaction: this\n    });\n  }\n\n  pointerDown(pointer, event, eventTarget) {\n    const pointerIndex = this.updatePointer(pointer, event, eventTarget, true);\n    const pointerInfo = this.pointers[pointerIndex];\n\n    this._scopeFire('interactions:down', {\n      pointer,\n      event,\n      eventTarget,\n      pointerIndex,\n      pointerInfo,\n      type: 'down',\n      interaction: this\n    });\n  }\n  /**\n   * ```js\n   * interact(target)\n   *   .draggable({\n   *     // disable the default drag start by down->move\n   *     manualStart: true\n   *   })\n   *   // start dragging after the user holds the pointer down\n   *   .on('hold', function (event) {\n   *     var interaction = event.interaction\n   *\n   *     if (!interaction.interacting()) {\n   *       interaction.start({ name: 'drag' },\n   *                         event.interactable,\n   *                         event.currentTarget)\n   *     }\n   * })\n   * ```\n   *\n   * Start an action with the given Interactable and Element as tartgets. The\n   * action must be enabled for the target Interactable and an appropriate\n   * number of pointers must be held down - 1 for drag/resize, 2 for gesture.\n   *\n   * Use it with `interactable.<action>able({ manualStart: false })` to always\n   * [start actions manually](https://github.com/taye/interact.js/issues/114)\n   *\n   * @param {object} action   The action to be performed - drag, resize, etc.\n   * @param {Interactable} target  The Interactable to target\n   * @param {Element} element The DOM Element to target\n   * @return {Boolean} Whether the interaction was successfully started\n   */\n\n\n  start(action, interactable, element) {\n    if (this.interacting() || !this.pointerIsDown || this.pointers.length < (action.name === 'gesture' ? 2 : 1) || !interactable.options[action.name].enabled) {\n      return false;\n    }\n\n    copyAction(this.prepared, action);\n    this.interactable = interactable;\n    this.element = element;\n    this.rect = interactable.getRect(element);\n    this.edges = this.prepared.edges ? extend({}, this.prepared.edges) : {\n      left: true,\n      right: true,\n      top: true,\n      bottom: true\n    };\n    this._stopped = false;\n    this._interacting = this._doPhase({\n      interaction: this,\n      event: this.downEvent,\n      phase: 'start'\n    }) && !this._stopped;\n    return this._interacting;\n  }\n\n  pointerMove(pointer, event, eventTarget) {\n    if (!this.simulation && !(this.modification && this.modification.endResult)) {\n      this.updatePointer(pointer, event, eventTarget, false);\n    }\n\n    const duplicateMove = this.coords.cur.page.x === this.coords.prev.page.x && this.coords.cur.page.y === this.coords.prev.page.y && this.coords.cur.client.x === this.coords.prev.client.x && this.coords.cur.client.y === this.coords.prev.client.y;\n    let dx;\n    let dy; // register movement greater than pointerMoveTolerance\n\n    if (this.pointerIsDown && !this.pointerWasMoved) {\n      dx = this.coords.cur.client.x - this.coords.start.client.x;\n      dy = this.coords.cur.client.y - this.coords.start.client.y;\n      this.pointerWasMoved = hypot(dx, dy) > this.pointerMoveTolerance;\n    }\n\n    const pointerIndex = this.getPointerIndex(pointer);\n    const signalArg = {\n      pointer,\n      pointerIndex,\n      pointerInfo: this.pointers[pointerIndex],\n      event,\n      type: 'move',\n      eventTarget,\n      dx,\n      dy,\n      duplicate: duplicateMove,\n      interaction: this\n    };\n\n    if (!duplicateMove) {\n      // set pointer coordinate, time changes and velocity\n      pointerUtils.setCoordVelocity(this.coords.velocity, this.coords.delta);\n    }\n\n    this._scopeFire('interactions:move', signalArg);\n\n    if (!duplicateMove && !this.simulation) {\n      // if interacting, fire an 'action-move' signal etc\n      if (this.interacting()) {\n        signalArg.type = null;\n        this.move(signalArg);\n      }\n\n      if (this.pointerWasMoved) {\n        pointerUtils.copyCoords(this.coords.prev, this.coords.cur);\n      }\n    }\n  }\n  /**\n   * ```js\n   * interact(target)\n   *   .draggable(true)\n   *   .on('dragmove', function (event) {\n   *     if (someCondition) {\n   *       // change the snap settings\n   *       event.interactable.draggable({ snap: { targets: [] }})\n   *       // fire another move event with re-calculated snap\n   *       event.interaction.move()\n   *     }\n   *   })\n   * ```\n   *\n   * Force a move of the current action at the same coordinates. Useful if\n   * snap/restrict has been changed and you want a movement with the new\n   * settings.\n   */\n\n\n  move(signalArg) {\n    if (!signalArg || !signalArg.event) {\n      pointerUtils.setZeroCoords(this.coords.delta);\n    }\n\n    signalArg = extend({\n      pointer: this._latestPointer.pointer,\n      event: this._latestPointer.event,\n      eventTarget: this._latestPointer.eventTarget,\n      interaction: this\n    }, signalArg || {});\n    signalArg.phase = 'move';\n\n    this._doPhase(signalArg);\n  } // End interact move events and stop auto-scroll unless simulation is running\n\n\n  pointerUp(pointer, event, eventTarget, curEventTarget) {\n    let pointerIndex = this.getPointerIndex(pointer);\n\n    if (pointerIndex === -1) {\n      pointerIndex = this.updatePointer(pointer, event, eventTarget, false);\n    }\n\n    const type = /cancel$/i.test(event.type) ? 'cancel' : 'up';\n\n    this._scopeFire(`interactions:${type}`, {\n      pointer,\n      pointerIndex,\n      pointerInfo: this.pointers[pointerIndex],\n      event,\n      eventTarget,\n      type: type,\n      curEventTarget,\n      interaction: this\n    });\n\n    if (!this.simulation) {\n      this.end(event);\n    }\n\n    this.removePointer(pointer, event);\n  }\n\n  documentBlur(event) {\n    this.end(event);\n\n    this._scopeFire('interactions:blur', {\n      event,\n      type: 'blur',\n      interaction: this\n    });\n  }\n  /**\n   * ```js\n   * interact(target)\n   *   .draggable(true)\n   *   .on('move', function (event) {\n   *     if (event.pageX > 1000) {\n   *       // end the current action\n   *       event.interaction.end()\n   *       // stop all further listeners from being called\n   *       event.stopImmediatePropagation()\n   *     }\n   *   })\n   * ```\n   *\n   * @param {PointerEvent} [event]\n   */\n\n\n  end(event) {\n    this._ending = true;\n    event = event || this._latestPointer.event;\n    let endPhaseResult;\n\n    if (this.interacting()) {\n      endPhaseResult = this._doPhase({\n        event,\n        interaction: this,\n        phase: 'end'\n      });\n    }\n\n    this._ending = false;\n\n    if (endPhaseResult === true) {\n      this.stop();\n    }\n  }\n\n  currentAction() {\n    return this._interacting ? this.prepared.name : null;\n  }\n\n  interacting() {\n    return this._interacting;\n  }\n  /** */\n\n\n  stop() {\n    this._scopeFire('interactions:stop', {\n      interaction: this\n    });\n\n    this.interactable = this.element = null;\n    this._interacting = false;\n    this._stopped = true;\n    this.prepared.name = this.prevEvent = null;\n  }\n\n  getPointerIndex(pointer) {\n    const pointerId = pointerUtils.getPointerId(pointer); // mouse and pen interactions may have only one pointer\n\n    return this.pointerType === 'mouse' || this.pointerType === 'pen' ? this.pointers.length - 1 : arr.findIndex(this.pointers, curPointer => curPointer.id === pointerId);\n  }\n\n  getPointerInfo(pointer) {\n    return this.pointers[this.getPointerIndex(pointer)];\n  }\n\n  updatePointer(pointer, event, eventTarget, down) {\n    const id = pointerUtils.getPointerId(pointer);\n    let pointerIndex = this.getPointerIndex(pointer);\n    let pointerInfo = this.pointers[pointerIndex];\n    down = down === false ? false : down || /(down|start)$/i.test(event.type);\n\n    if (!pointerInfo) {\n      pointerInfo = new PointerInfo(id, pointer, event, null, null);\n      pointerIndex = this.pointers.length;\n      this.pointers.push(pointerInfo);\n    } else {\n      pointerInfo.pointer = pointer;\n    }\n\n    pointerUtils.setCoords(this.coords.cur, this.pointers.map(p => p.pointer), this._now());\n    pointerUtils.setCoordDeltas(this.coords.delta, this.coords.prev, this.coords.cur);\n\n    if (down) {\n      this.pointerIsDown = true;\n      pointerInfo.downTime = this.coords.cur.timeStamp;\n      pointerInfo.downTarget = eventTarget;\n      pointerUtils.pointerExtend(this.downPointer, pointer);\n\n      if (!this.interacting()) {\n        pointerUtils.copyCoords(this.coords.start, this.coords.cur);\n        pointerUtils.copyCoords(this.coords.prev, this.coords.cur);\n        this.downEvent = event;\n        this.pointerWasMoved = false;\n      }\n    }\n\n    this._updateLatestPointer(pointer, event, eventTarget);\n\n    this._scopeFire('interactions:update-pointer', {\n      pointer,\n      event,\n      eventTarget,\n      down,\n      pointerInfo,\n      pointerIndex,\n      interaction: this\n    });\n\n    return pointerIndex;\n  }\n\n  removePointer(pointer, event) {\n    const pointerIndex = this.getPointerIndex(pointer);\n\n    if (pointerIndex === -1) {\n      return;\n    }\n\n    const pointerInfo = this.pointers[pointerIndex];\n\n    this._scopeFire('interactions:remove-pointer', {\n      pointer,\n      event,\n      eventTarget: null,\n      pointerIndex,\n      pointerInfo,\n      interaction: this\n    });\n\n    this.pointers.splice(pointerIndex, 1);\n    this.pointerIsDown = false;\n  }\n\n  _updateLatestPointer(pointer, event, eventTarget) {\n    this._latestPointer.pointer = pointer;\n    this._latestPointer.event = event;\n    this._latestPointer.eventTarget = eventTarget;\n  }\n\n  destroy() {\n    this._latestPointer.pointer = null;\n    this._latestPointer.event = null;\n    this._latestPointer.eventTarget = null;\n  }\n\n  _createPreparedEvent(event, phase, preEnd, type) {\n    return new InteractEvent(this, event, this.prepared.name, phase, this.element, preEnd, type);\n  }\n\n  _fireEvent(iEvent) {\n    this.interactable.fire(iEvent);\n\n    if (!this.prevEvent || iEvent.timeStamp >= this.prevEvent.timeStamp) {\n      this.prevEvent = iEvent;\n    }\n  }\n\n  _doPhase(signalArg) {\n    const {\n      event,\n      phase,\n      preEnd,\n      type\n    } = signalArg;\n    const {\n      rect\n    } = this;\n\n    if (rect && phase === 'move') {\n      // update the rect changes due to pointer move\n      rectUtils.addEdges(this.edges, rect, this.coords.delta[this.interactable.options.deltaSource]);\n      rect.width = rect.right - rect.left;\n      rect.height = rect.bottom - rect.top;\n    }\n\n    const beforeResult = this._scopeFire(`interactions:before-action-${phase}`, signalArg);\n\n    if (beforeResult === false) {\n      return false;\n    }\n\n    const iEvent = signalArg.iEvent = this._createPreparedEvent(event, phase, preEnd, type);\n\n    this._scopeFire(`interactions:action-${phase}`, signalArg);\n\n    if (phase === 'start') {\n      this.prevEvent = iEvent;\n    }\n\n    this._fireEvent(iEvent);\n\n    this._scopeFire(`interactions:after-action-${phase}`, signalArg);\n\n    return true;\n  }\n\n  _now() {\n    return Date.now();\n  }\n\n}\nexport default Interaction;\nexport { PointerInfo };\n//# sourceMappingURL=Interaction.js.map","import { Interactable } from \"./Interactable.js\";\nimport { matchesSelector, nodeContains } from \"../utils/domUtils.js\";\nimport is from \"../utils/is.js\";\nimport { getWindow } from \"../utils/window.js\";\n\nfunction preventDefault(newValue) {\n  if (/^(always|never|auto)$/.test(newValue)) {\n    this.options.preventDefault = newValue;\n    return this;\n  }\n\n  if (is.bool(newValue)) {\n    this.options.preventDefault = newValue ? 'always' : 'never';\n    return this;\n  }\n\n  return this.options.preventDefault;\n}\n\nfunction checkAndPreventDefault(interactable, scope, event) {\n  const setting = interactable.options.preventDefault;\n\n  if (setting === 'never') {\n    return;\n  }\n\n  if (setting === 'always') {\n    event.preventDefault();\n    return;\n  } // setting === 'auto'\n  // if the browser supports passive event listeners and isn't running on iOS,\n  // don't preventDefault of touch{start,move} events. CSS touch-action and\n  // user-select should be used instead of calling event.preventDefault().\n\n\n  if (scope.events.supportsPassive && /^touch(start|move)$/.test(event.type)) {\n    const doc = getWindow(event.target).document;\n    const docOptions = scope.getDocOptions(doc);\n\n    if (!(docOptions && docOptions.events) || docOptions.events.passive !== false) {\n      return;\n    }\n  } // don't preventDefault of pointerdown events\n\n\n  if (/^(mouse|pointer|touch)*(down|start)/i.test(event.type)) {\n    return;\n  } // don't preventDefault on editable elements\n\n\n  if (is.element(event.target) && matchesSelector(event.target, 'input,select,textarea,[contenteditable=true],[contenteditable=true] *')) {\n    return;\n  }\n\n  event.preventDefault();\n}\n\nfunction onInteractionEvent({\n  interaction,\n  event\n}) {\n  if (interaction.interactable) {\n    interaction.interactable.checkAndPreventDefault(event);\n  }\n}\n\nexport function install(scope) {\n  /** @lends Interactable */\n  const {\n    Interactable\n  } = scope;\n  /**\n   * Returns or sets whether to prevent the browser's default behaviour in\n   * response to pointer events. Can be set to:\n   *  - `'always'` to always prevent\n   *  - `'never'` to never prevent\n   *  - `'auto'` to let interact.js try to determine what would be best\n   *\n   * @param {string} [newValue] `'always'`, `'never'` or `'auto'`\n   * @return {string | Interactable} The current setting or this Interactable\n   */\n\n  Interactable.prototype.preventDefault = preventDefault;\n\n  Interactable.prototype.checkAndPreventDefault = function (event) {\n    return checkAndPreventDefault(this, scope, event);\n  }; // prevent native HTML5 drag on interact.js target elements\n\n\n  scope.interactions.docEvents.push({\n    type: 'dragstart',\n\n    listener(event) {\n      for (const interaction of scope.interactions.list) {\n        if (interaction.element && (interaction.element === event.target || nodeContains(interaction.element, event.target))) {\n          interaction.interactable.checkAndPreventDefault(event);\n          return;\n        }\n      }\n    }\n\n  });\n}\nexport default {\n  id: 'core/interactablePreventDefault',\n  install,\n  listeners: ['down', 'move', 'up', 'cancel'].reduce((acc, eventType) => {\n    acc[`interactions:${eventType}`] = onInteractionEvent;\n    return acc;\n  }, {})\n};\n//# sourceMappingURL=interactablePreventDefault.js.map","import * as dom from \"../utils/domUtils.js\";\nconst finder = {\n  methodOrder: ['simulationResume', 'mouseOrPen', 'hasPointer', 'idle'],\n\n  search(details) {\n    for (const method of finder.methodOrder) {\n      const interaction = finder[method](details);\n\n      if (interaction) {\n        return interaction;\n      }\n    }\n\n    return null;\n  },\n\n  // try to resume simulation with a new pointer\n  simulationResume({\n    pointerType,\n    eventType,\n    eventTarget,\n    scope\n  }) {\n    if (!/down|start/i.test(eventType)) {\n      return null;\n    }\n\n    for (const interaction of scope.interactions.list) {\n      let element = eventTarget;\n\n      if (interaction.simulation && interaction.simulation.allowResume && interaction.pointerType === pointerType) {\n        while (element) {\n          // if the element is the interaction element\n          if (element === interaction.element) {\n            return interaction;\n          }\n\n          element = dom.parentNode(element);\n        }\n      }\n    }\n\n    return null;\n  },\n\n  // if it's a mouse or pen interaction\n  mouseOrPen({\n    pointerId,\n    pointerType,\n    eventType,\n    scope\n  }) {\n    if (pointerType !== 'mouse' && pointerType !== 'pen') {\n      return null;\n    }\n\n    let firstNonActive;\n\n    for (const interaction of scope.interactions.list) {\n      if (interaction.pointerType === pointerType) {\n        // if it's a down event, skip interactions with running simulations\n        if (interaction.simulation && !hasPointerId(interaction, pointerId)) {\n          continue;\n        } // if the interaction is active, return it immediately\n\n\n        if (interaction.interacting()) {\n          return interaction;\n        } // otherwise save it and look for another active interaction\n        else if (!firstNonActive) {\n            firstNonActive = interaction;\n          }\n      }\n    } // if no active mouse interaction was found use the first inactive mouse\n    // interaction\n\n\n    if (firstNonActive) {\n      return firstNonActive;\n    } // find any mouse or pen interaction.\n    // ignore the interaction if the eventType is a *down, and a simulation\n    // is active\n\n\n    for (const interaction of scope.interactions.list) {\n      if (interaction.pointerType === pointerType && !(/down/i.test(eventType) && interaction.simulation)) {\n        return interaction;\n      }\n    }\n\n    return null;\n  },\n\n  // get interaction that has this pointer\n  hasPointer({\n    pointerId,\n    scope\n  }) {\n    for (const interaction of scope.interactions.list) {\n      if (hasPointerId(interaction, pointerId)) {\n        return interaction;\n      }\n    }\n\n    return null;\n  },\n\n  // get first idle interaction with a matching pointerType\n  idle({\n    pointerType,\n    scope\n  }) {\n    for (const interaction of scope.interactions.list) {\n      // if there's already a pointer held down\n      if (interaction.pointers.length === 1) {\n        const target = interaction.interactable; // don't add this pointer if there is a target interactable and it\n        // isn't gesturable\n\n        if (target && !(target.options.gesture && target.options.gesture.enabled)) {\n          continue;\n        }\n      } // maximum of 2 pointers per interaction\n      else if (interaction.pointers.length >= 2) {\n          continue;\n        }\n\n      if (!interaction.interacting() && pointerType === interaction.pointerType) {\n        return interaction;\n      }\n    }\n\n    return null;\n  }\n\n};\n\nfunction hasPointerId(interaction, pointerId) {\n  return interaction.pointers.some(({\n    id\n  }) => id === pointerId);\n}\n\nexport default finder;\n//# sourceMappingURL=interactionFinder.js.map","import { Scope, SignalArgs } from \"./scope.js\";\nimport browser from \"../utils/browser.js\";\nimport domObjects from \"../utils/domObjects.js\";\nimport { nodeContains } from \"../utils/domUtils.js\";\nimport * as pointerUtils from \"../utils/pointerUtils.js\";\nimport InteractionBase from \"./Interaction.js\";\nimport interactablePreventDefault from \"./interactablePreventDefault.js\";\nimport finder from \"./interactionFinder.js\";\nconst methodNames = ['pointerDown', 'pointerMove', 'pointerUp', 'updatePointer', 'removePointer', 'windowBlur'];\n\nfunction install(scope) {\n  const listeners = {};\n\n  for (const method of methodNames) {\n    listeners[method] = doOnInteractions(method, scope);\n  }\n\n  const pEventTypes = browser.pEventTypes;\n  let docEvents;\n\n  if (domObjects.PointerEvent) {\n    docEvents = [{\n      type: pEventTypes.down,\n      listener: releasePointersOnRemovedEls\n    }, {\n      type: pEventTypes.down,\n      listener: listeners.pointerDown\n    }, {\n      type: pEventTypes.move,\n      listener: listeners.pointerMove\n    }, {\n      type: pEventTypes.up,\n      listener: listeners.pointerUp\n    }, {\n      type: pEventTypes.cancel,\n      listener: listeners.pointerUp\n    }];\n  } else {\n    docEvents = [{\n      type: 'mousedown',\n      listener: listeners.pointerDown\n    }, {\n      type: 'mousemove',\n      listener: listeners.pointerMove\n    }, {\n      type: 'mouseup',\n      listener: listeners.pointerUp\n    }, {\n      type: 'touchstart',\n      listener: releasePointersOnRemovedEls\n    }, {\n      type: 'touchstart',\n      listener: listeners.pointerDown\n    }, {\n      type: 'touchmove',\n      listener: listeners.pointerMove\n    }, {\n      type: 'touchend',\n      listener: listeners.pointerUp\n    }, {\n      type: 'touchcancel',\n      listener: listeners.pointerUp\n    }];\n  }\n\n  docEvents.push({\n    type: 'blur',\n\n    listener(event) {\n      for (const interaction of scope.interactions.list) {\n        interaction.documentBlur(event);\n      }\n    }\n\n  }); // for ignoring browser's simulated mouse events\n\n  scope.prevTouchTime = 0;\n  scope.Interaction = class extends InteractionBase {\n    get pointerMoveTolerance() {\n      return scope.interactions.pointerMoveTolerance;\n    }\n\n    set pointerMoveTolerance(value) {\n      scope.interactions.pointerMoveTolerance = value;\n    }\n\n    _now() {\n      return scope.now();\n    }\n\n  };\n  scope.interactions = {\n    // all active and idle interactions\n    list: [],\n\n    new(options) {\n      options.scopeFire = (name, arg) => scope.fire(name, arg);\n\n      const interaction = new scope.Interaction(options);\n      scope.interactions.list.push(interaction);\n      return interaction;\n    },\n\n    listeners,\n    docEvents,\n    pointerMoveTolerance: 1\n  };\n\n  function releasePointersOnRemovedEls() {\n    // for all inactive touch interactions with pointers down\n    for (const interaction of scope.interactions.list) {\n      if (!interaction.pointerIsDown || interaction.pointerType !== 'touch' || interaction._interacting) {\n        continue;\n      } // if a pointer is down on an element that is no longer in the DOM tree\n\n\n      for (const pointer of interaction.pointers) {\n        if (!scope.documents.some(({\n          doc\n        }) => nodeContains(doc, pointer.downTarget))) {\n          // remove the pointer from the interaction\n          interaction.removePointer(pointer.pointer, pointer.event);\n        }\n      }\n    }\n  }\n\n  scope.usePlugin(interactablePreventDefault);\n}\n\nfunction doOnInteractions(method, scope) {\n  return function (event) {\n    const interactions = scope.interactions.list;\n    const pointerType = pointerUtils.getPointerType(event);\n    const [eventTarget, curEventTarget] = pointerUtils.getEventTargets(event);\n    const matches = []; // [ [pointer, interaction], ...]\n\n    if (/^touch/.test(event.type)) {\n      scope.prevTouchTime = scope.now(); // @ts-expect-error\n\n      for (const changedTouch of event.changedTouches) {\n        const pointer = changedTouch;\n        const pointerId = pointerUtils.getPointerId(pointer);\n        const searchDetails = {\n          pointer,\n          pointerId,\n          pointerType,\n          eventType: event.type,\n          eventTarget,\n          curEventTarget,\n          scope\n        };\n        const interaction = getInteraction(searchDetails);\n        matches.push([searchDetails.pointer, searchDetails.eventTarget, searchDetails.curEventTarget, interaction]);\n      }\n    } else {\n      let invalidPointer = false;\n\n      if (!browser.supportsPointerEvent && /mouse/.test(event.type)) {\n        // ignore mouse events while touch interactions are active\n        for (let i = 0; i < interactions.length && !invalidPointer; i++) {\n          invalidPointer = interactions[i].pointerType !== 'mouse' && interactions[i].pointerIsDown;\n        } // try to ignore mouse events that are simulated by the browser\n        // after a touch event\n\n\n        invalidPointer = invalidPointer || scope.now() - scope.prevTouchTime < 500 || // on iOS and Firefox Mobile, MouseEvent.timeStamp is zero if simulated\n        event.timeStamp === 0;\n      }\n\n      if (!invalidPointer) {\n        const searchDetails = {\n          pointer: event,\n          pointerId: pointerUtils.getPointerId(event),\n          pointerType,\n          eventType: event.type,\n          curEventTarget,\n          eventTarget,\n          scope\n        };\n        const interaction = getInteraction(searchDetails);\n        matches.push([searchDetails.pointer, searchDetails.eventTarget, searchDetails.curEventTarget, interaction]);\n      }\n    } // eslint-disable-next-line no-shadow\n\n\n    for (const [pointer, eventTarget, curEventTarget, interaction] of matches) {\n      interaction[method](pointer, event, eventTarget, curEventTarget);\n    }\n  };\n}\n\nfunction getInteraction(searchDetails) {\n  const {\n    pointerType,\n    scope\n  } = searchDetails;\n  const foundInteraction = finder.search(searchDetails);\n  const signalArg = {\n    interaction: foundInteraction,\n    searchDetails\n  };\n  scope.fire('interactions:find', signalArg);\n  return signalArg.interaction || scope.interactions.new({\n    pointerType\n  });\n}\n\nfunction onDocSignal({\n  doc,\n  scope,\n  options\n}, eventMethodName) {\n  const {\n    interactions: {\n      docEvents\n    },\n    events\n  } = scope;\n  const eventMethod = events[eventMethodName];\n\n  if (scope.browser.isIOS && !options.events) {\n    options.events = {\n      passive: false\n    };\n  } // delegate event listener\n\n\n  for (const eventType in events.delegatedEvents) {\n    eventMethod(doc, eventType, events.delegateListener);\n    eventMethod(doc, eventType, events.delegateUseCapture, true);\n  }\n\n  const eventOptions = options && options.events;\n\n  for (const {\n    type,\n    listener\n  } of docEvents) {\n    eventMethod(doc, type, listener, eventOptions);\n  }\n}\n\nconst interactions = {\n  id: 'core/interactions',\n  install,\n  listeners: {\n    'scope:add-document': arg => onDocSignal(arg, 'add'),\n    'scope:remove-document': arg => onDocSignal(arg, 'remove'),\n    'interactable:unset': ({\n      interactable\n    }, scope) => {\n      // Stop and destroy related interactions when an Interactable is unset\n      for (let i = scope.interactions.list.length - 1; i >= 0; i--) {\n        const interaction = scope.interactions.list[i];\n\n        if (interaction.interactable !== interactable) {\n          continue;\n        }\n\n        interaction.stop();\n        scope.fire('interactions:destroy', {\n          interaction\n        });\n        interaction.destroy();\n\n        if (scope.interactions.list.length > 2) {\n          scope.interactions.list.splice(i, 1);\n        }\n      }\n    }\n  },\n  onDocSignal,\n  doOnInteractions,\n  methodNames\n};\nexport default interactions;\n//# sourceMappingURL=interactions.js.map","import browser from \"../utils/browser.js\";\nimport clone from \"../utils/clone.js\";\nimport domObjects from \"../utils/domObjects.js\";\nimport extend from \"../utils/extend.js\";\nimport raf from \"../utils/raf.js\";\nimport * as win from \"../utils/window.js\";\nimport { Eventable } from \"./Eventable.js\";\nimport { InteractEvent } from \"./InteractEvent.js\";\nimport { Interactable as InteractableBase } from \"./Interactable.js\";\nimport { InteractableSet } from \"./InteractableSet.js\";\nimport { defaults } from \"./defaultOptions.js\";\nimport events from \"./events.js\";\nimport { createInteractStatic } from \"./interactStatic.js\";\nimport interactions from \"./interactions.js\";\nexport class Scope {\n  // main window\n  // main document\n  // main window\n  // all documents being listened to\n  constructor() {\n    this.id = `__interact_scope_${Math.floor(Math.random() * 100)}`;\n    this.isInitialized = false;\n    this.listenerMaps = [];\n    this.browser = browser;\n    this.defaults = clone(defaults);\n    this.Eventable = Eventable;\n    this.actions = {\n      map: {},\n      phases: {\n        start: true,\n        move: true,\n        end: true\n      },\n      methodDict: {},\n      phaselessTypes: {}\n    };\n    this.interactStatic = createInteractStatic(this);\n    this.InteractEvent = InteractEvent;\n    this.Interactable = void 0;\n    this.interactables = new InteractableSet(this);\n    this._win = void 0;\n    this.document = void 0;\n    this.window = void 0;\n    this.documents = [];\n    this._plugins = {\n      list: [],\n      map: {}\n    };\n\n    this.onWindowUnload = event => this.removeDocument(event.target);\n\n    const scope = this;\n    this.Interactable = class extends InteractableBase {\n      get _defaults() {\n        return scope.defaults;\n      }\n\n      set(options) {\n        super.set(options);\n        scope.fire('interactable:set', {\n          options,\n          interactable: this\n        });\n        return this;\n      }\n\n      unset() {\n        super.unset();\n        scope.interactables.list.splice(scope.interactables.list.indexOf(this), 1);\n        scope.fire('interactable:unset', {\n          interactable: this\n        });\n      }\n\n    };\n  }\n\n  addListeners(map, id) {\n    this.listenerMaps.push({\n      id,\n      map\n    });\n  }\n\n  fire(name, arg) {\n    for (const {\n      map: {\n        [name]: listener\n      }\n    } of this.listenerMaps) {\n      if (!!listener && listener(arg, this, name) === false) {\n        return false;\n      }\n    }\n  }\n\n  init(window) {\n    return this.isInitialized ? this : initScope(this, window);\n  }\n\n  pluginIsInstalled(plugin) {\n    return this._plugins.map[plugin.id] || this._plugins.list.indexOf(plugin) !== -1;\n  }\n\n  usePlugin(plugin, options) {\n    if (!this.isInitialized) {\n      return this;\n    }\n\n    if (this.pluginIsInstalled(plugin)) {\n      return this;\n    }\n\n    if (plugin.id) {\n      this._plugins.map[plugin.id] = plugin;\n    }\n\n    this._plugins.list.push(plugin);\n\n    if (plugin.install) {\n      plugin.install(this, options);\n    }\n\n    if (plugin.listeners && plugin.before) {\n      let index = 0;\n      const len = this.listenerMaps.length;\n      const before = plugin.before.reduce((acc, id) => {\n        acc[id] = true;\n        acc[pluginIdRoot(id)] = true;\n        return acc;\n      }, {});\n\n      for (; index < len; index++) {\n        const otherId = this.listenerMaps[index].id;\n\n        if (before[otherId] || before[pluginIdRoot(otherId)]) {\n          break;\n        }\n      }\n\n      this.listenerMaps.splice(index, 0, {\n        id: plugin.id,\n        map: plugin.listeners\n      });\n    } else if (plugin.listeners) {\n      this.listenerMaps.push({\n        id: plugin.id,\n        map: plugin.listeners\n      });\n    }\n\n    return this;\n  }\n\n  addDocument(doc, options) {\n    // do nothing if document is already known\n    if (this.getDocIndex(doc) !== -1) {\n      return false;\n    }\n\n    const window = win.getWindow(doc);\n    options = options ? extend({}, options) : {};\n    this.documents.push({\n      doc,\n      options\n    });\n    this.events.documents.push(doc); // don't add an unload event for the main document\n    // so that the page may be cached in browser history\n\n    if (doc !== this.document) {\n      this.events.add(window, 'unload', this.onWindowUnload);\n    }\n\n    this.fire('scope:add-document', {\n      doc,\n      window,\n      scope: this,\n      options\n    });\n  }\n\n  removeDocument(doc) {\n    const index = this.getDocIndex(doc);\n    const window = win.getWindow(doc);\n    const options = this.documents[index].options;\n    this.events.remove(window, 'unload', this.onWindowUnload);\n    this.documents.splice(index, 1);\n    this.events.documents.splice(index, 1);\n    this.fire('scope:remove-document', {\n      doc,\n      window,\n      scope: this,\n      options\n    });\n  }\n\n  getDocIndex(doc) {\n    for (let i = 0; i < this.documents.length; i++) {\n      if (this.documents[i].doc === doc) {\n        return i;\n      }\n    }\n\n    return -1;\n  }\n\n  getDocOptions(doc) {\n    const docIndex = this.getDocIndex(doc);\n    return docIndex === -1 ? null : this.documents[docIndex].options;\n  }\n\n  now() {\n    return (this.window.Date || Date).now();\n  }\n\n}\nexport function initScope(scope, window) {\n  scope.isInitialized = true;\n  win.init(window);\n  domObjects.init(window);\n  browser.init(window);\n  raf.init(window);\n  scope.window = window;\n  scope.document = window.document;\n  scope.usePlugin(interactions);\n  scope.usePlugin(events);\n  return scope;\n}\n\nfunction pluginIdRoot(id) {\n  return id && id.replace(/\\/.*$/, '');\n}\n//# sourceMappingURL=scope.js.map","import { Scope } from \"../core/scope.js\";\nconst scope = new Scope();\nconst interact = scope.interactStatic;\nexport default interact;\nexport const init = win => scope.init(win);\n\nif (typeof window === 'object' && !!window) {\n  init(window);\n}\n//# sourceMappingURL=index.js.map","import { Interactable } from \"../core/Interactable.js\";\nimport is from \"../utils/is.js\";\nimport { warnOnce } from \"../utils/misc.js\";\n\nfunction install(scope) {\n  const {\n    /** @lends Interactable */\n    Interactable // tslint:disable-line no-shadowed-variable\n\n  } = scope;\n\n  Interactable.prototype.getAction = function getAction(pointer, event, interaction, element) {\n    const action = defaultActionChecker(this, event, interaction, element, scope);\n\n    if (this.options.actionChecker) {\n      return this.options.actionChecker(pointer, event, action, this, element, interaction);\n    }\n\n    return action;\n  };\n  /**\n   * If the target of the `mousedown`, `pointerdown` or `touchstart` event or any\n   * of it's parents match the given CSS selector or Element, no\n   * drag/resize/gesture is started.\n   *\n   * @deprecated\n   * Don't use this method. Instead set the `ignoreFrom` option for each action\n   * or for `pointerEvents`\n   *\n   * ```js\n   * interact(targett)\n   *   .draggable({\n   *     ignoreFrom: 'input, textarea, a[href]'',\n   *   })\n   *   .pointerEvents({\n   *     ignoreFrom: '[no-pointer]',\n   *   })\n   * ```\n   *\n   * @param {string | Element | null} [newValue] a CSS selector string, an\n   * Element or `null` to not ignore any elements\n   * @return {string | Element | object} The current ignoreFrom value or this\n   * Interactable\n   */\n\n\n  Interactable.prototype.ignoreFrom = warnOnce(function (newValue) {\n    return this._backCompatOption('ignoreFrom', newValue);\n  }, 'Interactable.ignoreFrom() has been deprecated. Use Interactble.draggable({ignoreFrom: newValue}).');\n  /**\n   *\n   * A drag/resize/gesture is started only If the target of the `mousedown`,\n   * `pointerdown` or `touchstart` event or any of it's parents match the given\n   * CSS selector or Element.\n   *\n   * @deprecated\n   * Don't use this method. Instead set the `allowFrom` option for each action\n   * or for `pointerEvents`\n   *\n   * ```js\n   * interact(targett)\n   *   .resizable({\n   *     allowFrom: '.resize-handle',\n   *   .pointerEvents({\n   *     allowFrom: '.handle',,\n   *   })\n   * ```\n   *\n   * @param {string | Element | null} [newValue] a CSS selector string, an\n   * Element or `null` to allow from any element\n   * @return {string | Element | object} The current allowFrom value or this\n   * Interactable\n   */\n\n  Interactable.prototype.allowFrom = warnOnce(function (newValue) {\n    return this._backCompatOption('allowFrom', newValue);\n  }, 'Interactable.allowFrom() has been deprecated. Use Interactble.draggable({allowFrom: newValue}).');\n  /**\n   * ```js\n   * interact('.resize-drag')\n   *   .resizable(true)\n   *   .draggable(true)\n   *   .actionChecker(function (pointer, event, action, interactable, element, interaction) {\n   *\n   *     if (interact.matchesSelector(event.target, '.drag-handle')) {\n   *       // force drag with handle target\n   *       action.name = drag\n   *     }\n   *     else {\n   *       // resize from the top and right edges\n   *       action.name  = 'resize'\n   *       action.edges = { top: true, right: true }\n   *     }\n   *\n   *     return action\n   * })\n   * ```\n   *\n   * Returns or sets the function used to check action to be performed on\n   * pointerDown\n   *\n   * @param {function | null} [checker] A function which takes a pointer event,\n   * defaultAction string, interactable, element and interaction as parameters\n   * and returns an object with name property 'drag' 'resize' or 'gesture' and\n   * optionally an `edges` object with boolean 'top', 'left', 'bottom' and right\n   * props.\n   * @return {Function | Interactable} The checker function or this Interactable\n   */\n\n  Interactable.prototype.actionChecker = actionChecker;\n  /**\n   * Returns or sets whether the the cursor should be changed depending on the\n   * action that would be performed if the mouse were pressed and dragged.\n   *\n   * @param {boolean} [newValue]\n   * @return {boolean | Interactable} The current setting or this Interactable\n   */\n\n  Interactable.prototype.styleCursor = styleCursor;\n}\n\nfunction defaultActionChecker(interactable, event, interaction, element, scope) {\n  const rect = interactable.getRect(element);\n  const buttons = event.buttons || {\n    0: 1,\n    1: 4,\n    3: 8,\n    4: 16\n  }[event.button];\n  const arg = {\n    action: null,\n    interactable,\n    interaction,\n    element,\n    rect,\n    buttons\n  };\n  scope.fire('auto-start:check', arg);\n  return arg.action;\n}\n\nfunction styleCursor(newValue) {\n  if (is.bool(newValue)) {\n    this.options.styleCursor = newValue;\n    return this;\n  }\n\n  if (newValue === null) {\n    delete this.options.styleCursor;\n    return this;\n  }\n\n  return this.options.styleCursor;\n}\n\nfunction actionChecker(checker) {\n  if (is.func(checker)) {\n    this.options.actionChecker = checker;\n    return this;\n  }\n\n  if (checker === null) {\n    delete this.options.actionChecker;\n    return this;\n  }\n\n  return this.options.actionChecker;\n}\n\nexport default {\n  id: 'auto-start/interactableMethods',\n  install\n};\n//# sourceMappingURL=InteractableMethods.js.map","import { Scope, SignalArgs } from \"../core/scope.js\";\nimport * as domUtils from \"../utils/domUtils.js\";\nimport extend from \"../utils/extend.js\";\nimport is from \"../utils/is.js\";\nimport { copyAction } from \"../utils/misc.js\";\nimport InteractableMethods from \"./InteractableMethods.js\";\n\nfunction install(scope) {\n  const {\n    interactStatic: interact,\n    defaults\n  } = scope;\n  scope.usePlugin(InteractableMethods);\n  defaults.base.actionChecker = null;\n  defaults.base.styleCursor = true;\n  extend(defaults.perAction, {\n    manualStart: false,\n    max: Infinity,\n    maxPerElement: 1,\n    allowFrom: null,\n    ignoreFrom: null,\n    // only allow left button by default\n    // see https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/buttons#Return_value\n    mouseButtons: 1\n  });\n  /**\n   * Returns or sets the maximum number of concurrent interactions allowed.  By\n   * default only 1 interaction is allowed at a time (for backwards\n   * compatibility). To allow multiple interactions on the same Interactables and\n   * elements, you need to enable it in the draggable, resizable and gesturable\n   * `'max'` and `'maxPerElement'` options.\n   *\n   * @alias module:interact.maxInteractions\n   *\n   * @param {number} [newValue] Any number. newValue <= 0 means no interactions.\n   */\n\n  interact.maxInteractions = newValue => maxInteractions(newValue, scope);\n\n  scope.autoStart = {\n    // Allow this many interactions to happen simultaneously\n    maxInteractions: Infinity,\n    withinInteractionLimit,\n    cursorElement: null\n  };\n}\n\nfunction prepareOnDown({\n  interaction,\n  pointer,\n  event,\n  eventTarget\n}, scope) {\n  if (interaction.interacting()) {\n    return;\n  }\n\n  const actionInfo = getActionInfo(interaction, pointer, event, eventTarget, scope);\n  prepare(interaction, actionInfo, scope);\n}\n\nfunction prepareOnMove({\n  interaction,\n  pointer,\n  event,\n  eventTarget\n}, scope) {\n  if (interaction.pointerType !== 'mouse' || interaction.pointerIsDown || interaction.interacting()) {\n    return;\n  }\n\n  const actionInfo = getActionInfo(interaction, pointer, event, eventTarget, scope);\n  prepare(interaction, actionInfo, scope);\n}\n\nfunction startOnMove(arg, scope) {\n  const {\n    interaction\n  } = arg;\n\n  if (!interaction.pointerIsDown || interaction.interacting() || !interaction.pointerWasMoved || !interaction.prepared.name) {\n    return;\n  }\n\n  scope.fire('autoStart:before-start', arg);\n  const {\n    interactable\n  } = interaction;\n  const actionName = interaction.prepared.name;\n\n  if (actionName && interactable) {\n    // check manualStart and interaction limit\n    if (interactable.options[actionName].manualStart || !withinInteractionLimit(interactable, interaction.element, interaction.prepared, scope)) {\n      interaction.stop();\n    } else {\n      interaction.start(interaction.prepared, interactable, interaction.element);\n      setInteractionCursor(interaction, scope);\n    }\n  }\n}\n\nfunction clearCursorOnStop({\n  interaction\n}, scope) {\n  const {\n    interactable\n  } = interaction;\n\n  if (interactable && interactable.options.styleCursor) {\n    setCursor(interaction.element, '', scope);\n  }\n} // Check if the current interactable supports the action.\n// If so, return the validated action. Otherwise, return null\n\n\nfunction validateAction(action, interactable, element, eventTarget, scope) {\n  if (interactable.testIgnoreAllow(interactable.options[action.name], element, eventTarget) && interactable.options[action.name].enabled && withinInteractionLimit(interactable, element, action, scope)) {\n    return action;\n  }\n\n  return null;\n}\n\nfunction validateMatches(interaction, pointer, event, matches, matchElements, eventTarget, scope) {\n  for (let i = 0, len = matches.length; i < len; i++) {\n    const match = matches[i];\n    const matchElement = matchElements[i];\n    const matchAction = match.getAction(pointer, event, interaction, matchElement);\n\n    if (!matchAction) {\n      continue;\n    }\n\n    const action = validateAction(matchAction, match, matchElement, eventTarget, scope);\n\n    if (action) {\n      return {\n        action,\n        interactable: match,\n        element: matchElement\n      };\n    }\n  }\n\n  return {\n    action: null,\n    interactable: null,\n    element: null\n  };\n}\n\nfunction getActionInfo(interaction, pointer, event, eventTarget, scope) {\n  let matches = [];\n  let matchElements = [];\n  let element = eventTarget;\n\n  function pushMatches(interactable) {\n    matches.push(interactable);\n    matchElements.push(element);\n  }\n\n  while (is.element(element)) {\n    matches = [];\n    matchElements = [];\n    scope.interactables.forEachMatch(element, pushMatches);\n    const actionInfo = validateMatches(interaction, pointer, event, matches, matchElements, eventTarget, scope);\n\n    if (actionInfo.action && !actionInfo.interactable.options[actionInfo.action.name].manualStart) {\n      return actionInfo;\n    }\n\n    element = domUtils.parentNode(element);\n  }\n\n  return {\n    action: null,\n    interactable: null,\n    element: null\n  };\n}\n\nfunction prepare(interaction, {\n  action,\n  interactable,\n  element\n}, scope) {\n  action = action || {\n    name: null\n  };\n  interaction.interactable = interactable;\n  interaction.element = element;\n  copyAction(interaction.prepared, action);\n  interaction.rect = interactable && action.name ? interactable.getRect(element) : null;\n  setInteractionCursor(interaction, scope);\n  scope.fire('autoStart:prepared', {\n    interaction\n  });\n}\n\nfunction withinInteractionLimit(interactable, element, action, scope) {\n  const options = interactable.options;\n  const maxActions = options[action.name].max;\n  const maxPerElement = options[action.name].maxPerElement;\n  const autoStartMax = scope.autoStart.maxInteractions;\n  let activeInteractions = 0;\n  let interactableCount = 0;\n  let elementCount = 0; // no actions if any of these values == 0\n\n  if (!(maxActions && maxPerElement && autoStartMax)) {\n    return false;\n  }\n\n  for (const interaction of scope.interactions.list) {\n    const otherAction = interaction.prepared.name;\n\n    if (!interaction.interacting()) {\n      continue;\n    }\n\n    activeInteractions++;\n\n    if (activeInteractions >= autoStartMax) {\n      return false;\n    }\n\n    if (interaction.interactable !== interactable) {\n      continue;\n    }\n\n    interactableCount += otherAction === action.name ? 1 : 0;\n\n    if (interactableCount >= maxActions) {\n      return false;\n    }\n\n    if (interaction.element === element) {\n      elementCount++;\n\n      if (otherAction === action.name && elementCount >= maxPerElement) {\n        return false;\n      }\n    }\n  }\n\n  return autoStartMax > 0;\n}\n\nfunction maxInteractions(newValue, scope) {\n  if (is.number(newValue)) {\n    scope.autoStart.maxInteractions = newValue;\n    return this;\n  }\n\n  return scope.autoStart.maxInteractions;\n}\n\nfunction setCursor(element, cursor, scope) {\n  const {\n    cursorElement: prevCursorElement\n  } = scope.autoStart;\n\n  if (prevCursorElement && prevCursorElement !== element) {\n    prevCursorElement.style.cursor = '';\n  }\n\n  element.ownerDocument.documentElement.style.cursor = cursor;\n  element.style.cursor = cursor;\n  scope.autoStart.cursorElement = cursor ? element : null;\n}\n\nfunction setInteractionCursor(interaction, scope) {\n  const {\n    interactable,\n    element,\n    prepared\n  } = interaction;\n\n  if (!(interaction.pointerType === 'mouse' && interactable && interactable.options.styleCursor)) {\n    // clear previous target element cursor\n    if (scope.autoStart.cursorElement) {\n      setCursor(scope.autoStart.cursorElement, '', scope);\n    }\n\n    return;\n  }\n\n  let cursor = '';\n\n  if (prepared.name) {\n    const cursorChecker = interactable.options[prepared.name].cursorChecker;\n\n    if (is.func(cursorChecker)) {\n      cursor = cursorChecker(prepared, interactable, element, interaction._interacting);\n    } else {\n      cursor = scope.actions.map[prepared.name].getCursor(prepared);\n    }\n  }\n\n  setCursor(interaction.element, cursor || '', scope);\n}\n\nconst autoStart = {\n  id: 'auto-start/base',\n  before: ['actions'],\n  install,\n  listeners: {\n    'interactions:down': prepareOnDown,\n    'interactions:move': (arg, scope) => {\n      prepareOnMove(arg, scope);\n      startOnMove(arg, scope);\n    },\n    'interactions:stop': clearCursorOnStop\n  },\n  maxInteractions,\n  withinInteractionLimit,\n  validateAction\n};\nexport default autoStart;\n//# sourceMappingURL=base.js.map","import { parentNode } from \"../utils/domUtils.js\";\nimport is from \"../utils/is.js\";\nimport autoStart from \"./base.js\";\n\nfunction beforeStart({\n  interaction,\n  eventTarget,\n  dx,\n  dy\n}, scope) {\n  if (interaction.prepared.name !== 'drag') {\n    return;\n  } // check if a drag is in the correct axis\n\n\n  const absX = Math.abs(dx);\n  const absY = Math.abs(dy);\n  const targetOptions = interaction.interactable.options.drag;\n  const startAxis = targetOptions.startAxis;\n  const currentAxis = absX > absY ? 'x' : absX < absY ? 'y' : 'xy';\n  interaction.prepared.axis = targetOptions.lockAxis === 'start' ? currentAxis[0] // always lock to one axis even if currentAxis === 'xy'\n  : targetOptions.lockAxis; // if the movement isn't in the startAxis of the interactable\n\n  if (currentAxis !== 'xy' && startAxis !== 'xy' && startAxis !== currentAxis) {\n    // cancel the prepared action\n    interaction.prepared.name = null; // then try to get a drag from another ineractable\n\n    let element = eventTarget;\n\n    const getDraggable = function (interactable) {\n      if (interactable === interaction.interactable) {\n        return;\n      }\n\n      const options = interaction.interactable.options.drag;\n\n      if (!options.manualStart && interactable.testIgnoreAllow(options, element, eventTarget)) {\n        const action = interactable.getAction(interaction.downPointer, interaction.downEvent, interaction, element);\n\n        if (action && action.name === 'drag' && checkStartAxis(currentAxis, interactable) && autoStart.validateAction(action, interactable, element, eventTarget, scope)) {\n          return interactable;\n        }\n      }\n    }; // check all interactables\n\n\n    while (is.element(element)) {\n      const interactable = scope.interactables.forEachMatch(element, getDraggable);\n\n      if (interactable) {\n        interaction.prepared.name = 'drag';\n        interaction.interactable = interactable;\n        interaction.element = element;\n        break;\n      }\n\n      element = parentNode(element);\n    }\n  }\n}\n\nfunction checkStartAxis(startAxis, interactable) {\n  if (!interactable) {\n    return false;\n  }\n\n  const thisAxis = interactable.options.drag.startAxis;\n  return startAxis === 'xy' || thisAxis === 'xy' || thisAxis === startAxis;\n}\n\nexport default {\n  id: 'auto-start/dragAxis',\n  listeners: {\n    'autoStart:before-start': beforeStart\n  }\n};\n//# sourceMappingURL=dragAxis.js.map","import Interaction from \"../core/Interaction.js\";\nimport basePlugin from \"./base.js\";\n\nfunction install(scope) {\n  const {\n    defaults\n  } = scope;\n  scope.usePlugin(basePlugin);\n  defaults.perAction.hold = 0;\n  defaults.perAction.delay = 0;\n}\n\nfunction getHoldDuration(interaction) {\n  const actionName = interaction.prepared && interaction.prepared.name;\n\n  if (!actionName) {\n    return null;\n  }\n\n  const options = interaction.interactable.options;\n  return options[actionName].hold || options[actionName].delay;\n}\n\nconst hold = {\n  id: 'auto-start/hold',\n  install,\n  listeners: {\n    'interactions:new': ({\n      interaction\n    }) => {\n      interaction.autoStartHoldTimer = null;\n    },\n    'autoStart:prepared': ({\n      interaction\n    }) => {\n      const hold = getHoldDuration(interaction);\n\n      if (hold > 0) {\n        interaction.autoStartHoldTimer = setTimeout(() => {\n          interaction.start(interaction.prepared, interaction.interactable, interaction.element);\n        }, hold);\n      }\n    },\n    'interactions:move': ({\n      interaction,\n      duplicate\n    }) => {\n      if (interaction.autoStartHoldTimer && interaction.pointerWasMoved && !duplicate) {\n        clearTimeout(interaction.autoStartHoldTimer);\n        interaction.autoStartHoldTimer = null;\n      }\n    },\n    // prevent regular down->move autoStart\n    'autoStart:before-start': ({\n      interaction\n    }) => {\n      const holdDuration = getHoldDuration(interaction);\n\n      if (holdDuration > 0) {\n        interaction.prepared.name = null;\n      }\n    }\n  },\n  getHoldDuration\n};\nexport default hold;\n//# sourceMappingURL=hold.js.map","import autoStart from \"./base.js\";\nimport dragAxis from \"./dragAxis.js\";\nimport hold from \"./hold.js\";\nexport default {\n  id: 'auto-start',\n\n  install(scope) {\n    scope.usePlugin(autoStart);\n    scope.usePlugin(hold);\n    scope.usePlugin(dragAxis);\n  }\n\n};\n//# sourceMappingURL=plugin.js.map","/* eslint-disable import/order, no-console, eol-last */\nimport interact, { init } from \"../interact/index.js\";\nimport plugin from \"./plugin.js\";\n\nif (typeof window === 'object' && !!window) {\n  init(window);\n}\n\ninteract.use(plugin);\n//# sourceMappingURL=index.js.map","import { Interactable } from \"../../core/Interactable.js\";\nimport is from \"../../utils/is.js\";\n\nfunction install(scope) {\n  const {\n    actions,\n    Interactable,\n    defaults\n  } = scope;\n  Interactable.prototype.draggable = drag.draggable;\n  actions.map.drag = drag;\n  actions.methodDict.drag = 'draggable';\n  defaults.actions.drag = drag.defaults;\n}\n\nfunction beforeMove({\n  interaction\n}) {\n  if (interaction.prepared.name !== 'drag') {\n    return;\n  }\n\n  const axis = interaction.prepared.axis;\n\n  if (axis === 'x') {\n    interaction.coords.cur.page.y = interaction.coords.start.page.y;\n    interaction.coords.cur.client.y = interaction.coords.start.client.y;\n    interaction.coords.velocity.client.y = 0;\n    interaction.coords.velocity.page.y = 0;\n  } else if (axis === 'y') {\n    interaction.coords.cur.page.x = interaction.coords.start.page.x;\n    interaction.coords.cur.client.x = interaction.coords.start.client.x;\n    interaction.coords.velocity.client.x = 0;\n    interaction.coords.velocity.page.x = 0;\n  }\n}\n\nfunction move({\n  iEvent,\n  interaction\n}) {\n  if (interaction.prepared.name !== 'drag') {\n    return;\n  }\n\n  const axis = interaction.prepared.axis;\n\n  if (axis === 'x' || axis === 'y') {\n    const opposite = axis === 'x' ? 'y' : 'x';\n    iEvent.page[opposite] = interaction.coords.start.page[opposite];\n    iEvent.client[opposite] = interaction.coords.start.client[opposite];\n    iEvent.delta[opposite] = 0;\n  }\n}\n/**\n * ```js\n * interact(element).draggable({\n *     onstart: function (event) {},\n *     onmove : function (event) {},\n *     onend  : function (event) {},\n *\n *     // the axis in which the first movement must be\n *     // for the drag sequence to start\n *     // 'xy' by default - any direction\n *     startAxis: 'x' || 'y' || 'xy',\n *\n *     // 'xy' by default - don't restrict to one axis (move in any direction)\n *     // 'x' or 'y' to restrict movement to either axis\n *     // 'start' to restrict movement to the axis the drag started in\n *     lockAxis: 'x' || 'y' || 'xy' || 'start',\n *\n *     // max number of drags that can happen concurrently\n *     // with elements of this Interactable. Infinity by default\n *     max: Infinity,\n *\n *     // max number of drags that can target the same element+Interactable\n *     // 1 by default\n *     maxPerElement: 2\n * })\n *\n * var isDraggable = interact('element').draggable(); // true\n * ```\n *\n * Get or set whether drag actions can be performed on the target\n *\n * @alias Interactable.prototype.draggable\n *\n * @param {boolean | object} [options] true/false or An object with event\n * listeners to be fired on drag events (object makes the Interactable\n * draggable)\n * @return {boolean | Interactable} boolean indicating if this can be the\n * target of drag events, or this Interctable\n */\n\n\nconst draggable = function draggable(options) {\n  if (is.object(options)) {\n    this.options.drag.enabled = options.enabled !== false;\n    this.setPerAction('drag', options);\n    this.setOnEvents('drag', options);\n\n    if (/^(xy|x|y|start)$/.test(options.lockAxis)) {\n      this.options.drag.lockAxis = options.lockAxis;\n    }\n\n    if (/^(xy|x|y)$/.test(options.startAxis)) {\n      this.options.drag.startAxis = options.startAxis;\n    }\n\n    return this;\n  }\n\n  if (is.bool(options)) {\n    this.options.drag.enabled = options;\n    return this;\n  }\n\n  return this.options.drag;\n};\n\nconst drag = {\n  id: 'actions/drag',\n  install,\n  listeners: {\n    'interactions:before-action-move': beforeMove,\n    'interactions:action-resume': beforeMove,\n    // dragmove\n    'interactions:action-move': move,\n    'auto-start:check': arg => {\n      const {\n        interaction,\n        interactable,\n        buttons\n      } = arg;\n      const dragOptions = interactable.options.drag;\n\n      if (!(dragOptions && dragOptions.enabled) || // check mouseButton setting if the pointer is down\n      interaction.pointerIsDown && /mouse|pointer/.test(interaction.pointerType) && (buttons & interactable.options.drag.mouseButtons) === 0) {\n        return undefined;\n      }\n\n      arg.action = {\n        name: 'drag',\n        axis: dragOptions.lockAxis === 'start' ? dragOptions.startAxis : dragOptions.lockAxis\n      };\n      return false;\n    }\n  },\n  draggable,\n  beforeMove,\n  move,\n  defaults: {\n    startAxis: 'xy',\n    lockAxis: 'xy'\n  },\n\n  getCursor() {\n    return 'move';\n  }\n\n};\nexport default drag;\n//# sourceMappingURL=plugin.js.map","/* eslint-disable import/order, no-console, eol-last */\nimport interact, { init } from \"../../interact/index.js\";\nimport plugin from \"./plugin.js\";\n\nif (typeof window === 'object' && !!window) {\n  init(window);\n}\n\ninteract.use(plugin);\n//# sourceMappingURL=index.js.map","import { Interactable } from \"../../core/Interactable.js\";\nimport { Interaction } from \"../../core/Interaction.js\";\nimport * as dom from \"../../utils/domUtils.js\";\nimport extend from \"../../utils/extend.js\";\nimport is from \"../../utils/is.js\";\n\nfunction install(scope) {\n  const {\n    actions,\n    browser,\n\n    /** @lends Interactable */\n    Interactable,\n    // tslint:disable-line no-shadowed-variable\n    defaults\n  } = scope; // Less Precision with touch input\n\n  resize.cursors = initCursors(browser);\n  resize.defaultMargin = browser.supportsTouch || browser.supportsPointerEvent ? 20 : 10;\n  /**\n   * ```js\n   * interact(element).resizable({\n   *   onstart: function (event) {},\n   *   onmove : function (event) {},\n   *   onend  : function (event) {},\n   *\n   *   edges: {\n   *     top   : true,       // Use pointer coords to check for resize.\n   *     left  : false,      // Disable resizing from left edge.\n   *     bottom: '.resize-s',// Resize if pointer target matches selector\n   *     right : handleEl    // Resize if pointer target is the given Element\n   *   },\n   *\n   *     // Width and height can be adjusted independently. When `true`, width and\n   *     // height are adjusted at a 1:1 ratio.\n   *     square: false,\n   *\n   *     // Width and height can be adjusted independently. When `true`, width and\n   *     // height maintain the aspect ratio they had when resizing started.\n   *     preserveAspectRatio: false,\n   *\n   *   // a value of 'none' will limit the resize rect to a minimum of 0x0\n   *   // 'negate' will allow the rect to have negative width/height\n   *   // 'reposition' will keep the width/height positive by swapping\n   *   // the top and bottom edges and/or swapping the left and right edges\n   *   invert: 'none' || 'negate' || 'reposition'\n   *\n   *   // limit multiple resizes.\n   *   // See the explanation in the {@link Interactable.draggable} example\n   *   max: Infinity,\n   *   maxPerElement: 1,\n   * })\n   *\n   * var isResizeable = interact(element).resizable()\n   * ```\n   *\n   * Gets or sets whether resize actions can be performed on the target\n   *\n   * @param {boolean | object} [options] true/false or An object with event\n   * listeners to be fired on resize events (object makes the Interactable\n   * resizable)\n   * @return {boolean | Interactable} A boolean indicating if this can be the\n   * target of resize elements, or this Interactable\n   */\n\n  Interactable.prototype.resizable = function (options) {\n    return resizable(this, options, scope);\n  };\n\n  actions.map.resize = resize;\n  actions.methodDict.resize = 'resizable';\n  defaults.actions.resize = resize.defaults;\n}\n\nfunction resizeChecker(arg) {\n  const {\n    interaction,\n    interactable,\n    element,\n    rect,\n    buttons\n  } = arg;\n\n  if (!rect) {\n    return undefined;\n  }\n\n  const page = extend({}, interaction.coords.cur.page);\n  const resizeOptions = interactable.options.resize;\n\n  if (!(resizeOptions && resizeOptions.enabled) || // check mouseButton setting if the pointer is down\n  interaction.pointerIsDown && /mouse|pointer/.test(interaction.pointerType) && (buttons & resizeOptions.mouseButtons) === 0) {\n    return undefined;\n  } // if using resize.edges\n\n\n  if (is.object(resizeOptions.edges)) {\n    const resizeEdges = {\n      left: false,\n      right: false,\n      top: false,\n      bottom: false\n    };\n\n    for (const edge in resizeEdges) {\n      resizeEdges[edge] = checkResizeEdge(edge, resizeOptions.edges[edge], page, interaction._latestPointer.eventTarget, element, rect, resizeOptions.margin || resize.defaultMargin);\n    }\n\n    resizeEdges.left = resizeEdges.left && !resizeEdges.right;\n    resizeEdges.top = resizeEdges.top && !resizeEdges.bottom;\n\n    if (resizeEdges.left || resizeEdges.right || resizeEdges.top || resizeEdges.bottom) {\n      arg.action = {\n        name: 'resize',\n        edges: resizeEdges\n      };\n    }\n  } else {\n    const right = resizeOptions.axis !== 'y' && page.x > rect.right - resize.defaultMargin;\n    const bottom = resizeOptions.axis !== 'x' && page.y > rect.bottom - resize.defaultMargin;\n\n    if (right || bottom) {\n      arg.action = {\n        name: 'resize',\n        axes: (right ? 'x' : '') + (bottom ? 'y' : '')\n      };\n    }\n  }\n\n  return arg.action ? false : undefined;\n}\n\nfunction resizable(interactable, options, scope) {\n  if (is.object(options)) {\n    interactable.options.resize.enabled = options.enabled !== false;\n    interactable.setPerAction('resize', options);\n    interactable.setOnEvents('resize', options);\n\n    if (is.string(options.axis) && /^x$|^y$|^xy$/.test(options.axis)) {\n      interactable.options.resize.axis = options.axis;\n    } else if (options.axis === null) {\n      interactable.options.resize.axis = scope.defaults.actions.resize.axis;\n    }\n\n    if (is.bool(options.preserveAspectRatio)) {\n      interactable.options.resize.preserveAspectRatio = options.preserveAspectRatio;\n    } else if (is.bool(options.square)) {\n      interactable.options.resize.square = options.square;\n    }\n\n    return interactable;\n  }\n\n  if (is.bool(options)) {\n    interactable.options.resize.enabled = options;\n    return interactable;\n  }\n\n  return interactable.options.resize;\n}\n\nfunction checkResizeEdge(name, value, page, element, interactableElement, rect, margin) {\n  // false, '', undefined, null\n  if (!value) {\n    return false;\n  } // true value, use pointer coords and element rect\n\n\n  if (value === true) {\n    // if dimensions are negative, \"switch\" edges\n    const width = is.number(rect.width) ? rect.width : rect.right - rect.left;\n    const height = is.number(rect.height) ? rect.height : rect.bottom - rect.top; // don't use margin greater than half the relevent dimension\n\n    margin = Math.min(margin, Math.abs((name === 'left' || name === 'right' ? width : height) / 2));\n\n    if (width < 0) {\n      if (name === 'left') {\n        name = 'right';\n      } else if (name === 'right') {\n        name = 'left';\n      }\n    }\n\n    if (height < 0) {\n      if (name === 'top') {\n        name = 'bottom';\n      } else if (name === 'bottom') {\n        name = 'top';\n      }\n    }\n\n    if (name === 'left') {\n      return page.x < (width >= 0 ? rect.left : rect.right) + margin;\n    }\n\n    if (name === 'top') {\n      return page.y < (height >= 0 ? rect.top : rect.bottom) + margin;\n    }\n\n    if (name === 'right') {\n      return page.x > (width >= 0 ? rect.right : rect.left) - margin;\n    }\n\n    if (name === 'bottom') {\n      return page.y > (height >= 0 ? rect.bottom : rect.top) - margin;\n    }\n  } // the remaining checks require an element\n\n\n  if (!is.element(element)) {\n    return false;\n  }\n\n  return is.element(value) // the value is an element to use as a resize handle\n  ? value === element // otherwise check if element matches value as selector\n  : dom.matchesUpTo(element, value, interactableElement);\n}\n/* eslint-disable multiline-ternary */\n\n\nfunction initCursors(browser) {\n  return browser.isIe9 ? {\n    x: 'e-resize',\n    y: 's-resize',\n    xy: 'se-resize',\n    top: 'n-resize',\n    left: 'w-resize',\n    bottom: 's-resize',\n    right: 'e-resize',\n    topleft: 'se-resize',\n    bottomright: 'se-resize',\n    topright: 'ne-resize',\n    bottomleft: 'ne-resize'\n  } : {\n    x: 'ew-resize',\n    y: 'ns-resize',\n    xy: 'nwse-resize',\n    top: 'ns-resize',\n    left: 'ew-resize',\n    bottom: 'ns-resize',\n    right: 'ew-resize',\n    topleft: 'nwse-resize',\n    bottomright: 'nwse-resize',\n    topright: 'nesw-resize',\n    bottomleft: 'nesw-resize'\n  };\n}\n/* eslint-enable multiline-ternary */\n\n\nfunction start({\n  iEvent,\n  interaction\n}) {\n  if (interaction.prepared.name !== 'resize' || !interaction.prepared.edges) {\n    return;\n  }\n\n  const resizeEvent = iEvent;\n  const rect = interaction.rect;\n  interaction._rects = {\n    start: extend({}, rect),\n    corrected: extend({}, rect),\n    previous: extend({}, rect),\n    delta: {\n      left: 0,\n      right: 0,\n      width: 0,\n      top: 0,\n      bottom: 0,\n      height: 0\n    }\n  };\n  resizeEvent.edges = interaction.prepared.edges;\n  resizeEvent.rect = interaction._rects.corrected;\n  resizeEvent.deltaRect = interaction._rects.delta;\n}\n\nfunction move({\n  iEvent,\n  interaction\n}) {\n  if (interaction.prepared.name !== 'resize' || !interaction.prepared.edges) {\n    return;\n  }\n\n  const resizeEvent = iEvent;\n  const resizeOptions = interaction.interactable.options.resize;\n  const invert = resizeOptions.invert;\n  const invertible = invert === 'reposition' || invert === 'negate';\n  const current = interaction.rect;\n  const {\n    start: startRect,\n    corrected,\n    delta: deltaRect,\n    previous\n  } = interaction._rects;\n  extend(previous, corrected);\n\n  if (invertible) {\n    // if invertible, copy the current rect\n    extend(corrected, current);\n\n    if (invert === 'reposition') {\n      // swap edge values if necessary to keep width/height positive\n      if (corrected.top > corrected.bottom) {\n        const swap = corrected.top;\n        corrected.top = corrected.bottom;\n        corrected.bottom = swap;\n      }\n\n      if (corrected.left > corrected.right) {\n        const swap = corrected.left;\n        corrected.left = corrected.right;\n        corrected.right = swap;\n      }\n    }\n  } else {\n    // if not invertible, restrict to minimum of 0x0 rect\n    corrected.top = Math.min(current.top, startRect.bottom);\n    corrected.bottom = Math.max(current.bottom, startRect.top);\n    corrected.left = Math.min(current.left, startRect.right);\n    corrected.right = Math.max(current.right, startRect.left);\n  }\n\n  corrected.width = corrected.right - corrected.left;\n  corrected.height = corrected.bottom - corrected.top;\n\n  for (const edge in corrected) {\n    deltaRect[edge] = corrected[edge] - previous[edge];\n  }\n\n  resizeEvent.edges = interaction.prepared.edges;\n  resizeEvent.rect = corrected;\n  resizeEvent.deltaRect = deltaRect;\n}\n\nfunction end({\n  iEvent,\n  interaction\n}) {\n  if (interaction.prepared.name !== 'resize' || !interaction.prepared.edges) {\n    return;\n  }\n\n  const resizeEvent = iEvent;\n  resizeEvent.edges = interaction.prepared.edges;\n  resizeEvent.rect = interaction._rects.corrected;\n  resizeEvent.deltaRect = interaction._rects.delta;\n}\n\nfunction updateEventAxes({\n  iEvent,\n  interaction\n}) {\n  if (interaction.prepared.name !== 'resize' || !interaction.resizeAxes) {\n    return;\n  }\n\n  const options = interaction.interactable.options;\n  const resizeEvent = iEvent;\n\n  if (options.resize.square) {\n    if (interaction.resizeAxes === 'y') {\n      resizeEvent.delta.x = resizeEvent.delta.y;\n    } else {\n      resizeEvent.delta.y = resizeEvent.delta.x;\n    }\n\n    resizeEvent.axes = 'xy';\n  } else {\n    resizeEvent.axes = interaction.resizeAxes;\n\n    if (interaction.resizeAxes === 'x') {\n      resizeEvent.delta.y = 0;\n    } else if (interaction.resizeAxes === 'y') {\n      resizeEvent.delta.x = 0;\n    }\n  }\n}\n\nconst resize = {\n  id: 'actions/resize',\n  before: ['actions/drag'],\n  install,\n  listeners: {\n    'interactions:new': ({\n      interaction\n    }) => {\n      interaction.resizeAxes = 'xy';\n    },\n    'interactions:action-start': arg => {\n      start(arg);\n      updateEventAxes(arg);\n    },\n    'interactions:action-move': arg => {\n      move(arg);\n      updateEventAxes(arg);\n    },\n    'interactions:action-end': end,\n    'auto-start:check': resizeChecker\n  },\n  defaults: {\n    square: false,\n    preserveAspectRatio: false,\n    axis: 'xy',\n    // use default margin\n    margin: NaN,\n    // object with props left, right, top, bottom which are\n    // true/false values to resize when the pointer is over that edge,\n    // CSS selectors to match the handles for each direction\n    // or the Elements for each handle\n    edges: null,\n    // a value of 'none' will limit the resize rect to a minimum of 0x0\n    // 'negate' will alow the rect to have negative width/height\n    // 'reposition' will keep the width/height positive by swapping\n    // the top and bottom edges and/or swapping the left and right edges\n    invert: 'none'\n  },\n  cursors: null,\n\n  getCursor({\n    edges,\n    axis,\n    name\n  }) {\n    const cursors = resize.cursors;\n    let result = null;\n\n    if (axis) {\n      result = cursors[name + axis];\n    } else if (edges) {\n      let cursorKey = '';\n\n      for (const edge of ['top', 'bottom', 'left', 'right']) {\n        if (edges[edge]) {\n          cursorKey += edge;\n        }\n      }\n\n      result = cursors[cursorKey];\n    }\n\n    return result;\n  },\n\n  defaultMargin: null\n};\nexport default resize;\n//# sourceMappingURL=plugin.js.map","/* eslint-disable import/order, no-console, eol-last */\nimport interact, { init } from \"../../interact/index.js\";\nimport plugin from \"./plugin.js\";\n\nif (typeof window === 'object' && !!window) {\n  init(window);\n}\n\ninteract.use(plugin);\n//# sourceMappingURL=index.js.map","export default (() => {});\n//# sourceMappingURL=edgeTarget.js.map","export default (() => {});\n//# sourceMappingURL=elements.js.map","export default (grid => {\n  const coordFields = [['x', 'y'], ['left', 'top'], ['right', 'bottom'], ['width', 'height']].filter(([xField, yField]) => xField in grid || yField in grid);\n\n  const gridFunc = (x, y) => {\n    const {\n      range,\n      limits = {\n        left: -Infinity,\n        right: Infinity,\n        top: -Infinity,\n        bottom: Infinity\n      },\n      offset = {\n        x: 0,\n        y: 0\n      }\n    } = grid;\n    const result = {\n      range,\n      grid,\n      x: null,\n      y: null\n    };\n\n    for (const [xField, yField] of coordFields) {\n      const gridx = Math.round((x - offset.x) / grid[xField]);\n      const gridy = Math.round((y - offset.y) / grid[yField]);\n      result[xField] = Math.max(limits.left, Math.min(limits.right, gridx * grid[xField] + offset.x));\n      result[yField] = Math.max(limits.top, Math.min(limits.bottom, gridy * grid[yField] + offset.y));\n    }\n\n    return result;\n  };\n\n  gridFunc.grid = grid;\n  gridFunc.coordFields = coordFields;\n  return gridFunc;\n});\n//# sourceMappingURL=grid.js.map","export { default as edgeTarget } from \"./edgeTarget.js\";\nexport { default as elements } from \"./elements.js\";\nexport { default as grid } from \"./grid.js\";\n//# sourceMappingURL=all.js.map","import extend from \"../utils/extend.js\";\nimport * as allSnappers from \"./all.js\";\nconst snappersPlugin = {\n  id: 'snappers',\n\n  install(scope) {\n    const {\n      interactStatic: interact\n    } = scope;\n    interact.snappers = extend(interact.snappers || {}, allSnappers);\n    interact.createSnapGrid = interact.snappers.grid;\n  }\n\n};\nexport default snappersPlugin;\n//# sourceMappingURL=plugin.js.map","import clone from \"../utils/clone.js\";\nimport extend from \"../utils/extend.js\";\nimport * as rectUtils from \"../utils/rect.js\";\nexport default class Modification {\n  constructor(interaction) {\n    this.states = [];\n    this.startOffset = {\n      left: 0,\n      right: 0,\n      top: 0,\n      bottom: 0\n    };\n    this.startDelta = null;\n    this.result = null;\n    this.endResult = null;\n    this.edges = void 0;\n    this.interaction = void 0;\n    this.interaction = interaction;\n    this.result = createResult();\n  }\n\n  start({\n    phase\n  }, pageCoords) {\n    const {\n      interaction\n    } = this;\n    const modifierList = getModifierList(interaction);\n    this.prepareStates(modifierList);\n    this.edges = extend({}, interaction.edges);\n    this.startOffset = getRectOffset(interaction.rect, pageCoords);\n    this.startDelta = {\n      x: 0,\n      y: 0\n    };\n    const arg = {\n      phase,\n      pageCoords,\n      preEnd: false\n    };\n    this.result = createResult();\n    this.startAll(arg);\n    const result = this.result = this.setAll(arg);\n    return result;\n  }\n\n  fillArg(arg) {\n    const {\n      interaction\n    } = this;\n    arg.interaction = interaction;\n    arg.interactable = interaction.interactable;\n    arg.element = interaction.element;\n    arg.rect = arg.rect || interaction.rect;\n    arg.edges = this.edges;\n    arg.startOffset = this.startOffset;\n  }\n\n  startAll(arg) {\n    this.fillArg(arg);\n\n    for (const state of this.states) {\n      if (state.methods.start) {\n        arg.state = state;\n        state.methods.start(arg);\n      }\n    }\n  }\n\n  setAll(arg) {\n    this.fillArg(arg);\n    const {\n      phase,\n      preEnd,\n      skipModifiers,\n      rect: unmodifiedRect\n    } = arg;\n    arg.coords = extend({}, arg.pageCoords);\n    arg.rect = extend({}, unmodifiedRect);\n    const states = skipModifiers ? this.states.slice(skipModifiers) : this.states;\n    const newResult = createResult(arg.coords, arg.rect);\n\n    for (const state of states) {\n      const {\n        options\n      } = state;\n      const lastModifierCoords = extend({}, arg.coords);\n      let returnValue = null;\n\n      if (state.methods.set && this.shouldDo(options, preEnd, phase)) {\n        arg.state = state;\n        returnValue = state.methods.set(arg);\n        rectUtils.addEdges(this.interaction.edges, arg.rect, {\n          x: arg.coords.x - lastModifierCoords.x,\n          y: arg.coords.y - lastModifierCoords.y\n        });\n      }\n\n      newResult.eventProps.push(returnValue);\n    }\n\n    newResult.delta.x = arg.coords.x - arg.pageCoords.x;\n    newResult.delta.y = arg.coords.y - arg.pageCoords.y;\n    newResult.rectDelta.left = arg.rect.left - unmodifiedRect.left;\n    newResult.rectDelta.right = arg.rect.right - unmodifiedRect.right;\n    newResult.rectDelta.top = arg.rect.top - unmodifiedRect.top;\n    newResult.rectDelta.bottom = arg.rect.bottom - unmodifiedRect.bottom;\n    const prevCoords = this.result.coords;\n    const prevRect = this.result.rect;\n\n    if (prevCoords && prevRect) {\n      const rectChanged = newResult.rect.left !== prevRect.left || newResult.rect.right !== prevRect.right || newResult.rect.top !== prevRect.top || newResult.rect.bottom !== prevRect.bottom;\n      newResult.changed = rectChanged || prevCoords.x !== newResult.coords.x || prevCoords.y !== newResult.coords.y;\n    }\n\n    return newResult;\n  }\n\n  applyToInteraction(arg) {\n    const {\n      interaction\n    } = this;\n    const {\n      phase\n    } = arg;\n    const curCoords = interaction.coords.cur;\n    const startCoords = interaction.coords.start;\n    const {\n      result,\n      startDelta\n    } = this;\n    const curDelta = result.delta;\n\n    if (phase === 'start') {\n      extend(this.startDelta, result.delta);\n    }\n\n    for (const [coordsSet, delta] of [[startCoords, startDelta], [curCoords, curDelta]]) {\n      coordsSet.page.x += delta.x;\n      coordsSet.page.y += delta.y;\n      coordsSet.client.x += delta.x;\n      coordsSet.client.y += delta.y;\n    }\n\n    const {\n      rectDelta\n    } = this.result;\n    const rect = arg.rect || interaction.rect;\n    rect.left += rectDelta.left;\n    rect.right += rectDelta.right;\n    rect.top += rectDelta.top;\n    rect.bottom += rectDelta.bottom;\n    rect.width = rect.right - rect.left;\n    rect.height = rect.bottom - rect.top;\n  }\n\n  setAndApply(arg) {\n    const {\n      interaction\n    } = this;\n    const {\n      phase,\n      preEnd,\n      skipModifiers\n    } = arg;\n    const result = this.setAll({\n      preEnd,\n      phase,\n      pageCoords: arg.modifiedCoords || interaction.coords.cur.page\n    });\n    this.result = result; // don't fire an action move if a modifier would keep the event in the same\n    // cordinates as before\n\n    if (!result.changed && (!skipModifiers || skipModifiers < this.states.length) && interaction.interacting()) {\n      return false;\n    }\n\n    if (arg.modifiedCoords) {\n      const {\n        page\n      } = interaction.coords.cur;\n      const adjustment = {\n        x: arg.modifiedCoords.x - page.x,\n        y: arg.modifiedCoords.y - page.y\n      };\n      result.coords.x += adjustment.x;\n      result.coords.y += adjustment.y;\n      result.delta.x += adjustment.x;\n      result.delta.y += adjustment.y;\n    }\n\n    this.applyToInteraction(arg);\n  }\n\n  beforeEnd(arg) {\n    const {\n      interaction,\n      event\n    } = arg;\n    const states = this.states;\n\n    if (!states || !states.length) {\n      return;\n    }\n\n    let doPreend = false;\n\n    for (const state of states) {\n      arg.state = state;\n      const {\n        options,\n        methods\n      } = state;\n      const endPosition = methods.beforeEnd && methods.beforeEnd(arg);\n\n      if (endPosition) {\n        this.endResult = endPosition;\n        return false;\n      }\n\n      doPreend = doPreend || !doPreend && this.shouldDo(options, true, arg.phase, true);\n    }\n\n    if (doPreend) {\n      // trigger a final modified move before ending\n      interaction.move({\n        event,\n        preEnd: true\n      });\n    }\n  }\n\n  stop(arg) {\n    const {\n      interaction\n    } = arg;\n\n    if (!this.states || !this.states.length) {\n      return;\n    }\n\n    const modifierArg = extend({\n      states: this.states,\n      interactable: interaction.interactable,\n      element: interaction.element,\n      rect: null\n    }, arg);\n    this.fillArg(modifierArg);\n\n    for (const state of this.states) {\n      modifierArg.state = state;\n\n      if (state.methods.stop) {\n        state.methods.stop(modifierArg);\n      }\n    }\n\n    this.states = null;\n    this.endResult = null;\n  }\n\n  prepareStates(modifierList) {\n    this.states = [];\n\n    for (let index = 0; index < modifierList.length; index++) {\n      const {\n        options,\n        methods,\n        name\n      } = modifierList[index];\n      this.states.push({\n        options,\n        methods,\n        index,\n        name\n      });\n    }\n\n    return this.states;\n  }\n\n  restoreInteractionCoords({\n    interaction: {\n      coords,\n      rect,\n      modification\n    }\n  }) {\n    if (!modification.result) {\n      return;\n    }\n\n    const {\n      startDelta\n    } = modification;\n    const {\n      delta: curDelta,\n      rectDelta\n    } = modification.result;\n    const coordsAndDeltas = [[coords.start, startDelta], [coords.cur, curDelta]];\n\n    for (const [coordsSet, delta] of coordsAndDeltas) {\n      coordsSet.page.x -= delta.x;\n      coordsSet.page.y -= delta.y;\n      coordsSet.client.x -= delta.x;\n      coordsSet.client.y -= delta.y;\n    }\n\n    rect.left -= rectDelta.left;\n    rect.right -= rectDelta.right;\n    rect.top -= rectDelta.top;\n    rect.bottom -= rectDelta.bottom;\n  }\n\n  shouldDo(options, preEnd, phase, requireEndOnly) {\n    if ( // ignore disabled modifiers\n    !options || options.enabled === false || // check if we require endOnly option to fire move before end\n    requireEndOnly && !options.endOnly || // don't apply endOnly modifiers when not ending\n    options.endOnly && !preEnd || // check if modifier should run be applied on start\n    phase === 'start' && !options.setStart) {\n      return false;\n    }\n\n    return true;\n  }\n\n  copyFrom(other) {\n    this.startOffset = other.startOffset;\n    this.startDelta = other.startDelta;\n    this.edges = other.edges;\n    this.states = other.states.map(s => clone(s));\n    this.result = createResult(extend({}, other.result.coords), extend({}, other.result.rect));\n  }\n\n  destroy() {\n    for (const prop in this) {\n      this[prop] = null;\n    }\n  }\n\n}\n\nfunction createResult(coords, rect) {\n  return {\n    rect,\n    coords,\n    delta: {\n      x: 0,\n      y: 0\n    },\n    rectDelta: {\n      left: 0,\n      right: 0,\n      top: 0,\n      bottom: 0\n    },\n    eventProps: [],\n    changed: true\n  };\n}\n\nfunction getModifierList(interaction) {\n  const actionOptions = interaction.interactable.options[interaction.prepared.name];\n  const actionModifiers = actionOptions.modifiers;\n\n  if (actionModifiers && actionModifiers.length) {\n    return actionModifiers;\n  }\n\n  return ['snap', 'snapSize', 'snapEdges', 'restrict', 'restrictEdges', 'restrictSize'].map(type => {\n    const options = actionOptions[type];\n    return options && options.enabled && {\n      options,\n      methods: options._methods\n    };\n  }).filter(m => !!m);\n}\n\nexport function getRectOffset(rect, coords) {\n  return rect ? {\n    left: coords.x - rect.left,\n    top: coords.y - rect.top,\n    right: rect.right - coords.x,\n    bottom: rect.bottom - coords.y\n  } : {\n    left: 0,\n    top: 0,\n    right: 0,\n    bottom: 0\n  };\n}\n//# sourceMappingURL=Modification.js.map","import { InteractEvent } from \"../core/InteractEvent.js\";\nimport Interaction from \"../core/Interaction.js\";\nimport Modification from \"./Modification.js\";\nexport function makeModifier(module, name) {\n  const {\n    defaults\n  } = module;\n  const methods = {\n    start: module.start,\n    set: module.set,\n    beforeEnd: module.beforeEnd,\n    stop: module.stop\n  };\n\n  const modifier = _options => {\n    const options = _options || {};\n    options.enabled = options.enabled !== false; // add missing defaults to options\n\n    for (const prop in defaults) {\n      if (!(prop in options)) {\n        options[prop] = defaults[prop];\n      }\n    }\n\n    const m = {\n      options,\n      methods,\n      name,\n      enable: () => {\n        options.enabled = true;\n        return m;\n      },\n      disable: () => {\n        options.enabled = false;\n        return m;\n      }\n    };\n    return m;\n  };\n\n  if (name && typeof name === 'string') {\n    // for backwrads compatibility\n    modifier._defaults = defaults;\n    modifier._methods = methods;\n  }\n\n  return modifier;\n}\nexport function addEventModifiers({\n  iEvent,\n  interaction: {\n    modification: {\n      result\n    }\n  }\n}) {\n  if (result) {\n    iEvent.modifiers = result.eventProps;\n  }\n}\nconst modifiersBase = {\n  id: 'modifiers/base',\n  before: ['actions'],\n  install: scope => {\n    scope.defaults.perAction.modifiers = [];\n  },\n  listeners: {\n    'interactions:new': ({\n      interaction\n    }) => {\n      interaction.modification = new Modification(interaction);\n    },\n    'interactions:before-action-start': arg => {\n      const {\n        modification\n      } = arg.interaction;\n      modification.start(arg, arg.interaction.coords.start.page);\n      arg.interaction.edges = modification.edges;\n      modification.applyToInteraction(arg);\n    },\n    'interactions:before-action-move': arg => arg.interaction.modification.setAndApply(arg),\n    'interactions:before-action-end': arg => arg.interaction.modification.beforeEnd(arg),\n    'interactions:action-start': addEventModifiers,\n    'interactions:action-move': addEventModifiers,\n    'interactions:action-end': addEventModifiers,\n    'interactions:after-action-start': arg => arg.interaction.modification.restoreInteractionCoords(arg),\n    'interactions:after-action-move': arg => arg.interaction.modification.restoreInteractionCoords(arg),\n    'interactions:stop': arg => arg.interaction.modification.stop(arg)\n  }\n};\nexport default modifiersBase;\n//# sourceMappingURL=base.js.map","/**\n * @module modifiers/aspectRatio\n *\n * @description\n * This module forces elements to be resized with a specified dx/dy ratio.\n *\n * ```js\n * interact(target).resizable({\n *   modifiers: [\n *     interact.modifiers.snapSize({\n *       targets: [ interact.snappers.grid({ x: 20, y: 20 }) ],\n *     }),\n *     interact.aspectRatio({ ratio: 'preserve' }),\n *   ],\n * });\n * ```\n */\nimport extend from \"../utils/extend.js\";\nimport { addEdges } from \"../utils/rect.js\";\nimport Modification from \"./Modification.js\";\nimport { makeModifier } from \"./base.js\";\nconst aspectRatio = {\n  start(arg) {\n    const {\n      state,\n      rect,\n      edges: originalEdges,\n      pageCoords: coords\n    } = arg;\n    let {\n      ratio\n    } = state.options;\n    const {\n      equalDelta,\n      modifiers\n    } = state.options;\n\n    if (ratio === 'preserve') {\n      ratio = rect.width / rect.height;\n    }\n\n    state.startCoords = extend({}, coords);\n    state.startRect = extend({}, rect);\n    state.ratio = ratio;\n    state.equalDelta = equalDelta;\n    const linkedEdges = state.linkedEdges = {\n      top: originalEdges.top || originalEdges.left && !originalEdges.bottom,\n      left: originalEdges.left || originalEdges.top && !originalEdges.right,\n      bottom: originalEdges.bottom || originalEdges.right && !originalEdges.top,\n      right: originalEdges.right || originalEdges.bottom && !originalEdges.left\n    };\n    state.xIsPrimaryAxis = !!(originalEdges.left || originalEdges.right);\n\n    if (state.equalDelta) {\n      state.edgeSign = (linkedEdges.left ? 1 : -1) * (linkedEdges.top ? 1 : -1);\n    } else {\n      const negativeSecondaryEdge = state.xIsPrimaryAxis ? linkedEdges.top : linkedEdges.left;\n      state.edgeSign = negativeSecondaryEdge ? -1 : 1;\n    }\n\n    extend(arg.edges, linkedEdges);\n\n    if (!modifiers || !modifiers.length) {\n      return;\n    }\n\n    const subModification = new Modification(arg.interaction);\n    subModification.copyFrom(arg.interaction.modification);\n    subModification.prepareStates(modifiers);\n    state.subModification = subModification;\n    subModification.startAll({ ...arg\n    });\n  },\n\n  set(arg) {\n    const {\n      state,\n      rect,\n      coords\n    } = arg;\n    const initialCoords = extend({}, coords);\n    const aspectMethod = state.equalDelta ? setEqualDelta : setRatio;\n    aspectMethod(state, state.xIsPrimaryAxis, coords, rect);\n\n    if (!state.subModification) {\n      return null;\n    }\n\n    const correctedRect = extend({}, rect);\n    addEdges(state.linkedEdges, correctedRect, {\n      x: coords.x - initialCoords.x,\n      y: coords.y - initialCoords.y\n    });\n    const result = state.subModification.setAll({ ...arg,\n      rect: correctedRect,\n      edges: state.linkedEdges,\n      pageCoords: coords,\n      prevCoords: coords,\n      prevRect: correctedRect\n    });\n    const {\n      delta\n    } = result;\n\n    if (result.changed) {\n      const xIsCriticalAxis = Math.abs(delta.x) > Math.abs(delta.y); // do aspect modification again with critical edge axis as primary\n\n      aspectMethod(state, xIsCriticalAxis, result.coords, result.rect);\n      extend(coords, result.coords);\n    }\n\n    return result.eventProps;\n  },\n\n  defaults: {\n    ratio: 'preserve',\n    equalDelta: false,\n    modifiers: [],\n    enabled: false\n  }\n};\n\nfunction setEqualDelta({\n  startCoords,\n  edgeSign\n}, xIsPrimaryAxis, coords) {\n  if (xIsPrimaryAxis) {\n    coords.y = startCoords.y + (coords.x - startCoords.x) * edgeSign;\n  } else {\n    coords.x = startCoords.x + (coords.y - startCoords.y) * edgeSign;\n  }\n}\n\nfunction setRatio({\n  startRect,\n  startCoords,\n  ratio,\n  edgeSign\n}, xIsPrimaryAxis, coords, rect) {\n  if (xIsPrimaryAxis) {\n    const newHeight = rect.width / ratio;\n    coords.y = startCoords.y + (newHeight - startRect.height) * edgeSign;\n  } else {\n    const newWidth = rect.height * ratio;\n    coords.x = startCoords.x + (newWidth - startRect.width) * edgeSign;\n  }\n}\n\nexport default makeModifier(aspectRatio, 'aspectRatio');\nexport { aspectRatio };\n//# sourceMappingURL=aspectRatio.js.map","const noop = () => {};\n\nnoop._defaults = {};\nexport default noop;\n//# sourceMappingURL=noop.js.map","import extend from \"../../utils/extend.js\";\nimport is from \"../../utils/is.js\";\nimport * as rectUtils from \"../../utils/rect.js\";\nimport { makeModifier } from \"../base.js\";\n\nfunction start({\n  rect,\n  startOffset,\n  state,\n  interaction,\n  pageCoords\n}) {\n  const {\n    options\n  } = state;\n  const {\n    elementRect\n  } = options;\n  const offset = extend({\n    left: 0,\n    top: 0,\n    right: 0,\n    bottom: 0\n  }, options.offset || {});\n\n  if (rect && elementRect) {\n    const restriction = getRestrictionRect(options.restriction, interaction, pageCoords);\n\n    if (restriction) {\n      const widthDiff = restriction.right - restriction.left - rect.width;\n      const heightDiff = restriction.bottom - restriction.top - rect.height;\n\n      if (widthDiff < 0) {\n        offset.left += widthDiff;\n        offset.right += widthDiff;\n      }\n\n      if (heightDiff < 0) {\n        offset.top += heightDiff;\n        offset.bottom += heightDiff;\n      }\n    }\n\n    offset.left += startOffset.left - rect.width * elementRect.left;\n    offset.top += startOffset.top - rect.height * elementRect.top;\n    offset.right += startOffset.right - rect.width * (1 - elementRect.right);\n    offset.bottom += startOffset.bottom - rect.height * (1 - elementRect.bottom);\n  }\n\n  state.offset = offset;\n}\n\nfunction set({\n  coords,\n  interaction,\n  state\n}) {\n  const {\n    options,\n    offset\n  } = state;\n  const restriction = getRestrictionRect(options.restriction, interaction, coords);\n\n  if (!restriction) {\n    return;\n  }\n\n  const rect = rectUtils.xywhToTlbr(restriction);\n  coords.x = Math.max(Math.min(rect.right - offset.right, coords.x), rect.left + offset.left);\n  coords.y = Math.max(Math.min(rect.bottom - offset.bottom, coords.y), rect.top + offset.top);\n}\n\nexport function getRestrictionRect(value, interaction, coords) {\n  if (is.func(value)) {\n    return rectUtils.resolveRectLike(value, interaction.interactable, interaction.element, [coords.x, coords.y, interaction]);\n  } else {\n    return rectUtils.resolveRectLike(value, interaction.interactable, interaction.element);\n  }\n}\nconst defaults = {\n  restriction: null,\n  elementRect: null,\n  offset: null,\n  endOnly: false,\n  enabled: false\n};\nconst restrict = {\n  start,\n  set,\n  defaults\n};\nexport default makeModifier(restrict, 'restrict');\nexport { restrict };\n//# sourceMappingURL=pointer.js.map","// This module adds the options.resize.restrictEdges setting which sets min and\n// max for the top, left, bottom and right edges of the target being resized.\n//\n// interact(target).resize({\n//   edges: { top: true, left: true },\n//   restrictEdges: {\n//     inner: { top: 200, left: 200, right: 400, bottom: 400 },\n//     outer: { top:   0, left:   0, right: 600, bottom: 600 },\n//   },\n// })\nimport extend from \"../../utils/extend.js\";\nimport * as rectUtils from \"../../utils/rect.js\";\nimport { makeModifier } from \"../base.js\";\nimport { getRestrictionRect } from \"./pointer.js\";\nconst noInner = {\n  top: +Infinity,\n  left: +Infinity,\n  bottom: -Infinity,\n  right: -Infinity\n};\nconst noOuter = {\n  top: -Infinity,\n  left: -Infinity,\n  bottom: +Infinity,\n  right: +Infinity\n};\n\nfunction start({\n  interaction,\n  startOffset,\n  state\n}) {\n  const {\n    options\n  } = state;\n  let offset;\n\n  if (options) {\n    const offsetRect = getRestrictionRect(options.offset, interaction, interaction.coords.start.page);\n    offset = rectUtils.rectToXY(offsetRect);\n  }\n\n  offset = offset || {\n    x: 0,\n    y: 0\n  };\n  state.offset = {\n    top: offset.y + startOffset.top,\n    left: offset.x + startOffset.left,\n    bottom: offset.y - startOffset.bottom,\n    right: offset.x - startOffset.right\n  };\n}\n\nfunction set({\n  coords,\n  edges,\n  interaction,\n  state\n}) {\n  const {\n    offset,\n    options\n  } = state;\n\n  if (!edges) {\n    return;\n  }\n\n  const page = extend({}, coords);\n  const inner = getRestrictionRect(options.inner, interaction, page) || {};\n  const outer = getRestrictionRect(options.outer, interaction, page) || {};\n  fixRect(inner, noInner);\n  fixRect(outer, noOuter);\n\n  if (edges.top) {\n    coords.y = Math.min(Math.max(outer.top + offset.top, page.y), inner.top + offset.top);\n  } else if (edges.bottom) {\n    coords.y = Math.max(Math.min(outer.bottom + offset.bottom, page.y), inner.bottom + offset.bottom);\n  }\n\n  if (edges.left) {\n    coords.x = Math.min(Math.max(outer.left + offset.left, page.x), inner.left + offset.left);\n  } else if (edges.right) {\n    coords.x = Math.max(Math.min(outer.right + offset.right, page.x), inner.right + offset.right);\n  }\n}\n\nfunction fixRect(rect, defaults) {\n  for (const edge of ['top', 'left', 'bottom', 'right']) {\n    if (!(edge in rect)) {\n      rect[edge] = defaults[edge];\n    }\n  }\n\n  return rect;\n}\n\nconst defaults = {\n  inner: null,\n  outer: null,\n  offset: null,\n  endOnly: false,\n  enabled: false\n};\nconst restrictEdges = {\n  noInner,\n  noOuter,\n  start,\n  set,\n  defaults\n};\nexport default makeModifier(restrictEdges, 'restrictEdges');\nexport { restrictEdges };\n//# sourceMappingURL=edges.js.map","import extend from \"../../utils/extend.js\";\nimport { makeModifier } from \"../base.js\";\nimport { restrict } from \"./pointer.js\";\nconst defaults = extend({\n  get elementRect() {\n    return {\n      top: 0,\n      left: 0,\n      bottom: 1,\n      right: 1\n    };\n  },\n\n  set elementRect(_) {}\n\n}, restrict.defaults);\nconst restrictRect = {\n  start: restrict.start,\n  set: restrict.set,\n  defaults\n};\nexport default makeModifier(restrictRect, 'restrictRect');\nexport { restrictRect };\n//# sourceMappingURL=rect.js.map","import extend from \"../../utils/extend.js\";\nimport * as rectUtils from \"../../utils/rect.js\";\nimport { makeModifier } from \"../base.js\";\nimport { restrictEdges } from \"./edges.js\";\nimport { getRestrictionRect } from \"./pointer.js\";\nconst noMin = {\n  width: -Infinity,\n  height: -Infinity\n};\nconst noMax = {\n  width: +Infinity,\n  height: +Infinity\n};\n\nfunction start(arg) {\n  return restrictEdges.start(arg);\n}\n\nfunction set(arg) {\n  const {\n    interaction,\n    state,\n    rect,\n    edges\n  } = arg;\n  const {\n    options\n  } = state;\n\n  if (!edges) {\n    return;\n  }\n\n  const minSize = rectUtils.tlbrToXywh(getRestrictionRect(options.min, interaction, arg.coords)) || noMin;\n  const maxSize = rectUtils.tlbrToXywh(getRestrictionRect(options.max, interaction, arg.coords)) || noMax;\n  state.options = {\n    endOnly: options.endOnly,\n    inner: extend({}, restrictEdges.noInner),\n    outer: extend({}, restrictEdges.noOuter)\n  };\n\n  if (edges.top) {\n    state.options.inner.top = rect.bottom - minSize.height;\n    state.options.outer.top = rect.bottom - maxSize.height;\n  } else if (edges.bottom) {\n    state.options.inner.bottom = rect.top + minSize.height;\n    state.options.outer.bottom = rect.top + maxSize.height;\n  }\n\n  if (edges.left) {\n    state.options.inner.left = rect.right - minSize.width;\n    state.options.outer.left = rect.right - maxSize.width;\n  } else if (edges.right) {\n    state.options.inner.right = rect.left + minSize.width;\n    state.options.outer.right = rect.left + maxSize.width;\n  }\n\n  restrictEdges.set(arg);\n  state.options = options;\n}\n\nconst defaults = {\n  min: null,\n  max: null,\n  endOnly: false,\n  enabled: false\n};\nconst restrictSize = {\n  start,\n  set,\n  defaults\n};\nexport default makeModifier(restrictSize, 'restrictSize');\nexport { restrictSize };\n//# sourceMappingURL=size.js.map","import extend from \"../../utils/extend.js\";\nimport getOriginXY from \"../../utils/getOriginXY.js\";\nimport hypot from \"../../utils/hypot.js\";\nimport is from \"../../utils/is.js\";\nimport { resolveRectLike, rectToXY } from \"../../utils/rect.js\";\nimport { makeModifier } from \"../base.js\";\n\nfunction start(arg) {\n  const {\n    interaction,\n    interactable,\n    element,\n    rect,\n    state,\n    startOffset\n  } = arg;\n  const {\n    options\n  } = state;\n  const origin = options.offsetWithOrigin ? getOrigin(arg) : {\n    x: 0,\n    y: 0\n  };\n  let snapOffset;\n\n  if (options.offset === 'startCoords') {\n    snapOffset = {\n      x: interaction.coords.start.page.x,\n      y: interaction.coords.start.page.y\n    };\n  } else {\n    const offsetRect = resolveRectLike(options.offset, interactable, element, [interaction]);\n    snapOffset = rectToXY(offsetRect) || {\n      x: 0,\n      y: 0\n    };\n    snapOffset.x += origin.x;\n    snapOffset.y += origin.y;\n  }\n\n  const {\n    relativePoints\n  } = options;\n  state.offsets = rect && relativePoints && relativePoints.length ? relativePoints.map((relativePoint, index) => ({\n    index,\n    relativePoint,\n    x: startOffset.left - rect.width * relativePoint.x + snapOffset.x,\n    y: startOffset.top - rect.height * relativePoint.y + snapOffset.y\n  })) : [extend({\n    index: 0,\n    relativePoint: null\n  }, snapOffset)];\n}\n\nfunction set(arg) {\n  const {\n    interaction,\n    coords,\n    state\n  } = arg;\n  const {\n    options,\n    offsets\n  } = state;\n  const origin = getOriginXY(interaction.interactable, interaction.element, interaction.prepared.name);\n  const page = extend({}, coords);\n  const targets = [];\n\n  if (!options.offsetWithOrigin) {\n    page.x -= origin.x;\n    page.y -= origin.y;\n  }\n\n  for (const offset of offsets) {\n    const relativeX = page.x - offset.x;\n    const relativeY = page.y - offset.y;\n\n    for (let index = 0, len = options.targets.length; index < len; index++) {\n      const snapTarget = options.targets[index];\n      let target;\n\n      if (is.func(snapTarget)) {\n        target = snapTarget(relativeX, relativeY, interaction._proxy, offset, index);\n      } else {\n        target = snapTarget;\n      }\n\n      if (!target) {\n        continue;\n      }\n\n      targets.push({\n        x: (is.number(target.x) ? target.x : relativeX) + offset.x,\n        y: (is.number(target.y) ? target.y : relativeY) + offset.y,\n        range: is.number(target.range) ? target.range : options.range,\n        source: snapTarget,\n        index,\n        offset\n      });\n    }\n  }\n\n  const closest = {\n    target: null,\n    inRange: false,\n    distance: 0,\n    range: 0,\n    delta: {\n      x: 0,\n      y: 0\n    }\n  };\n\n  for (const target of targets) {\n    const range = target.range;\n    const dx = target.x - page.x;\n    const dy = target.y - page.y;\n    const distance = hypot(dx, dy);\n    let inRange = distance <= range; // Infinite targets count as being out of range\n    // compared to non infinite ones that are in range\n\n    if (range === Infinity && closest.inRange && closest.range !== Infinity) {\n      inRange = false;\n    }\n\n    if (!closest.target || (inRange // is the closest target in range?\n    ? closest.inRange && range !== Infinity // the pointer is relatively deeper in this target\n    ? distance / range < closest.distance / closest.range // this target has Infinite range and the closest doesn't\n    : range === Infinity && closest.range !== Infinity || // OR this target is closer that the previous closest\n    distance < closest.distance : // The other is not in range and the pointer is closer to this target\n    !closest.inRange && distance < closest.distance)) {\n      closest.target = target;\n      closest.distance = distance;\n      closest.range = range;\n      closest.inRange = inRange;\n      closest.delta.x = dx;\n      closest.delta.y = dy;\n    }\n  }\n\n  if (closest.inRange) {\n    coords.x = closest.target.x;\n    coords.y = closest.target.y;\n  }\n\n  state.closest = closest;\n  return closest;\n}\n\nfunction getOrigin(arg) {\n  const {\n    element\n  } = arg.interaction;\n  const optionsOrigin = rectToXY(resolveRectLike(arg.state.options.origin, null, null, [element]));\n  const origin = optionsOrigin || getOriginXY(arg.interactable, element, arg.interaction.prepared.name);\n  return origin;\n}\n\nconst defaults = {\n  range: Infinity,\n  targets: null,\n  offset: null,\n  offsetWithOrigin: true,\n  origin: null,\n  relativePoints: null,\n  endOnly: false,\n  enabled: false\n};\nconst snap = {\n  start,\n  set,\n  defaults\n};\nexport default makeModifier(snap, 'snap');\nexport { snap };\n//# sourceMappingURL=pointer.js.map","// This module allows snapping of the size of targets during resize\n// interactions.\nimport extend from \"../../utils/extend.js\";\nimport is from \"../../utils/is.js\";\nimport { makeModifier } from \"../base.js\";\nimport { snap } from \"./pointer.js\";\n\nfunction start(arg) {\n  const {\n    state,\n    edges\n  } = arg;\n  const {\n    options\n  } = state;\n\n  if (!edges) {\n    return null;\n  }\n\n  arg.state = {\n    options: {\n      targets: null,\n      relativePoints: [{\n        x: edges.left ? 0 : 1,\n        y: edges.top ? 0 : 1\n      }],\n      offset: options.offset || 'self',\n      origin: {\n        x: 0,\n        y: 0\n      },\n      range: options.range\n    }\n  };\n  state.targetFields = state.targetFields || [['width', 'height'], ['x', 'y']];\n  snap.start(arg);\n  state.offsets = arg.state.offsets;\n  arg.state = state;\n}\n\nfunction set(arg) {\n  const {\n    interaction,\n    state,\n    coords\n  } = arg;\n  const {\n    options,\n    offsets\n  } = state;\n  const relative = {\n    x: coords.x - offsets[0].x,\n    y: coords.y - offsets[0].y\n  };\n  state.options = extend({}, options);\n  state.options.targets = [];\n\n  for (const snapTarget of options.targets || []) {\n    let target;\n\n    if (is.func(snapTarget)) {\n      target = snapTarget(relative.x, relative.y, interaction);\n    } else {\n      target = snapTarget;\n    }\n\n    if (!target) {\n      continue;\n    }\n\n    for (const [xField, yField] of state.targetFields) {\n      if (xField in target || yField in target) {\n        target.x = target[xField];\n        target.y = target[yField];\n        break;\n      }\n    }\n\n    state.options.targets.push(target);\n  }\n\n  const returnValue = snap.set(arg);\n  state.options = options;\n  return returnValue;\n}\n\nconst defaults = {\n  range: Infinity,\n  targets: null,\n  offset: null,\n  endOnly: false,\n  enabled: false\n};\nconst snapSize = {\n  start,\n  set,\n  defaults\n};\nexport default makeModifier(snapSize, 'snapSize');\nexport { snapSize };\n//# sourceMappingURL=size.js.map","/**\n * @module modifiers/snapEdges\n *\n * @description\n * WOW> This module allows snapping of the edges of targets during resize\n * interactions.\n *\n * ```js\n * interact(target).resizable({\n *   snapEdges: {\n *     targets: [interact.snappers.grid({ x: 100, y: 50 })],\n *   },\n * })\n *\n * interact(target).resizable({\n *   snapEdges: {\n *     targets: [\n *       interact.snappers.grid({\n *        top: 50,\n *        left: 50,\n *        bottom: 100,\n *        right: 100,\n *       }),\n *     ],\n *   },\n * })\n * ```\n */\nimport clone from \"../../utils/clone.js\";\nimport extend from \"../../utils/extend.js\";\nimport { makeModifier } from \"../base.js\";\nimport { snapSize } from \"./size.js\";\n\nfunction start(arg) {\n  const {\n    edges\n  } = arg;\n\n  if (!edges) {\n    return null;\n  }\n\n  arg.state.targetFields = arg.state.targetFields || [[edges.left ? 'left' : 'right', edges.top ? 'top' : 'bottom']];\n  return snapSize.start(arg);\n}\n\nconst snapEdges = {\n  start,\n  set: snapSize.set,\n  defaults: extend(clone(snapSize.defaults), {\n    targets: null,\n    range: null,\n    offset: {\n      x: 0,\n      y: 0\n    }\n  })\n};\nexport default makeModifier(snapEdges, 'snapEdges');\nexport { snapEdges };\n//# sourceMappingURL=edges.js.map","/* eslint-disable node/no-extraneous-import */\nimport aspectRatio from \"./aspectRatio.js\";\nimport avoid from \"./avoid.js\";\nimport restrictEdges from \"./restrict/edges.js\";\nimport restrict from \"./restrict/pointer.js\";\nimport restrictRect from \"./restrict/rect.js\";\nimport restrictSize from \"./restrict/size.js\";\nimport rubberband from \"./rubberband.js\";\nimport snapEdges from \"./snap/edges.js\";\nimport snap from \"./snap/pointer.js\";\nimport snapSize from \"./snap/size.js\";\nimport spring from \"./spring.js\";\nimport transform from \"./transform.js\";\nexport default {\n  aspectRatio,\n  restrictEdges,\n  restrict,\n  restrictRect,\n  restrictSize,\n  snapEdges,\n  snap,\n  snapSize,\n  spring,\n  avoid,\n  transform,\n  rubberband\n};\n//# sourceMappingURL=all.js.map","import snappers from \"../snappers/plugin.js\";\nimport all from \"./all.js\";\nimport base from \"./base.js\";\nconst modifiers = {\n  id: 'modifiers',\n\n  install(scope) {\n    const {\n      interactStatic: interact\n    } = scope;\n    scope.usePlugin(base);\n    scope.usePlugin(snappers);\n    interact.modifiers = all; // for backwrads compatibility\n\n    for (const type in all) {\n      const {\n        _defaults,\n        _methods\n      } = all[type];\n      _defaults._methods = _methods;\n      scope.defaults.perAction[type] = _defaults;\n    }\n  }\n\n};\nexport default modifiers;\n//# sourceMappingURL=plugin.js.map","/* eslint-disable import/order, no-console, eol-last */\nimport interact, { init } from \"../interact/index.js\";\nimport plugin from \"./plugin.js\";\n\nif (typeof window === 'object' && !!window) {\n  init(window);\n}\n\ninteract.use(plugin);\n//# sourceMappingURL=index.js.map","/* eslint-disable no-console */\nimport { Scope } from \"../core/scope.js\";\nimport domObjects from \"../utils/domObjects.js\";\nimport { parentNode } from \"../utils/domUtils.js\";\nimport extend from \"../utils/extend.js\";\nimport is from \"../utils/is.js\";\nimport * as win from \"../utils/window.js\";\nvar CheckName;\n\n(function (CheckName) {\n  CheckName[\"touchAction\"] = \"touchAction\";\n  CheckName[\"boxSizing\"] = \"boxSizing\";\n  CheckName[\"noListeners\"] = \"noListeners\";\n})(CheckName || (CheckName = {}));\n\nconst prefix = '[interact.js] ';\nconst links = {\n  touchAction: 'https://developer.mozilla.org/en-US/docs/Web/CSS/touch-action',\n  boxSizing: 'https://developer.mozilla.org/en-US/docs/Web/CSS/box-sizing'\n}; // eslint-disable-next-line no-undef\n\nconst isProduction = \"development\" === 'production'; // eslint-disable-next-line no-restricted-syntax\n\nfunction install(scope, {\n  logger\n} = {}) {\n  const {\n    Interactable,\n    defaults\n  } = scope;\n  scope.logger = logger || console;\n  defaults.base.devTools = {\n    ignore: {}\n  };\n\n  Interactable.prototype.devTools = function (options) {\n    if (options) {\n      extend(this.options.devTools, options);\n      return this;\n    }\n\n    return this.options.devTools;\n  };\n}\n\nconst checks = [{\n  name: CheckName.touchAction,\n\n  perform({\n    element\n  }) {\n    return !parentHasStyle(element, 'touchAction', /pan-|pinch|none/);\n  },\n\n  getInfo({\n    element\n  }) {\n    return [element, links.touchAction];\n  },\n\n  text: 'Consider adding CSS \"touch-action: none\" to this element\\n'\n}, {\n  name: CheckName.boxSizing,\n\n  perform(interaction) {\n    const {\n      element\n    } = interaction;\n    return interaction.prepared.name === 'resize' && element instanceof domObjects.HTMLElement && !hasStyle(element, 'boxSizing', /border-box/);\n  },\n\n  text: 'Consider adding CSS \"box-sizing: border-box\" to this resizable element',\n\n  getInfo({\n    element\n  }) {\n    return [element, links.boxSizing];\n  }\n\n}, {\n  name: CheckName.noListeners,\n\n  perform(interaction) {\n    const actionName = interaction.prepared.name;\n    const moveListeners = interaction.interactable.events.types[`${actionName}move`] || [];\n    return !moveListeners.length;\n  },\n\n  getInfo(interaction) {\n    return [interaction.prepared.name, interaction.interactable];\n  },\n\n  text: 'There are no listeners set for this action'\n}];\n\nfunction hasStyle(element, prop, styleRe) {\n  const value = element.style[prop] || win.window.getComputedStyle(element)[prop];\n  return styleRe.test((value || '').toString());\n}\n\nfunction parentHasStyle(element, prop, styleRe) {\n  let parent = element;\n\n  while (is.element(parent)) {\n    if (hasStyle(parent, prop, styleRe)) {\n      return true;\n    }\n\n    parent = parentNode(parent);\n  }\n\n  return false;\n}\n\nconst id = 'dev-tools';\nconst defaultExport = isProduction ? {\n  id,\n  install: () => {}\n} : {\n  id,\n  install,\n  listeners: {\n    'interactions:action-start': ({\n      interaction\n    }, scope) => {\n      for (const check of checks) {\n        const options = interaction.interactable && interaction.interactable.options;\n\n        if (!(options && options.devTools && options.devTools.ignore[check.name]) && check.perform(interaction)) {\n          scope.logger.warn(prefix + check.text, ...check.getInfo(interaction));\n        }\n      }\n    }\n  },\n  checks,\n  CheckName,\n  links,\n  prefix\n};\nexport default defaultExport;\n//# sourceMappingURL=plugin.js.map","/* eslint-disable import/order, no-console, eol-last */\nimport interact, { init } from \"../interact/index.js\";\nimport plugin from \"./plugin.js\";\n\nif (typeof window === 'object' && !!window) {\n  init(window);\n}\n\ninteract.use(plugin);\n//# sourceMappingURL=index.js.map","export { default } from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./GridItem.vue?vue&type=script&lang=js\"; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./GridItem.vue?vue&type=script&lang=js\"","import { render } from \"./GridItem.vue?vue&type=template&id=46ff2fc8\"\nimport script from \"./GridItem.vue?vue&type=script&lang=js\"\nexport * from \"./GridItem.vue?vue&type=script&lang=js\"\n\nimport \"./GridItem.vue?vue&type=style&index=0&id=46ff2fc8&lang=css\"\n\nimport exportComponent from \"/Users/bytedance/Documents/codes/github/vue-grid-layout/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n    <div ref=\"item\" class=\"vue-grid-layout\" :style=\"mergedStyle\">\n        <slot></slot>\n        <grid-item class=\"vue-grid-placeholder\"\n                   v-show=\"isDragging\"\n                   :x=\"placeholder.x\"\n                   :y=\"placeholder.y\"\n                   :w=\"placeholder.w\"\n                   :h=\"placeholder.h\"\n                   :i=\"placeholder.i\"></grid-item>\n    </div>\n</template>\n<style>\n    .vue-grid-layout {\n        position: relative;\n        transition: height 200ms ease;\n    }\n</style>\n<script>\n    import mitt from 'mitt';\n    const elementResizeDetectorMaker = require(\"element-resize-detector\");\n\n    import {bottom, compact, getLayoutItem, moveElement, validateLayout, cloneLayout, getAllCollisions} from '@/helpers/utils';\n    import {getBreakpointFromWidth, getColsFromBreakpoint, findOrGenerateResponsiveLayout} from \"@/helpers/responsiveUtils\";\n    //var eventBus = require('./eventBus');\n\n    import GridItem from './GridItem.vue'\n    import {addWindowEventListener, removeWindowEventListener} from \"@/helpers/DOM\";\n\n    export default {\n        name: \"GridLayout\",\n        provide() {\n            return {\n                eventBus: this.eventBus,\n                layout: this\n            }\n        },\n        components: {\n            GridItem,\n        },\n        props: {\n            // If true, the container height swells and contracts to fit contents\n            autoSize: {\n                type: Boolean,\n                default: true\n            },\n            colNum: {\n                type: Number,\n                default: 12\n            },\n            rowHeight: {\n                type: Number,\n                default: 150\n            },\n            maxRows: {\n                type: Number,\n                default: Infinity\n            },\n            margin: {\n                type: Array,\n                default: function () {\n                    return [10, 10];\n                }\n            },\n            isDraggable: {\n                type: Boolean,\n                default: true\n            },\n            isResizable: {\n                type: Boolean,\n                default: true\n            },\n            isMirrored: {\n                type: Boolean,\n                default: false\n            },\n            useCssTransforms: {\n                type: Boolean,\n                default: true\n            },\n            verticalCompact: {\n                type: Boolean,\n                default: true\n            },\n            layout: {\n                type: Array,\n                required: true\n            },\n            responsive: {\n                type: Boolean,\n                default: false\n            },\n            responsiveLayouts: {\n                type: Object,\n                default: function() {\n                    return {};\n                }\n            },\n            breakpoints:{\n                type: Object,\n                default: function(){return{ lg: 1200, md: 996, sm: 768, xs: 480, xxs: 0 }}\n            },\n            cols:{\n                type: Object,\n                default: function(){return{ lg: 12, md: 10, sm: 6, xs: 4, xxs: 2 }},\n            },\n            preventCollision: {\n                type: Boolean,\n                default: false\n            },\n            useStyleCursor: {\n                type: Boolean,\n                default: true\n            }\n        },\n        data: function () {\n            return {\n                eventBus: mitt(),\n                width: null,\n                mergedStyle: {},\n                lastLayoutLength: 0,\n                isDragging: false,\n                placeholder: {\n                    x: 0,\n                    y: 0,\n                    w: 0,\n                    h: 0,\n                    i: -1\n                },\n                layouts: {}, // array to store all layouts from different breakpoints\n                lastBreakpoint: null, // store last active breakpoint\n                originalLayout: null, // store original Layout\n                // layout: JSON.parse(JSON.stringify(this.value)),\n            };\n        },\n        created () {\n            const self = this;\n\n            // Accessible refernces of functions for removing in beforeUnmount\n            self.resizeEventHandler = function({eventType, i, x, y, h, w}) {\n                self.resizeEvent(eventType, i, x, y, h, w);\n            };\n\n            self.dragEventHandler = function({eventType, i, x, y, h, w}) {\n                self.dragEvent(eventType, i, x, y, h, w);\n            };\n\n            self.eventBus.on('resizeEvent', self.resizeEventHandler);\n            self.eventBus.on('dragEvent', self.dragEventHandler);\n            self.$emit('layout-created', self.layout);\n        },\n        beforeUnmount: function(){\n            //Remove listeners\n            this.eventBus.off('resizeEvent', this.resizeEventHandler);\n            this.eventBus.off('dragEvent', this.dragEventHandler);\n            removeWindowEventListener(\"resize\", this.onWindowResize);\n            if (this.erd) {\n                this.erd.uninstall(this.$refs.item);\n            }\n        },\n        beforeMount: function() {\n            this.$emit('layout-before-mount', this.layout);\n        },\n        mounted: function() {\n            this.$emit('layout-mounted', this.layout);\n            this.$nextTick(function () {\n                validateLayout(this.layout);\n\n                this.originalLayout = this.layout;\n                const self = this;\n                this.$nextTick(function() {\n                    self.onWindowResize();\n\n                    self.initResponsiveFeatures();\n\n                    //self.width = self.$el.offsetWidth;\n                    addWindowEventListener('resize', self.onWindowResize);\n\n                    compact(self.layout, self.verticalCompact);\n\n                    self.$emit('layout-updated',self.layout)\n\n                    self.updateHeight();\n                    self.$nextTick(function () {\n                        this.erd = elementResizeDetectorMaker({\n                            strategy: \"scroll\", //<- For ultra performance.\n                            // See https://github.com/wnr/element-resize-detector/issues/110 about callOnAdd.\n                            callOnAdd: false,\n                        });\n                        this.erd.listenTo(self.$refs.item, function () {\n                            self.onWindowResize();\n                        });\n                    });\n                });\n            });\n        },\n        watch: {\n            width: function (newval, oldval) {\n                const self = this;\n                this.$nextTick(function () {\n                    //this.$broadcast(\"updateWidth\", this.width);\n                    this.eventBus.emit(\"updateWidth\", this.width);\n                    if (oldval === null) {\n                        /*\n                            If oldval == null is when the width has never been\n                            set before. That only occurs when mouting is\n                            finished, and onWindowResize has been called and\n                            this.width has been changed the first time after it\n                            got set to null in the constructor. It is now time\n                            to issue layout-ready events as the GridItems have\n                            their sizes configured properly.\n\n                            The reason for emitting the layout-ready events on\n                            the next tick is to allow for the newly-emitted\n                            updateWidth event (above) to have reached the\n                            children GridItem-s and had their effect, so we're\n                            sure that they have the final size before we emit\n                            layout-ready (for this GridLayout) and\n                            item-layout-ready (for the GridItem-s).\n\n                            This way any client event handlers can reliably\n                            invistigate stable sizes of GridItem-s.\n                        */\n                        this.$nextTick(() => {\n                            this.$emit('layout-ready', self.layout);\n                        });\n                    }\n                    this.updateHeight();\n                });\n            },\n            layout() {\n                this.layoutUpdate();\n            },\n            colNum: function (val) {\n                this.eventBus.emit(\"setColNum\", val);\n            },\n            rowHeight: function() {\n                this.eventBus.emit(\"setRowHeight\", this.rowHeight);\n            },\n            isDraggable: function() {\n                this.eventBus.emit(\"setDraggable\", this.isDraggable);\n            },\n            isResizable: function() {\n                this.eventBus.emit(\"setResizable\", this.isResizable);\n            },\n            responsive() {\n                if (!this.responsive) {\n                    this.$emit('update:layout', this.originalLayout);\n                    this.eventBus.emit(\"setColNum\", this.colNum);\n                }\n                this.onWindowResize();\n            },\n            maxRows: function() {\n                this.eventBus.emit(\"setMaxRows\", this.maxRows);\n            },\n            margin() {\n                this.updateHeight();\n            }\n        },\n        methods: {\n            layoutUpdate() {\n                if (this.layout !== undefined && this.originalLayout !== null) {\n                    if (this.layout.length !== this.originalLayout.length) {\n                        // console.log(\"### LAYOUT UPDATE!\", this.layout.length, this.originalLayout.length);\n\n                        let diff = this.findDifference(this.layout, this.originalLayout);\n                        if (diff.length > 0){\n                            // console.log(diff);\n                            if (this.layout.length > this.originalLayout.length) {\n                                this.originalLayout = this.originalLayout.concat(diff);\n                            } else {\n                                this.originalLayout = this.originalLayout.filter(obj => {\n                                    return !diff.some(obj2 => {\n                                        return obj.i === obj2.i;\n                                    });\n                                });\n                            }\n                        }\n\n                        this.lastLayoutLength = this.layout.length;\n                        this.initResponsiveFeatures();\n                    }\n\n                    compact(this.layout, this.verticalCompact);\n                    this.eventBus.emit(\"updateWidth\", this.width);\n                    this.updateHeight();\n\n                    this.$emit('layout-updated',this.layout)\n                }\n            },\n            updateHeight: function () {\n                this.mergedStyle = {\n                    height: this.containerHeight()\n                };\n            },\n            onWindowResize: function () {\n                if (this.$refs !== null && this.$refs.item !== null && this.$refs.item !== undefined) {\n                    this.width = this.$refs.item.offsetWidth;\n                }\n                this.eventBus.emit(\"resizeEvent\", {});\n            },\n            containerHeight: function () {\n                if (!this.autoSize) return;\n                // console.log(\"bottom: \" + bottom(this.layout))\n                // console.log(\"rowHeight + margins: \" + (this.rowHeight + this.margin[1]) + this.margin[1])\n                const containerHeight =  bottom(this.layout) * (this.rowHeight + this.margin[1]) + this.margin[1] + 'px';\n                return containerHeight;\n            },\n            dragEvent: function (eventName, id, x, y, h, w) {\n                //console.log(eventName + \" id=\" + id + \", x=\" + x + \", y=\" + y);\n                let l = getLayoutItem(this.layout, id);\n                //GetLayoutItem sometimes returns null object\n                if (l === undefined || l === null){\n                    l = {x:0, y:0}\n                }\n\n                if (eventName === \"dragmove\" || eventName === \"dragstart\") {\n                    this.placeholder.i = id;\n                    this.placeholder.x = l.x;\n                    this.placeholder.y = l.y;\n                    this.placeholder.w = w;\n                    this.placeholder.h = h;\n                    this.$nextTick(function() {\n                        this.isDragging = true;\n                    });\n                    //this.$broadcast(\"updateWidth\", this.width);\n                    this.eventBus.emit(\"updateWidth\", this.width);\n                } else {\n                    this.$nextTick(function() {\n                        this.isDragging = false;\n                    });\n                }\n\n                // Move the element to the dragged location.\n                this.$emit(\"update:layout\", moveElement(this.layout, l, x, y, true, this.preventCollision));\n                compact(this.layout, this.verticalCompact);\n                // needed because vue can't detect changes on array element properties\n                this.eventBus.emit(\"compact\");\n                this.updateHeight();\n                if (eventName === 'dragend') this.$emit('layout-updated', this.layout);\n            },\n            resizeEvent: function (eventName, id, x, y, h, w) {\n                let l = getLayoutItem(this.layout, id);\n                //GetLayoutItem sometimes return null object\n                if (l === undefined || l === null){\n                    l = {h:0, w:0}\n                }\n\n                let hasCollisions;\n                if (this.preventCollision) {\n                    const collisions = getAllCollisions(this.layout, { ...l, w, h }).filter(\n                        layoutItem => layoutItem.i !== l.i\n                    );\n                    hasCollisions = collisions.length > 0;\n\n                    // If we're colliding, we need adjust the placeholder.\n                    if (hasCollisions) {\n                        // adjust w && h to maximum allowed space\n                        let leastX = Infinity,\n                        leastY = Infinity;\n                        collisions.forEach(layoutItem => {\n                        if (layoutItem.x > l.x) leastX = Math.min(leastX, layoutItem.x);\n                        if (layoutItem.y > l.y) leastY = Math.min(leastY, layoutItem.y);\n                        });\n\n                        if (Number.isFinite(leastX)) l.w = leastX - l.x;\n                        if (Number.isFinite(leastY)) l.h = leastY - l.y;\n                    }\n                }\n\n                if (!hasCollisions) {\n                    // Set new width and height.\n                    l.w = w;\n                    l.h = h;\n                }\n\n                if (eventName === \"resizestart\" || eventName === \"resizemove\") {\n                    this.placeholder.i = id;\n                    this.placeholder.x = x;\n                    this.placeholder.y = y;\n                    this.placeholder.w = l.w;\n                    this.placeholder.h = l.h;\n                    this.$nextTick(function() {\n                        this.isDragging = true;\n                    });\n                    //this.$broadcast(\"updateWidth\", this.width);\n                    this.eventBus.emit(\"updateWidth\", this.width);\n\n                } else {\n                    this.$nextTick(function() {\n                        this.isDragging = false;\n                    });\n                }\n\n                if (this.responsive) this.responsiveGridLayout();\n\n                compact(this.layout, this.verticalCompact);\n                this.eventBus.emit(\"compact\");\n                this.updateHeight();\n\n                if (eventName === 'resizeend') this.$emit('layout-updated', this.layout);\n            },\n\n            // finds or generates new layouts for set breakpoints\n            responsiveGridLayout(){\n                let newBreakpoint = getBreakpointFromWidth(this.breakpoints, this.width);\n                let newCols = getColsFromBreakpoint(newBreakpoint, this.cols);\n\n                // save actual layout in layouts\n                if(this.lastBreakpoint != null && !this.layouts[this.lastBreakpoint])\n                    this.layouts[this.lastBreakpoint] = cloneLayout(this.layout);\n\n                // Find or generate a new layout.\n                let layout = findOrGenerateResponsiveLayout(\n                    this.originalLayout,\n                    this.layouts,\n                    this.breakpoints,\n                    newBreakpoint,\n                    this.lastBreakpoint,\n                    newCols,\n                    this.verticalCompact\n                );\n\n                // Store the new layout.\n                this.layouts[newBreakpoint] = layout;\n\n                if (this.lastBreakpoint !== newBreakpoint) {\n                    this.$emit('breakpoint-changed', newBreakpoint, layout);\n                }\n\n                // new prop sync\n                this.$emit('update:layout', layout);\n\n                this.lastBreakpoint = newBreakpoint;\n                this.eventBus.emit(\"setColNum\", getColsFromBreakpoint(newBreakpoint, this.cols));\n            },\n\n            // clear all responsive layouts\n            initResponsiveFeatures(){\n                // clear layouts\n                this.layouts = Object.assign({}, this.responsiveLayouts);\n            },\n\n            // find difference in layouts\n            findDifference(layout, originalLayout){\n\n                //Find values that are in result1 but not in result2\n                let uniqueResultOne = layout.filter(function(obj) {\n                    return !originalLayout.some(function(obj2) {\n                        return obj.i === obj2.i;\n                    });\n                });\n\n                //Find values that are in result2 but not in result1\n                let uniqueResultTwo = originalLayout.filter(function(obj) {\n                    return !layout.some(function(obj2) {\n                        return obj.i === obj2.i;\n                    });\n                });\n\n                //Combine the two arrays of unique entries#\n                return uniqueResultOne.concat(uniqueResultTwo);\n            }\n        },\n    }\n</script>\n","import _Object$defineProperty from \"@babel/runtime-corejs2/core-js/object/define-property\";\nexport default function _defineProperty(obj, key, value) {\n  if (key in obj) {\n    _Object$defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n\n  return obj;\n}","export default function(n){return{all:n=n||new Map,on:function(t,e){var i=n.get(t);i&&i.push(e)||n.set(t,[e])},off:function(t,e){var i=n.get(t);i&&i.splice(i.indexOf(e)>>>0,1)},emit:function(t,e){(n.get(t)||[]).slice().map(function(n){n(e)}),(n.get(\"*\")||[]).slice().map(function(n){n(t,e)})}}}\n//# sourceMappingURL=mitt.es.js.map\n","export { default } from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./GridLayout.vue?vue&type=script&lang=js\"; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./GridLayout.vue?vue&type=script&lang=js\"","import { render } from \"./GridLayout.vue?vue&type=template&id=fc5948f6\"\nimport script from \"./GridLayout.vue?vue&type=script&lang=js\"\nexport * from \"./GridLayout.vue?vue&type=script&lang=js\"\n\nimport \"./GridLayout.vue?vue&type=style&index=0&id=fc5948f6&lang=css\"\n\nimport exportComponent from \"/Users/bytedance/Documents/codes/github/vue-grid-layout/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { App } from 'vue';\n\nimport GridItem from './GridItem.vue';\nimport GridLayout from './GridLayout.vue';\n\nexport { GridLayout, GridItem };\n\nconst install = (app: App) => {\n    app.component('grid-layout', GridLayout)\n    app.component('grid-item', GridItem)\n}\ninstall.GridItem = GridItem;\ninstall.GridLayout = GridLayout;\n\nexport default install;","import './setPublicPath'\nimport mod from '~entry'\nexport default mod\nexport * from '~entry'\n","// 20.1.2.2 Number.isFinite(number)\nvar $export = require('./_export');\nvar _isFinite = require('./_global').isFinite;\n\n$export($export.S, 'Number', {\n  isFinite: function isFinite(it) {\n    return typeof it == 'number' && _isFinite(it);\n  }\n});\n","module.exports = '\\x09\\x0A\\x0B\\x0C\\x0D\\x20\\xA0\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003' +\n  '\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n"],"sourceRoot":""}
\ No newline at end of file
diff --git a/dist/vue-grid-layout.umd.min.js b/dist/vue-grid-layout.umd.min.js
index 358bf58f..6bc25d62 100644
--- a/dist/vue-grid-layout.umd.min.js
+++ b/dist/vue-grid-layout.umd.min.js
@@ -1,3 +1,3 @@
-/*! vue-grid-layout - 3.0.0-beta1 | (c) 2015, 2021  Gustavo Santos (JBay Solutions) <gustavo.santos@jbaysolutions.com> (http://www.jbaysolutions.com) | https://github.com/jbaysolutions/vue-grid-layout */
-(function(t,e){"object"===typeof exports&&"object"===typeof module?module.exports=e(require("vue")):"function"===typeof define&&define.amd?define([],e):"object"===typeof exports?exports["VueGridLayout"]=e(require("vue")):t["VueGridLayout"]=e(t["Vue"])})("undefined"!==typeof self?self:this,(function(t){return function(t){var e={};function n(i){if(e[i])return e[i].exports;var r=e[i]={i:i,l:!1,exports:{}};return t[i].call(r.exports,r,r.exports,n),r.l=!0,r.exports}return n.m=t,n.c=e,n.d=function(t,e,i){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:i})},n.r=function(t){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"===typeof t&&t&&t.__esModule)return t;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var r in t)n.d(i,r,function(e){return t[e]}.bind(null,r));return i},n.n=function(t){var e=t&&t.__esModule?function(){return t["default"]}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s="fb15")}({"01f9":function(t,e,n){"use strict";var i=n("2d00"),r=n("5ca1"),o=n("2aba"),s=n("32e9"),a=n("84f2"),c=n("41a0"),l=n("7f20"),u=n("38fd"),h=n("2b4c")("iterator"),d=!([].keys&&"next"in[].keys()),f="@@iterator",p="keys",g="values",m=function(){return this};t.exports=function(t,e,n,v,y,b,x){c(n,e,v);var w,S,E,T=function(t){if(!d&&t in I)return I[t];switch(t){case p:return function(){return new n(this,t)};case g:return function(){return new n(this,t)}}return function(){return new n(this,t)}},z=e+" Iterator",M=y==g,O=!1,I=t.prototype,P=I[h]||I[f]||y&&I[y],D=P||T(y),_=y?M?T("entries"):D:void 0,k="Array"==e&&I.entries||P;if(k&&(E=u(k.call(new t)),E!==Object.prototype&&E.next&&(l(E,z,!0),i||"function"==typeof E[h]||s(E,h,m))),M&&P&&P.name!==g&&(O=!0,D=function(){return P.call(this)}),i&&!x||!d&&!O&&I[h]||s(I,h,D),a[e]=D,a[z]=m,y)if(w={values:M?D:T(g),keys:b?D:T(p),entries:_},x)for(S in w)S in I||o(I,S,w[S]);else r(r.P+r.F*(d||O),e,w);return w}},"02f4":function(t,e,n){var i=n("4588"),r=n("be13");t.exports=function(t){return function(e,n){var o,s,a=String(r(e)),c=i(n),l=a.length;return c<0||c>=l?t?"":void 0:(o=a.charCodeAt(c),o<55296||o>56319||c+1===l||(s=a.charCodeAt(c+1))<56320||s>57343?t?a.charAt(c):o:t?a.slice(c,c+2):s-56320+(o-55296<<10)+65536)}}},"0390":function(t,e,n){"use strict";var i=n("02f4")(!0);t.exports=function(t,e,n){return e+(n?i(t,e).length:1)}},"083e":function(t,e,n){"use strict";n("c541")},"0bfb":function(t,e,n){"use strict";var i=n("cb7c");t.exports=function(){var t=i(this),e="";return t.global&&(e+="g"),t.ignoreCase&&(e+="i"),t.multiline&&(e+="m"),t.unicode&&(e+="u"),t.sticky&&(e+="y"),e}},"0d58":function(t,e,n){var i=n("ce10"),r=n("e11e");t.exports=Object.keys||function(t){return i(t,r)}},"11e9":function(t,e,n){var i=n("52a7"),r=n("4630"),o=n("6821"),s=n("6a99"),a=n("69a8"),c=n("c69a"),l=Object.getOwnPropertyDescriptor;e.f=n("9e1e")?l:function(t,e){if(t=o(t),e=s(e,!0),c)try{return l(t,e)}catch(n){}if(a(t,e))return r(!i.f.call(t,e),t[e])}},1495:function(t,e,n){var i=n("86cc"),r=n("cb7c"),o=n("0d58");t.exports=n("9e1e")?Object.defineProperties:function(t,e){r(t);var n,s=o(e),a=s.length,c=0;while(a>c)i.f(t,n=s[c++],e[n]);return t}},"18d2":function(t,e,n){"use strict";var i=n("18e9");t.exports=function(t){t=t||{};var e=t.reporter,n=t.batchProcessor,r=t.stateHandler.getState;if(!e)throw new Error("Missing required dependency: reporter.");function o(t,e){function n(){e(t)}if(i.isIE(8))r(t).object={proxy:n},t.attachEvent("onresize",n);else{var o=c(t);if(!o)throw new Error("Element is not detectable by this strategy.");o.contentDocument.defaultView.addEventListener("resize",n)}}function s(e){var n=t.important?" !important; ":"; ";return(e.join(n)+n).trim()}function a(t,o,a){a||(a=o,o=t,t=null),t=t||{};t.debug;function c(o,a){var c=s(["display: block","position: absolute","top: 0","left: 0","width: 100%","height: 100%","border: none","padding: 0","margin: 0","opacity: 0","z-index: -1000","pointer-events: none"]),l=!1,u=window.getComputedStyle(o),h=o.offsetWidth,d=o.offsetHeight;function f(){function n(){if("static"===u.position){o.style.setProperty("position","relative",t.important?"important":"");var n=function(e,n,i,r){function o(t){return t.replace(/[^-\d\.]/g,"")}var s=i[r];"auto"!==s&&"0"!==o(s)&&(e.warn("An element that is positioned static has style."+r+"="+s+" which is ignored due to the static positioning. The element will need to be positioned relative, so the style."+r+" will be set to 0. Element: ",n),n.style.setProperty(r,"0",t.important?"important":""))};n(e,o,u,"top"),n(e,o,u,"right"),n(e,o,u,"bottom"),n(e,o,u,"left")}}function s(){function t(e,n){if(!e.contentDocument){var i=r(e);return i.checkForObjectDocumentTimeoutId&&window.clearTimeout(i.checkForObjectDocumentTimeoutId),void(i.checkForObjectDocumentTimeoutId=setTimeout((function(){i.checkForObjectDocumentTimeoutId=0,t(e,n)}),100))}n(e.contentDocument)}l||n();var e=this;t(e,(function(t){a(o)}))}""!==u.position&&(n(u),l=!0);var h=document.createElement("object");h.style.cssText=c,h.tabIndex=-1,h.type="text/html",h.setAttribute("aria-hidden","true"),h.onload=s,i.isIE()||(h.data="about:blank"),r(o)&&(o.appendChild(h),r(o).object=h,i.isIE()&&(h.data="about:blank"))}r(o).startSize={width:h,height:d},n?n.add(f):f()}i.isIE(8)?a(o):c(o,a)}function c(t){return r(t).object}function l(t){if(r(t)){var e=c(t);e&&(i.isIE(8)?t.detachEvent("onresize",e.proxy):t.removeChild(e),r(t).checkForObjectDocumentTimeoutId&&window.clearTimeout(r(t).checkForObjectDocumentTimeoutId),delete r(t).object)}}return{makeDetectable:a,addListener:o,uninstall:l}}},"18e9":function(t,e,n){"use strict";var i=t.exports={};i.isIE=function(t){function e(){var t=navigator.userAgent.toLowerCase();return-1!==t.indexOf("msie")||-1!==t.indexOf("trident")||-1!==t.indexOf(" edge/")}if(!e())return!1;if(!t)return!0;var n=function(){var t,e=3,n=document.createElement("div"),i=n.getElementsByTagName("i");do{n.innerHTML="\x3c!--[if gt IE "+ ++e+"]><i></i><![endif]--\x3e"}while(i[0]);return e>4?e:t}();return t===n},i.isLegacyOpera=function(){return!!window.opera}},"214f":function(t,e,n){"use strict";n("b0c5");var i=n("2aba"),r=n("32e9"),o=n("79e5"),s=n("be13"),a=n("2b4c"),c=n("520a"),l=a("species"),u=!o((function(){var t=/./;return t.exec=function(){var t=[];return t.groups={a:"7"},t},"7"!=="".replace(t,"$<a>")})),h=function(){var t=/(?:)/,e=t.exec;t.exec=function(){return e.apply(this,arguments)};var n="ab".split(t);return 2===n.length&&"a"===n[0]&&"b"===n[1]}();t.exports=function(t,e,n){var d=a(t),f=!o((function(){var e={};return e[d]=function(){return 7},7!=""[t](e)})),p=f?!o((function(){var e=!1,n=/a/;return n.exec=function(){return e=!0,null},"split"===t&&(n.constructor={},n.constructor[l]=function(){return n}),n[d](""),!e})):void 0;if(!f||!p||"replace"===t&&!u||"split"===t&&!h){var g=/./[d],m=n(s,d,""[t],(function(t,e,n,i,r){return e.exec===c?f&&!r?{done:!0,value:g.call(e,n,i)}:{done:!0,value:t.call(n,e,i)}:{done:!1}})),v=m[0],y=m[1];i(String.prototype,t,v),r(RegExp.prototype,d,2==e?function(t,e){return y.call(t,this,e)}:function(t){return y.call(t,this)})}}},"230e":function(t,e,n){var i=n("d3f4"),r=n("7726").document,o=i(r)&&i(r.createElement);t.exports=function(t){return o?r.createElement(t):{}}},"23c6":function(t,e,n){var i=n("2d95"),r=n("2b4c")("toStringTag"),o="Arguments"==i(function(){return arguments}()),s=function(t,e){try{return t[e]}catch(n){}};t.exports=function(t){var e,n,a;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(n=s(e=Object(t),r))?n:o?i(e):"Object"==(a=i(e))&&"function"==typeof e.callee?"Arguments":a}},"24fb":function(t,e,n){"use strict";function i(t,e){var n=t[1]||"",i=t[3];if(!i)return n;if(e&&"function"===typeof btoa){var o=r(i),s=i.sources.map((function(t){return"/*# sourceURL=".concat(i.sourceRoot||"").concat(t," */")}));return[n].concat(s).concat([o]).join("\n")}return[n].join("\n")}function r(t){var e=btoa(unescape(encodeURIComponent(JSON.stringify(t)))),n="sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(e);return"/*# ".concat(n," */")}t.exports=function(t){var e=[];return e.toString=function(){return this.map((function(e){var n=i(e,t);return e[2]?"@media ".concat(e[2]," {").concat(n,"}"):n})).join("")},e.i=function(t,n,i){"string"===typeof t&&(t=[[null,t,""]]);var r={};if(i)for(var o=0;o<this.length;o++){var s=this[o][0];null!=s&&(r[s]=!0)}for(var a=0;a<t.length;a++){var c=[].concat(t[a]);i&&r[c[0]]||(n&&(c[2]?c[2]="".concat(n," and ").concat(c[2]):c[2]=n),e.push(c))}},e}},2621:function(t,e){e.f=Object.getOwnPropertySymbols},"2aba":function(t,e,n){var i=n("7726"),r=n("32e9"),o=n("69a8"),s=n("ca5a")("src"),a=n("fa5b"),c="toString",l=(""+a).split(c);n("8378").inspectSource=function(t){return a.call(t)},(t.exports=function(t,e,n,a){var c="function"==typeof n;c&&(o(n,"name")||r(n,"name",e)),t[e]!==n&&(c&&(o(n,s)||r(n,s,t[e]?""+t[e]:l.join(String(e)))),t===i?t[e]=n:a?t[e]?t[e]=n:r(t,e,n):(delete t[e],r(t,e,n)))})(Function.prototype,c,(function(){return"function"==typeof this&&this[s]||a.call(this)}))},"2aeb":function(t,e,n){var i=n("cb7c"),r=n("1495"),o=n("e11e"),s=n("613b")("IE_PROTO"),a=function(){},c="prototype",l=function(){var t,e=n("230e")("iframe"),i=o.length,r="<",s=">";e.style.display="none",n("fab2").appendChild(e),e.src="javascript:",t=e.contentWindow.document,t.open(),t.write(r+"script"+s+"document.F=Object"+r+"/script"+s),t.close(),l=t.F;while(i--)delete l[c][o[i]];return l()};t.exports=Object.create||function(t,e){var n;return null!==t?(a[c]=i(t),n=new a,a[c]=null,n[s]=t):n=l(),void 0===e?n:r(n,e)}},"2b4c":function(t,e,n){var i=n("5537")("wks"),r=n("ca5a"),o=n("7726").Symbol,s="function"==typeof o,a=t.exports=function(t){return i[t]||(i[t]=s&&o[t]||(s?o:r)("Symbol."+t))};a.store=i},"2cef":function(t,e,n){"use strict";t.exports=function(){var t=1;function e(){return t++}return{generate:e}}},"2d00":function(t,e){t.exports=!1},"2d95":function(t,e){var n={}.toString;t.exports=function(t){return n.call(t).slice(8,-1)}},"2f21":function(t,e,n){"use strict";var i=n("79e5");t.exports=function(t,e){return!!t&&i((function(){e?t.call(null,(function(){}),1):t.call(null)}))}},"32e9":function(t,e,n){var i=n("86cc"),r=n("4630");t.exports=n("9e1e")?function(t,e,n){return i.f(t,e,r(1,n))}:function(t,e,n){return t[e]=n,t}},"38fd":function(t,e,n){var i=n("69a8"),r=n("4bf8"),o=n("613b")("IE_PROTO"),s=Object.prototype;t.exports=Object.getPrototypeOf||function(t){return t=r(t),i(t,o)?t[o]:"function"==typeof t.constructor&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?s:null}},"41a0":function(t,e,n){"use strict";var i=n("2aeb"),r=n("4630"),o=n("7f20"),s={};n("32e9")(s,n("2b4c")("iterator"),(function(){return this})),t.exports=function(t,e,n){t.prototype=i(s,{next:r(1,n)}),o(t,e+" Iterator")}},"456d":function(t,e,n){var i=n("4bf8"),r=n("0d58");n("5eda")("keys",(function(){return function(t){return r(i(t))}}))},4588:function(t,e){var n=Math.ceil,i=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?i:n)(t)}},4630:function(t,e){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},4917:function(t,e,n){"use strict";var i=n("cb7c"),r=n("9def"),o=n("0390"),s=n("5f1b");n("214f")("match",1,(function(t,e,n,a){return[function(n){var i=t(this),r=void 0==n?void 0:n[e];return void 0!==r?r.call(n,i):new RegExp(n)[e](String(i))},function(t){var e=a(n,t,this);if(e.done)return e.value;var c=i(t),l=String(this);if(!c.global)return s(c,l);var u=c.unicode;c.lastIndex=0;var h,d=[],f=0;while(null!==(h=s(c,l))){var p=String(h[0]);d[f]=p,""===p&&(c.lastIndex=o(l,r(c.lastIndex),u)),f++}return 0===f?null:d}]}))},"493e":function(t,e,n){var i=n("24fb");e=i(!1),e.push([t.i,'.vue-grid-item{-webkit-transition:all .2s ease;transition:all .2s ease;-webkit-transition-property:left,top,right;transition-property:left,top,right}.vue-grid-item,.vue-grid-item.no-touch{-ms-touch-action:none;touch-action:none}.vue-grid-item.cssTransforms{-webkit-transition-property:-webkit-transform;transition-property:-webkit-transform;transition-property:transform;transition-property:transform,-webkit-transform;left:0;right:auto}.vue-grid-item.cssTransforms.render-rtl{left:auto;right:0}.vue-grid-item.resizing{opacity:.6;z-index:3}.vue-grid-item.vue-draggable-dragging{-webkit-transition:none;transition:none;z-index:3}.vue-grid-item.vue-grid-placeholder{background:red;opacity:.2;-webkit-transition-duration:.1s;transition-duration:.1s;z-index:2;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none}.vue-grid-item>.vue-resizable-handle{position:absolute;width:20px;height:20px;bottom:0;right:0;background:url("data:image/svg+xml;base64,PHN2ZyBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjojZmZmZmZmMDAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjYiIGhlaWdodD0iNiI+PHBhdGggZD0iTTYgNkgwVjQuMmg0LjJWMEg2djZ6IiBvcGFjaXR5PSIuMzAyIi8+PC9zdmc+");background-position:100% 100%;padding:0 3px 3px 0;background-repeat:no-repeat;background-origin:content-box;-webkit-box-sizing:border-box;box-sizing:border-box;cursor:se-resize}.vue-grid-item>.vue-rtl-resizable-handle{bottom:0;left:0;background:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTAiIGhlaWdodD0iMTAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbD0ibm9uZSIgZD0iTS0xLTFoMTJ2MTJILTF6Ii8+PGc+PHBhdGggc3Ryb2tlLWxpbmVjYXA9InVuZGVmaW5lZCIgc3Ryb2tlLWxpbmVqb2luPSJ1bmRlZmluZWQiIHN0cm9rZS13aWR0aD0iMS41IiBzdHJva2U9IiMwMDAiIGZpbGw9Im5vbmUiIGQ9Ik0xNDQuODIxLTM4LjM5M2wtMjAuMzU3LTMxLjc4NSIvPjxwYXRoIHN0cm9rZT0iIzY2NiIgc3Ryb2tlLWxpbmVjYXA9InVuZGVmaW5lZCIgc3Ryb2tlLWxpbmVqb2luPSJ1bmRlZmluZWQiIHN0cm9rZS13aWR0aD0iMiIgZmlsbD0ibm9uZSIgZD0iTS45NDctLjAxOHY5LjEyNU0tLjY1NiA5aDEwLjczIi8+PC9nPjwvc3ZnPg==);background-position:0 100%;padding-left:3px;background-repeat:no-repeat;background-origin:content-box;cursor:sw-resize;right:auto}.vue-grid-item.disable-userselect{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}',""]),t.exports=e},"499e":function(t,e,n){"use strict";function i(t,e){for(var n=[],i={},r=0;r<e.length;r++){var o=e[r],s=o[0],a=o[1],c=o[2],l=o[3],u={id:t+":"+r,css:a,media:c,sourceMap:l};i[s]?i[s].parts.push(u):n.push(i[s]={id:s,parts:[u]})}return n}n.r(e),n.d(e,"default",(function(){return p}));var r="undefined"!==typeof document;if("undefined"!==typeof DEBUG&&DEBUG&&!r)throw new Error("vue-style-loader cannot be used in a non-browser environment. Use { target: 'node' } in your Webpack config to indicate a server-rendering environment.");var o={},s=r&&(document.head||document.getElementsByTagName("head")[0]),a=null,c=0,l=!1,u=function(){},h=null,d="data-vue-ssr-id",f="undefined"!==typeof navigator&&/msie [6-9]\b/.test(navigator.userAgent.toLowerCase());function p(t,e,n,r){l=n,h=r||{};var s=i(t,e);return g(s),function(e){for(var n=[],r=0;r<s.length;r++){var a=s[r],c=o[a.id];c.refs--,n.push(c)}e?(s=i(t,e),g(s)):s=[];for(r=0;r<n.length;r++){c=n[r];if(0===c.refs){for(var l=0;l<c.parts.length;l++)c.parts[l]();delete o[c.id]}}}}function g(t){for(var e=0;e<t.length;e++){var n=t[e],i=o[n.id];if(i){i.refs++;for(var r=0;r<i.parts.length;r++)i.parts[r](n.parts[r]);for(;r<n.parts.length;r++)i.parts.push(v(n.parts[r]));i.parts.length>n.parts.length&&(i.parts.length=n.parts.length)}else{var s=[];for(r=0;r<n.parts.length;r++)s.push(v(n.parts[r]));o[n.id]={id:n.id,refs:1,parts:s}}}}function m(){var t=document.createElement("style");return t.type="text/css",s.appendChild(t),t}function v(t){var e,n,i=document.querySelector("style["+d+'~="'+t.id+'"]');if(i){if(l)return u;i.parentNode.removeChild(i)}if(f){var r=c++;i=a||(a=m()),e=b.bind(null,i,r,!1),n=b.bind(null,i,r,!0)}else i=m(),e=x.bind(null,i),n=function(){i.parentNode.removeChild(i)};return e(t),function(i){if(i){if(i.css===t.css&&i.media===t.media&&i.sourceMap===t.sourceMap)return;e(t=i)}else n()}}var y=function(){var t=[];return function(e,n){return t[e]=n,t.filter(Boolean).join("\n")}}();function b(t,e,n,i){var r=n?"":i.css;if(t.styleSheet)t.styleSheet.cssText=y(e,r);else{var o=document.createTextNode(r),s=t.childNodes;s[e]&&t.removeChild(s[e]),s.length?t.insertBefore(o,s[e]):t.appendChild(o)}}function x(t,e){var n=e.css,i=e.media,r=e.sourceMap;if(i&&t.setAttribute("media",i),h.ssrId&&t.setAttribute(d,e.id),r&&(n+="\n/*# sourceURL="+r.sources[0]+" */",n+="\n/*# sourceMappingURL=data:application/json;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(r))))+" */"),t.styleSheet)t.styleSheet.cssText=n;else{while(t.firstChild)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(n))}}},"49ad":function(t,e,n){"use strict";t.exports=function(t){var e={};function n(n){var i=t.get(n);return void 0===i?[]:e[i]||[]}function i(n,i){var r=t.get(n);e[r]||(e[r]=[]),e[r].push(i)}function r(t,e){for(var i=n(t),r=0,o=i.length;r<o;++r)if(i[r]===e){i.splice(r,1);break}}function o(t){var e=n(t);e&&(e.length=0)}return{get:n,add:i,removeListener:r,removeAllListeners:o}}},"4bf8":function(t,e,n){var i=n("be13");t.exports=function(t){return Object(i(t))}},5058:function(t,e,n){"use strict";t.exports=function(t){var e=t.idGenerator,n=t.stateHandler.getState;function i(t){var e=n(t);return e&&void 0!==e.id?e.id:null}function r(t){var i=n(t);if(!i)throw new Error("setId required the element to have a resize detection state.");var r=e.generate();return i.id=r,r}return{get:i,set:r}}},"50bf":function(t,e,n){"use strict";var i=t.exports={};function r(t,e,n){var i=t[e];return void 0!==i&&null!==i||void 0===n?i:n}i.getOption=r},"520a":function(t,e,n){"use strict";var i=n("0bfb"),r=RegExp.prototype.exec,o=String.prototype.replace,s=r,a="lastIndex",c=function(){var t=/a/,e=/b*/g;return r.call(t,"a"),r.call(e,"a"),0!==t[a]||0!==e[a]}(),l=void 0!==/()??/.exec("")[1],u=c||l;u&&(s=function(t){var e,n,s,u,h=this;return l&&(n=new RegExp("^"+h.source+"$(?!\\s)",i.call(h))),c&&(e=h[a]),s=r.call(h,t),c&&s&&(h[a]=h.global?s.index+s[0].length:e),l&&s&&s.length>1&&o.call(s[0],n,(function(){for(u=1;u<arguments.length-2;u++)void 0===arguments[u]&&(s[u]=void 0)})),s}),t.exports=s},"52a7":function(t,e){e.f={}.propertyIsEnumerable},5537:function(t,e,n){var i=n("8378"),r=n("7726"),o="__core-js_shared__",s=r[o]||(r[o]={});(t.exports=function(t,e){return s[t]||(s[t]=void 0!==e?e:{})})("versions",[]).push({version:i.version,mode:n("2d00")?"pure":"global",copyright:"© 2020 Denis Pushkarev (zloirock.ru)"})},"55dd":function(t,e,n){"use strict";var i=n("5ca1"),r=n("d8e8"),o=n("4bf8"),s=n("79e5"),a=[].sort,c=[1,2,3];i(i.P+i.F*(s((function(){c.sort(void 0)}))||!s((function(){c.sort(null)}))||!n("2f21")(a)),"Array",{sort:function(t){return void 0===t?a.call(o(this)):a.call(o(this),r(t))}})},"5be5":function(t,e,n){"use strict";t.exports=function(t){var e=t.stateHandler.getState;function n(t){var n=e(t);return n&&!!n.isDetectable}function i(t){e(t).isDetectable=!0}function r(t){return!!e(t).busy}function o(t,n){e(t).busy=!!n}return{isDetectable:n,markAsDetectable:i,isBusy:r,markBusy:o}}},"5ca1":function(t,e,n){var i=n("7726"),r=n("8378"),o=n("32e9"),s=n("2aba"),a=n("9b43"),c="prototype",l=function(t,e,n){var u,h,d,f,p=t&l.F,g=t&l.G,m=t&l.S,v=t&l.P,y=t&l.B,b=g?i:m?i[e]||(i[e]={}):(i[e]||{})[c],x=g?r:r[e]||(r[e]={}),w=x[c]||(x[c]={});for(u in g&&(n=e),n)h=!p&&b&&void 0!==b[u],d=(h?b:n)[u],f=y&&h?a(d,i):v&&"function"==typeof d?a(Function.call,d):d,b&&s(b,u,d,t&l.U),x[u]!=d&&o(x,u,f),v&&w[u]!=d&&(w[u]=d)};i.core=r,l.F=1,l.G=2,l.S=4,l.P=8,l.B=16,l.W=32,l.U=64,l.R=128,t.exports=l},"5dbc":function(t,e,n){var i=n("d3f4"),r=n("8b97").set;t.exports=function(t,e,n){var o,s=e.constructor;return s!==n&&"function"==typeof s&&(o=s.prototype)!==n.prototype&&i(o)&&r&&r(t,o),t}},"5eda":function(t,e,n){var i=n("5ca1"),r=n("8378"),o=n("79e5");t.exports=function(t,e){var n=(r.Object||{})[t]||Object[t],s={};s[t]=e(n),i(i.S+i.F*o((function(){n(1)})),"Object",s)}},"5f1b":function(t,e,n){"use strict";var i=n("23c6"),r=RegExp.prototype.exec;t.exports=function(t,e){var n=t.exec;if("function"===typeof n){var o=n.call(t,e);if("object"!==typeof o)throw new TypeError("RegExp exec method returned something other than an Object or null");return o}if("RegExp"!==i(t))throw new TypeError("RegExp#exec called on incompatible receiver");return r.call(t,e)}},"613b":function(t,e,n){var i=n("5537")("keys"),r=n("ca5a");t.exports=function(t){return i[t]||(i[t]=r(t))}},"626a":function(t,e,n){var i=n("2d95");t.exports=Object("z").propertyIsEnumerable(0)?Object:function(t){return"String"==i(t)?t.split(""):Object(t)}},6521:function(t,e,n){"use strict";n("92bf")},6821:function(t,e,n){var i=n("626a"),r=n("be13");t.exports=function(t){return i(r(t))}},"69a8":function(t,e){var n={}.hasOwnProperty;t.exports=function(t,e){return n.call(t,e)}},"6a99":function(t,e,n){var i=n("d3f4");t.exports=function(t,e){if(!i(t))return t;var n,r;if(e&&"function"==typeof(n=t.toString)&&!i(r=n.call(t)))return r;if("function"==typeof(n=t.valueOf)&&!i(r=n.call(t)))return r;if(!e&&"function"==typeof(n=t.toString)&&!i(r=n.call(t)))return r;throw TypeError("Can't convert object to primitive value")}},7333:function(t,e,n){"use strict";var i=n("9e1e"),r=n("0d58"),o=n("2621"),s=n("52a7"),a=n("4bf8"),c=n("626a"),l=Object.assign;t.exports=!l||n("79e5")((function(){var t={},e={},n=Symbol(),i="abcdefghijklmnopqrst";return t[n]=7,i.split("").forEach((function(t){e[t]=t})),7!=l({},t)[n]||Object.keys(l({},e)).join("")!=i}))?function(t,e){var n=a(t),l=arguments.length,u=1,h=o.f,d=s.f;while(l>u){var f,p=c(arguments[u++]),g=h?r(p).concat(h(p)):r(p),m=g.length,v=0;while(m>v)f=g[v++],i&&!d.call(p,f)||(n[f]=p[f])}return n}:l},7726:function(t,e){var n=t.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=n)},"77f1":function(t,e,n){var i=n("4588"),r=Math.max,o=Math.min;t.exports=function(t,e){return t=i(t),t<0?r(t+e,0):o(t,e)}},"79e5":function(t,e){t.exports=function(t){try{return!!t()}catch(e){return!0}}},"7f20":function(t,e,n){var i=n("86cc").f,r=n("69a8"),o=n("2b4c")("toStringTag");t.exports=function(t,e,n){t&&!r(t=n?t:t.prototype,o)&&i(t,o,{configurable:!0,value:e})}},8378:function(t,e){var n=t.exports={version:"2.6.12"};"number"==typeof __e&&(__e=n)},"848e":function(t,e,n){var i=n("24fb");e=i(!1),e.push([t.i,".vue-grid-layout{position:relative;-webkit-transition:height .2s ease;transition:height .2s ease}",""]),t.exports=e},"84f2":function(t,e){t.exports={}},"86cc":function(t,e,n){var i=n("cb7c"),r=n("c69a"),o=n("6a99"),s=Object.defineProperty;e.f=n("9e1e")?Object.defineProperty:function(t,e,n){if(i(t),e=o(e,!0),i(n),r)try{return s(t,e,n)}catch(a){}if("get"in n||"set"in n)throw TypeError("Accessors not supported!");return"value"in n&&(t[e]=n.value),t}},8875:function(t,e,n){var i,r,o;(function(n,s){r=[],i=s,o="function"===typeof i?i.apply(e,r):i,void 0===o||(t.exports=o)})("undefined"!==typeof self&&self,(function(){function t(){var e=Object.getOwnPropertyDescriptor(document,"currentScript");if(!e&&"currentScript"in document&&document.currentScript)return document.currentScript;if(e&&e.get!==t&&document.currentScript)return document.currentScript;try{throw new Error}catch(f){var n,i,r,o=/.*at [^(]*\((.*):(.+):(.+)\)$/gi,s=/@([^@]*):(\d+):(\d+)\s*$/gi,a=o.exec(f.stack)||s.exec(f.stack),c=a&&a[1]||!1,l=a&&a[2]||!1,u=document.location.href.replace(document.location.hash,""),h=document.getElementsByTagName("script");c===u&&(n=document.documentElement.outerHTML,i=new RegExp("(?:[^\\n]+?\\n){0,"+(l-2)+"}[^<]*<script>([\\d\\D]*?)<\\/script>[\\d\\D]*","i"),r=n.replace(i,"$1").trim());for(var d=0;d<h.length;d++){if("interactive"===h[d].readyState)return h[d];if(h[d].src===c)return h[d];if(c===u&&h[d].innerHTML&&h[d].innerHTML.trim()===r)return h[d]}return null}}return t}))},"8b97":function(t,e,n){var i=n("d3f4"),r=n("cb7c"),o=function(t,e){if(r(t),!i(e)&&null!==e)throw TypeError(e+": can't set as prototype!")};t.exports={set:Object.setPrototypeOf||("__proto__"in{}?function(t,e,i){try{i=n("9b43")(Function.call,n("11e9").f(Object.prototype,"__proto__").set,2),i(t,[]),e=!(t instanceof Array)}catch(r){e=!0}return function(t,n){return o(t,n),e?t.__proto__=n:i(t,n),t}}({},!1):void 0),check:o}},"8bbf":function(e,n){e.exports=t},"8e6e":function(t,e,n){var i=n("5ca1"),r=n("990b"),o=n("6821"),s=n("11e9"),a=n("f1ae");i(i.S,"Object",{getOwnPropertyDescriptors:function(t){var e,n,i=o(t),c=s.f,l=r(i),u={},h=0;while(l.length>h)n=c(i,e=l[h++]),void 0!==n&&a(u,e,n);return u}})},9093:function(t,e,n){var i=n("ce10"),r=n("e11e").concat("length","prototype");e.f=Object.getOwnPropertyNames||function(t){return i(t,r)}},"92bf":function(t,e,n){var i=n("848e");"string"===typeof i&&(i=[[t.i,i,""]]),i.locals&&(t.exports=i.locals);var r=n("499e").default;r("ff1827d0",i,!0,{sourceMap:!1,shadowMode:!1})},"990b":function(t,e,n){var i=n("9093"),r=n("2621"),o=n("cb7c"),s=n("7726").Reflect;t.exports=s&&s.ownKeys||function(t){var e=i.f(o(t)),n=r.f;return n?e.concat(n(t)):e}},"9b43":function(t,e,n){var i=n("d8e8");t.exports=function(t,e,n){if(i(t),void 0===e)return t;switch(n){case 1:return function(n){return t.call(e,n)};case 2:return function(n,i){return t.call(e,n,i)};case 3:return function(n,i,r){return t.call(e,n,i,r)}}return function(){return t.apply(e,arguments)}}},"9c6c":function(t,e,n){var i=n("2b4c")("unscopables"),r=Array.prototype;void 0==r[i]&&n("32e9")(r,i,{}),t.exports=function(t){r[i][t]=!0}},"9def":function(t,e,n){var i=n("4588"),r=Math.min;t.exports=function(t){return t>0?r(i(t),9007199254740991):0}},"9e1e":function(t,e,n){t.exports=!n("79e5")((function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a}))},a481:function(t,e,n){"use strict";var i=n("cb7c"),r=n("4bf8"),o=n("9def"),s=n("4588"),a=n("0390"),c=n("5f1b"),l=Math.max,u=Math.min,h=Math.floor,d=/\$([$&`']|\d\d?|<[^>]*>)/g,f=/\$([$&`']|\d\d?)/g,p=function(t){return void 0===t?t:String(t)};n("214f")("replace",2,(function(t,e,n,g){return[function(i,r){var o=t(this),s=void 0==i?void 0:i[e];return void 0!==s?s.call(i,o,r):n.call(String(o),i,r)},function(t,e){var r=g(n,t,this,e);if(r.done)return r.value;var h=i(t),d=String(this),f="function"===typeof e;f||(e=String(e));var v=h.global;if(v){var y=h.unicode;h.lastIndex=0}var b=[];while(1){var x=c(h,d);if(null===x)break;if(b.push(x),!v)break;var w=String(x[0]);""===w&&(h.lastIndex=a(d,o(h.lastIndex),y))}for(var S="",E=0,T=0;T<b.length;T++){x=b[T];for(var z=String(x[0]),M=l(u(s(x.index),d.length),0),O=[],I=1;I<x.length;I++)O.push(p(x[I]));var P=x.groups;if(f){var D=[z].concat(O,M,d);void 0!==P&&D.push(P);var _=String(e.apply(void 0,D))}else _=m(z,d,M,O,P,e);M>=E&&(S+=d.slice(E,M)+_,E=M+z.length)}return S+d.slice(E)}];function m(t,e,i,o,s,a){var c=i+t.length,l=o.length,u=f;return void 0!==s&&(s=r(s),u=d),n.call(a,u,(function(n,r){var a;switch(r.charAt(0)){case"$":return"$";case"&":return t;case"`":return e.slice(0,i);case"'":return e.slice(c);case"<":a=s[r.slice(1,-1)];break;default:var u=+r;if(0===u)return n;if(u>l){var d=h(u/10);return 0===d?n:d<=l?void 0===o[d-1]?r.charAt(1):o[d-1]+r.charAt(1):n}a=o[u-1]}return void 0===a?"":a}))}}))},aa77:function(t,e,n){var i=n("5ca1"),r=n("be13"),o=n("79e5"),s=n("fdef"),a="["+s+"]",c="​…",l=RegExp("^"+a+a+"*"),u=RegExp(a+a+"*$"),h=function(t,e,n){var r={},a=o((function(){return!!s[t]()||c[t]()!=c})),l=r[t]=a?e(d):s[t];n&&(r[n]=l),i(i.P+i.F*a,"String",r)},d=h.trim=function(t,e){return t=String(r(t)),1&e&&(t=t.replace(l,"")),2&e&&(t=t.replace(u,"")),t};t.exports=h},abb4:function(t,e,n){"use strict";t.exports=function(t){function e(){}var n={log:e,warn:e,error:e};if(!t&&window.console){var i=function(t,e){t[e]=function(){var t=console[e];if(t.apply)t.apply(console,arguments);else for(var n=0;n<arguments.length;n++)t(arguments[n])}};i(n,"log"),i(n,"warn"),i(n,"error")}return n}},ac6a:function(t,e,n){for(var i=n("cadf"),r=n("0d58"),o=n("2aba"),s=n("7726"),a=n("32e9"),c=n("84f2"),l=n("2b4c"),u=l("iterator"),h=l("toStringTag"),d=c.Array,f={CSSRuleList:!0,CSSStyleDeclaration:!1,CSSValueList:!1,ClientRectList:!1,DOMRectList:!1,DOMStringList:!1,DOMTokenList:!0,DataTransferItemList:!1,FileList:!1,HTMLAllCollection:!1,HTMLCollection:!1,HTMLFormElement:!1,HTMLSelectElement:!1,MediaList:!0,MimeTypeArray:!1,NamedNodeMap:!1,NodeList:!0,PaintRequestList:!1,Plugin:!1,PluginArray:!1,SVGLengthList:!1,SVGNumberList:!1,SVGPathSegList:!1,SVGPointList:!1,SVGStringList:!1,SVGTransformList:!1,SourceBufferList:!1,StyleSheetList:!0,TextTrackCueList:!1,TextTrackList:!1,TouchList:!1},p=r(f),g=0;g<p.length;g++){var m,v=p[g],y=f[v],b=s[v],x=b&&b.prototype;if(x&&(x[u]||a(x,u,d),x[h]||a(x,h,v),c[v]=d,y))for(m in i)x[m]||o(x,m,i[m],!0)}},b0c5:function(t,e,n){"use strict";var i=n("520a");n("5ca1")({target:"RegExp",proto:!0,forced:i!==/./.exec},{exec:i})},b770:function(t,e,n){"use strict";var i=t.exports={};i.forEach=function(t,e){for(var n=0;n<t.length;n++){var i=e(t[n]);if(i)return i}}},be13:function(t,e){t.exports=function(t){if(void 0==t)throw TypeError("Can't call method on  "+t);return t}},c274:function(t,e,n){"use strict";var i=n("50bf");function r(){var t={},e=0,n=0,i=0;function r(r,o){o||(o=r,r=0),r>n?n=r:r<i&&(i=r),t[r]||(t[r]=[]),t[r].push(o),e++}function o(){for(var e=i;e<=n;e++)for(var r=t[e],o=0;o<r.length;o++){var s=r[o];s()}}function s(){return e}return{add:r,process:o,size:s}}t.exports=function(t){t=t||{};var e=t.reporter,n=i.getOption(t,"async",!0),o=i.getOption(t,"auto",!0);o&&!n&&(e&&e.warn("Invalid options combination. auto=true and async=false is invalid. Setting async=true."),n=!0);var s,a=r(),c=!1;function l(t,e){!c&&o&&n&&0===a.size()&&d(),a.add(t,e)}function u(){c=!0;while(a.size()){var t=a;a=r(),t.process()}c=!1}function h(t){c||(void 0===t&&(t=n),s&&(f(s),s=null),t?d():u())}function d(){s=p(u)}function f(t){var e=clearTimeout;return e(t)}function p(t){var e=function(t){return setTimeout(t,0)};return e(t)}return{add:l,force:h}}},c366:function(t,e,n){var i=n("6821"),r=n("9def"),o=n("77f1");t.exports=function(t){return function(e,n,s){var a,c=i(e),l=r(c.length),u=o(s,l);if(t&&n!=n){while(l>u)if(a=c[u++],a!=a)return!0}else for(;l>u;u++)if((t||u in c)&&c[u]===n)return t||u||0;return!t&&-1}}},c541:function(t,e,n){var i=n("493e");"string"===typeof i&&(i=[[t.i,i,""]]),i.locals&&(t.exports=i.locals);var r=n("499e").default;r("40158674",i,!0,{sourceMap:!1,shadowMode:!1})},c5f6:function(t,e,n){"use strict";var i=n("7726"),r=n("69a8"),o=n("2d95"),s=n("5dbc"),a=n("6a99"),c=n("79e5"),l=n("9093").f,u=n("11e9").f,h=n("86cc").f,d=n("aa77").trim,f="Number",p=i[f],g=p,m=p.prototype,v=o(n("2aeb")(m))==f,y="trim"in String.prototype,b=function(t){var e=a(t,!1);if("string"==typeof e&&e.length>2){e=y?e.trim():d(e,3);var n,i,r,o=e.charCodeAt(0);if(43===o||45===o){if(n=e.charCodeAt(2),88===n||120===n)return NaN}else if(48===o){switch(e.charCodeAt(1)){case 66:case 98:i=2,r=49;break;case 79:case 111:i=8,r=55;break;default:return+e}for(var s,c=e.slice(2),l=0,u=c.length;l<u;l++)if(s=c.charCodeAt(l),s<48||s>r)return NaN;return parseInt(c,i)}}return+e};if(!p(" 0o1")||!p("0b1")||p("+0x1")){p=function(t){var e=arguments.length<1?0:t,n=this;return n instanceof p&&(v?c((function(){m.valueOf.call(n)})):o(n)!=f)?s(new g(b(e)),n,p):b(e)};for(var x,w=n("9e1e")?l(g):"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger".split(","),S=0;w.length>S;S++)r(g,x=w[S])&&!r(p,x)&&h(p,x,u(g,x));p.prototype=m,m.constructor=p,n("2aba")(i,f,p)}},c69a:function(t,e,n){t.exports=!n("9e1e")&&!n("79e5")((function(){return 7!=Object.defineProperty(n("230e")("div"),"a",{get:function(){return 7}}).a}))},c946:function(t,e,n){"use strict";var i=n("b770").forEach;t.exports=function(t){t=t||{};var e=t.reporter,n=t.batchProcessor,r=t.stateHandler.getState,o=(t.stateHandler.hasState,t.idHandler);if(!n)throw new Error("Missing required dependency: batchProcessor");if(!e)throw new Error("Missing required dependency: reporter.");var s=h(),a="erd_scroll_detection_scrollbar_style",c="erd_scroll_detection_container";function l(t){d(t,a,c)}function u(e){var n=t.important?" !important; ":"; ";return(e.join(n)+n).trim()}function h(){var t=500,e=500,n=document.createElement("div");n.style.cssText=u(["position: absolute","width: "+2*t+"px","height: "+2*e+"px","visibility: hidden","margin: 0","padding: 0"]);var i=document.createElement("div");i.style.cssText=u(["position: absolute","width: "+t+"px","height: "+e+"px","overflow: scroll","visibility: none","top: "+3*-t+"px","left: "+3*-e+"px","visibility: hidden","margin: 0","padding: 0"]),i.appendChild(n),document.body.insertBefore(i,document.body.firstChild);var r=t-i.clientWidth,o=e-i.clientHeight;return document.body.removeChild(i),{width:r,height:o}}function d(t,e,n){function i(n,i){i=i||function(e){t.head.appendChild(e)};var r=t.createElement("style");return r.innerHTML=n,r.id=e,i(r),r}if(!t.getElementById(e)){var r=n+"_animation",o=n+"_animation_active",s="/* Created by the element-resize-detector library. */\n";s+="."+n+" > div::-webkit-scrollbar { "+u(["display: none"])+" }\n\n",s+="."+o+" { "+u(["-webkit-animation-duration: 0.1s","animation-duration: 0.1s","-webkit-animation-name: "+r,"animation-name: "+r])+" }\n",s+="@-webkit-keyframes "+r+" { 0% { opacity: 1; } 50% { opacity: 0; } 100% { opacity: 1; } }\n",s+="@keyframes "+r+" { 0% { opacity: 1; } 50% { opacity: 0; } 100% { opacity: 1; } }",i(s)}}function f(t){t.className+=" "+c+"_animation_active"}function p(t,n,i){if(t.addEventListener)t.addEventListener(n,i);else{if(!t.attachEvent)return e.error("[scroll] Don't know how to add event listeners.");t.attachEvent("on"+n,i)}}function g(t,n,i){if(t.removeEventListener)t.removeEventListener(n,i);else{if(!t.detachEvent)return e.error("[scroll] Don't know how to remove event listeners.");t.detachEvent("on"+n,i)}}function m(t){return r(t).container.childNodes[0].childNodes[0].childNodes[0]}function v(t){return r(t).container.childNodes[0].childNodes[0].childNodes[1]}function y(t,e){var n=r(t).listeners;if(!n.push)throw new Error("Cannot add listener to an element that is not detectable.");r(t).listeners.push(e)}function b(t,a,l){function h(){if(t.debug){var n=Array.prototype.slice.call(arguments);if(n.unshift(o.get(a),"Scroll: "),e.log.apply)e.log.apply(null,n);else for(var i=0;i<n.length;i++)e.log(n[i])}}function d(t){function e(t){return t===t.ownerDocument.body||t.ownerDocument.body.contains(t)}return!e(t)||null===window.getComputedStyle(t)}function g(t){var e=r(t).container.childNodes[0],n=window.getComputedStyle(e);return!n.width||-1===n.width.indexOf("px")}function y(){var t=window.getComputedStyle(a),e={};return e.position=t.position,e.width=a.offsetWidth,e.height=a.offsetHeight,e.top=t.top,e.right=t.right,e.bottom=t.bottom,e.left=t.left,e.widthCSS=t.width,e.heightCSS=t.height,e}function b(){var t=y();r(a).startSize={width:t.width,height:t.height},h("Element start size",r(a).startSize)}function x(){r(a).listeners=[]}function w(){if(h("storeStyle invoked."),r(a)){var t=y();r(a).style=t}else h("Aborting because element has been uninstalled")}function S(t,e,n){r(t).lastWidth=e,r(t).lastHeight=n}function E(t){return m(t).childNodes[0]}function T(){return 2*s.width+1}function z(){return 2*s.height+1}function M(t){return t+10+T()}function O(t){return t+10+z()}function I(t){return 2*t+T()}function P(t){return 2*t+z()}function D(t,e,n){var i=m(t),r=v(t),o=M(e),s=O(n),a=I(e),c=P(n);i.scrollLeft=o,i.scrollTop=s,r.scrollLeft=a,r.scrollTop=c}function _(){var t=r(a).container;if(!t){t=document.createElement("div"),t.className=c,t.style.cssText=u(["visibility: hidden","display: inline","width: 0px","height: 0px","z-index: -1","overflow: hidden","margin: 0","padding: 0"]),r(a).container=t,f(t),a.appendChild(t);var e=function(){r(a).onRendered&&r(a).onRendered()};p(t,"animationstart",e),r(a).onAnimationStart=e}return t}function k(){function n(){var n=r(a).style;if("static"===n.position){a.style.setProperty("position","relative",t.important?"important":"");var i=function(t,e,n,i){function r(t){return t.replace(/[^-\d\.]/g,"")}var o=n[i];"auto"!==o&&"0"!==r(o)&&(t.warn("An element that is positioned static has style."+i+"="+o+" which is ignored due to the static positioning. The element will need to be positioned relative, so the style."+i+" will be set to 0. Element: ",e),e.style[i]=0)};i(e,a,n,"top"),i(e,a,n,"right"),i(e,a,n,"bottom"),i(e,a,n,"left")}}function i(t,e,n,i){return t=t?t+"px":"0",e=e?e+"px":"0",n=n?n+"px":"0",i=i?i+"px":"0",["left: "+t,"top: "+e,"right: "+i,"bottom: "+n]}if(h("Injecting elements"),r(a)){n();var o=r(a).container;o||(o=_());var l=s.width,d=s.height,f=u(["position: absolute","flex: none","overflow: hidden","z-index: -1","visibility: hidden","width: 100%","height: 100%","left: 0px","top: 0px"]),g=u(["position: absolute","flex: none","overflow: hidden","z-index: -1","visibility: hidden"].concat(i(-(1+l),-(1+d),-d,-l))),m=u(["position: absolute","flex: none","overflow: scroll","z-index: -1","visibility: hidden","width: 100%","height: 100%"]),v=u(["position: absolute","flex: none","overflow: scroll","z-index: -1","visibility: hidden","width: 100%","height: 100%"]),y=u(["position: absolute","left: 0","top: 0"]),b=u(["position: absolute","width: 200%","height: 200%"]),x=document.createElement("div"),w=document.createElement("div"),S=document.createElement("div"),E=document.createElement("div"),T=document.createElement("div"),z=document.createElement("div");x.dir="ltr",x.style.cssText=f,x.className=c,w.className=c,w.style.cssText=g,S.style.cssText=m,E.style.cssText=y,T.style.cssText=v,z.style.cssText=b,S.appendChild(E),T.appendChild(z),w.appendChild(S),w.appendChild(T),x.appendChild(w),o.appendChild(x),p(S,"scroll",M),p(T,"scroll",O),r(a).onExpandScroll=M,r(a).onShrinkScroll=O}else h("Aborting because element has been uninstalled");function M(){r(a).onExpand&&r(a).onExpand()}function O(){r(a).onShrink&&r(a).onShrink()}}function A(){function s(e,n,i){var r=E(e),o=M(n),s=O(i);r.style.setProperty("width",o+"px",t.important?"important":""),r.style.setProperty("height",s+"px",t.important?"important":"")}function c(i){var c=a.offsetWidth,u=a.offsetHeight,d=c!==r(a).lastWidth||u!==r(a).lastHeight;h("Storing current size",c,u),S(a,c,u),n.add(0,(function(){if(d)if(r(a))if(l()){if(t.debug){var n=a.offsetWidth,i=a.offsetHeight;n===c&&i===u||e.warn(o.get(a),"Scroll: Size changed before updating detector elements.")}s(a,c,u)}else h("Aborting because element container has not been initialized");else h("Aborting because element has been uninstalled")})),n.add(1,(function(){r(a)?l()?D(a,c,u):h("Aborting because element container has not been initialized"):h("Aborting because element has been uninstalled")})),d&&i&&n.add(2,(function(){r(a)?l()?i():h("Aborting because element container has not been initialized"):h("Aborting because element has been uninstalled")}))}function l(){return!!r(a).container}function u(){function t(){return void 0===r(a).lastNotifiedWidth}h("notifyListenersIfNeeded invoked");var e=r(a);return t()&&e.lastWidth===e.startSize.width&&e.lastHeight===e.startSize.height?h("Not notifying: Size is the same as the start size, and there has been no notification yet."):e.lastWidth===e.lastNotifiedWidth&&e.lastHeight===e.lastNotifiedHeight?h("Not notifying: Size already notified"):(h("Current size not notified, notifying..."),e.lastNotifiedWidth=e.lastWidth,e.lastNotifiedHeight=e.lastHeight,void i(r(a).listeners,(function(t){t(a)})))}function d(){if(h("startanimation triggered."),g(a))h("Ignoring since element is still unrendered...");else{h("Element rendered.");var t=m(a),e=v(a);0!==t.scrollLeft&&0!==t.scrollTop&&0!==e.scrollLeft&&0!==e.scrollTop||(h("Scrollbars out of sync. Updating detector elements..."),c(u))}}function f(){h("Scroll detected."),g(a)?h("Scroll event fired while unrendered. Ignoring..."):c(u)}if(h("registerListenersAndPositionElements invoked."),r(a)){r(a).onRendered=d,r(a).onExpand=f,r(a).onShrink=f;var p=r(a).style;s(a,p.width,p.height)}else h("Aborting because element has been uninstalled")}function R(){if(h("finalizeDomMutation invoked."),r(a)){var t=r(a).style;S(a,t.width,t.height),D(a,t.width,t.height)}else h("Aborting because element has been uninstalled")}function j(){l(a)}function C(){h("Installing..."),x(),b(),n.add(0,w),n.add(1,k),n.add(2,A),n.add(3,R),n.add(4,j)}l||(l=a,a=t,t=null),t=t||{},h("Making detectable..."),d(a)?(h("Element is detached"),_(),h("Waiting until element is attached..."),r(a).onRendered=function(){h("Element is now attached"),C()}):C()}function x(t){var e=r(t);e&&(e.onExpandScroll&&g(m(t),"scroll",e.onExpandScroll),e.onShrinkScroll&&g(v(t),"scroll",e.onShrinkScroll),e.onAnimationStart&&g(e.container,"animationstart",e.onAnimationStart),e.container&&t.removeChild(e.container))}return l(window.document),{makeDetectable:b,addListener:y,uninstall:x,initDocument:l}}},ca5a:function(t,e){var n=0,i=Math.random();t.exports=function(t){return"Symbol(".concat(void 0===t?"":t,")_",(++n+i).toString(36))}},cadf:function(t,e,n){"use strict";var i=n("9c6c"),r=n("d53b"),o=n("84f2"),s=n("6821");t.exports=n("01f9")(Array,"Array",(function(t,e){this._t=s(t),this._i=0,this._k=e}),(function(){var t=this._t,e=this._k,n=this._i++;return!t||n>=t.length?(this._t=void 0,r(1)):r(0,"keys"==e?n:"values"==e?t[n]:[n,t[n]])}),"values"),o.Arguments=o.Array,i("keys"),i("values"),i("entries")},cb7c:function(t,e,n){var i=n("d3f4");t.exports=function(t){if(!i(t))throw TypeError(t+" is not an object!");return t}},ce10:function(t,e,n){var i=n("69a8"),r=n("6821"),o=n("c366")(!1),s=n("613b")("IE_PROTO");t.exports=function(t,e){var n,a=r(t),c=0,l=[];for(n in a)n!=s&&i(a,n)&&l.push(n);while(e.length>c)i(a,n=e[c++])&&(~o(l,n)||l.push(n));return l}},d3f4:function(t,e){t.exports=function(t){return"object"===typeof t?null!==t:"function"===typeof t}},d53b:function(t,e){t.exports=function(t,e){return{value:e,done:!!t}}},d6eb:function(t,e,n){"use strict";var i="_erd";function r(t){return t[i]={},o(t)}function o(t){return t[i]}function s(t){delete t[i]}t.exports={initState:r,getState:o,cleanState:s}},d8e8:function(t,e){t.exports=function(t){if("function"!=typeof t)throw TypeError(t+" is not a function!");return t}},e11e:function(t,e){t.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},eec4:function(t,e,n){"use strict";var i=n("b770").forEach,r=n("5be5"),o=n("49ad"),s=n("2cef"),a=n("5058"),c=n("abb4"),l=n("18e9"),u=n("c274"),h=n("d6eb"),d=n("18d2"),f=n("c946");function p(t){return Array.isArray(t)||void 0!==t.length}function g(t){if(Array.isArray(t))return t;var e=[];return i(t,(function(t){e.push(t)})),e}function m(t){return t&&1===t.nodeType}function v(t,e,n){var i=t[e];return void 0!==i&&null!==i||void 0===n?i:n}t.exports=function(t){var e;if(t=t||{},t.idHandler)e={get:function(e){return t.idHandler.get(e,!0)},set:t.idHandler.set};else{var n=s(),y=a({idGenerator:n,stateHandler:h});e=y}var b=t.reporter;if(!b){var x=!1===b;b=c(x)}var w=v(t,"batchProcessor",u({reporter:b})),S={};S.callOnAdd=!!v(t,"callOnAdd",!0),S.debug=!!v(t,"debug",!1);var E,T=o(e),z=r({stateHandler:h}),M=v(t,"strategy","object"),O=v(t,"important",!1),I={reporter:b,batchProcessor:w,stateHandler:h,idHandler:e,important:O};if("scroll"===M&&(l.isLegacyOpera()?(b.warn("Scroll strategy is not supported on legacy Opera. Changing to object strategy."),M="object"):l.isIE(9)&&(b.warn("Scroll strategy is not supported on IE9. Changing to object strategy."),M="object")),"scroll"===M)E=f(I);else{if("object"!==M)throw new Error("Invalid strategy name: "+M);E=d(I)}var P={};function D(t,n,r){function o(t){var e=T.get(t);i(e,(function(e){e(t)}))}function s(t,e,n){T.add(e,n),t&&n(e)}if(r||(r=n,n=t,t={}),!n)throw new Error("At least one element required.");if(!r)throw new Error("Listener required.");if(m(n))n=[n];else{if(!p(n))return b.error("Invalid arguments. Must be a DOM element or a collection of DOM elements.");n=g(n)}var a=0,c=v(t,"callOnAdd",S.callOnAdd),l=v(t,"onReady",(function(){})),u=v(t,"debug",S.debug);i(n,(function(t){h.getState(t)||(h.initState(t),e.set(t));var d=e.get(t);if(u&&b.log("Attaching listener to element",d,t),!z.isDetectable(t))return u&&b.log(d,"Not detectable."),z.isBusy(t)?(u&&b.log(d,"System busy making it detectable"),s(c,t,r),P[d]=P[d]||[],void P[d].push((function(){a++,a===n.length&&l()}))):(u&&b.log(d,"Making detectable..."),z.markBusy(t,!0),E.makeDetectable({debug:u,important:O},t,(function(t){if(u&&b.log(d,"onElementDetectable"),h.getState(t)){z.markAsDetectable(t),z.markBusy(t,!1),E.addListener(t,o),s(c,t,r);var e=h.getState(t);if(e&&e.startSize){var f=t.offsetWidth,p=t.offsetHeight;e.startSize.width===f&&e.startSize.height===p||o(t)}P[d]&&i(P[d],(function(t){t()}))}else u&&b.log(d,"Element uninstalled before being detectable.");delete P[d],a++,a===n.length&&l()})));u&&b.log(d,"Already detecable, adding listener."),s(c,t,r),a++})),a===n.length&&l()}function _(t){if(!t)return b.error("At least one element is required.");if(m(t))t=[t];else{if(!p(t))return b.error("Invalid arguments. Must be a DOM element or a collection of DOM elements.");t=g(t)}i(t,(function(t){T.removeAllListeners(t),E.uninstall(t),h.cleanState(t)}))}function k(t){E.initDocument&&E.initDocument(t)}return{listenTo:D,removeListener:T.removeListener,removeAllListeners:T.removeAllListeners,uninstall:_,initDocument:k}}},f1ae:function(t,e,n){"use strict";var i=n("86cc"),r=n("4630");t.exports=function(t,e,n){e in t?i.f(t,e,r(0,n)):t[e]=n}},f751:function(t,e,n){var i=n("5ca1");i(i.S+i.F,"Object",{assign:n("7333")})},fa5b:function(t,e,n){t.exports=n("5537")("native-function-to-string",Function.toString)},fab2:function(t,e,n){var i=n("7726").document;t.exports=i&&i.documentElement},fb15:function(t,e,n){"use strict";n.r(e),n.d(e,"GridLayout",(function(){return mr})),n.d(e,"GridItem",(function(){return cr}));var i={};if(n.r(i),n.d(i,"edgeTarget",(function(){return Gn})),n.d(i,"elements",(function(){return Yn})),n.d(i,"grid",(function(){return Xn})),"undefined"!==typeof window){var r=window.document.currentScript,o=n("8875");r=o(),"currentScript"in document||Object.defineProperty(document,"currentScript",{get:o});var s=r&&r.src.match(/(.+\/)[^/]+\.js(\?.*)?$/);s&&(n.p=s[1])}var a=n("8bbf");function c(t,e,n,i,r,o){return Object(a["openBlock"])(),Object(a["createBlock"])("div",{ref:"item",class:["vue-grid-item",o.classObj],style:t.style},[Object(a["renderSlot"])(t.$slots,"default"),o.resizableAndNotStatic?(Object(a["openBlock"])(),Object(a["createBlock"])("span",{key:0,ref:"handle",class:o.resizableHandleClass},null,2)):Object(a["createCommentVNode"])("",!0)],6)}n("a481"),n("4917"),n("c5f6"),n("cadf"),n("456d"),n("ac6a"),n("55dd");function l(t){for(var e,n=0,i=0,r=t.length;i<r;i++)e=t[i].y+t[i].h,e>n&&(n=e);return n}function u(t){for(var e=Array(t.length),n=0,i=t.length;n<i;n++)e[n]=h(t[n]);return e}function h(t){return JSON.parse(JSON.stringify(t))}function d(t,e){return t!==e&&(!(t.x+t.w<=e.x)&&(!(t.x>=e.x+e.w)&&(!(t.y+t.h<=e.y)&&!(t.y>=e.y+e.h))))}function f(t,e){for(var n=b(t),i=M(t),r=Array(t.length),o=0,s=i.length;o<s;o++){var a=i[o];a.static||(a=p(n,a,e),n.push(a)),r[t.indexOf(a)]=a,a.moved=!1}return r}function p(t,e,n){if(n)while(e.y>0&&!v(t,e))e.y--;var i;while(i=v(t,e))e.y=i.y+i.h;return e}function g(t,e){for(var n=b(t),i=0,r=t.length;i<r;i++){var o=t[i];if(o.x+o.w>e.cols&&(o.x=e.cols-o.w),o.x<0&&(o.x=0,o.w=e.cols),o.static)while(v(n,o))o.y++;else n.push(o)}return t}function m(t,e){for(var n=0,i=t.length;n<i;n++)if(t[n].i===e)return t[n]}function v(t,e){for(var n=0,i=t.length;n<i;n++)if(d(t[n],e))return t[n]}function y(t,e){return t.filter((function(t){return d(t,e)}))}function b(t){return t.filter((function(t){return t.static}))}function x(t,e,n,i,r,o){if(e.static)return t;var s=e.x,a=e.y,c=i&&e.y>i;"number"===typeof n&&(e.x=n),"number"===typeof i&&(e.y=i),e.moved=!0;var l=M(t);c&&(l=l.reverse());var u=y(l,e);if(o&&u.length)return e.x=s,e.y=a,e.moved=!1,t;for(var h=0,d=u.length;h<d;h++){var f=u[h];f.moved||(e.y>f.y&&e.y-f.y>f.h/4||(t=f.static?w(t,f,e,r):w(t,e,f,r)))}return t}function w(t,e,n,i){var r=!1;if(i){var o={x:n.x,y:n.y,w:n.w,h:n.h,i:"-1"};if(o.y=Math.max(e.y-n.h,0),!v(t,o))return x(t,n,void 0,o.y,r)}return x(t,n,void 0,n.y+1,r)}function S(t,e,n,i){var r="translate3d("+e+"px,"+t+"px, 0)";return{transform:r,WebkitTransform:r,MozTransform:r,msTransform:r,OTransform:r,width:n+"px",height:i+"px",position:"absolute"}}function E(t,e,n,i){var r="translate3d("+-1*e+"px,"+t+"px, 0)";return{transform:r,WebkitTransform:r,MozTransform:r,msTransform:r,OTransform:r,width:n+"px",height:i+"px",position:"absolute"}}function T(t,e,n,i){return{top:t+"px",left:e+"px",width:n+"px",height:i+"px",position:"absolute"}}function z(t,e,n,i){return{top:t+"px",right:e+"px",width:n+"px",height:i+"px",position:"absolute"}}function M(t){return[].concat(t).sort((function(t,e){return t.y===e.y&&t.x===e.x?0:t.y>e.y||t.y===e.y&&t.x>e.x?1:-1}))}function O(t,e){e=e||"Layout";var n=["x","y","w","h"],i=[];if(!Array.isArray(t))throw new Error(e+" must be an array!");for(var r=0,o=t.length;r<o;r++){for(var s=t[r],a=0;a<n.length;a++)if("number"!==typeof s[n[a]])throw new Error("VueGridLayout: "+e+"["+r+"]."+n[a]+" must be a number!");if(void 0===s.i||null===s.i)throw new Error("VueGridLayout: "+e+"["+r+"].i cannot be null!");if("number"!==typeof s.i&&"string"!==typeof s.i)throw new Error("VueGridLayout: "+e+"["+r+"].i must be a string or number!");if(i.indexOf(s.i)>=0)throw new Error("VueGridLayout: "+e+"["+r+"].i must be unique!");if(i.push(s.i),void 0!==s.static&&"boolean"!==typeof s.static)throw new Error("VueGridLayout: "+e+"["+r+"].static must be a boolean!")}}function I(t){return P(t)}function P(t){var e=t.target.offsetParent||document.body,n=t.offsetParent===document.body?{left:0,top:0}:e.getBoundingClientRect(),i=t.clientX+e.scrollLeft-n.left,r=t.clientY+e.scrollTop-n.top;return{x:i,y:r}}function D(t,e,n,i){var r=!_(t);return r?{deltaX:0,deltaY:0,lastX:n,lastY:i,x:n,y:i}:{deltaX:n-t,deltaY:i-e,lastX:t,lastY:e,x:n,y:i}}function _(t){return"number"===typeof t&&!isNaN(t)}function k(t,e){for(var n=j(t),i=n[0],r=1,o=n.length;r<o;r++){var s=n[r];e>t[s]&&(i=s)}return i}function A(t,e){if(!e[t])throw new Error("ResponsiveGridLayout: `cols` entry for breakpoint "+t+" is missing!");return e[t]}function R(t,e,n,i,r,o,s){if(e[i])return u(e[i]);for(var a=t,c=j(n),l=c.slice(c.indexOf(i)),h=0,d=l.length;h<d;h++){var p=l[h];if(e[p]){a=e[p];break}}return a=u(a||[]),f(g(a,{cols:o}),s)}function j(t){var e=Object.keys(t);return e.sort((function(e,n){return t[e]-t[n]}))}var C="auto";function H(){return"undefined"!==typeof document}function L(){return"undefined"!==typeof window}function N(){if(!H())return C;var t="undefined"!==typeof document.dir?document.dir:document.getElementsByTagName("html")[0].getAttribute("dir");return t}function W(t,e){L?window.addEventListener(t,e):e()}function B(t,e){L&&window.removeEventListener(t,e)}const F={init:Y,document:null,DocumentFragment:null,SVGElement:null,SVGSVGElement:null,SVGElementInstance:null,Element:null,HTMLElement:null,Event:null,Touch:null,PointerEvent:null};function $(){}var G=F;function Y(t){const e=t;F.document=e.document,F.DocumentFragment=e.DocumentFragment||$,F.SVGElement=e.SVGElement||$,F.SVGSVGElement=e.SVGSVGElement||$,F.SVGElementInstance=e.SVGElementInstance||$,F.Element=e.Element||$,F.HTMLElement=e.HTMLElement||F.Element,F.Event=e.Event,F.Touch=e.Touch||$,F.PointerEvent=e.PointerEvent||e.MSPointerEvent}var X=t=>!(!t||!t.Window)&&t instanceof t.Window;let q=void 0,V=void 0;function U(t){q=t;const e=t.document.createTextNode("");e.ownerDocument!==t.document&&"function"===typeof t.wrap&&t.wrap(e)===e&&(t=t.wrap(t)),V=t}function Z(t){if(X(t))return t;const e=t.ownerDocument||t;return e.defaultView||V.window}"undefined"!==typeof window&&window&&U(window);const K=t=>t===V||X(t),J=t=>Q(t)&&11===t.nodeType,Q=t=>!!t&&"object"===typeof t,tt=t=>"function"===typeof t,et=t=>"number"===typeof t,nt=t=>"boolean"===typeof t,it=t=>"string"===typeof t,rt=t=>{if(!t||"object"!==typeof t)return!1;const e=Z(t)||V;return/object|function/.test(typeof e.Element)?t instanceof e.Element:1===t.nodeType&&"string"===typeof t.nodeName},ot=t=>Q(t)&&!!t.constructor&&/function Object\b/.test(t.constructor.toString()),st=t=>Q(t)&&"undefined"!==typeof t.length&&tt(t.splice);var at={window:K,docFrag:J,object:Q,func:tt,number:et,bool:nt,string:it,element:rt,plainObject:ot,array:st};const ct={init:lt,supportsTouch:null,supportsPointerEvent:null,isIOS7:null,isIOS:null,isIe9:null,isOperaMobile:null,prefixedMatchesSelector:null,pEventTypes:null,wheelEvent:null};function lt(t){const e=G.Element,n=V.navigator;ct.supportsTouch="ontouchstart"in t||at.func(t.DocumentTouch)&&G.document instanceof t.DocumentTouch,ct.supportsPointerEvent=!1!==n.pointerEnabled&&!!G.PointerEvent,ct.isIOS=/iP(hone|od|ad)/.test(n.platform),ct.isIOS7=/iP(hone|od|ad)/.test(n.platform)&&/OS 7[^\d]/.test(n.appVersion),ct.isIe9=/MSIE 9/.test(n.userAgent),ct.isOperaMobile="Opera"===n.appName&&ct.supportsTouch&&/Presto/.test(n.userAgent),ct.prefixedMatchesSelector="matches"in e.prototype?"matches":"webkitMatchesSelector"in e.prototype?"webkitMatchesSelector":"mozMatchesSelector"in e.prototype?"mozMatchesSelector":"oMatchesSelector"in e.prototype?"oMatchesSelector":"msMatchesSelector",ct.pEventTypes=ct.supportsPointerEvent?G.PointerEvent===t.MSPointerEvent?{up:"MSPointerUp",down:"MSPointerDown",over:"mouseover",out:"mouseout",move:"MSPointerMove",cancel:"MSPointerCancel"}:{up:"pointerup",down:"pointerdown",over:"pointerover",out:"pointerout",move:"pointermove",cancel:"pointercancel"}:null,ct.wheelEvent="onmousewheel"in G.document?"mousewheel":"wheel"}var ut=ct;const ht=(t,e)=>-1!==t.indexOf(e),dt=(t,e)=>{for(const n of e)t.push(n);return t},ft=t=>dt([],t),pt=(t,e)=>{for(let n=0;n<t.length;n++)if(e(t[n],n,t))return n;return-1},gt=(t,e)=>t[pt(t,e)];function mt(t){const e={};for(const n in t){const i=t[n];at.plainObject(i)?e[n]=mt(i):at.array(i)?e[n]=ft(i):e[n]=i}return e}function vt(t,e){for(const i in e)t[i]=e[i];const n=t;return n}let yt,bt,xt=0;function wt(t){if(yt=t.requestAnimationFrame,bt=t.cancelAnimationFrame,!yt){const e=["ms","moz","webkit","o"];for(const n of e)yt=t[n+"RequestAnimationFrame"],bt=t[n+"CancelAnimationFrame"]||t[n+"CancelRequestAnimationFrame"]}yt=yt&&yt.bind(t),bt=bt&&bt.bind(t),yt||(yt=e=>{const n=Date.now(),i=Math.max(0,16-(n-xt)),r=t.setTimeout(()=>{e(n+i)},i);return xt=n+i,r},bt=t=>clearTimeout(t))}var St={request:t=>yt(t),cancel:t=>bt(t),init:wt};function Et(t,e,n){if(n=n||{},at.string(t)&&-1!==t.search(" ")&&(t=Tt(t)),at.array(t))return t.reduce((t,i)=>vt(t,Et(i,e,n)),n);if(at.object(t)&&(e=t,t=""),at.func(e))n[t]=n[t]||[],n[t].push(e);else if(at.array(e))for(const i of e)Et(t,i,n);else if(at.object(e))for(const i in e){const r=Tt(i).map(e=>`${t}${e}`);Et(r,e[i],n)}return n}function Tt(t){return t.trim().split(/ +/)}function zt(t,e){for(const n of e){if(t.immediatePropagationStopped)break;n(t)}}class Mt{constructor(t){this.options=void 0,this.types={},this.propagationStopped=!1,this.immediatePropagationStopped=!1,this.global=void 0,this.options=vt({},t||{})}fire(t){let e;const n=this.global;(e=this.types[t.type])&&zt(t,e),!t.propagationStopped&&n&&(e=n[t.type])&&zt(t,e)}on(t,e){const n=Et(t,e);for(t in n)this.types[t]=dt(this.types[t]||[],n[t])}off(t,e){const n=Et(t,e);for(t in n){const e=this.types[t];if(e&&e.length)for(const i of n[t]){const t=e.indexOf(i);-1!==t&&e.splice(t,1)}}}getRect(t){return null}}function Ot(t,e){if(t.contains)return t.contains(e);while(e){if(e===t)return!0;e=e.parentNode}return!1}function It(t,e){while(at.element(t)){if(Dt(t,e))return t;t=Pt(t)}return null}function Pt(t){let e=t.parentNode;if(at.docFrag(e)){while((e=e.host)&&at.docFrag(e));return e}return e}function Dt(t,e){return V!==q&&(e=e.replace(/\/deep\//g," ")),t[ut.prefixedMatchesSelector](e)}function _t(t,e,n){while(at.element(t)){if(Dt(t,e))return!0;if(t=Pt(t),t===n)return Dt(t,e)}return!1}function kt(t){return t.correspondingUseElement||t}function At(t){return t=t||V,{x:t.scrollX||t.document.documentElement.scrollLeft,y:t.scrollY||t.document.documentElement.scrollTop}}function Rt(t){const e=t instanceof G.SVGElement?t.getBoundingClientRect():t.getClientRects()[0];return e&&{left:e.left,right:e.right,top:e.top,bottom:e.bottom,width:e.width||e.right-e.left,height:e.height||e.bottom-e.top}}function jt(t){const e=Rt(t);if(!ut.isIOS7&&e){const n=At(Z(t));e.left+=n.x,e.right+=n.x,e.top+=n.y,e.bottom+=n.y}return e}function Ct(t){return!!at.string(t)&&(G.document.querySelector(t),!0)}function Ht(t,e,n){return"parent"===t?Pt(n):"self"===t?e.getRect(n):It(n,t)}function Lt(t,e,n,i){let r=t;return at.string(r)?r=Ht(r,e,n):at.func(r)&&(r=r(...i)),at.element(r)&&(r=jt(r)),r}function Nt(t){return t&&{x:"x"in t?t.x:t.left,y:"y"in t?t.y:t.top}}function Wt(t){return!t||"left"in t&&"top"in t||(t=vt({},t),t.left=t.x||0,t.top=t.y||0,t.right=t.right||t.left+t.width,t.bottom=t.bottom||t.top+t.height),t}function Bt(t){return!t||"x"in t&&"y"in t||(t=vt({},t),t.x=t.left||0,t.y=t.top||0,t.width=t.width||(t.right||0)-t.x,t.height=t.height||(t.bottom||0)-t.y),t}function Ft(t,e,n){t.left&&(e.left+=n.x),t.right&&(e.right+=n.x),t.top&&(e.top+=n.y),t.bottom&&(e.bottom+=n.y),e.width=e.right-e.left,e.height=e.bottom-e.top}var $t=function(t,e,n){const i=t.options[n],r=i&&i.origin,o=r||t.options.origin,s=Lt(o,t,e,[t&&e]);return Nt(s)||{x:0,y:0}},Gt=(t,e)=>Math.sqrt(t*t+e*e);class Yt{constructor(t){this.type=void 0,this.target=void 0,this.currentTarget=void 0,this.interactable=void 0,this._interaction=void 0,this.timeStamp=void 0,this.immediatePropagationStopped=!1,this.propagationStopped=!1,this._interaction=t}preventDefault(){}stopPropagation(){this.propagationStopped=!0}stopImmediatePropagation(){this.immediatePropagationStopped=this.propagationStopped=!0}}Object.defineProperty(Yt.prototype,"interaction",{get(){return this._interaction._proxy},set(){}});const Xt={base:{preventDefault:"auto",deltaSource:"page"},perAction:{enabled:!1,origin:{x:0,y:0}},actions:{}};class qt extends Yt{constructor(t,e,n,i,r,o,s){super(t),this.target=void 0,this.currentTarget=void 0,this.relatedTarget=null,this.screenX=void 0,this.screenY=void 0,this.button=void 0,this.buttons=void 0,this.ctrlKey=void 0,this.shiftKey=void 0,this.altKey=void 0,this.metaKey=void 0,this.page=void 0,this.client=void 0,this.delta=void 0,this.rect=void 0,this.x0=void 0,this.y0=void 0,this.t0=void 0,this.dt=void 0,this.duration=void 0,this.clientX0=void 0,this.clientY0=void 0,this.velocity=void 0,this.speed=void 0,this.swipe=void 0,this.timeStamp=void 0,this.axes=void 0,this.preEnd=void 0,r=r||t.element;const a=t.interactable,c=(a&&a.options||Xt).deltaSource,l=$t(a,r,n),u="start"===i,h="end"===i,d=u?this:t.prevEvent,f=u?t.coords.start:h?{page:d.page,client:d.client,timeStamp:t.coords.cur.timeStamp}:t.coords.cur;this.page=vt({},f.page),this.client=vt({},f.client),this.rect=vt({},t.rect),this.timeStamp=f.timeStamp,h||(this.page.x-=l.x,this.page.y-=l.y,this.client.x-=l.x,this.client.y-=l.y),this.ctrlKey=e.ctrlKey,this.altKey=e.altKey,this.shiftKey=e.shiftKey,this.metaKey=e.metaKey,this.button=e.button,this.buttons=e.buttons,this.target=r,this.currentTarget=r,this.preEnd=o,this.type=s||n+(i||""),this.interactable=a,this.t0=u?t.pointers[t.pointers.length-1].downTime:d.t0,this.x0=t.coords.start.page.x-l.x,this.y0=t.coords.start.page.y-l.y,this.clientX0=t.coords.start.client.x-l.x,this.clientY0=t.coords.start.client.y-l.y,this.delta=u||h?{x:0,y:0}:{x:this[c].x-d[c].x,y:this[c].y-d[c].y},this.dt=t.coords.delta.timeStamp,this.duration=this.timeStamp-this.t0,this.velocity=vt({},t.coords.velocity[c]),this.speed=Gt(this.velocity.x,this.velocity.y),this.swipe=h||"inertiastart"===i?this.getSwipe():null}getSwipe(){const t=this._interaction;if(t.prevEvent.speed<600||this.timeStamp-t.prevEvent.timeStamp>150)return null;let e=180*Math.atan2(t.prevEvent.velocityY,t.prevEvent.velocityX)/Math.PI;const n=22.5;e<0&&(e+=360);const i=135-n<=e&&e<225+n,r=225-n<=e&&e<315+n,o=!i&&(315-n<=e||e<45+n),s=!r&&45-n<=e&&e<135+n;return{up:r,down:s,left:i,right:o,angle:e,speed:t.prevEvent.speed,velocity:{x:t.prevEvent.velocityX,y:t.prevEvent.velocityY}}}preventDefault(){}stopImmediatePropagation(){this.immediatePropagationStopped=this.propagationStopped=!0}stopPropagation(){this.propagationStopped=!0}}function Vt(t,e){if(e.phaselessTypes[t])return!0;for(const n in e.map)if(0===t.indexOf(n)&&t.substr(n.length)in e.phases)return!0;return!1}Object.defineProperties(qt.prototype,{pageX:{get(){return this.page.x},set(t){this.page.x=t}},pageY:{get(){return this.page.y},set(t){this.page.y=t}},clientX:{get(){return this.client.x},set(t){this.client.x=t}},clientY:{get(){return this.client.y},set(t){this.client.y=t}},dx:{get(){return this.delta.x},set(t){this.delta.x=t}},dy:{get(){return this.delta.y},set(t){this.delta.y=t}},velocityX:{get(){return this.velocity.x},set(t){this.velocity.x=t}},velocityY:{get(){return this.velocity.y},set(t){this.velocity.y=t}}});class Ut{get _defaults(){return{base:{},perAction:{},actions:{}}}constructor(t,e,n,i){this.options=void 0,this._actions=void 0,this.target=void 0,this.events=new Mt,this._context=void 0,this._win=void 0,this._doc=void 0,this._scopeEvents=void 0,this._rectChecker=void 0,this._actions=e.actions,this.target=t,this._context=e.context||n,this._win=Z(Ct(t)?this._context:t),this._doc=this._win.document,this._scopeEvents=i,this.set(e)}setOnEvents(t,e){return at.func(e.onstart)&&this.on(t+"start",e.onstart),at.func(e.onmove)&&this.on(t+"move",e.onmove),at.func(e.onend)&&this.on(t+"end",e.onend),at.func(e.oninertiastart)&&this.on(t+"inertiastart",e.oninertiastart),this}updatePerActionListeners(t,e,n){(at.array(e)||at.object(e))&&this.off(t,e),(at.array(n)||at.object(n))&&this.on(t,n)}setPerAction(t,e){const n=this._defaults;for(const i in e){const r=i,o=this.options[t],s=e[r];"listeners"===r&&this.updatePerActionListeners(t,o.listeners,s),at.array(s)?o[r]=ft(s):at.plainObject(s)?(o[r]=vt(o[r]||{},mt(s)),at.object(n.perAction[r])&&"enabled"in n.perAction[r]&&(o[r].enabled=!1!==s.enabled)):at.bool(s)&&at.object(n.perAction[r])?o[r].enabled=s:o[r]=s}}getRect(t){return t=t||(at.element(this.target)?this.target:null),at.string(this.target)&&(t=t||this._context.querySelector(this.target)),jt(t)}rectChecker(t){return at.func(t)?(this._rectChecker=t,this.getRect=t=>{const e=vt({},this._rectChecker(t));return"width"in e||(e.width=e.right-e.left,e.height=e.bottom-e.top),e},this):null===t?(delete this.getRect,delete this._rectChecker,this):this.getRect}_backCompatOption(t,e){if(Ct(e)||at.object(e)){this.options[t]=e;for(const n in this._actions.map)this.options[n][t]=e;return this}return this.options[t]}origin(t){return this._backCompatOption("origin",t)}deltaSource(t){return"page"===t||"client"===t?(this.options.deltaSource=t,this):this.options.deltaSource}context(){return this._context}inContext(t){return this._context===t.ownerDocument||Ot(this._context,t)}testIgnoreAllow(t,e,n){return!this.testIgnore(t.ignoreFrom,e,n)&&this.testAllow(t.allowFrom,e,n)}testAllow(t,e,n){return!t||!!at.element(n)&&(at.string(t)?_t(n,t,e):!!at.element(t)&&Ot(t,n))}testIgnore(t,e,n){return!(!t||!at.element(n))&&(at.string(t)?_t(n,t,e):!!at.element(t)&&Ot(t,n))}fire(t){return this.events.fire(t),this}_onOff(t,e,n,i){at.object(e)&&!at.array(e)&&(i=n,n=null);const r="on"===t?"add":"remove",o=Et(e,n);for(let s in o){"wheel"===s&&(s=ut.wheelEvent);for(const e of o[s])Vt(s,this._actions)?this.events[t](s,e):at.string(this.target)?this._scopeEvents[r+"Delegate"](this.target,this._context,s,e,i):this._scopeEvents[r](this.target,s,e,i)}return this}on(t,e,n){return this._onOff("on",t,e,n)}off(t,e,n){return this._onOff("off",t,e,n)}set(t){const e=this._defaults;at.object(t)||(t={}),this.options=mt(e.base);for(const n in this._actions.methodDict){const i=n,r=this._actions.methodDict[i];this.options[i]={},this.setPerAction(i,vt(vt({},e.perAction),e.actions[i])),this[r](t[i])}for(const n in t)at.func(this[n])&&this[n](t[n]);return this}unset(){if(at.string(this.target))for(const t in this._scopeEvents.delegatedEvents){const e=this._scopeEvents.delegatedEvents[t];for(let n=e.length-1;n>=0;n--){const{selector:i,context:r,listeners:o}=e[n];i===this.target&&r===this._context&&e.splice(n,1);for(let e=o.length-1;e>=0;e--)this._scopeEvents.removeDelegate(this.target,this._context,t,o[e][0],o[e][1])}}else this._scopeEvents.remove(this.target,"all")}}class Zt{constructor(t){this.list=[],this.selectorMap={},this.scope=void 0,this.scope=t,t.addListeners({"interactable:unset":({interactable:t})=>{const{target:e,_context:n}=t,i=at.string(e)?this.selectorMap[e]:e[this.scope.id],r=pt(i,t=>t.context===n);i[r]&&(i[r].context=null,i[r].interactable=null),i.splice(r,1)}})}new(t,e){e=vt(e||{},{actions:this.scope.actions});const n=new this.scope.Interactable(t,e,this.scope.document,this.scope.events),i={context:n._context,interactable:n};return this.scope.addDocument(n._doc),this.list.push(n),at.string(t)?(this.selectorMap[t]||(this.selectorMap[t]=[]),this.selectorMap[t].push(i)):(n.target[this.scope.id]||Object.defineProperty(t,this.scope.id,{value:[],configurable:!0}),t[this.scope.id].push(i)),this.scope.fire("interactable:new",{target:t,options:e,interactable:n,win:this.scope._win}),n}get(t,e){const n=e&&e.context||this.scope.document,i=at.string(t),r=i?this.selectorMap[t]:t[this.scope.id];if(!r)return null;const o=gt(r,e=>e.context===n&&(i||e.interactable.inContext(t)));return o&&o.interactable}forEachMatch(t,e){for(const n of this.list){let i;if((at.string(n.target)?at.element(t)&&Dt(t,n.target):t===n.target)&&n.inContext(t)&&(i=e(n)),void 0!==i)return i}}}function Kt(t,e){for(const n in e){const i=Kt.prefixedPropREs;let r=!1;for(const t in i)if(0===n.indexOf(t)&&i[t].test(n)){r=!0;break}r||"function"===typeof e[n]||(t[n]=e[n])}return t}Kt.prefixedPropREs={webkit:/(Movement[XY]|Radius[XY]|RotationAngle|Force)$/,moz:/(Pressure)$/};var Jt=Kt;function Qt(t,e){t.page=t.page||{},t.page.x=e.page.x,t.page.y=e.page.y,t.client=t.client||{},t.client.x=e.client.x,t.client.y=e.client.y,t.timeStamp=e.timeStamp}function te(t,e,n){t.page.x=n.page.x-e.page.x,t.page.y=n.page.y-e.page.y,t.client.x=n.client.x-e.client.x,t.client.y=n.client.y-e.client.y,t.timeStamp=n.timeStamp-e.timeStamp}function ee(t,e){const n=Math.max(e.timeStamp/1e3,.001);t.page.x=e.page.x/n,t.page.y=e.page.y/n,t.client.x=e.client.x/n,t.client.y=e.client.y/n,t.timeStamp=n}function ne(t){t.page.x=0,t.page.y=0,t.client.x=0,t.client.y=0}function ie(t){return t instanceof G.Event||t instanceof G.Touch}function re(t,e,n){return n=n||{},t=t||"page",n.x=e[t+"X"],n.y=e[t+"Y"],n}function oe(t,e){return e=e||{x:0,y:0},ut.isOperaMobile&&ie(t)?(re("screen",t,e),e.x+=window.scrollX,e.y+=window.scrollY):re("page",t,e),e}function se(t,e){return e=e||{},ut.isOperaMobile&&ie(t)?re("screen",t,e):re("client",t,e),e}function ae(t){return at.number(t.pointerId)?t.pointerId:t.identifier}function ce(t,e,n){const i=e.length>1?ue(e):e[0];oe(i,t.page),se(i,t.client),t.timeStamp=n}function le(t){const e=[];return at.array(t)?(e[0]=t[0],e[1]=t[1]):"touchend"===t.type?1===t.touches.length?(e[0]=t.touches[0],e[1]=t.changedTouches[0]):0===t.touches.length&&(e[0]=t.changedTouches[0],e[1]=t.changedTouches[1]):(e[0]=t.touches[0],e[1]=t.touches[1]),e}function ue(t){const e={pageX:0,pageY:0,clientX:0,clientY:0,screenX:0,screenY:0};for(const n of t)for(const t in e)e[t]+=n[t];for(const n in e)e[n]/=t.length;return e}function he(t){if(!t.length)return null;const e=le(t),n=Math.min(e[0].pageX,e[1].pageX),i=Math.min(e[0].pageY,e[1].pageY),r=Math.max(e[0].pageX,e[1].pageX),o=Math.max(e[0].pageY,e[1].pageY);return{x:n,y:i,left:n,top:i,right:r,bottom:o,width:r-n,height:o-i}}function de(t,e){const n=e+"X",i=e+"Y",r=le(t),o=r[0][n]-r[1][n],s=r[0][i]-r[1][i];return Gt(o,s)}function fe(t,e){const n=e+"X",i=e+"Y",r=le(t),o=r[1][n]-r[0][n],s=r[1][i]-r[0][i],a=180*Math.atan2(s,o)/Math.PI;return a}function pe(t){return at.string(t.pointerType)?t.pointerType:at.number(t.pointerType)?[void 0,void 0,"touch","pen","mouse"][t.pointerType]:/touch/.test(t.type)||t instanceof G.Touch?"touch":"mouse"}function ge(t){const e=at.func(t.composedPath)?t.composedPath():t.path;return[kt(e?e[0]:t.target),kt(t.currentTarget)]}function me(){return{page:{x:0,y:0},client:{x:0,y:0},timeStamp:0}}function ve(t){const e=[],n={},i=[],r={add:o,remove:s,addDelegate:a,removeDelegate:c,delegateListener:l,delegateUseCapture:u,delegatedEvents:n,documents:i,targets:e,supportsOptions:!1,supportsPassive:!1};function o(t,n,i,o){const s=be(o);let a=gt(e,e=>e.eventTarget===t);a||(a={eventTarget:t,events:{}},e.push(a)),a.events[n]||(a.events[n]=[]),t.addEventListener&&!ht(a.events[n],i)&&(t.addEventListener(n,i,r.supportsOptions?s:s.capture),a.events[n].push(i))}function s(t,n,i,o){const a=be(o),c=pt(e,e=>e.eventTarget===t),l=e[c];if(!l||!l.events)return;if("all"===n){for(n in l.events)l.events.hasOwnProperty(n)&&s(t,n,"all");return}let u=!1;const h=l.events[n];if(h){if("all"===i){for(let e=h.length-1;e>=0;e--)s(t,n,h[e],a);return}for(let e=0;e<h.length;e++)if(h[e]===i){t.removeEventListener(n,i,r.supportsOptions?a:a.capture),h.splice(e,1),0===h.length&&(delete l.events[n],u=!0);break}}u&&!Object.keys(l.events).length&&e.splice(c,1)}function a(t,e,r,s,a){const c=be(a);if(!n[r]){n[r]=[];for(const t of i)o(t,r,l),o(t,r,u,!0)}const h=n[r];let d=gt(h,n=>n.selector===t&&n.context===e);d||(d={selector:t,context:e,listeners:[]},h.push(d)),d.listeners.push([s,c])}function c(t,e,i,r,o){const a=be(o),c=n[i];let h,d=!1;if(c)for(h=c.length-1;h>=0;h--){const n=c[h];if(n.selector===t&&n.context===e){const{listeners:t}=n;for(let n=t.length-1;n>=0;n--){const[o,{capture:f,passive:p}]=t[n];if(o===r&&f===a.capture&&p===a.passive){t.splice(n,1),t.length||(c.splice(h,1),s(e,i,l),s(e,i,u,!0)),d=!0;break}}if(d)break}}}function l(t,e){const i=be(e),r=new ye(t),o=n[t.type],[s]=ge(t);let a=s;while(at.element(a)){for(let t=0;t<o.length;t++){const e=o[t],{selector:n,context:c}=e;if(Dt(a,n)&&Ot(c,s)&&Ot(c,a)){const{listeners:t}=e;r.currentTarget=a;for(const[e,{capture:n,passive:o}]of t)n===i.capture&&o===i.passive&&e(r)}}a=Pt(a)}}function u(t){return l.call(this,t,!0)}return t.document.createElement("div").addEventListener("test",null,{get capture(){return r.supportsOptions=!0},get passive(){return r.supportsPassive=!0}}),t.events=r,r}class ye{constructor(t){this.currentTarget=void 0,this.originalEvent=void 0,this.type=void 0,this.originalEvent=t,Jt(this,t)}preventOriginalDefault(){this.originalEvent.preventDefault()}stopPropagation(){this.originalEvent.stopPropagation()}stopImmediatePropagation(){this.originalEvent.stopImmediatePropagation()}}function be(t){if(!at.object(t))return{capture:!!t,passive:!1};const e=vt({},t);return e.capture=!!t.capture,e.passive=!!t.passive,e}var xe={id:"events",install:ve};function we(t,e){let n=!1;return function(){return n||(V.console.warn(e),n=!0),t.apply(this,arguments)}}function Se(t,e){return t.name=e.name,t.axis=e.axis,t.edges=e.edges,t}function Ee(t){const e=(n,i)=>{let r=t.interactables.get(n,i);return r||(r=t.interactables.new(n,i),r.events.global=e.globalEvents),r};return e.getPointerAverage=ue,e.getTouchBBox=he,e.getTouchDistance=de,e.getTouchAngle=fe,e.getElementRect=jt,e.getElementClientRect=Rt,e.matchesSelector=Dt,e.closest=It,e.globalEvents={},e.version="1.10.2",e.scope=t,e.use=function(t,e){return this.scope.usePlugin(t,e),this},e.isSet=function(t,e){return!!this.scope.interactables.get(t,e&&e.context)},e.on=we((function(t,e,n){if(at.string(t)&&-1!==t.search(" ")&&(t=t.trim().split(/ +/)),at.array(t)){for(const i of t)this.on(i,e,n);return this}if(at.object(t)){for(const n in t)this.on(n,t[n],e);return this}return Vt(t,this.scope.actions)?this.globalEvents[t]?this.globalEvents[t].push(e):this.globalEvents[t]=[e]:this.scope.events.add(this.scope.document,t,e,{options:n}),this}),"The interact.on() method is being deprecated"),e.off=we((function(t,e,n){if(at.string(t)&&-1!==t.search(" ")&&(t=t.trim().split(/ +/)),at.array(t)){for(const i of t)this.off(i,e,n);return this}if(at.object(t)){for(const n in t)this.off(n,t[n],e);return this}if(Vt(t,this.scope.actions)){let n;t in this.globalEvents&&-1!==(n=this.globalEvents[t].indexOf(e))&&this.globalEvents[t].splice(n,1)}else this.scope.events.remove(this.scope.document,t,e,n);return this}),"The interact.off() method is being deprecated"),e.debug=function(){return this.scope},e.supportsTouch=function(){return ut.supportsTouch},e.supportsPointerEvent=function(){return ut.supportsPointerEvent},e.stop=function(){for(const t of this.scope.interactions.list)t.stop();return this},e.pointerMoveTolerance=function(t){return at.number(t)?(this.scope.interactions.pointerMoveTolerance=t,this):this.scope.interactions.pointerMoveTolerance},e.addDocument=function(t,e){this.scope.addDocument(t,e)},e.removeDocument=function(t){this.scope.removeDocument(t)},e}class Te{constructor(t,e,n,i,r){this.id=void 0,this.pointer=void 0,this.event=void 0,this.downTime=void 0,this.downTarget=void 0,this.id=t,this.pointer=e,this.event=n,this.downTime=i,this.downTarget=r}}let ze,Me;(function(t){t["interactable"]="",t["element"]="",t["prepared"]="",t["pointerIsDown"]="",t["pointerWasMoved"]="",t["_proxy"]=""})(ze||(ze={})),function(t){t["start"]="",t["move"]="",t["end"]="",t["stop"]="",t["interacting"]=""}(Me||(Me={}));let Oe=0;class Ie{get pointerMoveTolerance(){return 1}constructor({pointerType:t,scopeFire:e}){this.interactable=null,this.element=null,this.rect=void 0,this._rects=void 0,this.edges=void 0,this._scopeFire=void 0,this.prepared={name:null,axis:null,edges:null},this.pointerType=void 0,this.pointers=[],this.downEvent=null,this.downPointer={},this._latestPointer={pointer:null,event:null,eventTarget:null},this.prevEvent=null,this.pointerIsDown=!1,this.pointerWasMoved=!1,this._interacting=!1,this._ending=!1,this._stopped=!0,this._proxy=null,this.simulation=null,this.doMove=we((function(t){this.move(t)}),"The interaction.doMove() method has been renamed to interaction.move()"),this.coords={start:me(),prev:me(),cur:me(),delta:me(),velocity:me()},this._id=Oe++,this._scopeFire=e,this.pointerType=t;const n=this;this._proxy={};for(const i in ze)Object.defineProperty(this._proxy,i,{get(){return n[i]}});for(const i in Me)Object.defineProperty(this._proxy,i,{value:(...t)=>n[i](...t)});this._scopeFire("interactions:new",{interaction:this})}pointerDown(t,e,n){const i=this.updatePointer(t,e,n,!0),r=this.pointers[i];this._scopeFire("interactions:down",{pointer:t,event:e,eventTarget:n,pointerIndex:i,pointerInfo:r,type:"down",interaction:this})}start(t,e,n){return!(this.interacting()||!this.pointerIsDown||this.pointers.length<("gesture"===t.name?2:1)||!e.options[t.name].enabled)&&(Se(this.prepared,t),this.interactable=e,this.element=n,this.rect=e.getRect(n),this.edges=this.prepared.edges?vt({},this.prepared.edges):{left:!0,right:!0,top:!0,bottom:!0},this._stopped=!1,this._interacting=this._doPhase({interaction:this,event:this.downEvent,phase:"start"})&&!this._stopped,this._interacting)}pointerMove(t,e,n){this.simulation||this.modification&&this.modification.endResult||this.updatePointer(t,e,n,!1);const i=this.coords.cur.page.x===this.coords.prev.page.x&&this.coords.cur.page.y===this.coords.prev.page.y&&this.coords.cur.client.x===this.coords.prev.client.x&&this.coords.cur.client.y===this.coords.prev.client.y;let r,o;this.pointerIsDown&&!this.pointerWasMoved&&(r=this.coords.cur.client.x-this.coords.start.client.x,o=this.coords.cur.client.y-this.coords.start.client.y,this.pointerWasMoved=Gt(r,o)>this.pointerMoveTolerance);const s=this.getPointerIndex(t),a={pointer:t,pointerIndex:s,pointerInfo:this.pointers[s],event:e,type:"move",eventTarget:n,dx:r,dy:o,duplicate:i,interaction:this};i||ee(this.coords.velocity,this.coords.delta),this._scopeFire("interactions:move",a),i||this.simulation||(this.interacting()&&(a.type=null,this.move(a)),this.pointerWasMoved&&Qt(this.coords.prev,this.coords.cur))}move(t){t&&t.event||ne(this.coords.delta),t=vt({pointer:this._latestPointer.pointer,event:this._latestPointer.event,eventTarget:this._latestPointer.eventTarget,interaction:this},t||{}),t.phase="move",this._doPhase(t)}pointerUp(t,e,n,i){let r=this.getPointerIndex(t);-1===r&&(r=this.updatePointer(t,e,n,!1));const o=/cancel$/i.test(e.type)?"cancel":"up";this._scopeFire("interactions:"+o,{pointer:t,pointerIndex:r,pointerInfo:this.pointers[r],event:e,eventTarget:n,type:o,curEventTarget:i,interaction:this}),this.simulation||this.end(e),this.removePointer(t,e)}documentBlur(t){this.end(t),this._scopeFire("interactions:blur",{event:t,type:"blur",interaction:this})}end(t){let e;this._ending=!0,t=t||this._latestPointer.event,this.interacting()&&(e=this._doPhase({event:t,interaction:this,phase:"end"})),this._ending=!1,!0===e&&this.stop()}currentAction(){return this._interacting?this.prepared.name:null}interacting(){return this._interacting}stop(){this._scopeFire("interactions:stop",{interaction:this}),this.interactable=this.element=null,this._interacting=!1,this._stopped=!0,this.prepared.name=this.prevEvent=null}getPointerIndex(t){const e=ae(t);return"mouse"===this.pointerType||"pen"===this.pointerType?this.pointers.length-1:pt(this.pointers,t=>t.id===e)}getPointerInfo(t){return this.pointers[this.getPointerIndex(t)]}updatePointer(t,e,n,i){const r=ae(t);let o=this.getPointerIndex(t),s=this.pointers[o];return i=!1!==i&&(i||/(down|start)$/i.test(e.type)),s?s.pointer=t:(s=new Te(r,t,e,null,null),o=this.pointers.length,this.pointers.push(s)),ce(this.coords.cur,this.pointers.map(t=>t.pointer),this._now()),te(this.coords.delta,this.coords.prev,this.coords.cur),i&&(this.pointerIsDown=!0,s.downTime=this.coords.cur.timeStamp,s.downTarget=n,Jt(this.downPointer,t),this.interacting()||(Qt(this.coords.start,this.coords.cur),Qt(this.coords.prev,this.coords.cur),this.downEvent=e,this.pointerWasMoved=!1)),this._updateLatestPointer(t,e,n),this._scopeFire("interactions:update-pointer",{pointer:t,event:e,eventTarget:n,down:i,pointerInfo:s,pointerIndex:o,interaction:this}),o}removePointer(t,e){const n=this.getPointerIndex(t);if(-1===n)return;const i=this.pointers[n];this._scopeFire("interactions:remove-pointer",{pointer:t,event:e,eventTarget:null,pointerIndex:n,pointerInfo:i,interaction:this}),this.pointers.splice(n,1),this.pointerIsDown=!1}_updateLatestPointer(t,e,n){this._latestPointer.pointer=t,this._latestPointer.event=e,this._latestPointer.eventTarget=n}destroy(){this._latestPointer.pointer=null,this._latestPointer.event=null,this._latestPointer.eventTarget=null}_createPreparedEvent(t,e,n,i){return new qt(this,t,this.prepared.name,e,this.element,n,i)}_fireEvent(t){this.interactable.fire(t),(!this.prevEvent||t.timeStamp>=this.prevEvent.timeStamp)&&(this.prevEvent=t)}_doPhase(t){const{event:e,phase:n,preEnd:i,type:r}=t,{rect:o}=this;o&&"move"===n&&(Ft(this.edges,o,this.coords.delta[this.interactable.options.deltaSource]),o.width=o.right-o.left,o.height=o.bottom-o.top);const s=this._scopeFire("interactions:before-action-"+n,t);if(!1===s)return!1;const a=t.iEvent=this._createPreparedEvent(e,n,i,r);return this._scopeFire("interactions:action-"+n,t),"start"===n&&(this.prevEvent=a),this._fireEvent(a),this._scopeFire("interactions:after-action-"+n,t),!0}_now(){return Date.now()}}var Pe=Ie;function De(t){return/^(always|never|auto)$/.test(t)?(this.options.preventDefault=t,this):at.bool(t)?(this.options.preventDefault=t?"always":"never",this):this.options.preventDefault}function _e(t,e,n){const i=t.options.preventDefault;if("never"!==i)if("always"!==i){if(e.events.supportsPassive&&/^touch(start|move)$/.test(n.type)){const t=Z(n.target).document,i=e.getDocOptions(t);if(!i||!i.events||!1!==i.events.passive)return}/^(mouse|pointer|touch)*(down|start)/i.test(n.type)||at.element(n.target)&&Dt(n.target,"input,select,textarea,[contenteditable=true],[contenteditable=true] *")||n.preventDefault()}else n.preventDefault()}function ke({interaction:t,event:e}){t.interactable&&t.interactable.checkAndPreventDefault(e)}function Ae(t){const{Interactable:e}=t;e.prototype.preventDefault=De,e.prototype.checkAndPreventDefault=function(e){return _e(this,t,e)},t.interactions.docEvents.push({type:"dragstart",listener(e){for(const n of t.interactions.list)if(n.element&&(n.element===e.target||Ot(n.element,e.target)))return void n.interactable.checkAndPreventDefault(e)}})}var Re={id:"core/interactablePreventDefault",install:Ae,listeners:["down","move","up","cancel"].reduce((t,e)=>(t["interactions:"+e]=ke,t),{})};const je={methodOrder:["simulationResume","mouseOrPen","hasPointer","idle"],search(t){for(const e of je.methodOrder){const n=je[e](t);if(n)return n}return null},simulationResume({pointerType:t,eventType:e,eventTarget:n,scope:i}){if(!/down|start/i.test(e))return null;for(const r of i.interactions.list){let e=n;if(r.simulation&&r.simulation.allowResume&&r.pointerType===t)while(e){if(e===r.element)return r;e=Pt(e)}}return null},mouseOrPen({pointerId:t,pointerType:e,eventType:n,scope:i}){if("mouse"!==e&&"pen"!==e)return null;let r;for(const o of i.interactions.list)if(o.pointerType===e){if(o.simulation&&!Ce(o,t))continue;if(o.interacting())return o;r||(r=o)}if(r)return r;for(const o of i.interactions.list)if(o.pointerType===e&&(!/down/i.test(n)||!o.simulation))return o;return null},hasPointer({pointerId:t,scope:e}){for(const n of e.interactions.list)if(Ce(n,t))return n;return null},idle({pointerType:t,scope:e}){for(const n of e.interactions.list){if(1===n.pointers.length){const t=n.interactable;if(t&&(!t.options.gesture||!t.options.gesture.enabled))continue}else if(n.pointers.length>=2)continue;if(!n.interacting()&&t===n.pointerType)return n}return null}};function Ce(t,e){return t.pointers.some(({id:t})=>t===e)}var He=je;const Le=["pointerDown","pointerMove","pointerUp","updatePointer","removePointer","windowBlur"];function Ne(t){const e={};for(const o of Le)e[o]=We(o,t);const n=ut.pEventTypes;let i;function r(){for(const e of t.interactions.list)if(e.pointerIsDown&&"touch"===e.pointerType&&!e._interacting)for(const n of e.pointers)t.documents.some(({doc:t})=>Ot(t,n.downTarget))||e.removePointer(n.pointer,n.event)}i=G.PointerEvent?[{type:n.down,listener:r},{type:n.down,listener:e.pointerDown},{type:n.move,listener:e.pointerMove},{type:n.up,listener:e.pointerUp},{type:n.cancel,listener:e.pointerUp}]:[{type:"mousedown",listener:e.pointerDown},{type:"mousemove",listener:e.pointerMove},{type:"mouseup",listener:e.pointerUp},{type:"touchstart",listener:r},{type:"touchstart",listener:e.pointerDown},{type:"touchmove",listener:e.pointerMove},{type:"touchend",listener:e.pointerUp},{type:"touchcancel",listener:e.pointerUp}],i.push({type:"blur",listener(e){for(const n of t.interactions.list)n.documentBlur(e)}}),t.prevTouchTime=0,t.Interaction=class extends Pe{get pointerMoveTolerance(){return t.interactions.pointerMoveTolerance}set pointerMoveTolerance(e){t.interactions.pointerMoveTolerance=e}_now(){return t.now()}},t.interactions={list:[],new(e){e.scopeFire=(e,n)=>t.fire(e,n);const n=new t.Interaction(e);return t.interactions.list.push(n),n},listeners:e,docEvents:i,pointerMoveTolerance:1},t.usePlugin(Re)}function We(t,e){return function(n){const i=e.interactions.list,r=pe(n),[o,s]=ge(n),a=[];if(/^touch/.test(n.type)){e.prevTouchTime=e.now();for(const t of n.changedTouches){const i=t,c=ae(i),l={pointer:i,pointerId:c,pointerType:r,eventType:n.type,eventTarget:o,curEventTarget:s,scope:e},u=Be(l);a.push([l.pointer,l.eventTarget,l.curEventTarget,u])}}else{let t=!1;if(!ut.supportsPointerEvent&&/mouse/.test(n.type)){for(let e=0;e<i.length&&!t;e++)t="mouse"!==i[e].pointerType&&i[e].pointerIsDown;t=t||e.now()-e.prevTouchTime<500||0===n.timeStamp}if(!t){const t={pointer:n,pointerId:ae(n),pointerType:r,eventType:n.type,curEventTarget:s,eventTarget:o,scope:e},i=Be(t);a.push([t.pointer,t.eventTarget,t.curEventTarget,i])}}for(const[e,c,l,u]of a)u[t](e,n,c,l)}}function Be(t){const{pointerType:e,scope:n}=t,i=He.search(t),r={interaction:i,searchDetails:t};return n.fire("interactions:find",r),r.interaction||n.interactions.new({pointerType:e})}function Fe({doc:t,scope:e,options:n},i){const{interactions:{docEvents:r},events:o}=e,s=o[i];e.browser.isIOS&&!n.events&&(n.events={passive:!1});for(const c in o.delegatedEvents)s(t,c,o.delegateListener),s(t,c,o.delegateUseCapture,!0);const a=n&&n.events;for(const{type:c,listener:l}of r)s(t,c,l,a)}const $e={id:"core/interactions",install:Ne,listeners:{"scope:add-document":t=>Fe(t,"add"),"scope:remove-document":t=>Fe(t,"remove"),"interactable:unset":({interactable:t},e)=>{for(let n=e.interactions.list.length-1;n>=0;n--){const i=e.interactions.list[n];i.interactable===t&&(i.stop(),e.fire("interactions:destroy",{interaction:i}),i.destroy(),e.interactions.list.length>2&&e.interactions.list.splice(n,1))}}},onDocSignal:Fe,doOnInteractions:We,methodNames:Le};var Ge=$e;class Ye{constructor(){this.id="__interact_scope_"+Math.floor(100*Math.random()),this.isInitialized=!1,this.listenerMaps=[],this.browser=ut,this.defaults=mt(Xt),this.Eventable=Mt,this.actions={map:{},phases:{start:!0,move:!0,end:!0},methodDict:{},phaselessTypes:{}},this.interactStatic=Ee(this),this.InteractEvent=qt,this.Interactable=void 0,this.interactables=new Zt(this),this._win=void 0,this.document=void 0,this.window=void 0,this.documents=[],this._plugins={list:[],map:{}},this.onWindowUnload=t=>this.removeDocument(t.target);const t=this;this.Interactable=class extends Ut{get _defaults(){return t.defaults}set(e){return super.set(e),t.fire("interactable:set",{options:e,interactable:this}),this}unset(){super.unset(),t.interactables.list.splice(t.interactables.list.indexOf(this),1),t.fire("interactable:unset",{interactable:this})}}}addListeners(t,e){this.listenerMaps.push({id:e,map:t})}fire(t,e){for(const{map:{[t]:n}}of this.listenerMaps)if(n&&!1===n(e,this,t))return!1}init(t){return this.isInitialized?this:Xe(this,t)}pluginIsInstalled(t){return this._plugins.map[t.id]||-1!==this._plugins.list.indexOf(t)}usePlugin(t,e){if(!this.isInitialized)return this;if(this.pluginIsInstalled(t))return this;if(t.id&&(this._plugins.map[t.id]=t),this._plugins.list.push(t),t.install&&t.install(this,e),t.listeners&&t.before){let e=0;const n=this.listenerMaps.length,i=t.before.reduce((t,e)=>(t[e]=!0,t[qe(e)]=!0,t),{});for(;e<n;e++){const t=this.listenerMaps[e].id;if(i[t]||i[qe(t)])break}this.listenerMaps.splice(e,0,{id:t.id,map:t.listeners})}else t.listeners&&this.listenerMaps.push({id:t.id,map:t.listeners});return this}addDocument(t,e){if(-1!==this.getDocIndex(t))return!1;const n=Z(t);e=e?vt({},e):{},this.documents.push({doc:t,options:e}),this.events.documents.push(t),t!==this.document&&this.events.add(n,"unload",this.onWindowUnload),this.fire("scope:add-document",{doc:t,window:n,scope:this,options:e})}removeDocument(t){const e=this.getDocIndex(t),n=Z(t),i=this.documents[e].options;this.events.remove(n,"unload",this.onWindowUnload),this.documents.splice(e,1),this.events.documents.splice(e,1),this.fire("scope:remove-document",{doc:t,window:n,scope:this,options:i})}getDocIndex(t){for(let e=0;e<this.documents.length;e++)if(this.documents[e].doc===t)return e;return-1}getDocOptions(t){const e=this.getDocIndex(t);return-1===e?null:this.documents[e].options}now(){return(this.window.Date||Date).now()}}function Xe(t,e){return t.isInitialized=!0,U(e),G.init(e),ut.init(e),St.init(e),t.window=e,t.document=e.document,t.usePlugin(Ge),t.usePlugin(xe),t}function qe(t){return t&&t.replace(/\/.*$/,"")}const Ve=new Ye,Ue=Ve.interactStatic;var Ze=Ue;const Ke=t=>Ve.init(t);function Je(t){const{Interactable:e}=t;e.prototype.getAction=function(e,n,i,r){const o=Qe(this,n,i,r,t);return this.options.actionChecker?this.options.actionChecker(e,n,o,this,r,i):o},e.prototype.ignoreFrom=we((function(t){return this._backCompatOption("ignoreFrom",t)}),"Interactable.ignoreFrom() has been deprecated. Use Interactble.draggable({ignoreFrom: newValue})."),e.prototype.allowFrom=we((function(t){return this._backCompatOption("allowFrom",t)}),"Interactable.allowFrom() has been deprecated. Use Interactble.draggable({allowFrom: newValue})."),e.prototype.actionChecker=en,e.prototype.styleCursor=tn}function Qe(t,e,n,i,r){const o=t.getRect(i),s=e.buttons||{0:1,1:4,3:8,4:16}[e.button],a={action:null,interactable:t,interaction:n,element:i,rect:o,buttons:s};return r.fire("auto-start:check",a),a.action}function tn(t){return at.bool(t)?(this.options.styleCursor=t,this):null===t?(delete this.options.styleCursor,this):this.options.styleCursor}function en(t){return at.func(t)?(this.options.actionChecker=t,this):null===t?(delete this.options.actionChecker,this):this.options.actionChecker}"object"===typeof window&&window&&Ke(window);var nn={id:"auto-start/interactableMethods",install:Je};function rn(t){const{interactStatic:e,defaults:n}=t;t.usePlugin(nn),n.base.actionChecker=null,n.base.styleCursor=!0,vt(n.perAction,{manualStart:!1,max:1/0,maxPerElement:1,allowFrom:null,ignoreFrom:null,mouseButtons:1}),e.maxInteractions=e=>pn(e,t),t.autoStart={maxInteractions:1/0,withinInteractionLimit:fn,cursorElement:null}}function on({interaction:t,pointer:e,event:n,eventTarget:i},r){if(t.interacting())return;const o=hn(t,e,n,i,r);dn(t,o,r)}function sn({interaction:t,pointer:e,event:n,eventTarget:i},r){if("mouse"!==t.pointerType||t.pointerIsDown||t.interacting())return;const o=hn(t,e,n,i,r);dn(t,o,r)}function an(t,e){const{interaction:n}=t;if(!n.pointerIsDown||n.interacting()||!n.pointerWasMoved||!n.prepared.name)return;e.fire("autoStart:before-start",t);const{interactable:i}=n,r=n.prepared.name;r&&i&&(i.options[r].manualStart||!fn(i,n.element,n.prepared,e)?n.stop():(n.start(n.prepared,i,n.element),mn(n,e)))}function cn({interaction:t},e){const{interactable:n}=t;n&&n.options.styleCursor&&gn(t.element,"",e)}function ln(t,e,n,i,r){return e.testIgnoreAllow(e.options[t.name],n,i)&&e.options[t.name].enabled&&fn(e,n,t,r)?t:null}function un(t,e,n,i,r,o,s){for(let a=0,c=i.length;a<c;a++){const c=i[a],l=r[a],u=c.getAction(e,n,t,l);if(!u)continue;const h=ln(u,c,l,o,s);if(h)return{action:h,interactable:c,element:l}}return{action:null,interactable:null,element:null}}function hn(t,e,n,i,r){let o=[],s=[],a=i;function c(t){o.push(t),s.push(a)}while(at.element(a)){o=[],s=[],r.interactables.forEachMatch(a,c);const l=un(t,e,n,o,s,i,r);if(l.action&&!l.interactable.options[l.action.name].manualStart)return l;a=Pt(a)}return{action:null,interactable:null,element:null}}function dn(t,{action:e,interactable:n,element:i},r){e=e||{name:null},t.interactable=n,t.element=i,Se(t.prepared,e),t.rect=n&&e.name?n.getRect(i):null,mn(t,r),r.fire("autoStart:prepared",{interaction:t})}function fn(t,e,n,i){const r=t.options,o=r[n.name].max,s=r[n.name].maxPerElement,a=i.autoStart.maxInteractions;let c=0,l=0,u=0;if(!(o&&s&&a))return!1;for(const h of i.interactions.list){const i=h.prepared.name;if(h.interacting()){if(c++,c>=a)return!1;if(h.interactable===t){if(l+=i===n.name?1:0,l>=o)return!1;if(h.element===e&&(u++,i===n.name&&u>=s))return!1}}}return a>0}function pn(t,e){return at.number(t)?(e.autoStart.maxInteractions=t,this):e.autoStart.maxInteractions}function gn(t,e,n){const{cursorElement:i}=n.autoStart;i&&i!==t&&(i.style.cursor=""),t.ownerDocument.documentElement.style.cursor=e,t.style.cursor=e,n.autoStart.cursorElement=e?t:null}function mn(t,e){const{interactable:n,element:i,prepared:r}=t;if("mouse"!==t.pointerType||!n||!n.options.styleCursor)return void(e.autoStart.cursorElement&&gn(e.autoStart.cursorElement,"",e));let o="";if(r.name){const s=n.options[r.name].cursorChecker;o=at.func(s)?s(r,n,i,t._interacting):e.actions.map[r.name].getCursor(r)}gn(t.element,o||"",e)}const vn={id:"auto-start/base",before:["actions"],install:rn,listeners:{"interactions:down":on,"interactions:move":(t,e)=>{sn(t,e),an(t,e)},"interactions:stop":cn},maxInteractions:pn,withinInteractionLimit:fn,validateAction:ln};var yn=vn;function bn({interaction:t,eventTarget:e,dx:n,dy:i},r){if("drag"!==t.prepared.name)return;const o=Math.abs(n),s=Math.abs(i),a=t.interactable.options.drag,c=a.startAxis,l=o>s?"x":o<s?"y":"xy";if(t.prepared.axis="start"===a.lockAxis?l[0]:a.lockAxis,"xy"!==l&&"xy"!==c&&c!==l){t.prepared.name=null;let n=e;const i=function(i){if(i===t.interactable)return;const o=t.interactable.options.drag;if(!o.manualStart&&i.testIgnoreAllow(o,n,e)){const o=i.getAction(t.downPointer,t.downEvent,t,n);if(o&&"drag"===o.name&&xn(l,i)&&yn.validateAction(o,i,n,e,r))return i}};while(at.element(n)){const e=r.interactables.forEachMatch(n,i);if(e){t.prepared.name="drag",t.interactable=e,t.element=n;break}n=Pt(n)}}}function xn(t,e){if(!e)return!1;const n=e.options.drag.startAxis;return"xy"===t||"xy"===n||n===t}var wn={id:"auto-start/dragAxis",listeners:{"autoStart:before-start":bn}};function Sn(t){const{defaults:e}=t;t.usePlugin(yn),e.perAction.hold=0,e.perAction.delay=0}function En(t){const e=t.prepared&&t.prepared.name;if(!e)return null;const n=t.interactable.options;return n[e].hold||n[e].delay}const Tn={id:"auto-start/hold",install:Sn,listeners:{"interactions:new":({interaction:t})=>{t.autoStartHoldTimer=null},"autoStart:prepared":({interaction:t})=>{const e=En(t);e>0&&(t.autoStartHoldTimer=setTimeout(()=>{t.start(t.prepared,t.interactable,t.element)},e))},"interactions:move":({interaction:t,duplicate:e})=>{t.autoStartHoldTimer&&t.pointerWasMoved&&!e&&(clearTimeout(t.autoStartHoldTimer),t.autoStartHoldTimer=null)},"autoStart:before-start":({interaction:t})=>{const e=En(t);e>0&&(t.prepared.name=null)}},getHoldDuration:En};var zn=Tn,Mn={id:"auto-start",install(t){t.usePlugin(yn),t.usePlugin(zn),t.usePlugin(wn)}};function On(t){const{actions:e,Interactable:n,defaults:i}=t;n.prototype.draggable=_n.draggable,e.map.drag=_n,e.methodDict.drag="draggable",i.actions.drag=_n.defaults}function In({interaction:t}){if("drag"!==t.prepared.name)return;const e=t.prepared.axis;"x"===e?(t.coords.cur.page.y=t.coords.start.page.y,t.coords.cur.client.y=t.coords.start.client.y,t.coords.velocity.client.y=0,t.coords.velocity.page.y=0):"y"===e&&(t.coords.cur.page.x=t.coords.start.page.x,t.coords.cur.client.x=t.coords.start.client.x,t.coords.velocity.client.x=0,t.coords.velocity.page.x=0)}function Pn({iEvent:t,interaction:e}){if("drag"!==e.prepared.name)return;const n=e.prepared.axis;if("x"===n||"y"===n){const i="x"===n?"y":"x";t.page[i]=e.coords.start.page[i],t.client[i]=e.coords.start.client[i],t.delta[i]=0}}"object"===typeof window&&window&&Ke(window),Ze.use(Mn);const Dn=function(t){return at.object(t)?(this.options.drag.enabled=!1!==t.enabled,this.setPerAction("drag",t),this.setOnEvents("drag",t),/^(xy|x|y|start)$/.test(t.lockAxis)&&(this.options.drag.lockAxis=t.lockAxis),/^(xy|x|y)$/.test(t.startAxis)&&(this.options.drag.startAxis=t.startAxis),this):at.bool(t)?(this.options.drag.enabled=t,this):this.options.drag},_n={id:"actions/drag",install:On,listeners:{"interactions:before-action-move":In,"interactions:action-resume":In,"interactions:action-move":Pn,"auto-start:check":t=>{const{interaction:e,interactable:n,buttons:i}=t,r=n.options.drag;if(r&&r.enabled&&(!e.pointerIsDown||!/mouse|pointer/.test(e.pointerType)||0!==(i&n.options.drag.mouseButtons)))return t.action={name:"drag",axis:"start"===r.lockAxis?r.startAxis:r.lockAxis},!1}},draggable:Dn,beforeMove:In,move:Pn,defaults:{startAxis:"xy",lockAxis:"xy"},getCursor(){return"move"}};var kn=_n;function An(t){const{actions:e,browser:n,Interactable:i,defaults:r}=t;Fn.cursors=Hn(n),Fn.defaultMargin=n.supportsTouch||n.supportsPointerEvent?20:10,i.prototype.resizable=function(e){return jn(this,e,t)},e.map.resize=Fn,e.methodDict.resize="resizable",r.actions.resize=Fn.defaults}function Rn(t){const{interaction:e,interactable:n,element:i,rect:r,buttons:o}=t;if(!r)return;const s=vt({},e.coords.cur.page),a=n.options.resize;if(a&&a.enabled&&(!e.pointerIsDown||!/mouse|pointer/.test(e.pointerType)||0!==(o&a.mouseButtons))){if(at.object(a.edges)){const n={left:!1,right:!1,top:!1,bottom:!1};for(const t in n)n[t]=Cn(t,a.edges[t],s,e._latestPointer.eventTarget,i,r,a.margin||Fn.defaultMargin);n.left=n.left&&!n.right,n.top=n.top&&!n.bottom,(n.left||n.right||n.top||n.bottom)&&(t.action={name:"resize",edges:n})}else{const e="y"!==a.axis&&s.x>r.right-Fn.defaultMargin,n="x"!==a.axis&&s.y>r.bottom-Fn.defaultMargin;(e||n)&&(t.action={name:"resize",axes:(e?"x":"")+(n?"y":"")})}return!t.action&&void 0}}function jn(t,e,n){return at.object(e)?(t.options.resize.enabled=!1!==e.enabled,t.setPerAction("resize",e),t.setOnEvents("resize",e),at.string(e.axis)&&/^x$|^y$|^xy$/.test(e.axis)?t.options.resize.axis=e.axis:null===e.axis&&(t.options.resize.axis=n.defaults.actions.resize.axis),at.bool(e.preserveAspectRatio)?t.options.resize.preserveAspectRatio=e.preserveAspectRatio:at.bool(e.square)&&(t.options.resize.square=e.square),t):at.bool(e)?(t.options.resize.enabled=e,t):t.options.resize}function Cn(t,e,n,i,r,o,s){if(!e)return!1;if(!0===e){const e=at.number(o.width)?o.width:o.right-o.left,i=at.number(o.height)?o.height:o.bottom-o.top;if(s=Math.min(s,Math.abs(("left"===t||"right"===t?e:i)/2)),e<0&&("left"===t?t="right":"right"===t&&(t="left")),i<0&&("top"===t?t="bottom":"bottom"===t&&(t="top")),"left"===t)return n.x<(e>=0?o.left:o.right)+s;if("top"===t)return n.y<(i>=0?o.top:o.bottom)+s;if("right"===t)return n.x>(e>=0?o.right:o.left)-s;if("bottom"===t)return n.y>(i>=0?o.bottom:o.top)-s}return!!at.element(i)&&(at.element(e)?e===i:_t(i,e,r))}function Hn(t){return t.isIe9?{x:"e-resize",y:"s-resize",xy:"se-resize",top:"n-resize",left:"w-resize",bottom:"s-resize",right:"e-resize",topleft:"se-resize",bottomright:"se-resize",topright:"ne-resize",bottomleft:"ne-resize"}:{x:"ew-resize",y:"ns-resize",xy:"nwse-resize",top:"ns-resize",left:"ew-resize",bottom:"ns-resize",right:"ew-resize",topleft:"nwse-resize",bottomright:"nwse-resize",topright:"nesw-resize",bottomleft:"nesw-resize"}}function Ln({iEvent:t,interaction:e}){if("resize"!==e.prepared.name||!e.prepared.edges)return;const n=t,i=e.rect;e._rects={start:vt({},i),corrected:vt({},i),previous:vt({},i),delta:{left:0,right:0,width:0,top:0,bottom:0,height:0}},n.edges=e.prepared.edges,n.rect=e._rects.corrected,n.deltaRect=e._rects.delta}function Nn({iEvent:t,interaction:e}){if("resize"!==e.prepared.name||!e.prepared.edges)return;const n=t,i=e.interactable.options.resize,r=i.invert,o="reposition"===r||"negate"===r,s=e.rect,{start:a,corrected:c,delta:l,previous:u}=e._rects;if(vt(u,c),o){if(vt(c,s),"reposition"===r){if(c.top>c.bottom){const t=c.top;c.top=c.bottom,c.bottom=t}if(c.left>c.right){const t=c.left;c.left=c.right,c.right=t}}}else c.top=Math.min(s.top,a.bottom),c.bottom=Math.max(s.bottom,a.top),c.left=Math.min(s.left,a.right),c.right=Math.max(s.right,a.left);c.width=c.right-c.left,c.height=c.bottom-c.top;for(const h in c)l[h]=c[h]-u[h];n.edges=e.prepared.edges,n.rect=c,n.deltaRect=l}function Wn({iEvent:t,interaction:e}){if("resize"!==e.prepared.name||!e.prepared.edges)return;const n=t;n.edges=e.prepared.edges,n.rect=e._rects.corrected,n.deltaRect=e._rects.delta}function Bn({iEvent:t,interaction:e}){if("resize"!==e.prepared.name||!e.resizeAxes)return;const n=e.interactable.options,i=t;n.resize.square?("y"===e.resizeAxes?i.delta.x=i.delta.y:i.delta.y=i.delta.x,i.axes="xy"):(i.axes=e.resizeAxes,"x"===e.resizeAxes?i.delta.y=0:"y"===e.resizeAxes&&(i.delta.x=0))}"object"===typeof window&&window&&Ke(window),Ze.use(kn);const Fn={id:"actions/resize",before:["actions/drag"],install:An,listeners:{"interactions:new":({interaction:t})=>{t.resizeAxes="xy"},"interactions:action-start":t=>{Ln(t),Bn(t)},"interactions:action-move":t=>{Nn(t),Bn(t)},"interactions:action-end":Wn,"auto-start:check":Rn},defaults:{square:!1,preserveAspectRatio:!1,axis:"xy",margin:NaN,edges:null,invert:"none"},cursors:null,getCursor({edges:t,axis:e,name:n}){const i=Fn.cursors;let r=null;if(e)r=i[n+e];else if(t){let e="";for(const n of["top","bottom","left","right"])t[n]&&(e+=n);r=i[e]}return r},defaultMargin:null};var $n=Fn;"object"===typeof window&&window&&Ke(window),Ze.use($n);var Gn=()=>{},Yn=()=>{},Xn=t=>{const e=[["x","y"],["left","top"],["right","bottom"],["width","height"]].filter(([e,n])=>e in t||n in t),n=(n,i)=>{const{range:r,limits:o={left:-1/0,right:1/0,top:-1/0,bottom:1/0},offset:s={x:0,y:0}}=t,a={range:r,grid:t,x:null,y:null};for(const[c,l]of e){const e=Math.round((n-s.x)/t[c]),r=Math.round((i-s.y)/t[l]);a[c]=Math.max(o.left,Math.min(o.right,e*t[c]+s.x)),a[l]=Math.max(o.top,Math.min(o.bottom,r*t[l]+s.y))}return a};return n.grid=t,n.coordFields=e,n};const qn={id:"snappers",install(t){const{interactStatic:e}=t;e.snappers=vt(e.snappers||{},i),e.createSnapGrid=e.snappers.grid}};var Vn=qn;class Un{constructor(t){this.states=[],this.startOffset={left:0,right:0,top:0,bottom:0},this.startDelta=null,this.result=null,this.endResult=null,this.edges=void 0,this.interaction=void 0,this.interaction=t,this.result=Zn()}start({phase:t},e){const{interaction:n}=this,i=Kn(n);this.prepareStates(i),this.edges=vt({},n.edges),this.startOffset=Jn(n.rect,e),this.startDelta={x:0,y:0};const r={phase:t,pageCoords:e,preEnd:!1};this.result=Zn(),this.startAll(r);const o=this.result=this.setAll(r);return o}fillArg(t){const{interaction:e}=this;t.interaction=e,t.interactable=e.interactable,t.element=e.element,t.rect=t.rect||e.rect,t.edges=this.edges,t.startOffset=this.startOffset}startAll(t){this.fillArg(t);for(const e of this.states)e.methods.start&&(t.state=e,e.methods.start(t))}setAll(t){this.fillArg(t);const{phase:e,preEnd:n,skipModifiers:i,rect:r}=t;t.coords=vt({},t.pageCoords),t.rect=vt({},r);const o=i?this.states.slice(i):this.states,s=Zn(t.coords,t.rect);for(const l of o){const{options:i}=l,r=vt({},t.coords);let o=null;l.methods.set&&this.shouldDo(i,n,e)&&(t.state=l,o=l.methods.set(t),Ft(this.interaction.edges,t.rect,{x:t.coords.x-r.x,y:t.coords.y-r.y})),s.eventProps.push(o)}s.delta.x=t.coords.x-t.pageCoords.x,s.delta.y=t.coords.y-t.pageCoords.y,s.rectDelta.left=t.rect.left-r.left,s.rectDelta.right=t.rect.right-r.right,s.rectDelta.top=t.rect.top-r.top,s.rectDelta.bottom=t.rect.bottom-r.bottom;const a=this.result.coords,c=this.result.rect;if(a&&c){const t=s.rect.left!==c.left||s.rect.right!==c.right||s.rect.top!==c.top||s.rect.bottom!==c.bottom;s.changed=t||a.x!==s.coords.x||a.y!==s.coords.y}return s}applyToInteraction(t){const{interaction:e}=this,{phase:n}=t,i=e.coords.cur,r=e.coords.start,{result:o,startDelta:s}=this,a=o.delta;"start"===n&&vt(this.startDelta,o.delta);for(const[u,h]of[[r,s],[i,a]])u.page.x+=h.x,u.page.y+=h.y,u.client.x+=h.x,u.client.y+=h.y;const{rectDelta:c}=this.result,l=t.rect||e.rect;l.left+=c.left,l.right+=c.right,l.top+=c.top,l.bottom+=c.bottom,l.width=l.right-l.left,l.height=l.bottom-l.top}setAndApply(t){const{interaction:e}=this,{phase:n,preEnd:i,skipModifiers:r}=t,o=this.setAll({preEnd:i,phase:n,pageCoords:t.modifiedCoords||e.coords.cur.page});if(this.result=o,!o.changed&&(!r||r<this.states.length)&&e.interacting())return!1;if(t.modifiedCoords){const{page:n}=e.coords.cur,i={x:t.modifiedCoords.x-n.x,y:t.modifiedCoords.y-n.y};o.coords.x+=i.x,o.coords.y+=i.y,o.delta.x+=i.x,o.delta.y+=i.y}this.applyToInteraction(t)}beforeEnd(t){const{interaction:e,event:n}=t,i=this.states;if(!i||!i.length)return;let r=!1;for(const o of i){t.state=o;const{options:e,methods:n}=o,i=n.beforeEnd&&n.beforeEnd(t);if(i)return this.endResult=i,!1;r=r||!r&&this.shouldDo(e,!0,t.phase,!0)}r&&e.move({event:n,preEnd:!0})}stop(t){const{interaction:e}=t;if(!this.states||!this.states.length)return;const n=vt({states:this.states,interactable:e.interactable,element:e.element,rect:null},t);this.fillArg(n);for(const i of this.states)n.state=i,i.methods.stop&&i.methods.stop(n);this.states=null,this.endResult=null}prepareStates(t){this.states=[];for(let e=0;e<t.length;e++){const{options:n,methods:i,name:r}=t[e];this.states.push({options:n,methods:i,index:e,name:r})}return this.states}restoreInteractionCoords({interaction:{coords:t,rect:e,modification:n}}){if(!n.result)return;const{startDelta:i}=n,{delta:r,rectDelta:o}=n.result,s=[[t.start,i],[t.cur,r]];for(const[a,c]of s)a.page.x-=c.x,a.page.y-=c.y,a.client.x-=c.x,a.client.y-=c.y;e.left-=o.left,e.right-=o.right,e.top-=o.top,e.bottom-=o.bottom}shouldDo(t,e,n,i){return!(!t||!1===t.enabled||i&&!t.endOnly||t.endOnly&&!e||"start"===n&&!t.setStart)}copyFrom(t){this.startOffset=t.startOffset,this.startDelta=t.startDelta,this.edges=t.edges,this.states=t.states.map(t=>mt(t)),this.result=Zn(vt({},t.result.coords),vt({},t.result.rect))}destroy(){for(const t in this)this[t]=null}}function Zn(t,e){return{rect:e,coords:t,delta:{x:0,y:0},rectDelta:{left:0,right:0,top:0,bottom:0},eventProps:[],changed:!0}}function Kn(t){const e=t.interactable.options[t.prepared.name],n=e.modifiers;return n&&n.length?n:["snap","snapSize","snapEdges","restrict","restrictEdges","restrictSize"].map(t=>{const n=e[t];return n&&n.enabled&&{options:n,methods:n._methods}}).filter(t=>!!t)}function Jn(t,e){return t?{left:e.x-t.left,top:e.y-t.top,right:t.right-e.x,bottom:t.bottom-e.y}:{left:0,top:0,right:0,bottom:0}}function Qn(t,e){const{defaults:n}=t,i={start:t.start,set:t.set,beforeEnd:t.beforeEnd,stop:t.stop},r=t=>{const r=t||{};r.enabled=!1!==r.enabled;for(const e in n)e in r||(r[e]=n[e]);const o={options:r,methods:i,name:e,enable:()=>(r.enabled=!0,o),disable:()=>(r.enabled=!1,o)};return o};return e&&"string"===typeof e&&(r._defaults=n,r._methods=i),r}function ti({iEvent:t,interaction:{modification:{result:e}}}){e&&(t.modifiers=e.eventProps)}const ei={id:"modifiers/base",before:["actions"],install:t=>{t.defaults.perAction.modifiers=[]},listeners:{"interactions:new":({interaction:t})=>{t.modification=new Un(t)},"interactions:before-action-start":t=>{const{modification:e}=t.interaction;e.start(t,t.interaction.coords.start.page),t.interaction.edges=e.edges,e.applyToInteraction(t)},"interactions:before-action-move":t=>t.interaction.modification.setAndApply(t),"interactions:before-action-end":t=>t.interaction.modification.beforeEnd(t),"interactions:action-start":ti,"interactions:action-move":ti,"interactions:action-end":ti,"interactions:after-action-start":t=>t.interaction.modification.restoreInteractionCoords(t),"interactions:after-action-move":t=>t.interaction.modification.restoreInteractionCoords(t),"interactions:stop":t=>t.interaction.modification.stop(t)}};var ni=ei;const ii={start(t){const{state:e,rect:n,edges:i,pageCoords:r}=t;let{ratio:o}=e.options;const{equalDelta:s,modifiers:a}=e.options;"preserve"===o&&(o=n.width/n.height),e.startCoords=vt({},r),e.startRect=vt({},n),e.ratio=o,e.equalDelta=s;const c=e.linkedEdges={top:i.top||i.left&&!i.bottom,left:i.left||i.top&&!i.right,bottom:i.bottom||i.right&&!i.top,right:i.right||i.bottom&&!i.left};if(e.xIsPrimaryAxis=!(!i.left&&!i.right),e.equalDelta)e.edgeSign=(c.left?1:-1)*(c.top?1:-1);else{const t=e.xIsPrimaryAxis?c.top:c.left;e.edgeSign=t?-1:1}if(vt(t.edges,c),!a||!a.length)return;const l=new Un(t.interaction);l.copyFrom(t.interaction.modification),l.prepareStates(a),e.subModification=l,l.startAll({...t})},set(t){const{state:e,rect:n,coords:i}=t,r=vt({},i),o=e.equalDelta?ri:oi;if(o(e,e.xIsPrimaryAxis,i,n),!e.subModification)return null;const s=vt({},n);Ft(e.linkedEdges,s,{x:i.x-r.x,y:i.y-r.y});const a=e.subModification.setAll({...t,rect:s,edges:e.linkedEdges,pageCoords:i,prevCoords:i,prevRect:s}),{delta:c}=a;if(a.changed){const t=Math.abs(c.x)>Math.abs(c.y);o(e,t,a.coords,a.rect),vt(i,a.coords)}return a.eventProps},defaults:{ratio:"preserve",equalDelta:!1,modifiers:[],enabled:!1}};function ri({startCoords:t,edgeSign:e},n,i){n?i.y=t.y+(i.x-t.x)*e:i.x=t.x+(i.y-t.y)*e}function oi({startRect:t,startCoords:e,ratio:n,edgeSign:i},r,o,s){if(r){const r=s.width/n;o.y=e.y+(r-t.height)*i}else{const r=s.height*n;o.x=e.x+(r-t.width)*i}}var si=Qn(ii,"aspectRatio");const ai=()=>{};ai._defaults={};var ci=ai;function li({rect:t,startOffset:e,state:n,interaction:i,pageCoords:r}){const{options:o}=n,{elementRect:s}=o,a=vt({left:0,top:0,right:0,bottom:0},o.offset||{});if(t&&s){const n=hi(o.restriction,i,r);if(n){const e=n.right-n.left-t.width,i=n.bottom-n.top-t.height;e<0&&(a.left+=e,a.right+=e),i<0&&(a.top+=i,a.bottom+=i)}a.left+=e.left-t.width*s.left,a.top+=e.top-t.height*s.top,a.right+=e.right-t.width*(1-s.right),a.bottom+=e.bottom-t.height*(1-s.bottom)}n.offset=a}function ui({coords:t,interaction:e,state:n}){const{options:i,offset:r}=n,o=hi(i.restriction,e,t);if(!o)return;const s=Wt(o);t.x=Math.max(Math.min(s.right-r.right,t.x),s.left+r.left),t.y=Math.max(Math.min(s.bottom-r.bottom,t.y),s.top+r.top)}function hi(t,e,n){return at.func(t)?Lt(t,e.interactable,e.element,[n.x,n.y,e]):Lt(t,e.interactable,e.element)}const di={restriction:null,elementRect:null,offset:null,endOnly:!1,enabled:!1},fi={start:li,set:ui,defaults:di};var pi=Qn(fi,"restrict");const gi={top:1/0,left:1/0,bottom:-1/0,right:-1/0},mi={top:-1/0,left:-1/0,bottom:1/0,right:1/0};function vi({interaction:t,startOffset:e,state:n}){const{options:i}=n;let r;if(i){const e=hi(i.offset,t,t.coords.start.page);r=Nt(e)}r=r||{x:0,y:0},n.offset={top:r.y+e.top,left:r.x+e.left,bottom:r.y-e.bottom,right:r.x-e.right}}function yi({coords:t,edges:e,interaction:n,state:i}){const{offset:r,options:o}=i;if(!e)return;const s=vt({},t),a=hi(o.inner,n,s)||{},c=hi(o.outer,n,s)||{};bi(a,gi),bi(c,mi),e.top?t.y=Math.min(Math.max(c.top+r.top,s.y),a.top+r.top):e.bottom&&(t.y=Math.max(Math.min(c.bottom+r.bottom,s.y),a.bottom+r.bottom)),e.left?t.x=Math.min(Math.max(c.left+r.left,s.x),a.left+r.left):e.right&&(t.x=Math.max(Math.min(c.right+r.right,s.x),a.right+r.right))}function bi(t,e){for(const n of["top","left","bottom","right"])n in t||(t[n]=e[n]);return t}const xi={inner:null,outer:null,offset:null,endOnly:!1,enabled:!1},wi={noInner:gi,noOuter:mi,start:vi,set:yi,defaults:xi};var Si=Qn(wi,"restrictEdges");const Ei=vt({get elementRect(){return{top:0,left:0,bottom:1,right:1}},set elementRect(t){}},fi.defaults),Ti={start:fi.start,set:fi.set,defaults:Ei};var zi=Qn(Ti,"restrictRect");const Mi={width:-1/0,height:-1/0},Oi={width:1/0,height:1/0};function Ii(t){return wi.start(t)}function Pi(t){const{interaction:e,state:n,rect:i,edges:r}=t,{options:o}=n;if(!r)return;const s=Bt(hi(o.min,e,t.coords))||Mi,a=Bt(hi(o.max,e,t.coords))||Oi;n.options={endOnly:o.endOnly,inner:vt({},wi.noInner),outer:vt({},wi.noOuter)},r.top?(n.options.inner.top=i.bottom-s.height,n.options.outer.top=i.bottom-a.height):r.bottom&&(n.options.inner.bottom=i.top+s.height,n.options.outer.bottom=i.top+a.height),r.left?(n.options.inner.left=i.right-s.width,n.options.outer.left=i.right-a.width):r.right&&(n.options.inner.right=i.left+s.width,n.options.outer.right=i.left+a.width),wi.set(t),n.options=o}const Di={min:null,max:null,endOnly:!1,enabled:!1},_i={start:Ii,set:Pi,defaults:Di};var ki=Qn(_i,"restrictSize");function Ai(t){const{interaction:e,interactable:n,element:i,rect:r,state:o,startOffset:s}=t,{options:a}=o,c=a.offsetWithOrigin?ji(t):{x:0,y:0};let l;if("startCoords"===a.offset)l={x:e.coords.start.page.x,y:e.coords.start.page.y};else{const t=Lt(a.offset,n,i,[e]);l=Nt(t)||{x:0,y:0},l.x+=c.x,l.y+=c.y}const{relativePoints:u}=a;o.offsets=r&&u&&u.length?u.map((t,e)=>({index:e,relativePoint:t,x:s.left-r.width*t.x+l.x,y:s.top-r.height*t.y+l.y})):[vt({index:0,relativePoint:null},l)]}function Ri(t){const{interaction:e,coords:n,state:i}=t,{options:r,offsets:o}=i,s=$t(e.interactable,e.element,e.prepared.name),a=vt({},n),c=[];r.offsetWithOrigin||(a.x-=s.x,a.y-=s.y);for(const u of o){const t=a.x-u.x,n=a.y-u.y;for(let i=0,o=r.targets.length;i<o;i++){const o=r.targets[i];let s;s=at.func(o)?o(t,n,e._proxy,u,i):o,s&&c.push({x:(at.number(s.x)?s.x:t)+u.x,y:(at.number(s.y)?s.y:n)+u.y,range:at.number(s.range)?s.range:r.range,source:o,index:i,offset:u})}}const l={target:null,inRange:!1,distance:0,range:0,delta:{x:0,y:0}};for(const u of c){const t=u.range,e=u.x-a.x,n=u.y-a.y,i=Gt(e,n);let r=i<=t;t===1/0&&l.inRange&&l.range!==1/0&&(r=!1),l.target&&!(r?l.inRange&&t!==1/0?i/t<l.distance/l.range:t===1/0&&l.range!==1/0||i<l.distance:!l.inRange&&i<l.distance)||(l.target=u,l.distance=i,l.range=t,l.inRange=r,l.delta.x=e,l.delta.y=n)}return l.inRange&&(n.x=l.target.x,n.y=l.target.y),i.closest=l,l}function ji(t){const{element:e}=t.interaction,n=Nt(Lt(t.state.options.origin,null,null,[e])),i=n||$t(t.interactable,e,t.interaction.prepared.name);return i}const Ci={range:1/0,targets:null,offset:null,offsetWithOrigin:!0,origin:null,relativePoints:null,endOnly:!1,enabled:!1},Hi={start:Ai,set:Ri,defaults:Ci};var Li=Qn(Hi,"snap");function Ni(t){const{state:e,edges:n}=t,{options:i}=e;if(!n)return null;t.state={options:{targets:null,relativePoints:[{x:n.left?0:1,y:n.top?0:1}],offset:i.offset||"self",origin:{x:0,y:0},range:i.range}},e.targetFields=e.targetFields||[["width","height"],["x","y"]],Hi.start(t),e.offsets=t.state.offsets,t.state=e}function Wi(t){const{interaction:e,state:n,coords:i}=t,{options:r,offsets:o}=n,s={x:i.x-o[0].x,y:i.y-o[0].y};n.options=vt({},r),n.options.targets=[];for(const c of r.targets||[]){let t;if(t=at.func(c)?c(s.x,s.y,e):c,t){for(const[e,i]of n.targetFields)if(e in t||i in t){t.x=t[e],t.y=t[i];break}n.options.targets.push(t)}}const a=Hi.set(t);return n.options=r,a}const Bi={range:1/0,targets:null,offset:null,endOnly:!1,enabled:!1},Fi={start:Ni,set:Wi,defaults:Bi};var $i=Qn(Fi,"snapSize");function Gi(t){const{edges:e}=t;return e?(t.state.targetFields=t.state.targetFields||[[e.left?"left":"right",e.top?"top":"bottom"]],Fi.start(t)):null}const Yi={start:Gi,set:Fi.set,defaults:vt(mt(Fi.defaults),{targets:null,range:null,offset:{x:0,y:0}})};var Xi=Qn(Yi,"snapEdges"),qi={aspectRatio:si,restrictEdges:Si,restrict:pi,restrictRect:zi,restrictSize:ki,snapEdges:Xi,snap:Li,snapSize:$i,spring:ci,avoid:ci,transform:ci,rubberband:ci};const Vi={id:"modifiers",install(t){const{interactStatic:e}=t;t.usePlugin(ni),t.usePlugin(Vn),e.modifiers=qi;for(const n in qi){const{_defaults:e,_methods:i}=qi[n];e._methods=i,t.defaults.perAction[n]=e}}};var Ui,Zi=Vi;"object"===typeof window&&window&&Ke(window),Ze.use(Zi),function(t){t["touchAction"]="touchAction",t["boxSizing"]="boxSizing",t["noListeners"]="noListeners"}(Ui||(Ui={}));const Ki="[interact.js] ",Ji={touchAction:"https://developer.mozilla.org/en-US/docs/Web/CSS/touch-action",boxSizing:"https://developer.mozilla.org/en-US/docs/Web/CSS/box-sizing"},Qi=!1;function tr(t,{logger:e}={}){const{Interactable:n,defaults:i}=t;t.logger=e||console,i.base.devTools={ignore:{}},n.prototype.devTools=function(t){return t?(vt(this.options.devTools,t),this):this.options.devTools}}const er=[{name:Ui.touchAction,perform({element:t}){return!ir(t,"touchAction",/pan-|pinch|none/)},getInfo({element:t}){return[t,Ji.touchAction]},text:'Consider adding CSS "touch-action: none" to this element\n'},{name:Ui.boxSizing,perform(t){const{element:e}=t;return"resize"===t.prepared.name&&e instanceof G.HTMLElement&&!nr(e,"boxSizing",/border-box/)},text:'Consider adding CSS "box-sizing: border-box" to this resizable element',getInfo({element:t}){return[t,Ji.boxSizing]}},{name:Ui.noListeners,perform(t){const e=t.prepared.name,n=t.interactable.events.types[e+"move"]||[];return!n.length},getInfo(t){return[t.prepared.name,t.interactable]},text:"There are no listeners set for this action"}];function nr(t,e,n){const i=t.style[e]||V.getComputedStyle(t)[e];return n.test((i||"").toString())}function ir(t,e,n){let i=t;while(at.element(i)){if(nr(i,e,n))return!0;i=Pt(i)}return!1}const rr="dev-tools",or=Qi?{id:rr,install:()=>{}}:{id:rr,install:tr,listeners:{"interactions:action-start":({interaction:t},e)=>{for(const n of er){const i=t.interactable&&t.interactable.options;i&&i.devTools&&i.devTools.ignore[n.name]||!n.perform(t)||e.logger.warn(Ki+n.text,...n.getInfo(t))}}},checks:er,CheckName:Ui,links:Ji,prefix:Ki};var sr=or;"object"===typeof window&&window&&Ke(window),Ze.use(sr);var ar={name:"GridItem",props:{isDraggable:{type:Boolean,required:!1,default:null},isResizable:{type:Boolean,required:!1,default:null},static:{type:Boolean,required:!1,default:!1},minH:{type:Number,required:!1,default:1},minW:{type:Number,required:!1,default:1},maxH:{type:Number,required:!1,default:1/0},maxW:{type:Number,required:!1,default:1/0},x:{type:Number,required:!0},y:{type:Number,required:!0},w:{type:Number,required:!0},h:{type:Number,required:!0},i:{required:!0},dragIgnoreFrom:{type:String,required:!1,default:"a, button"},dragAllowFrom:{type:String,required:!1,default:null},resizeIgnoreFrom:{type:String,required:!1,default:"a, button"},preserveAspectRatio:{type:Boolean,required:!1,default:!1}},inject:["eventBus","layout"],data:function(){return{cols:1,containerWidth:100,rowHeight:30,margin:[10,10],maxRows:1/0,draggable:null,resizable:null,useCssTransforms:!0,useStyleCursor:!0,isDragging:!1,dragging:null,isResizing:!1,resizing:null,lastX:NaN,lastY:NaN,lastW:NaN,lastH:NaN,style:{},rtl:!1,dragEventSet:!1,resizeEventSet:!1,previousW:null,previousH:null,previousX:null,previousY:null,innerX:this.x,innerY:this.y,innerW:this.w,innerH:this.h}},created:function(){var t=this,e=this;e.updateWidthHandler=function(t){e.updateWidth(t)},e.compactHandler=function(t){e.compact(t)},e.setDraggableHandler=function(t){null===e.isDraggable&&(e.draggable=t)},e.setResizableHandler=function(t){null===e.isResizable&&(e.resizable=t)},e.setRowHeightHandler=function(t){e.rowHeight=t},e.setMaxRowsHandler=function(t){e.maxRows=t},e.directionchangeHandler=function(){t.rtl="rtl"===N(),t.compact()},e.setColNum=function(t){e.cols=parseInt(t)},this.eventBus.on("updateWidth",e.updateWidthHandler),this.eventBus.on("compact",e.compactHandler),this.eventBus.on("setDraggable",e.setDraggableHandler),this.eventBus.on("setResizable",e.setResizableHandler),this.eventBus.on("setRowHeight",e.setRowHeightHandler),this.eventBus.on("setMaxRows",e.setMaxRowsHandler),this.eventBus.on("directionchange",e.directionchangeHandler),this.eventBus.on("setColNum",e.setColNum),this.rtl="rtl"===N()},beforeUnmount:function(){var t=this;this.eventBus.off("updateWidth",t.updateWidthHandler),this.eventBus.off("compact",t.compactHandler),this.eventBus.off("setDraggable",t.setDraggableHandler),this.eventBus.off("setResizable",t.setResizableHandler),this.eventBus.off("setRowHeight",t.setRowHeightHandler),this.eventBus.off("setMaxRows",t.setMaxRowsHandler),this.eventBus.off("directionchange",t.directionchangeHandler),this.eventBus.off("setColNum",t.setColNum),this.interactObj&&this.interactObj.unset()},mounted:function(){this.layout.responsive&&this.layout.lastBreakpoint?this.cols=A(this.layout.lastBreakpoint,this.layout.cols):this.cols=this.layout.colNum,this.rowHeight=this.layout.rowHeight,this.containerWidth=null!==this.layout.width?this.layout.width:100,this.margin=void 0!==this.layout.margin?this.layout.margin:[10,10],this.maxRows=this.layout.maxRows,null===this.isDraggable?this.draggable=this.layout.isDraggable:this.draggable=this.isDraggable,null===this.isResizable?this.resizable=this.layout.isResizable:this.resizable=this.isResizable,this.useCssTransforms=this.layout.useCssTransforms,this.useStyleCursor=this.layout.useStyleCursor,this.createStyle()},watch:{isDraggable:function(){this.draggable=this.isDraggable},static:function(){this.tryMakeDraggable(),this.tryMakeResizable()},draggable:function(){this.tryMakeDraggable()},isResizable:function(){this.resizable=this.isResizable},resizable:function(){this.tryMakeResizable()},rowHeight:function(){this.createStyle(),this.emitContainerResized()},cols:function(){this.tryMakeResizable(),this.createStyle(),this.emitContainerResized()},containerWidth:function(){this.tryMakeResizable(),this.createStyle(),this.emitContainerResized()},x:function(t){this.innerX=t,this.createStyle()},y:function(t){this.innerY=t,this.createStyle()},h:function(t){this.innerH=t,this.createStyle()},w:function(t){this.innerW=t,this.createStyle()},renderRtl:function(){this.tryMakeResizable(),this.createStyle()},minH:function(){this.tryMakeResizable()},maxH:function(){this.tryMakeResizable()},minW:function(){this.tryMakeResizable()},maxW:function(){this.tryMakeResizable()},"$parent.margin":function(t){!t||t[0]==this.margin[0]&&t[1]==this.margin[1]||(this.margin=t.map((function(t){return Number(t)})),this.createStyle(),this.emitContainerResized())}},computed:{classObj:function(){return{"vue-resizable":this.resizableAndNotStatic,static:this.static,resizing:this.isResizing,"vue-draggable-dragging":this.isDragging,cssTransforms:this.useCssTransforms,"render-rtl":this.renderRtl,"disable-userselect":this.isDragging,"no-touch":this.isAndroid&&this.draggableOrResizableAndNotStatic}},resizableAndNotStatic:function(){return this.resizable&&!this.static},draggableOrResizableAndNotStatic:function(){return(this.draggable||this.resizable)&&!this.static},isAndroid:function(){return-1!==navigator.userAgent.toLowerCase().indexOf("android")},renderRtl:function(){return this.layout.isMirrored?!this.rtl:this.rtl},resizableHandleClass:function(){return this.renderRtl?"vue-resizable-handle vue-rtl-resizable-handle":"vue-resizable-handle"}},methods:{createStyle:function(){this.x+this.w>this.cols?(this.innerX=0,this.innerW=this.w>this.cols?this.cols:this.w):(this.innerX=this.x,this.innerW=this.w);var t,e=this.calcPosition(this.innerX,this.innerY,this.innerW,this.innerH);this.isDragging&&(e.top=this.dragging.top,this.renderRtl?e.right=this.dragging.left:e.left=this.dragging.left),this.isResizing&&(e.width=this.resizing.width,e.height=this.resizing.height),t=this.useCssTransforms?this.renderRtl?E(e.top,e.right,e.width,e.height):S(e.top,e.left,e.width,e.height):this.renderRtl?z(e.top,e.right,e.width,e.height):T(e.top,e.left,e.width,e.height),this.style=t},emitContainerResized:function(){for(var t={},e=0,n=["width","height"];e<n.length;e++){var i=n[e],r=this.style[i],o=r.match(/^(\d+)px$/);if(!o)return;t[i]=o[1]}this.$emit("container-resized",this.i,this.h,this.w,t.height,t.width)},handleResize:function(t){if(!this.static){var e=I(t);if(null!=e){var n,i=e.x,r=e.y,o={width:0,height:0};switch(t.type){case"resizestart":this.previousW=this.innerW,this.previousH=this.innerH,n=this.calcPosition(this.innerX,this.innerY,this.innerW,this.innerH),o.width=n.width,o.height=n.height,this.resizing=o,this.isResizing=!0;break;case"resizemove":var s=D(this.lastW,this.lastH,i,r);this.renderRtl?o.width=this.resizing.width-s.deltaX:o.width=this.resizing.width+s.deltaX,o.height=this.resizing.height+s.deltaY,this.resizing=o;break;case"resizeend":n=this.calcPosition(this.innerX,this.innerY,this.innerW,this.innerH),o.width=n.width,o.height=n.height,this.resizing=null,this.isResizing=!1;break}n=this.calcWH(o.height,o.width),n.w<this.minW&&(n.w=this.minW),n.w>this.maxW&&(n.w=this.maxW),n.h<this.minH&&(n.h=this.minH),n.h>this.maxH&&(n.h=this.maxH),n.h<1&&(n.h=1),n.w<1&&(n.w=1),this.lastW=i,this.lastH=r,this.innerW===n.w&&this.innerH===n.h||this.$emit("resize",this.i,n.h,n.w,o.height,o.width),"resizeend"!==t.type||this.previousW===this.innerW&&this.previousH===this.innerH||this.$emit("resized",this.i,n.h,n.w,o.height,o.width),this.eventBus.emit("resizeEvent",{eventType:t.type,i:this.i,x:this.innerX,y:this.innerY,h:n.h,w:n.w})}}},handleDrag:function(t){if(!this.static&&!this.isResizing){var e=I(t);if(null!==e){var n,i=e.x,r=e.y,o={top:0,left:0};switch(t.type){case"dragstart":this.previousX=this.innerX,this.previousY=this.innerY;var s=t.target.offsetParent.getBoundingClientRect(),a=t.target.getBoundingClientRect();this.renderRtl?o.left=-1*(a.right-s.right):o.left=a.left-s.left,o.top=a.top-s.top,this.dragging=o,this.isDragging=!0;break;case"dragend":if(!this.isDragging)return;var c=t.target.offsetParent.getBoundingClientRect(),l=t.target.getBoundingClientRect();this.renderRtl?o.left=-1*(l.right-c.right):o.left=l.left-c.left,o.top=l.top-c.top,this.dragging=null,this.isDragging=!1;break;case"dragmove":var u=D(this.lastX,this.lastY,i,r);this.renderRtl?o.left=this.dragging.left-u.deltaX:o.left=this.dragging.left+u.deltaX,o.top=this.dragging.top+u.deltaY,this.dragging=o;break}n=(this.renderRtl,this.calcXY(o.top,o.left)),this.lastX=i,this.lastY=r,this.innerX===n.x&&this.innerY===n.y||this.$emit("move",this.i,n.x,n.y),"dragend"!==t.type||this.previousX===this.innerX&&this.previousY===this.innerY||this.$emit("moved",this.i,n.x,n.y),this.eventBus.emit("dragEvent",{eventType:t.type,i:this.i,x:n.x,y:n.y,h:this.innerH,w:this.innerW})}}},calcPosition:function(t,e,n,i){var r,o=this.calcColWidth();return r=this.renderRtl?{right:Math.round(o*t+(t+1)*this.margin[0]),top:Math.round(this.rowHeight*e+(e+1)*this.margin[1]),width:n===1/0?n:Math.round(o*n+Math.max(0,n-1)*this.margin[0]),height:i===1/0?i:Math.round(this.rowHeight*i+Math.max(0,i-1)*this.margin[1])}:{left:Math.round(o*t+(t+1)*this.margin[0]),top:Math.round(this.rowHeight*e+(e+1)*this.margin[1]),width:n===1/0?n:Math.round(o*n+Math.max(0,n-1)*this.margin[0]),height:i===1/0?i:Math.round(this.rowHeight*i+Math.max(0,i-1)*this.margin[1])},r},calcXY:function(t,e){var n=this.calcColWidth(),i=Math.round((e-this.margin[0])/(n+this.margin[0])),r=Math.round((t-this.margin[1])/(this.rowHeight+this.margin[1]));return i=Math.max(Math.min(i,this.cols-this.innerW),0),r=Math.max(Math.min(r,this.maxRows-this.innerH),0),{x:i,y:r}},calcColWidth:function(){var t=(this.containerWidth-this.margin[0]*(this.cols+1))/this.cols;return t},calcWH:function(t,e){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=this.calcColWidth(),r=Math.round((e+this.margin[0])/(i+this.margin[0])),o=0;return o=n?Math.ceil((t+this.margin[1])/(this.rowHeight+this.margin[1])):Math.round((t+this.margin[1])/(this.rowHeight+this.margin[1])),r=Math.max(Math.min(r,this.cols-this.innerX),0),o=Math.max(Math.min(o,this.maxRows-this.innerY),0),{w:r,h:o}},updateWidth:function(t,e){this.containerWidth=t,void 0!==e&&null!==e&&(this.cols=e)},compact:function(){this.createStyle()},tryMakeDraggable:function(){var t=this;if(null!==this.interactObj&&void 0!==this.interactObj||(this.interactObj=Ze(this.$refs.item),this.useStyleCursor||this.interactObj.styleCursor(!1)),this.draggable&&!this.static){var e={ignoreFrom:this.dragIgnoreFrom,allowFrom:this.dragAllowFrom};this.interactObj.draggable(e),this.dragEventSet||(this.dragEventSet=!0,this.interactObj.on("dragstart dragmove dragend",(function(e){t.handleDrag(e)})))}else this.interactObj.draggable({enabled:!1})},tryMakeResizable:function(){var t=this;if(null!==this.interactObj&&void 0!==this.interactObj||(this.interactObj=Ze(this.$refs.item),this.useStyleCursor||this.interactObj.styleCursor(!1)),this.resizable&&!this.static){var e=this.calcPosition(0,0,this.maxW,this.maxH),n=this.calcPosition(0,0,this.minW,this.minH),i={edges:{left:!1,right:"."+this.resizableHandleClass.trim().replace(" ","."),bottom:"."+this.resizableHandleClass.trim().replace(" ","."),top:!1},ignoreFrom:this.resizeIgnoreFrom,restrictSize:{min:{height:n.height,width:n.width},max:{height:e.height,width:e.width}}};this.preserveAspectRatio&&(i.modifiers=[Ze.modifiers.aspectRatio({ratio:"preserve"})]),this.interactObj.resizable(i),this.resizeEventSet||(this.resizeEventSet=!0,this.interactObj.on("resizestart resizemove resizeend",(function(e){t.handleResize(e)})))}else this.interactObj.resizable({enabled:!1})},autoSize:function(){this.previousW=this.innerW,this.previousH=this.innerH;var t=this.$slots().default[0].elm.getBoundingClientRect(),e=this.calcWH(t.height,t.width,!0);e.w<this.minW&&(e.w=this.minW),e.w>this.maxW&&(e.w=this.maxW),e.h<this.minH&&(e.h=this.minH),e.h>this.maxH&&(e.h=this.maxH),e.h<1&&(e.h=1),e.w<1&&(e.w=1),this.innerW===e.w&&this.innerH===e.h||this.$emit("resize",this.i,e.h,e.w,t.height,t.width),this.previousW===e.w&&this.previousH===e.h||(this.$emit("resized",this.i,e.h,e.w,t.height,t.width),this.eventBus.emit("resizeEvent",{eventType:"resizeend",i:this.i,x:this.innerX,y:this.innerY,h:e.h,w:e.w}))}}};n("083e");ar.render=c;var cr=ar;function lr(t,e,n,i,r,o){var s=Object(a["resolveComponent"])("grid-item");return Object(a["openBlock"])(),Object(a["createBlock"])("div",{ref:"item",class:"vue-grid-layout",style:t.mergedStyle},[Object(a["renderSlot"])(t.$slots,"default"),Object(a["withDirectives"])(Object(a["createVNode"])(s,{class:"vue-grid-placeholder",x:t.placeholder.x,y:t.placeholder.y,w:t.placeholder.w,h:t.placeholder.h,i:t.placeholder.i},null,8,["x","y","w","h","i"]),[[a["vShow"],t.isDragging]])],4)}n("8e6e"),n("f751"),n("fca0");function ur(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}var hr=function(t){return{all:t=t||new Map,on:function(e,n){var i=t.get(e);i&&i.push(n)||t.set(e,[n])},off:function(e,n){var i=t.get(e);i&&i.splice(i.indexOf(n)>>>0,1)},emit:function(e,n){(t.get(e)||[]).slice().map((function(t){t(n)})),(t.get("*")||[]).slice().map((function(t){t(e,n)}))}}};function dr(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);e&&(i=i.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,i)}return n}function fr(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?dr(Object(n),!0).forEach((function(e){ur(t,e,n[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):dr(Object(n)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))}))}return t}var pr=n("eec4"),gr={name:"GridLayout",provide:function(){return{eventBus:this.eventBus,layout:this}},components:{GridItem:cr},props:{autoSize:{type:Boolean,default:!0},colNum:{type:Number,default:12},rowHeight:{type:Number,default:150},maxRows:{type:Number,default:1/0},margin:{type:Array,default:function(){return[10,10]}},isDraggable:{type:Boolean,default:!0},isResizable:{type:Boolean,default:!0},isMirrored:{type:Boolean,default:!1},useCssTransforms:{type:Boolean,default:!0},verticalCompact:{type:Boolean,default:!0},layout:{type:Array,required:!0},responsive:{type:Boolean,default:!1},responsiveLayouts:{type:Object,default:function(){return{}}},breakpoints:{type:Object,default:function(){return{lg:1200,md:996,sm:768,xs:480,xxs:0}}},cols:{type:Object,default:function(){return{lg:12,md:10,sm:6,xs:4,xxs:2}}},preventCollision:{type:Boolean,default:!1},useStyleCursor:{type:Boolean,default:!0}},data:function(){return{eventBus:hr(),width:null,mergedStyle:{},lastLayoutLength:0,isDragging:!1,placeholder:{x:0,y:0,w:0,h:0,i:-1},layouts:{},lastBreakpoint:null,originalLayout:null}},created:function(){var t=this;t.resizeEventHandler=function(e){var n=e.eventType,i=e.i,r=e.x,o=e.y,s=e.h,a=e.w;t.resizeEvent(n,i,r,o,s,a)},t.dragEventHandler=function(e){var n=e.eventType,i=e.i,r=e.x,o=e.y,s=e.h,a=e.w;t.dragEvent(n,i,r,o,s,a)},t.eventBus.on("resizeEvent",t.resizeEventHandler),t.eventBus.on("dragEvent",t.dragEventHandler),t.$emit("layout-created",t.layout)},beforeUnmount:function(){this.eventBus.off("resizeEvent",this.resizeEventHandler),this.eventBus.off("dragEvent",this.dragEventHandler),B("resize",this.onWindowResize),this.erd&&this.erd.uninstall(this.$refs.item)},beforeMount:function(){this.$emit("layout-before-mount",this.layout)},mounted:function(){this.$emit("layout-mounted",this.layout),this.$nextTick((function(){O(this.layout),this.originalLayout=this.layout;var t=this;this.$nextTick((function(){t.onWindowResize(),t.initResponsiveFeatures(),W("resize",t.onWindowResize),f(t.layout,t.verticalCompact),t.$emit("layout-updated",t.layout),t.updateHeight(),t.$nextTick((function(){this.erd=pr({strategy:"scroll",callOnAdd:!1}),this.erd.listenTo(t.$refs.item,(function(){t.onWindowResize()}))}))}))}))},watch:{width:function(t,e){var n=this;this.$nextTick((function(){var t=this;this.eventBus.emit("updateWidth",this.width),null===e&&this.$nextTick((function(){t.$emit("layout-ready",n.layout)})),this.updateHeight()}))},layout:function(){this.layoutUpdate()},colNum:function(t){this.eventBus.emit("setColNum",t)},rowHeight:function(){this.eventBus.emit("setRowHeight",this.rowHeight)},isDraggable:function(){this.eventBus.emit("setDraggable",this.isDraggable)},isResizable:function(){this.eventBus.emit("setResizable",this.isResizable)},responsive:function(){this.responsive||(this.$emit("update:layout",this.originalLayout),this.eventBus.emit("setColNum",this.colNum)),this.onWindowResize()},maxRows:function(){this.eventBus.emit("setMaxRows",this.maxRows)},margin:function(){this.updateHeight()}},methods:{layoutUpdate:function(){if(void 0!==this.layout&&null!==this.originalLayout){if(this.layout.length!==this.originalLayout.length){var t=this.findDifference(this.layout,this.originalLayout);t.length>0&&(this.layout.length>this.originalLayout.length?this.originalLayout=this.originalLayout.concat(t):this.originalLayout=this.originalLayout.filter((function(e){return!t.some((function(t){return e.i===t.i}))}))),this.lastLayoutLength=this.layout.length,this.initResponsiveFeatures()}f(this.layout,this.verticalCompact),this.eventBus.emit("updateWidth",this.width),this.updateHeight(),this.$emit("layout-updated",this.layout)}},updateHeight:function(){this.mergedStyle={height:this.containerHeight()}},onWindowResize:function(){null!==this.$refs&&null!==this.$refs.item&&void 0!==this.$refs.item&&(this.width=this.$refs.item.offsetWidth),this.eventBus.emit("resizeEvent",{})},containerHeight:function(){if(this.autoSize){var t=l(this.layout)*(this.rowHeight+this.margin[1])+this.margin[1]+"px";return t}},dragEvent:function(t,e,n,i,r,o){var s=m(this.layout,e);void 0!==s&&null!==s||(s={x:0,y:0}),"dragmove"===t||"dragstart"===t?(this.placeholder.i=e,this.placeholder.x=s.x,this.placeholder.y=s.y,this.placeholder.w=o,this.placeholder.h=r,this.$nextTick((function(){this.isDragging=!0})),this.eventBus.emit("updateWidth",this.width)):this.$nextTick((function(){this.isDragging=!1})),this.$emit("update:layout",x(this.layout,s,n,i,!0,this.preventCollision)),f(this.layout,this.verticalCompact),this.eventBus.emit("compact"),this.updateHeight(),"dragend"===t&&this.$emit("layout-updated",this.layout)},resizeEvent:function(t,e,n,i,r,o){var s,a=m(this.layout,e);if(void 0!==a&&null!==a||(a={h:0,w:0}),this.preventCollision){var c=y(this.layout,fr(fr({},a),{},{w:o,h:r})).filter((function(t){return t.i!==a.i}));if(s=c.length>0,s){var l=1/0,u=1/0;c.forEach((function(t){t.x>a.x&&(l=Math.min(l,t.x)),t.y>a.y&&(u=Math.min(u,t.y))})),Number.isFinite(l)&&(a.w=l-a.x),Number.isFinite(u)&&(a.h=u-a.y)}}s||(a.w=o,a.h=r),"resizestart"===t||"resizemove"===t?(this.placeholder.i=e,this.placeholder.x=n,this.placeholder.y=i,this.placeholder.w=a.w,this.placeholder.h=a.h,this.$nextTick((function(){this.isDragging=!0})),this.eventBus.emit("updateWidth",this.width)):this.$nextTick((function(){this.isDragging=!1})),this.responsive&&this.responsiveGridLayout(),f(this.layout,this.verticalCompact),this.eventBus.emit("compact"),this.updateHeight(),"resizeend"===t&&this.$emit("layout-updated",this.layout)},responsiveGridLayout:function(){var t=k(this.breakpoints,this.width),e=A(t,this.cols);null==this.lastBreakpoint||this.layouts[this.lastBreakpoint]||(this.layouts[this.lastBreakpoint]=u(this.layout));var n=R(this.originalLayout,this.layouts,this.breakpoints,t,this.lastBreakpoint,e,this.verticalCompact);this.layouts[t]=n,this.lastBreakpoint!==t&&this.$emit("breakpoint-changed",t,n),this.$emit("update:layout",n),this.lastBreakpoint=t,this.eventBus.emit("setColNum",A(t,this.cols))},initResponsiveFeatures:function(){this.layouts=Object.assign({},this.responsiveLayouts)},findDifference:function(t,e){var n=t.filter((function(t){return!e.some((function(e){return t.i===e.i}))})),i=e.filter((function(e){return!t.some((function(t){return e.i===t.i}))}));return n.concat(i)}}};n("6521");gr.render=lr;var mr=gr,vr=function(t){t.component("grid-layout",mr),t.component("grid-item",cr)},yr=vr;e["default"]=yr},fca0:function(t,e,n){var i=n("5ca1"),r=n("7726").isFinite;i(i.S,"Number",{isFinite:function(t){return"number"==typeof t&&r(t)}})},fdef:function(t,e){t.exports="\t\n\v\f\r   ᠎              \u2028\u2029\ufeff"}})["default"]}));
+/*! vue-grid-layout - 3.0.0-beta1 | (c) 2015, 2023  Gustavo Santos (JBay Solutions) <gustavo.santos@jbaysolutions.com> (http://www.jbaysolutions.com) | https://github.com/jbaysolutions/vue-grid-layout */
+(function(t,e){"object"===typeof exports&&"object"===typeof module?module.exports=e(require("vue")):"function"===typeof define&&define.amd?define([],e):"object"===typeof exports?exports["VueGridLayout"]=e(require("vue")):t["VueGridLayout"]=e(t["Vue"])})("undefined"!==typeof self?self:this,(function(t){return function(t){var e={};function n(i){if(e[i])return e[i].exports;var r=e[i]={i:i,l:!1,exports:{}};return t[i].call(r.exports,r,r.exports,n),r.l=!0,r.exports}return n.m=t,n.c=e,n.d=function(t,e,i){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:i})},n.r=function(t){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"===typeof t&&t&&t.__esModule)return t;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var r in t)n.d(i,r,function(e){return t[e]}.bind(null,r));return i},n.n=function(t){var e=t&&t.__esModule?function(){return t["default"]}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s="fb15")}({"01f9":function(t,e,n){"use strict";var i=n("2d00"),r=n("5ca1"),o=n("2aba"),s=n("32e9"),a=n("84f2"),c=n("41a0"),l=n("7f20"),u=n("38fd"),h=n("2b4c")("iterator"),d=!([].keys&&"next"in[].keys()),f="@@iterator",p="keys",g="values",m=function(){return this};t.exports=function(t,e,n,v,y,b,x){c(n,e,v);var w,S,E,T=function(t){if(!d&&t in P)return P[t];switch(t){case p:return function(){return new n(this,t)};case g:return function(){return new n(this,t)}}return function(){return new n(this,t)}},M=e+" Iterator",z=y==g,O=!1,P=t.prototype,I=P[h]||P[f]||y&&P[y],_=I||T(y),D=y?z?T("entries"):_:void 0,k="Array"==e&&P.entries||I;if(k&&(E=u(k.call(new t)),E!==Object.prototype&&E.next&&(l(E,M,!0),i||"function"==typeof E[h]||s(E,h,m))),z&&I&&I.name!==g&&(O=!0,_=function(){return I.call(this)}),i&&!x||!d&&!O&&P[h]||s(P,h,_),a[e]=_,a[M]=m,y)if(w={values:z?_:T(g),keys:b?_:T(p),entries:D},x)for(S in w)S in P||o(P,S,w[S]);else r(r.P+r.F*(d||O),e,w);return w}},"02f4":function(t,e,n){var i=n("4588"),r=n("be13");t.exports=function(t){return function(e,n){var o,s,a=String(r(e)),c=i(n),l=a.length;return c<0||c>=l?t?"":void 0:(o=a.charCodeAt(c),o<55296||o>56319||c+1===l||(s=a.charCodeAt(c+1))<56320||s>57343?t?a.charAt(c):o:t?a.slice(c,c+2):s-56320+(o-55296<<10)+65536)}}},"0390":function(t,e,n){"use strict";var i=n("02f4")(!0);t.exports=function(t,e,n){return e+(n?i(t,e).length:1)}},"07e3":function(t,e){var n={}.hasOwnProperty;t.exports=function(t,e){return n.call(t,e)}},"083e":function(t,e,n){"use strict";n("c541")},"0bfb":function(t,e,n){"use strict";var i=n("cb7c");t.exports=function(){var t=i(this),e="";return t.global&&(e+="g"),t.ignoreCase&&(e+="i"),t.multiline&&(e+="m"),t.unicode&&(e+="u"),t.sticky&&(e+="y"),e}},"0d58":function(t,e,n){var i=n("ce10"),r=n("e11e");t.exports=Object.keys||function(t){return i(t,r)}},"11e9":function(t,e,n){var i=n("52a7"),r=n("4630"),o=n("6821"),s=n("6a99"),a=n("69a8"),c=n("c69a"),l=Object.getOwnPropertyDescriptor;e.f=n("9e1e")?l:function(t,e){if(t=o(t),e=s(e,!0),c)try{return l(t,e)}catch(n){}if(a(t,e))return r(!i.f.call(t,e),t[e])}},1495:function(t,e,n){var i=n("86cc"),r=n("cb7c"),o=n("0d58");t.exports=n("9e1e")?Object.defineProperties:function(t,e){r(t);var n,s=o(e),a=s.length,c=0;while(a>c)i.f(t,n=s[c++],e[n]);return t}},"18d2":function(t,e,n){"use strict";var i=n("18e9");t.exports=function(t){t=t||{};var e=t.reporter,n=t.batchProcessor,r=t.stateHandler.getState;if(!e)throw new Error("Missing required dependency: reporter.");function o(t,e){function n(){e(t)}if(i.isIE(8))r(t).object={proxy:n},t.attachEvent("onresize",n);else{var o=c(t);if(!o)throw new Error("Element is not detectable by this strategy.");o.contentDocument.defaultView.addEventListener("resize",n)}}function s(e){var n=t.important?" !important; ":"; ";return(e.join(n)+n).trim()}function a(t,o,a){a||(a=o,o=t,t=null),t=t||{};t.debug;function c(o,a){var c=s(["display: block","position: absolute","top: 0","left: 0","width: 100%","height: 100%","border: none","padding: 0","margin: 0","opacity: 0","z-index: -1000","pointer-events: none"]),l=!1,u=window.getComputedStyle(o),h=o.offsetWidth,d=o.offsetHeight;function f(){function n(){if("static"===u.position){o.style.setProperty("position","relative",t.important?"important":"");var n=function(e,n,i,r){function o(t){return t.replace(/[^-\d\.]/g,"")}var s=i[r];"auto"!==s&&"0"!==o(s)&&(e.warn("An element that is positioned static has style."+r+"="+s+" which is ignored due to the static positioning. The element will need to be positioned relative, so the style."+r+" will be set to 0. Element: ",n),n.style.setProperty(r,"0",t.important?"important":""))};n(e,o,u,"top"),n(e,o,u,"right"),n(e,o,u,"bottom"),n(e,o,u,"left")}}function s(){function t(e,n){if(!e.contentDocument){var i=r(e);return i.checkForObjectDocumentTimeoutId&&window.clearTimeout(i.checkForObjectDocumentTimeoutId),void(i.checkForObjectDocumentTimeoutId=setTimeout((function(){i.checkForObjectDocumentTimeoutId=0,t(e,n)}),100))}n(e.contentDocument)}l||n();var e=this;t(e,(function(t){a(o)}))}""!==u.position&&(n(u),l=!0);var h=document.createElement("object");h.style.cssText=c,h.tabIndex=-1,h.type="text/html",h.setAttribute("aria-hidden","true"),h.onload=s,i.isIE()||(h.data="about:blank"),r(o)&&(o.appendChild(h),r(o).object=h,i.isIE()&&(h.data="about:blank"))}r(o).startSize={width:h,height:d},n?n.add(f):f()}i.isIE(8)?a(o):c(o,a)}function c(t){return r(t).object}function l(t){if(r(t)){var e=c(t);e&&(i.isIE(8)?t.detachEvent("onresize",e.proxy):t.removeChild(e),r(t).checkForObjectDocumentTimeoutId&&window.clearTimeout(r(t).checkForObjectDocumentTimeoutId),delete r(t).object)}}return{makeDetectable:a,addListener:o,uninstall:l}}},"18e9":function(t,e,n){"use strict";var i=t.exports={};i.isIE=function(t){function e(){var t=navigator.userAgent.toLowerCase();return-1!==t.indexOf("msie")||-1!==t.indexOf("trident")||-1!==t.indexOf(" edge/")}if(!e())return!1;if(!t)return!0;var n=function(){var t,e=3,n=document.createElement("div"),i=n.getElementsByTagName("i");do{n.innerHTML="\x3c!--[if gt IE "+ ++e+"]><i></i><![endif]--\x3e"}while(i[0]);return e>4?e:t}();return t===n},i.isLegacyOpera=function(){return!!window.opera}},"1bc3":function(t,e,n){var i=n("f772");t.exports=function(t,e){if(!i(t))return t;var n,r;if(e&&"function"==typeof(n=t.toString)&&!i(r=n.call(t)))return r;if("function"==typeof(n=t.valueOf)&&!i(r=n.call(t)))return r;if(!e&&"function"==typeof(n=t.toString)&&!i(r=n.call(t)))return r;throw TypeError("Can't convert object to primitive value")}},"1ec9":function(t,e,n){var i=n("f772"),r=n("e53d").document,o=i(r)&&i(r.createElement);t.exports=function(t){return o?r.createElement(t):{}}},"214f":function(t,e,n){"use strict";n("b0c5");var i=n("2aba"),r=n("32e9"),o=n("79e5"),s=n("be13"),a=n("2b4c"),c=n("520a"),l=a("species"),u=!o((function(){var t=/./;return t.exec=function(){var t=[];return t.groups={a:"7"},t},"7"!=="".replace(t,"$<a>")})),h=function(){var t=/(?:)/,e=t.exec;t.exec=function(){return e.apply(this,arguments)};var n="ab".split(t);return 2===n.length&&"a"===n[0]&&"b"===n[1]}();t.exports=function(t,e,n){var d=a(t),f=!o((function(){var e={};return e[d]=function(){return 7},7!=""[t](e)})),p=f?!o((function(){var e=!1,n=/a/;return n.exec=function(){return e=!0,null},"split"===t&&(n.constructor={},n.constructor[l]=function(){return n}),n[d](""),!e})):void 0;if(!f||!p||"replace"===t&&!u||"split"===t&&!h){var g=/./[d],m=n(s,d,""[t],(function(t,e,n,i,r){return e.exec===c?f&&!r?{done:!0,value:g.call(e,n,i)}:{done:!0,value:t.call(n,e,i)}:{done:!1}})),v=m[0],y=m[1];i(String.prototype,t,v),r(RegExp.prototype,d,2==e?function(t,e){return y.call(t,this,e)}:function(t){return y.call(t,this)})}}},"230e":function(t,e,n){var i=n("d3f4"),r=n("7726").document,o=i(r)&&i(r.createElement);t.exports=function(t){return o?r.createElement(t):{}}},"23c6":function(t,e,n){var i=n("2d95"),r=n("2b4c")("toStringTag"),o="Arguments"==i(function(){return arguments}()),s=function(t,e){try{return t[e]}catch(n){}};t.exports=function(t){var e,n,a;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(n=s(e=Object(t),r))?n:o?i(e):"Object"==(a=i(e))&&"function"==typeof e.callee?"Arguments":a}},"24fb":function(t,e,n){"use strict";function i(t,e){var n=t[1]||"",i=t[3];if(!i)return n;if(e&&"function"===typeof btoa){var o=r(i),s=i.sources.map((function(t){return"/*# sourceURL=".concat(i.sourceRoot||"").concat(t," */")}));return[n].concat(s).concat([o]).join("\n")}return[n].join("\n")}function r(t){var e=btoa(unescape(encodeURIComponent(JSON.stringify(t)))),n="sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(e);return"/*# ".concat(n," */")}t.exports=function(t){var e=[];return e.toString=function(){return this.map((function(e){var n=i(e,t);return e[2]?"@media ".concat(e[2]," {").concat(n,"}"):n})).join("")},e.i=function(t,n,i){"string"===typeof t&&(t=[[null,t,""]]);var r={};if(i)for(var o=0;o<this.length;o++){var s=this[o][0];null!=s&&(r[s]=!0)}for(var a=0;a<t.length;a++){var c=[].concat(t[a]);i&&r[c[0]]||(n&&(c[2]?c[2]="".concat(n," and ").concat(c[2]):c[2]=n),e.push(c))}},e}},2621:function(t,e){e.f=Object.getOwnPropertySymbols},"294c":function(t,e){t.exports=function(t){try{return!!t()}catch(e){return!0}}},"2aba":function(t,e,n){var i=n("7726"),r=n("32e9"),o=n("69a8"),s=n("ca5a")("src"),a=n("fa5b"),c="toString",l=(""+a).split(c);n("8378").inspectSource=function(t){return a.call(t)},(t.exports=function(t,e,n,a){var c="function"==typeof n;c&&(o(n,"name")||r(n,"name",e)),t[e]!==n&&(c&&(o(n,s)||r(n,s,t[e]?""+t[e]:l.join(String(e)))),t===i?t[e]=n:a?t[e]?t[e]=n:r(t,e,n):(delete t[e],r(t,e,n)))})(Function.prototype,c,(function(){return"function"==typeof this&&this[s]||a.call(this)}))},"2aeb":function(t,e,n){var i=n("cb7c"),r=n("1495"),o=n("e11e"),s=n("613b")("IE_PROTO"),a=function(){},c="prototype",l=function(){var t,e=n("230e")("iframe"),i=o.length,r="<",s=">";e.style.display="none",n("fab2").appendChild(e),e.src="javascript:",t=e.contentWindow.document,t.open(),t.write(r+"script"+s+"document.F=Object"+r+"/script"+s),t.close(),l=t.F;while(i--)delete l[c][o[i]];return l()};t.exports=Object.create||function(t,e){var n;return null!==t?(a[c]=i(t),n=new a,a[c]=null,n[s]=t):n=l(),void 0===e?n:r(n,e)}},"2b4c":function(t,e,n){var i=n("5537")("wks"),r=n("ca5a"),o=n("7726").Symbol,s="function"==typeof o,a=t.exports=function(t){return i[t]||(i[t]=s&&o[t]||(s?o:r)("Symbol."+t))};a.store=i},"2cef":function(t,e,n){"use strict";t.exports=function(){var t=1;function e(){return t++}return{generate:e}}},"2d00":function(t,e){t.exports=!1},"2d95":function(t,e){var n={}.toString;t.exports=function(t){return n.call(t).slice(8,-1)}},"2f21":function(t,e,n){"use strict";var i=n("79e5");t.exports=function(t,e){return!!t&&i((function(){e?t.call(null,(function(){}),1):t.call(null)}))}},"32e9":function(t,e,n){var i=n("86cc"),r=n("4630");t.exports=n("9e1e")?function(t,e,n){return i.f(t,e,r(1,n))}:function(t,e,n){return t[e]=n,t}},"35e8":function(t,e,n){var i=n("d9f6"),r=n("aebd");t.exports=n("8e60")?function(t,e,n){return i.f(t,e,r(1,n))}:function(t,e,n){return t[e]=n,t}},"38fd":function(t,e,n){var i=n("69a8"),r=n("4bf8"),o=n("613b")("IE_PROTO"),s=Object.prototype;t.exports=Object.getPrototypeOf||function(t){return t=r(t),i(t,o)?t[o]:"function"==typeof t.constructor&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?s:null}},"41a0":function(t,e,n){"use strict";var i=n("2aeb"),r=n("4630"),o=n("7f20"),s={};n("32e9")(s,n("2b4c")("iterator"),(function(){return this})),t.exports=function(t,e,n){t.prototype=i(s,{next:r(1,n)}),o(t,e+" Iterator")}},"454f":function(t,e,n){n("46a7");var i=n("584a").Object;t.exports=function(t,e,n){return i.defineProperty(t,e,n)}},"456d":function(t,e,n){var i=n("4bf8"),r=n("0d58");n("5eda")("keys",(function(){return function(t){return r(i(t))}}))},4588:function(t,e){var n=Math.ceil,i=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?i:n)(t)}},4630:function(t,e){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},"46a7":function(t,e,n){var i=n("63b6");i(i.S+i.F*!n("8e60"),"Object",{defineProperty:n("d9f6").f})},4917:function(t,e,n){"use strict";var i=n("cb7c"),r=n("9def"),o=n("0390"),s=n("5f1b");n("214f")("match",1,(function(t,e,n,a){return[function(n){var i=t(this),r=void 0==n?void 0:n[e];return void 0!==r?r.call(n,i):new RegExp(n)[e](String(i))},function(t){var e=a(n,t,this);if(e.done)return e.value;var c=i(t),l=String(this);if(!c.global)return s(c,l);var u=c.unicode;c.lastIndex=0;var h,d=[],f=0;while(null!==(h=s(c,l))){var p=String(h[0]);d[f]=p,""===p&&(c.lastIndex=o(l,r(c.lastIndex),u)),f++}return 0===f?null:d}]}))},"493e":function(t,e,n){var i=n("24fb");e=i(!1),e.push([t.i,'.vue-grid-item{-webkit-transition:all .2s ease;transition:all .2s ease;-webkit-transition-property:left,top,right;transition-property:left,top,right}.vue-grid-item,.vue-grid-item.no-touch{-ms-touch-action:none;touch-action:none}.vue-grid-item.cssTransforms{-webkit-transition-property:-webkit-transform;transition-property:-webkit-transform;transition-property:transform;transition-property:transform,-webkit-transform;left:0;right:auto}.vue-grid-item.cssTransforms.render-rtl{left:auto;right:0}.vue-grid-item.resizing{opacity:.6;z-index:3}.vue-grid-item.vue-draggable-dragging{-webkit-transition:none;transition:none;z-index:3}.vue-grid-item.vue-grid-placeholder{background:red;opacity:.2;-webkit-transition-duration:.1s;transition-duration:.1s;z-index:2;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none}.vue-grid-item>.vue-resizable-handle{position:absolute;width:20px;height:20px;bottom:0;right:0;background:url("data:image/svg+xml;base64,PHN2ZyBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjojZmZmZmZmMDAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjYiIGhlaWdodD0iNiI+PHBhdGggZD0iTTYgNkgwVjQuMmg0LjJWMEg2djZ6IiBvcGFjaXR5PSIuMzAyIi8+PC9zdmc+");background-position:100% 100%;padding:0 3px 3px 0;background-repeat:no-repeat;background-origin:content-box;-webkit-box-sizing:border-box;box-sizing:border-box;cursor:se-resize}.vue-grid-item>.vue-rtl-resizable-handle{bottom:0;left:0;background:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTAiIGhlaWdodD0iMTAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbD0ibm9uZSIgZD0iTS0xLTFoMTJ2MTJILTF6Ii8+PGc+PHBhdGggc3Ryb2tlLWxpbmVjYXA9InVuZGVmaW5lZCIgc3Ryb2tlLWxpbmVqb2luPSJ1bmRlZmluZWQiIHN0cm9rZS13aWR0aD0iMS41IiBzdHJva2U9IiMwMDAiIGZpbGw9Im5vbmUiIGQ9Ik0xNDQuODIxLTM4LjM5M2wtMjAuMzU3LTMxLjc4NSIvPjxwYXRoIHN0cm9rZT0iIzY2NiIgc3Ryb2tlLWxpbmVjYXA9InVuZGVmaW5lZCIgc3Ryb2tlLWxpbmVqb2luPSJ1bmRlZmluZWQiIHN0cm9rZS13aWR0aD0iMiIgZmlsbD0ibm9uZSIgZD0iTS45NDctLjAxOHY5LjEyNU0tLjY1NiA5aDEwLjczIi8+PC9nPjwvc3ZnPg==);background-position:0 100%;padding-left:3px;background-repeat:no-repeat;background-origin:content-box;cursor:sw-resize;right:auto}.vue-grid-item.disable-userselect{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}',""]),t.exports=e},"499e":function(t,e,n){"use strict";function i(t,e){for(var n=[],i={},r=0;r<e.length;r++){var o=e[r],s=o[0],a=o[1],c=o[2],l=o[3],u={id:t+":"+r,css:a,media:c,sourceMap:l};i[s]?i[s].parts.push(u):n.push(i[s]={id:s,parts:[u]})}return n}n.r(e),n.d(e,"default",(function(){return p}));var r="undefined"!==typeof document;if("undefined"!==typeof DEBUG&&DEBUG&&!r)throw new Error("vue-style-loader cannot be used in a non-browser environment. Use { target: 'node' } in your Webpack config to indicate a server-rendering environment.");var o={},s=r&&(document.head||document.getElementsByTagName("head")[0]),a=null,c=0,l=!1,u=function(){},h=null,d="data-vue-ssr-id",f="undefined"!==typeof navigator&&/msie [6-9]\b/.test(navigator.userAgent.toLowerCase());function p(t,e,n,r){l=n,h=r||{};var s=i(t,e);return g(s),function(e){for(var n=[],r=0;r<s.length;r++){var a=s[r],c=o[a.id];c.refs--,n.push(c)}e?(s=i(t,e),g(s)):s=[];for(r=0;r<n.length;r++){c=n[r];if(0===c.refs){for(var l=0;l<c.parts.length;l++)c.parts[l]();delete o[c.id]}}}}function g(t){for(var e=0;e<t.length;e++){var n=t[e],i=o[n.id];if(i){i.refs++;for(var r=0;r<i.parts.length;r++)i.parts[r](n.parts[r]);for(;r<n.parts.length;r++)i.parts.push(v(n.parts[r]));i.parts.length>n.parts.length&&(i.parts.length=n.parts.length)}else{var s=[];for(r=0;r<n.parts.length;r++)s.push(v(n.parts[r]));o[n.id]={id:n.id,refs:1,parts:s}}}}function m(){var t=document.createElement("style");return t.type="text/css",s.appendChild(t),t}function v(t){var e,n,i=document.querySelector("style["+d+'~="'+t.id+'"]');if(i){if(l)return u;i.parentNode.removeChild(i)}if(f){var r=c++;i=a||(a=m()),e=b.bind(null,i,r,!1),n=b.bind(null,i,r,!0)}else i=m(),e=x.bind(null,i),n=function(){i.parentNode.removeChild(i)};return e(t),function(i){if(i){if(i.css===t.css&&i.media===t.media&&i.sourceMap===t.sourceMap)return;e(t=i)}else n()}}var y=function(){var t=[];return function(e,n){return t[e]=n,t.filter(Boolean).join("\n")}}();function b(t,e,n,i){var r=n?"":i.css;if(t.styleSheet)t.styleSheet.cssText=y(e,r);else{var o=document.createTextNode(r),s=t.childNodes;s[e]&&t.removeChild(s[e]),s.length?t.insertBefore(o,s[e]):t.appendChild(o)}}function x(t,e){var n=e.css,i=e.media,r=e.sourceMap;if(i&&t.setAttribute("media",i),h.ssrId&&t.setAttribute(d,e.id),r&&(n+="\n/*# sourceURL="+r.sources[0]+" */",n+="\n/*# sourceMappingURL=data:application/json;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(r))))+" */"),t.styleSheet)t.styleSheet.cssText=n;else{while(t.firstChild)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(n))}}},"49ad":function(t,e,n){"use strict";t.exports=function(t){var e={};function n(n){var i=t.get(n);return void 0===i?[]:e[i]||[]}function i(n,i){var r=t.get(n);e[r]||(e[r]=[]),e[r].push(i)}function r(t,e){for(var i=n(t),r=0,o=i.length;r<o;++r)if(i[r]===e){i.splice(r,1);break}}function o(t){var e=n(t);e&&(e.length=0)}return{get:n,add:i,removeListener:r,removeAllListeners:o}}},"4bf8":function(t,e,n){var i=n("be13");t.exports=function(t){return Object(i(t))}},5058:function(t,e,n){"use strict";t.exports=function(t){var e=t.idGenerator,n=t.stateHandler.getState;function i(t){var e=n(t);return e&&void 0!==e.id?e.id:null}function r(t){var i=n(t);if(!i)throw new Error("setId required the element to have a resize detection state.");var r=e.generate();return i.id=r,r}return{get:i,set:r}}},"50bf":function(t,e,n){"use strict";var i=t.exports={};function r(t,e,n){var i=t[e];return void 0!==i&&null!==i||void 0===n?i:n}i.getOption=r},"520a":function(t,e,n){"use strict";var i=n("0bfb"),r=RegExp.prototype.exec,o=String.prototype.replace,s=r,a="lastIndex",c=function(){var t=/a/,e=/b*/g;return r.call(t,"a"),r.call(e,"a"),0!==t[a]||0!==e[a]}(),l=void 0!==/()??/.exec("")[1],u=c||l;u&&(s=function(t){var e,n,s,u,h=this;return l&&(n=new RegExp("^"+h.source+"$(?!\\s)",i.call(h))),c&&(e=h[a]),s=r.call(h,t),c&&s&&(h[a]=h.global?s.index+s[0].length:e),l&&s&&s.length>1&&o.call(s[0],n,(function(){for(u=1;u<arguments.length-2;u++)void 0===arguments[u]&&(s[u]=void 0)})),s}),t.exports=s},"52a7":function(t,e){e.f={}.propertyIsEnumerable},5537:function(t,e,n){var i=n("8378"),r=n("7726"),o="__core-js_shared__",s=r[o]||(r[o]={});(t.exports=function(t,e){return s[t]||(s[t]=void 0!==e?e:{})})("versions",[]).push({version:i.version,mode:n("2d00")?"pure":"global",copyright:"© 2020 Denis Pushkarev (zloirock.ru)"})},"55dd":function(t,e,n){"use strict";var i=n("5ca1"),r=n("d8e8"),o=n("4bf8"),s=n("79e5"),a=[].sort,c=[1,2,3];i(i.P+i.F*(s((function(){c.sort(void 0)}))||!s((function(){c.sort(null)}))||!n("2f21")(a)),"Array",{sort:function(t){return void 0===t?a.call(o(this)):a.call(o(this),r(t))}})},"584a":function(t,e){var n=t.exports={version:"2.6.12"};"number"==typeof __e&&(__e=n)},"5be5":function(t,e,n){"use strict";t.exports=function(t){var e=t.stateHandler.getState;function n(t){var n=e(t);return n&&!!n.isDetectable}function i(t){e(t).isDetectable=!0}function r(t){return!!e(t).busy}function o(t,n){e(t).busy=!!n}return{isDetectable:n,markAsDetectable:i,isBusy:r,markBusy:o}}},"5ca1":function(t,e,n){var i=n("7726"),r=n("8378"),o=n("32e9"),s=n("2aba"),a=n("9b43"),c="prototype",l=function(t,e,n){var u,h,d,f,p=t&l.F,g=t&l.G,m=t&l.S,v=t&l.P,y=t&l.B,b=g?i:m?i[e]||(i[e]={}):(i[e]||{})[c],x=g?r:r[e]||(r[e]={}),w=x[c]||(x[c]={});for(u in g&&(n=e),n)h=!p&&b&&void 0!==b[u],d=(h?b:n)[u],f=y&&h?a(d,i):v&&"function"==typeof d?a(Function.call,d):d,b&&s(b,u,d,t&l.U),x[u]!=d&&o(x,u,f),v&&w[u]!=d&&(w[u]=d)};i.core=r,l.F=1,l.G=2,l.S=4,l.P=8,l.B=16,l.W=32,l.U=64,l.R=128,t.exports=l},"5dbc":function(t,e,n){var i=n("d3f4"),r=n("8b97").set;t.exports=function(t,e,n){var o,s=e.constructor;return s!==n&&"function"==typeof s&&(o=s.prototype)!==n.prototype&&i(o)&&r&&r(t,o),t}},"5eda":function(t,e,n){var i=n("5ca1"),r=n("8378"),o=n("79e5");t.exports=function(t,e){var n=(r.Object||{})[t]||Object[t],s={};s[t]=e(n),i(i.S+i.F*o((function(){n(1)})),"Object",s)}},"5f1b":function(t,e,n){"use strict";var i=n("23c6"),r=RegExp.prototype.exec;t.exports=function(t,e){var n=t.exec;if("function"===typeof n){var o=n.call(t,e);if("object"!==typeof o)throw new TypeError("RegExp exec method returned something other than an Object or null");return o}if("RegExp"!==i(t))throw new TypeError("RegExp#exec called on incompatible receiver");return r.call(t,e)}},"613b":function(t,e,n){var i=n("5537")("keys"),r=n("ca5a");t.exports=function(t){return i[t]||(i[t]=r(t))}},"626a":function(t,e,n){var i=n("2d95");t.exports=Object("z").propertyIsEnumerable(0)?Object:function(t){return"String"==i(t)?t.split(""):Object(t)}},"63b6":function(t,e,n){var i=n("e53d"),r=n("584a"),o=n("d864"),s=n("35e8"),a=n("07e3"),c="prototype",l=function(t,e,n){var u,h,d,f=t&l.F,p=t&l.G,g=t&l.S,m=t&l.P,v=t&l.B,y=t&l.W,b=p?r:r[e]||(r[e]={}),x=b[c],w=p?i:g?i[e]:(i[e]||{})[c];for(u in p&&(n=e),n)h=!f&&w&&void 0!==w[u],h&&a(b,u)||(d=h?w[u]:n[u],b[u]=p&&"function"!=typeof w[u]?n[u]:v&&h?o(d,i):y&&w[u]==d?function(t){var e=function(e,n,i){if(this instanceof t){switch(arguments.length){case 0:return new t;case 1:return new t(e);case 2:return new t(e,n)}return new t(e,n,i)}return t.apply(this,arguments)};return e[c]=t[c],e}(d):m&&"function"==typeof d?o(Function.call,d):d,m&&((b.virtual||(b.virtual={}))[u]=d,t&l.R&&x&&!x[u]&&s(x,u,d)))};l.F=1,l.G=2,l.S=4,l.P=8,l.B=16,l.W=32,l.U=64,l.R=128,t.exports=l},6521:function(t,e,n){"use strict";n("92bf")},6821:function(t,e,n){var i=n("626a"),r=n("be13");t.exports=function(t){return i(r(t))}},"69a8":function(t,e){var n={}.hasOwnProperty;t.exports=function(t,e){return n.call(t,e)}},"6a99":function(t,e,n){var i=n("d3f4");t.exports=function(t,e){if(!i(t))return t;var n,r;if(e&&"function"==typeof(n=t.toString)&&!i(r=n.call(t)))return r;if("function"==typeof(n=t.valueOf)&&!i(r=n.call(t)))return r;if(!e&&"function"==typeof(n=t.toString)&&!i(r=n.call(t)))return r;throw TypeError("Can't convert object to primitive value")}},"6b0d":function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=(t,e)=>{const n=t.__vccOpts||t;for(const[i,r]of e)n[i]=r;return n}},7726:function(t,e){var n=t.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=n)},"77f1":function(t,e,n){var i=n("4588"),r=Math.max,o=Math.min;t.exports=function(t,e){return t=i(t),t<0?r(t+e,0):o(t,e)}},"794b":function(t,e,n){t.exports=!n("8e60")&&!n("294c")((function(){return 7!=Object.defineProperty(n("1ec9")("div"),"a",{get:function(){return 7}}).a}))},"79aa":function(t,e){t.exports=function(t){if("function"!=typeof t)throw TypeError(t+" is not a function!");return t}},"79e5":function(t,e){t.exports=function(t){try{return!!t()}catch(e){return!0}}},"7f20":function(t,e,n){var i=n("86cc").f,r=n("69a8"),o=n("2b4c")("toStringTag");t.exports=function(t,e,n){t&&!r(t=n?t:t.prototype,o)&&i(t,o,{configurable:!0,value:e})}},8378:function(t,e){var n=t.exports={version:"2.6.12"};"number"==typeof __e&&(__e=n)},"848e":function(t,e,n){var i=n("24fb");e=i(!1),e.push([t.i,".vue-grid-layout{position:relative;-webkit-transition:height .2s ease;transition:height .2s ease}",""]),t.exports=e},"84f2":function(t,e){t.exports={}},"85f2":function(t,e,n){t.exports=n("454f")},"86cc":function(t,e,n){var i=n("cb7c"),r=n("c69a"),o=n("6a99"),s=Object.defineProperty;e.f=n("9e1e")?Object.defineProperty:function(t,e,n){if(i(t),e=o(e,!0),i(n),r)try{return s(t,e,n)}catch(a){}if("get"in n||"set"in n)throw TypeError("Accessors not supported!");return"value"in n&&(t[e]=n.value),t}},8875:function(t,e,n){var i,r,o;(function(n,s){r=[],i=s,o="function"===typeof i?i.apply(e,r):i,void 0===o||(t.exports=o)})("undefined"!==typeof self&&self,(function(){function t(){var e=Object.getOwnPropertyDescriptor(document,"currentScript");if(!e&&"currentScript"in document&&document.currentScript)return document.currentScript;if(e&&e.get!==t&&document.currentScript)return document.currentScript;try{throw new Error}catch(f){var n,i,r,o=/.*at [^(]*\((.*):(.+):(.+)\)$/gi,s=/@([^@]*):(\d+):(\d+)\s*$/gi,a=o.exec(f.stack)||s.exec(f.stack),c=a&&a[1]||!1,l=a&&a[2]||!1,u=document.location.href.replace(document.location.hash,""),h=document.getElementsByTagName("script");c===u&&(n=document.documentElement.outerHTML,i=new RegExp("(?:[^\\n]+?\\n){0,"+(l-2)+"}[^<]*<script>([\\d\\D]*?)<\\/script>[\\d\\D]*","i"),r=n.replace(i,"$1").trim());for(var d=0;d<h.length;d++){if("interactive"===h[d].readyState)return h[d];if(h[d].src===c)return h[d];if(c===u&&h[d].innerHTML&&h[d].innerHTML.trim()===r)return h[d]}return null}}return t}))},"8b97":function(t,e,n){var i=n("d3f4"),r=n("cb7c"),o=function(t,e){if(r(t),!i(e)&&null!==e)throw TypeError(e+": can't set as prototype!")};t.exports={set:Object.setPrototypeOf||("__proto__"in{}?function(t,e,i){try{i=n("9b43")(Function.call,n("11e9").f(Object.prototype,"__proto__").set,2),i(t,[]),e=!(t instanceof Array)}catch(r){e=!0}return function(t,n){return o(t,n),e?t.__proto__=n:i(t,n),t}}({},!1):void 0),check:o}},"8bbf":function(e,n){e.exports=t},"8e60":function(t,e,n){t.exports=!n("294c")((function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a}))},"8e6e":function(t,e,n){var i=n("5ca1"),r=n("990b"),o=n("6821"),s=n("11e9"),a=n("f1ae");i(i.S,"Object",{getOwnPropertyDescriptors:function(t){var e,n,i=o(t),c=s.f,l=r(i),u={},h=0;while(l.length>h)n=c(i,e=l[h++]),void 0!==n&&a(u,e,n);return u}})},9093:function(t,e,n){var i=n("ce10"),r=n("e11e").concat("length","prototype");e.f=Object.getOwnPropertyNames||function(t){return i(t,r)}},"92bf":function(t,e,n){var i=n("848e");"string"===typeof i&&(i=[[t.i,i,""]]),i.locals&&(t.exports=i.locals);var r=n("499e").default;r("ff1827d0",i,!0,{sourceMap:!1,shadowMode:!1})},"990b":function(t,e,n){var i=n("9093"),r=n("2621"),o=n("cb7c"),s=n("7726").Reflect;t.exports=s&&s.ownKeys||function(t){var e=i.f(o(t)),n=r.f;return n?e.concat(n(t)):e}},"9b43":function(t,e,n){var i=n("d8e8");t.exports=function(t,e,n){if(i(t),void 0===e)return t;switch(n){case 1:return function(n){return t.call(e,n)};case 2:return function(n,i){return t.call(e,n,i)};case 3:return function(n,i,r){return t.call(e,n,i,r)}}return function(){return t.apply(e,arguments)}}},"9c6c":function(t,e,n){var i=n("2b4c")("unscopables"),r=Array.prototype;void 0==r[i]&&n("32e9")(r,i,{}),t.exports=function(t){r[i][t]=!0}},"9def":function(t,e,n){var i=n("4588"),r=Math.min;t.exports=function(t){return t>0?r(i(t),9007199254740991):0}},"9e1e":function(t,e,n){t.exports=!n("79e5")((function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a}))},a481:function(t,e,n){"use strict";var i=n("cb7c"),r=n("4bf8"),o=n("9def"),s=n("4588"),a=n("0390"),c=n("5f1b"),l=Math.max,u=Math.min,h=Math.floor,d=/\$([$&`']|\d\d?|<[^>]*>)/g,f=/\$([$&`']|\d\d?)/g,p=function(t){return void 0===t?t:String(t)};n("214f")("replace",2,(function(t,e,n,g){return[function(i,r){var o=t(this),s=void 0==i?void 0:i[e];return void 0!==s?s.call(i,o,r):n.call(String(o),i,r)},function(t,e){var r=g(n,t,this,e);if(r.done)return r.value;var h=i(t),d=String(this),f="function"===typeof e;f||(e=String(e));var v=h.global;if(v){var y=h.unicode;h.lastIndex=0}var b=[];while(1){var x=c(h,d);if(null===x)break;if(b.push(x),!v)break;var w=String(x[0]);""===w&&(h.lastIndex=a(d,o(h.lastIndex),y))}for(var S="",E=0,T=0;T<b.length;T++){x=b[T];for(var M=String(x[0]),z=l(u(s(x.index),d.length),0),O=[],P=1;P<x.length;P++)O.push(p(x[P]));var I=x.groups;if(f){var _=[M].concat(O,z,d);void 0!==I&&_.push(I);var D=String(e.apply(void 0,_))}else D=m(M,d,z,O,I,e);z>=E&&(S+=d.slice(E,z)+D,E=z+M.length)}return S+d.slice(E)}];function m(t,e,i,o,s,a){var c=i+t.length,l=o.length,u=f;return void 0!==s&&(s=r(s),u=d),n.call(a,u,(function(n,r){var a;switch(r.charAt(0)){case"$":return"$";case"&":return t;case"`":return e.slice(0,i);case"'":return e.slice(c);case"<":a=s[r.slice(1,-1)];break;default:var u=+r;if(0===u)return n;if(u>l){var d=h(u/10);return 0===d?n:d<=l?void 0===o[d-1]?r.charAt(1):o[d-1]+r.charAt(1):n}a=o[u-1]}return void 0===a?"":a}))}}))},aa77:function(t,e,n){var i=n("5ca1"),r=n("be13"),o=n("79e5"),s=n("fdef"),a="["+s+"]",c="​…",l=RegExp("^"+a+a+"*"),u=RegExp(a+a+"*$"),h=function(t,e,n){var r={},a=o((function(){return!!s[t]()||c[t]()!=c})),l=r[t]=a?e(d):s[t];n&&(r[n]=l),i(i.P+i.F*a,"String",r)},d=h.trim=function(t,e){return t=String(r(t)),1&e&&(t=t.replace(l,"")),2&e&&(t=t.replace(u,"")),t};t.exports=h},abb4:function(t,e,n){"use strict";t.exports=function(t){function e(){}var n={log:e,warn:e,error:e};if(!t&&window.console){var i=function(t,e){t[e]=function(){var t=console[e];if(t.apply)t.apply(console,arguments);else for(var n=0;n<arguments.length;n++)t(arguments[n])}};i(n,"log"),i(n,"warn"),i(n,"error")}return n}},ac6a:function(t,e,n){for(var i=n("cadf"),r=n("0d58"),o=n("2aba"),s=n("7726"),a=n("32e9"),c=n("84f2"),l=n("2b4c"),u=l("iterator"),h=l("toStringTag"),d=c.Array,f={CSSRuleList:!0,CSSStyleDeclaration:!1,CSSValueList:!1,ClientRectList:!1,DOMRectList:!1,DOMStringList:!1,DOMTokenList:!0,DataTransferItemList:!1,FileList:!1,HTMLAllCollection:!1,HTMLCollection:!1,HTMLFormElement:!1,HTMLSelectElement:!1,MediaList:!0,MimeTypeArray:!1,NamedNodeMap:!1,NodeList:!0,PaintRequestList:!1,Plugin:!1,PluginArray:!1,SVGLengthList:!1,SVGNumberList:!1,SVGPathSegList:!1,SVGPointList:!1,SVGStringList:!1,SVGTransformList:!1,SourceBufferList:!1,StyleSheetList:!0,TextTrackCueList:!1,TextTrackList:!1,TouchList:!1},p=r(f),g=0;g<p.length;g++){var m,v=p[g],y=f[v],b=s[v],x=b&&b.prototype;if(x&&(x[u]||a(x,u,d),x[h]||a(x,h,v),c[v]=d,y))for(m in i)x[m]||o(x,m,i[m],!0)}},aebd:function(t,e){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},b0c5:function(t,e,n){"use strict";var i=n("520a");n("5ca1")({target:"RegExp",proto:!0,forced:i!==/./.exec},{exec:i})},b770:function(t,e,n){"use strict";var i=t.exports={};i.forEach=function(t,e){for(var n=0;n<t.length;n++){var i=e(t[n]);if(i)return i}}},be13:function(t,e){t.exports=function(t){if(void 0==t)throw TypeError("Can't call method on  "+t);return t}},c274:function(t,e,n){"use strict";var i=n("50bf");function r(){var t={},e=0,n=0,i=0;function r(r,o){o||(o=r,r=0),r>n?n=r:r<i&&(i=r),t[r]||(t[r]=[]),t[r].push(o),e++}function o(){for(var e=i;e<=n;e++)for(var r=t[e],o=0;o<r.length;o++){var s=r[o];s()}}function s(){return e}return{add:r,process:o,size:s}}t.exports=function(t){t=t||{};var e=t.reporter,n=i.getOption(t,"async",!0),o=i.getOption(t,"auto",!0);o&&!n&&(e&&e.warn("Invalid options combination. auto=true and async=false is invalid. Setting async=true."),n=!0);var s,a=r(),c=!1;function l(t,e){!c&&o&&n&&0===a.size()&&d(),a.add(t,e)}function u(){c=!0;while(a.size()){var t=a;a=r(),t.process()}c=!1}function h(t){c||(void 0===t&&(t=n),s&&(f(s),s=null),t?d():u())}function d(){s=p(u)}function f(t){var e=clearTimeout;return e(t)}function p(t){var e=function(t){return setTimeout(t,0)};return e(t)}return{add:l,force:h}}},c366:function(t,e,n){var i=n("6821"),r=n("9def"),o=n("77f1");t.exports=function(t){return function(e,n,s){var a,c=i(e),l=r(c.length),u=o(s,l);if(t&&n!=n){while(l>u)if(a=c[u++],a!=a)return!0}else for(;l>u;u++)if((t||u in c)&&c[u]===n)return t||u||0;return!t&&-1}}},c541:function(t,e,n){var i=n("493e");"string"===typeof i&&(i=[[t.i,i,""]]),i.locals&&(t.exports=i.locals);var r=n("499e").default;r("40158674",i,!0,{sourceMap:!1,shadowMode:!1})},c5f6:function(t,e,n){"use strict";var i=n("7726"),r=n("69a8"),o=n("2d95"),s=n("5dbc"),a=n("6a99"),c=n("79e5"),l=n("9093").f,u=n("11e9").f,h=n("86cc").f,d=n("aa77").trim,f="Number",p=i[f],g=p,m=p.prototype,v=o(n("2aeb")(m))==f,y="trim"in String.prototype,b=function(t){var e=a(t,!1);if("string"==typeof e&&e.length>2){e=y?e.trim():d(e,3);var n,i,r,o=e.charCodeAt(0);if(43===o||45===o){if(n=e.charCodeAt(2),88===n||120===n)return NaN}else if(48===o){switch(e.charCodeAt(1)){case 66:case 98:i=2,r=49;break;case 79:case 111:i=8,r=55;break;default:return+e}for(var s,c=e.slice(2),l=0,u=c.length;l<u;l++)if(s=c.charCodeAt(l),s<48||s>r)return NaN;return parseInt(c,i)}}return+e};if(!p(" 0o1")||!p("0b1")||p("+0x1")){p=function(t){var e=arguments.length<1?0:t,n=this;return n instanceof p&&(v?c((function(){m.valueOf.call(n)})):o(n)!=f)?s(new g(b(e)),n,p):b(e)};for(var x,w=n("9e1e")?l(g):"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger".split(","),S=0;w.length>S;S++)r(g,x=w[S])&&!r(p,x)&&h(p,x,u(g,x));p.prototype=m,m.constructor=p,n("2aba")(i,f,p)}},c69a:function(t,e,n){t.exports=!n("9e1e")&&!n("79e5")((function(){return 7!=Object.defineProperty(n("230e")("div"),"a",{get:function(){return 7}}).a}))},c946:function(t,e,n){"use strict";var i=n("b770").forEach;t.exports=function(t){t=t||{};var e=t.reporter,n=t.batchProcessor,r=t.stateHandler.getState,o=(t.stateHandler.hasState,t.idHandler);if(!n)throw new Error("Missing required dependency: batchProcessor");if(!e)throw new Error("Missing required dependency: reporter.");var s=h(),a="erd_scroll_detection_scrollbar_style",c="erd_scroll_detection_container";function l(t){d(t,a,c)}function u(e){var n=t.important?" !important; ":"; ";return(e.join(n)+n).trim()}function h(){var t=500,e=500,n=document.createElement("div");n.style.cssText=u(["position: absolute","width: "+2*t+"px","height: "+2*e+"px","visibility: hidden","margin: 0","padding: 0"]);var i=document.createElement("div");i.style.cssText=u(["position: absolute","width: "+t+"px","height: "+e+"px","overflow: scroll","visibility: none","top: "+3*-t+"px","left: "+3*-e+"px","visibility: hidden","margin: 0","padding: 0"]),i.appendChild(n),document.body.insertBefore(i,document.body.firstChild);var r=t-i.clientWidth,o=e-i.clientHeight;return document.body.removeChild(i),{width:r,height:o}}function d(t,e,n){function i(n,i){i=i||function(e){t.head.appendChild(e)};var r=t.createElement("style");return r.innerHTML=n,r.id=e,i(r),r}if(!t.getElementById(e)){var r=n+"_animation",o=n+"_animation_active",s="/* Created by the element-resize-detector library. */\n";s+="."+n+" > div::-webkit-scrollbar { "+u(["display: none"])+" }\n\n",s+="."+o+" { "+u(["-webkit-animation-duration: 0.1s","animation-duration: 0.1s","-webkit-animation-name: "+r,"animation-name: "+r])+" }\n",s+="@-webkit-keyframes "+r+" { 0% { opacity: 1; } 50% { opacity: 0; } 100% { opacity: 1; } }\n",s+="@keyframes "+r+" { 0% { opacity: 1; } 50% { opacity: 0; } 100% { opacity: 1; } }",i(s)}}function f(t){t.className+=" "+c+"_animation_active"}function p(t,n,i){if(t.addEventListener)t.addEventListener(n,i);else{if(!t.attachEvent)return e.error("[scroll] Don't know how to add event listeners.");t.attachEvent("on"+n,i)}}function g(t,n,i){if(t.removeEventListener)t.removeEventListener(n,i);else{if(!t.detachEvent)return e.error("[scroll] Don't know how to remove event listeners.");t.detachEvent("on"+n,i)}}function m(t){return r(t).container.childNodes[0].childNodes[0].childNodes[0]}function v(t){return r(t).container.childNodes[0].childNodes[0].childNodes[1]}function y(t,e){var n=r(t).listeners;if(!n.push)throw new Error("Cannot add listener to an element that is not detectable.");r(t).listeners.push(e)}function b(t,a,l){function h(){if(t.debug){var n=Array.prototype.slice.call(arguments);if(n.unshift(o.get(a),"Scroll: "),e.log.apply)e.log.apply(null,n);else for(var i=0;i<n.length;i++)e.log(n[i])}}function d(t){function e(t){return t===t.ownerDocument.body||t.ownerDocument.body.contains(t)}return!e(t)||null===window.getComputedStyle(t)}function g(t){var e=r(t).container.childNodes[0],n=window.getComputedStyle(e);return!n.width||-1===n.width.indexOf("px")}function y(){var t=window.getComputedStyle(a),e={};return e.position=t.position,e.width=a.offsetWidth,e.height=a.offsetHeight,e.top=t.top,e.right=t.right,e.bottom=t.bottom,e.left=t.left,e.widthCSS=t.width,e.heightCSS=t.height,e}function b(){var t=y();r(a).startSize={width:t.width,height:t.height},h("Element start size",r(a).startSize)}function x(){r(a).listeners=[]}function w(){if(h("storeStyle invoked."),r(a)){var t=y();r(a).style=t}else h("Aborting because element has been uninstalled")}function S(t,e,n){r(t).lastWidth=e,r(t).lastHeight=n}function E(t){return m(t).childNodes[0]}function T(){return 2*s.width+1}function M(){return 2*s.height+1}function z(t){return t+10+T()}function O(t){return t+10+M()}function P(t){return 2*t+T()}function I(t){return 2*t+M()}function _(t,e,n){var i=m(t),r=v(t),o=z(e),s=O(n),a=P(e),c=I(n);i.scrollLeft=o,i.scrollTop=s,r.scrollLeft=a,r.scrollTop=c}function D(){var t=r(a).container;if(!t){t=document.createElement("div"),t.className=c,t.style.cssText=u(["visibility: hidden","display: inline","width: 0px","height: 0px","z-index: -1","overflow: hidden","margin: 0","padding: 0"]),r(a).container=t,f(t),a.appendChild(t);var e=function(){r(a).onRendered&&r(a).onRendered()};p(t,"animationstart",e),r(a).onAnimationStart=e}return t}function k(){function n(){var n=r(a).style;if("static"===n.position){a.style.setProperty("position","relative",t.important?"important":"");var i=function(t,e,n,i){function r(t){return t.replace(/[^-\d\.]/g,"")}var o=n[i];"auto"!==o&&"0"!==r(o)&&(t.warn("An element that is positioned static has style."+i+"="+o+" which is ignored due to the static positioning. The element will need to be positioned relative, so the style."+i+" will be set to 0. Element: ",e),e.style[i]=0)};i(e,a,n,"top"),i(e,a,n,"right"),i(e,a,n,"bottom"),i(e,a,n,"left")}}function i(t,e,n,i){return t=t?t+"px":"0",e=e?e+"px":"0",n=n?n+"px":"0",i=i?i+"px":"0",["left: "+t,"top: "+e,"right: "+i,"bottom: "+n]}if(h("Injecting elements"),r(a)){n();var o=r(a).container;o||(o=D());var l=s.width,d=s.height,f=u(["position: absolute","flex: none","overflow: hidden","z-index: -1","visibility: hidden","width: 100%","height: 100%","left: 0px","top: 0px"]),g=u(["position: absolute","flex: none","overflow: hidden","z-index: -1","visibility: hidden"].concat(i(-(1+l),-(1+d),-d,-l))),m=u(["position: absolute","flex: none","overflow: scroll","z-index: -1","visibility: hidden","width: 100%","height: 100%"]),v=u(["position: absolute","flex: none","overflow: scroll","z-index: -1","visibility: hidden","width: 100%","height: 100%"]),y=u(["position: absolute","left: 0","top: 0"]),b=u(["position: absolute","width: 200%","height: 200%"]),x=document.createElement("div"),w=document.createElement("div"),S=document.createElement("div"),E=document.createElement("div"),T=document.createElement("div"),M=document.createElement("div");x.dir="ltr",x.style.cssText=f,x.className=c,w.className=c,w.style.cssText=g,S.style.cssText=m,E.style.cssText=y,T.style.cssText=v,M.style.cssText=b,S.appendChild(E),T.appendChild(M),w.appendChild(S),w.appendChild(T),x.appendChild(w),o.appendChild(x),p(S,"scroll",z),p(T,"scroll",O),r(a).onExpandScroll=z,r(a).onShrinkScroll=O}else h("Aborting because element has been uninstalled");function z(){r(a).onExpand&&r(a).onExpand()}function O(){r(a).onShrink&&r(a).onShrink()}}function A(){function s(e,n,i){var r=E(e),o=z(n),s=O(i);r.style.setProperty("width",o+"px",t.important?"important":""),r.style.setProperty("height",s+"px",t.important?"important":"")}function c(i){var c=a.offsetWidth,u=a.offsetHeight,d=c!==r(a).lastWidth||u!==r(a).lastHeight;h("Storing current size",c,u),S(a,c,u),n.add(0,(function(){if(d)if(r(a))if(l()){if(t.debug){var n=a.offsetWidth,i=a.offsetHeight;n===c&&i===u||e.warn(o.get(a),"Scroll: Size changed before updating detector elements.")}s(a,c,u)}else h("Aborting because element container has not been initialized");else h("Aborting because element has been uninstalled")})),n.add(1,(function(){r(a)?l()?_(a,c,u):h("Aborting because element container has not been initialized"):h("Aborting because element has been uninstalled")})),d&&i&&n.add(2,(function(){r(a)?l()?i():h("Aborting because element container has not been initialized"):h("Aborting because element has been uninstalled")}))}function l(){return!!r(a).container}function u(){function t(){return void 0===r(a).lastNotifiedWidth}h("notifyListenersIfNeeded invoked");var e=r(a);return t()&&e.lastWidth===e.startSize.width&&e.lastHeight===e.startSize.height?h("Not notifying: Size is the same as the start size, and there has been no notification yet."):e.lastWidth===e.lastNotifiedWidth&&e.lastHeight===e.lastNotifiedHeight?h("Not notifying: Size already notified"):(h("Current size not notified, notifying..."),e.lastNotifiedWidth=e.lastWidth,e.lastNotifiedHeight=e.lastHeight,void i(r(a).listeners,(function(t){t(a)})))}function d(){if(h("startanimation triggered."),g(a))h("Ignoring since element is still unrendered...");else{h("Element rendered.");var t=m(a),e=v(a);0!==t.scrollLeft&&0!==t.scrollTop&&0!==e.scrollLeft&&0!==e.scrollTop||(h("Scrollbars out of sync. Updating detector elements..."),c(u))}}function f(){h("Scroll detected."),g(a)?h("Scroll event fired while unrendered. Ignoring..."):c(u)}if(h("registerListenersAndPositionElements invoked."),r(a)){r(a).onRendered=d,r(a).onExpand=f,r(a).onShrink=f;var p=r(a).style;s(a,p.width,p.height)}else h("Aborting because element has been uninstalled")}function R(){if(h("finalizeDomMutation invoked."),r(a)){var t=r(a).style;S(a,t.width,t.height),_(a,t.width,t.height)}else h("Aborting because element has been uninstalled")}function j(){l(a)}function C(){h("Installing..."),x(),b(),n.add(0,w),n.add(1,k),n.add(2,A),n.add(3,R),n.add(4,j)}l||(l=a,a=t,t=null),t=t||{},h("Making detectable..."),d(a)?(h("Element is detached"),D(),h("Waiting until element is attached..."),r(a).onRendered=function(){h("Element is now attached"),C()}):C()}function x(t){var e=r(t);e&&(e.onExpandScroll&&g(m(t),"scroll",e.onExpandScroll),e.onShrinkScroll&&g(v(t),"scroll",e.onShrinkScroll),e.onAnimationStart&&g(e.container,"animationstart",e.onAnimationStart),e.container&&t.removeChild(e.container))}return l(window.document),{makeDetectable:b,addListener:y,uninstall:x,initDocument:l}}},ca5a:function(t,e){var n=0,i=Math.random();t.exports=function(t){return"Symbol(".concat(void 0===t?"":t,")_",(++n+i).toString(36))}},cadf:function(t,e,n){"use strict";var i=n("9c6c"),r=n("d53b"),o=n("84f2"),s=n("6821");t.exports=n("01f9")(Array,"Array",(function(t,e){this._t=s(t),this._i=0,this._k=e}),(function(){var t=this._t,e=this._k,n=this._i++;return!t||n>=t.length?(this._t=void 0,r(1)):r(0,"keys"==e?n:"values"==e?t[n]:[n,t[n]])}),"values"),o.Arguments=o.Array,i("keys"),i("values"),i("entries")},cb7c:function(t,e,n){var i=n("d3f4");t.exports=function(t){if(!i(t))throw TypeError(t+" is not an object!");return t}},ce10:function(t,e,n){var i=n("69a8"),r=n("6821"),o=n("c366")(!1),s=n("613b")("IE_PROTO");t.exports=function(t,e){var n,a=r(t),c=0,l=[];for(n in a)n!=s&&i(a,n)&&l.push(n);while(e.length>c)i(a,n=e[c++])&&(~o(l,n)||l.push(n));return l}},d3f4:function(t,e){t.exports=function(t){return"object"===typeof t?null!==t:"function"===typeof t}},d53b:function(t,e){t.exports=function(t,e){return{value:e,done:!!t}}},d6eb:function(t,e,n){"use strict";var i="_erd";function r(t){return t[i]={},o(t)}function o(t){return t[i]}function s(t){delete t[i]}t.exports={initState:r,getState:o,cleanState:s}},d864:function(t,e,n){var i=n("79aa");t.exports=function(t,e,n){if(i(t),void 0===e)return t;switch(n){case 1:return function(n){return t.call(e,n)};case 2:return function(n,i){return t.call(e,n,i)};case 3:return function(n,i,r){return t.call(e,n,i,r)}}return function(){return t.apply(e,arguments)}}},d8e8:function(t,e){t.exports=function(t){if("function"!=typeof t)throw TypeError(t+" is not a function!");return t}},d9f6:function(t,e,n){var i=n("e4ae"),r=n("794b"),o=n("1bc3"),s=Object.defineProperty;e.f=n("8e60")?Object.defineProperty:function(t,e,n){if(i(t),e=o(e,!0),i(n),r)try{return s(t,e,n)}catch(a){}if("get"in n||"set"in n)throw TypeError("Accessors not supported!");return"value"in n&&(t[e]=n.value),t}},e11e:function(t,e){t.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},e4ae:function(t,e,n){var i=n("f772");t.exports=function(t){if(!i(t))throw TypeError(t+" is not an object!");return t}},e53d:function(t,e){var n=t.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=n)},eec4:function(t,e,n){"use strict";var i=n("b770").forEach,r=n("5be5"),o=n("49ad"),s=n("2cef"),a=n("5058"),c=n("abb4"),l=n("18e9"),u=n("c274"),h=n("d6eb"),d=n("18d2"),f=n("c946");function p(t){return Array.isArray(t)||void 0!==t.length}function g(t){if(Array.isArray(t))return t;var e=[];return i(t,(function(t){e.push(t)})),e}function m(t){return t&&1===t.nodeType}function v(t,e,n){var i=t[e];return void 0!==i&&null!==i||void 0===n?i:n}t.exports=function(t){var e;if(t=t||{},t.idHandler)e={get:function(e){return t.idHandler.get(e,!0)},set:t.idHandler.set};else{var n=s(),y=a({idGenerator:n,stateHandler:h});e=y}var b=t.reporter;if(!b){var x=!1===b;b=c(x)}var w=v(t,"batchProcessor",u({reporter:b})),S={};S.callOnAdd=!!v(t,"callOnAdd",!0),S.debug=!!v(t,"debug",!1);var E,T=o(e),M=r({stateHandler:h}),z=v(t,"strategy","object"),O=v(t,"important",!1),P={reporter:b,batchProcessor:w,stateHandler:h,idHandler:e,important:O};if("scroll"===z&&(l.isLegacyOpera()?(b.warn("Scroll strategy is not supported on legacy Opera. Changing to object strategy."),z="object"):l.isIE(9)&&(b.warn("Scroll strategy is not supported on IE9. Changing to object strategy."),z="object")),"scroll"===z)E=f(P);else{if("object"!==z)throw new Error("Invalid strategy name: "+z);E=d(P)}var I={};function _(t,n,r){function o(t){var e=T.get(t);i(e,(function(e){e(t)}))}function s(t,e,n){T.add(e,n),t&&n(e)}if(r||(r=n,n=t,t={}),!n)throw new Error("At least one element required.");if(!r)throw new Error("Listener required.");if(m(n))n=[n];else{if(!p(n))return b.error("Invalid arguments. Must be a DOM element or a collection of DOM elements.");n=g(n)}var a=0,c=v(t,"callOnAdd",S.callOnAdd),l=v(t,"onReady",(function(){})),u=v(t,"debug",S.debug);i(n,(function(t){h.getState(t)||(h.initState(t),e.set(t));var d=e.get(t);if(u&&b.log("Attaching listener to element",d,t),!M.isDetectable(t))return u&&b.log(d,"Not detectable."),M.isBusy(t)?(u&&b.log(d,"System busy making it detectable"),s(c,t,r),I[d]=I[d]||[],void I[d].push((function(){a++,a===n.length&&l()}))):(u&&b.log(d,"Making detectable..."),M.markBusy(t,!0),E.makeDetectable({debug:u,important:O},t,(function(t){if(u&&b.log(d,"onElementDetectable"),h.getState(t)){M.markAsDetectable(t),M.markBusy(t,!1),E.addListener(t,o),s(c,t,r);var e=h.getState(t);if(e&&e.startSize){var f=t.offsetWidth,p=t.offsetHeight;e.startSize.width===f&&e.startSize.height===p||o(t)}I[d]&&i(I[d],(function(t){t()}))}else u&&b.log(d,"Element uninstalled before being detectable.");delete I[d],a++,a===n.length&&l()})));u&&b.log(d,"Already detecable, adding listener."),s(c,t,r),a++})),a===n.length&&l()}function D(t){if(!t)return b.error("At least one element is required.");if(m(t))t=[t];else{if(!p(t))return b.error("Invalid arguments. Must be a DOM element or a collection of DOM elements.");t=g(t)}i(t,(function(t){T.removeAllListeners(t),E.uninstall(t),h.cleanState(t)}))}function k(t){E.initDocument&&E.initDocument(t)}return{listenTo:_,removeListener:T.removeListener,removeAllListeners:T.removeAllListeners,uninstall:D,initDocument:k}}},f1ae:function(t,e,n){"use strict";var i=n("86cc"),r=n("4630");t.exports=function(t,e,n){e in t?i.f(t,e,r(0,n)):t[e]=n}},f772:function(t,e){t.exports=function(t){return"object"===typeof t?null!==t:"function"===typeof t}},fa5b:function(t,e,n){t.exports=n("5537")("native-function-to-string",Function.toString)},fab2:function(t,e,n){var i=n("7726").document;t.exports=i&&i.documentElement},fb15:function(t,e,n){"use strict";n.r(e),n.d(e,"GridLayout",(function(){return Sr})),n.d(e,"GridItem",(function(){return hr}));var i={};if(n.r(i),n.d(i,"edgeTarget",(function(){return Gn})),n.d(i,"elements",(function(){return Yn})),n.d(i,"grid",(function(){return Xn})),"undefined"!==typeof window){var r=window.document.currentScript,o=n("8875");r=o(),"currentScript"in document||Object.defineProperty(document,"currentScript",{get:o});var s=r&&r.src.match(/(.+\/)[^/]+\.js(\?.*)?$/);s&&(n.p=s[1])}var a=n("8bbf");function c(t,e,n,i,r,o){return Object(a["openBlock"])(),Object(a["createBlock"])("div",{ref:"item",class:["vue-grid-item",o.classObj],style:t.style},[Object(a["renderSlot"])(t.$slots,"default"),o.resizableAndNotStatic?(Object(a["openBlock"])(),Object(a["createBlock"])("span",{key:0,ref:"handle",class:o.resizableHandleClass},null,2)):Object(a["createCommentVNode"])("",!0)],6)}n("a481"),n("4917"),n("c5f6"),n("456d"),n("ac6a"),n("55dd");function l(t){for(var e,n=0,i=0,r=t.length;i<r;i++)e=t[i].y+t[i].h,e>n&&(n=e);return n}function u(t){for(var e=Array(t.length),n=0,i=t.length;n<i;n++)e[n]=h(t[n]);return e}function h(t){return JSON.parse(JSON.stringify(t))}function d(t,e){return t!==e&&(!(t.x+t.w<=e.x)&&(!(t.x>=e.x+e.w)&&(!(t.y+t.h<=e.y)&&!(t.y>=e.y+e.h))))}function f(t,e){for(var n=b(t),i=z(t),r=Array(t.length),o=0,s=i.length;o<s;o++){var a=i[o];a.static||(a=p(n,a,e),n.push(a)),r[t.indexOf(a)]=a,a.moved=!1}return r}function p(t,e,n){if(n)while(e.y>0&&!v(t,e))e.y--;var i;while(i=v(t,e))e.y=i.y+i.h;return e}function g(t,e){for(var n=b(t),i=0,r=t.length;i<r;i++){var o=t[i];if(o.x+o.w>e.cols&&(o.x=e.cols-o.w),o.x<0&&(o.x=0,o.w=e.cols),o.static)while(v(n,o))o.y++;else n.push(o)}return t}function m(t,e){for(var n=0,i=t.length;n<i;n++)if(t[n].i===e)return t[n]}function v(t,e){for(var n=0,i=t.length;n<i;n++)if(d(t[n],e))return t[n]}function y(t,e){return t.filter((function(t){return d(t,e)}))}function b(t){return t.filter((function(t){return t.static}))}function x(t,e,n,i,r,o){if(e.static)return t;var s=e.x,a=e.y,c=i&&e.y>i;"number"===typeof n&&(e.x=n),"number"===typeof i&&(e.y=i),e.moved=!0;var l=z(t);c&&(l=l.reverse());var u=y(l,e);if(o&&u.length)return e.x=s,e.y=a,e.moved=!1,t;for(var h=0,d=u.length;h<d;h++){var f=u[h];f.moved||(e.y>f.y&&e.y-f.y>f.h/4||(t=f.static?w(t,f,e,r):w(t,e,f,r)))}return t}function w(t,e,n,i){var r=!1;if(i){var o={x:n.x,y:n.y,w:n.w,h:n.h,i:"-1"};if(o.y=Math.max(e.y-n.h,0),!v(t,o))return x(t,n,void 0,o.y,r)}return x(t,n,void 0,n.y+1,r)}function S(t,e,n,i){var r="translate3d("+e+"px,"+t+"px, 0)";return{transform:r,WebkitTransform:r,MozTransform:r,msTransform:r,OTransform:r,width:n+"px",height:i+"px",position:"absolute"}}function E(t,e,n,i){var r="translate3d("+-1*e+"px,"+t+"px, 0)";return{transform:r,WebkitTransform:r,MozTransform:r,msTransform:r,OTransform:r,width:n+"px",height:i+"px",position:"absolute"}}function T(t,e,n,i){return{top:t+"px",left:e+"px",width:n+"px",height:i+"px",position:"absolute"}}function M(t,e,n,i){return{top:t+"px",right:e+"px",width:n+"px",height:i+"px",position:"absolute"}}function z(t){return[].concat(t).sort((function(t,e){return t.y===e.y&&t.x===e.x?0:t.y>e.y||t.y===e.y&&t.x>e.x?1:-1}))}function O(t,e){e=e||"Layout";var n=["x","y","w","h"],i=[];if(!Array.isArray(t))throw new Error(e+" must be an array!");for(var r=0,o=t.length;r<o;r++){for(var s=t[r],a=0;a<n.length;a++)if("number"!==typeof s[n[a]])throw new Error("VueGridLayout: "+e+"["+r+"]."+n[a]+" must be a number!");if(void 0===s.i||null===s.i)throw new Error("VueGridLayout: "+e+"["+r+"].i cannot be null!");if("number"!==typeof s.i&&"string"!==typeof s.i)throw new Error("VueGridLayout: "+e+"["+r+"].i must be a string or number!");if(i.indexOf(s.i)>=0)throw new Error("VueGridLayout: "+e+"["+r+"].i must be unique!");if(i.push(s.i),void 0!==s.static&&"boolean"!==typeof s.static)throw new Error("VueGridLayout: "+e+"["+r+"].static must be a boolean!")}}function P(t){return I(t)}function I(t){var e=t.target.offsetParent||document.body,n=t.offsetParent===document.body?{left:0,top:0}:e.getBoundingClientRect(),i=t.clientX+e.scrollLeft-n.left,r=t.clientY+e.scrollTop-n.top;return{x:i,y:r}}function _(t,e,n,i){var r=!D(t);return r?{deltaX:0,deltaY:0,lastX:n,lastY:i,x:n,y:i}:{deltaX:n-t,deltaY:i-e,lastX:t,lastY:e,x:n,y:i}}function D(t){return"number"===typeof t&&!isNaN(t)}function k(t,e){for(var n=j(t),i=n[0],r=1,o=n.length;r<o;r++){var s=n[r];e>t[s]&&(i=s)}return i}function A(t,e){if(!e[t])throw new Error("ResponsiveGridLayout: `cols` entry for breakpoint "+t+" is missing!");return e[t]}function R(t,e,n,i,r,o,s){if(e[i])return u(e[i]);for(var a=t,c=j(n),l=c.slice(c.indexOf(i)),h=0,d=l.length;h<d;h++){var p=l[h];if(e[p]){a=e[p];break}}return a=u(a||[]),f(g(a,{cols:o}),s)}function j(t){var e=Object.keys(t);return e.sort((function(e,n){return t[e]-t[n]}))}var C="auto";function H(){return"undefined"!==typeof document}function L(){return"undefined"!==typeof window}function N(){if(!H())return C;var t="undefined"!==typeof document.dir?document.dir:document.getElementsByTagName("html")[0].getAttribute("dir");return t}function W(t,e){L?window.addEventListener(t,e):e()}function B(t,e){L&&window.removeEventListener(t,e)}const F={init:Y,document:null,DocumentFragment:null,SVGElement:null,SVGSVGElement:null,SVGElementInstance:null,Element:null,HTMLElement:null,Event:null,Touch:null,PointerEvent:null};function $(){}var G=F;function Y(t){const e=t;F.document=e.document,F.DocumentFragment=e.DocumentFragment||$,F.SVGElement=e.SVGElement||$,F.SVGSVGElement=e.SVGSVGElement||$,F.SVGElementInstance=e.SVGElementInstance||$,F.Element=e.Element||$,F.HTMLElement=e.HTMLElement||F.Element,F.Event=e.Event,F.Touch=e.Touch||$,F.PointerEvent=e.PointerEvent||e.MSPointerEvent}var X=t=>!(!t||!t.Window)&&t instanceof t.Window;let V=void 0,q=void 0;function U(t){V=t;const e=t.document.createTextNode("");e.ownerDocument!==t.document&&"function"===typeof t.wrap&&t.wrap(e)===e&&(t=t.wrap(t)),q=t}function Z(t){if(X(t))return t;const e=t.ownerDocument||t;return e.defaultView||q.window}"undefined"!==typeof window&&window&&U(window);const K=t=>t===q||X(t),J=t=>Q(t)&&11===t.nodeType,Q=t=>!!t&&"object"===typeof t,tt=t=>"function"===typeof t,et=t=>"number"===typeof t,nt=t=>"boolean"===typeof t,it=t=>"string"===typeof t,rt=t=>{if(!t||"object"!==typeof t)return!1;const e=Z(t)||q;return/object|function/.test(typeof e.Element)?t instanceof e.Element:1===t.nodeType&&"string"===typeof t.nodeName},ot=t=>Q(t)&&!!t.constructor&&/function Object\b/.test(t.constructor.toString()),st=t=>Q(t)&&"undefined"!==typeof t.length&&tt(t.splice);var at={window:K,docFrag:J,object:Q,func:tt,number:et,bool:nt,string:it,element:rt,plainObject:ot,array:st};const ct={init:lt,supportsTouch:null,supportsPointerEvent:null,isIOS7:null,isIOS:null,isIe9:null,isOperaMobile:null,prefixedMatchesSelector:null,pEventTypes:null,wheelEvent:null};function lt(t){const e=G.Element,n=q.navigator;ct.supportsTouch="ontouchstart"in t||at.func(t.DocumentTouch)&&G.document instanceof t.DocumentTouch,ct.supportsPointerEvent=!1!==n.pointerEnabled&&!!G.PointerEvent,ct.isIOS=/iP(hone|od|ad)/.test(n.platform),ct.isIOS7=/iP(hone|od|ad)/.test(n.platform)&&/OS 7[^\d]/.test(n.appVersion),ct.isIe9=/MSIE 9/.test(n.userAgent),ct.isOperaMobile="Opera"===n.appName&&ct.supportsTouch&&/Presto/.test(n.userAgent),ct.prefixedMatchesSelector="matches"in e.prototype?"matches":"webkitMatchesSelector"in e.prototype?"webkitMatchesSelector":"mozMatchesSelector"in e.prototype?"mozMatchesSelector":"oMatchesSelector"in e.prototype?"oMatchesSelector":"msMatchesSelector",ct.pEventTypes=ct.supportsPointerEvent?G.PointerEvent===t.MSPointerEvent?{up:"MSPointerUp",down:"MSPointerDown",over:"mouseover",out:"mouseout",move:"MSPointerMove",cancel:"MSPointerCancel"}:{up:"pointerup",down:"pointerdown",over:"pointerover",out:"pointerout",move:"pointermove",cancel:"pointercancel"}:null,ct.wheelEvent="onmousewheel"in G.document?"mousewheel":"wheel"}var ut=ct;const ht=(t,e)=>-1!==t.indexOf(e),dt=(t,e)=>{for(const n of e)t.push(n);return t},ft=t=>dt([],t),pt=(t,e)=>{for(let n=0;n<t.length;n++)if(e(t[n],n,t))return n;return-1},gt=(t,e)=>t[pt(t,e)];function mt(t){const e={};for(const n in t){const i=t[n];at.plainObject(i)?e[n]=mt(i):at.array(i)?e[n]=ft(i):e[n]=i}return e}function vt(t,e){for(const i in e)t[i]=e[i];const n=t;return n}let yt,bt,xt=0;function wt(t){if(yt=t.requestAnimationFrame,bt=t.cancelAnimationFrame,!yt){const e=["ms","moz","webkit","o"];for(const n of e)yt=t[n+"RequestAnimationFrame"],bt=t[n+"CancelAnimationFrame"]||t[n+"CancelRequestAnimationFrame"]}yt=yt&&yt.bind(t),bt=bt&&bt.bind(t),yt||(yt=e=>{const n=Date.now(),i=Math.max(0,16-(n-xt)),r=t.setTimeout(()=>{e(n+i)},i);return xt=n+i,r},bt=t=>clearTimeout(t))}var St={request:t=>yt(t),cancel:t=>bt(t),init:wt};function Et(t,e,n){if(n=n||{},at.string(t)&&-1!==t.search(" ")&&(t=Tt(t)),at.array(t))return t.reduce((t,i)=>vt(t,Et(i,e,n)),n);if(at.object(t)&&(e=t,t=""),at.func(e))n[t]=n[t]||[],n[t].push(e);else if(at.array(e))for(const i of e)Et(t,i,n);else if(at.object(e))for(const i in e){const r=Tt(i).map(e=>`${t}${e}`);Et(r,e[i],n)}return n}function Tt(t){return t.trim().split(/ +/)}function Mt(t,e){for(const n of e){if(t.immediatePropagationStopped)break;n(t)}}class zt{constructor(t){this.options=void 0,this.types={},this.propagationStopped=!1,this.immediatePropagationStopped=!1,this.global=void 0,this.options=vt({},t||{})}fire(t){let e;const n=this.global;(e=this.types[t.type])&&Mt(t,e),!t.propagationStopped&&n&&(e=n[t.type])&&Mt(t,e)}on(t,e){const n=Et(t,e);for(t in n)this.types[t]=dt(this.types[t]||[],n[t])}off(t,e){const n=Et(t,e);for(t in n){const e=this.types[t];if(e&&e.length)for(const i of n[t]){const t=e.indexOf(i);-1!==t&&e.splice(t,1)}}}getRect(t){return null}}function Ot(t,e){if(t.contains)return t.contains(e);while(e){if(e===t)return!0;e=e.parentNode}return!1}function Pt(t,e){while(at.element(t)){if(_t(t,e))return t;t=It(t)}return null}function It(t){let e=t.parentNode;if(at.docFrag(e)){while((e=e.host)&&at.docFrag(e));return e}return e}function _t(t,e){return q!==V&&(e=e.replace(/\/deep\//g," ")),t[ut.prefixedMatchesSelector](e)}function Dt(t,e,n){while(at.element(t)){if(_t(t,e))return!0;if(t=It(t),t===n)return _t(t,e)}return!1}function kt(t){return t.correspondingUseElement||t}function At(t){return t=t||q,{x:t.scrollX||t.document.documentElement.scrollLeft,y:t.scrollY||t.document.documentElement.scrollTop}}function Rt(t){const e=t instanceof G.SVGElement?t.getBoundingClientRect():t.getClientRects()[0];return e&&{left:e.left,right:e.right,top:e.top,bottom:e.bottom,width:e.width||e.right-e.left,height:e.height||e.bottom-e.top}}function jt(t){const e=Rt(t);if(!ut.isIOS7&&e){const n=At(Z(t));e.left+=n.x,e.right+=n.x,e.top+=n.y,e.bottom+=n.y}return e}function Ct(t){return!!at.string(t)&&(G.document.querySelector(t),!0)}function Ht(t,e,n){return"parent"===t?It(n):"self"===t?e.getRect(n):Pt(n,t)}function Lt(t,e,n,i){let r=t;return at.string(r)?r=Ht(r,e,n):at.func(r)&&(r=r(...i)),at.element(r)&&(r=jt(r)),r}function Nt(t){return t&&{x:"x"in t?t.x:t.left,y:"y"in t?t.y:t.top}}function Wt(t){return!t||"left"in t&&"top"in t||(t=vt({},t),t.left=t.x||0,t.top=t.y||0,t.right=t.right||t.left+t.width,t.bottom=t.bottom||t.top+t.height),t}function Bt(t){return!t||"x"in t&&"y"in t||(t=vt({},t),t.x=t.left||0,t.y=t.top||0,t.width=t.width||(t.right||0)-t.x,t.height=t.height||(t.bottom||0)-t.y),t}function Ft(t,e,n){t.left&&(e.left+=n.x),t.right&&(e.right+=n.x),t.top&&(e.top+=n.y),t.bottom&&(e.bottom+=n.y),e.width=e.right-e.left,e.height=e.bottom-e.top}var $t=function(t,e,n){const i=t.options[n],r=i&&i.origin,o=r||t.options.origin,s=Lt(o,t,e,[t&&e]);return Nt(s)||{x:0,y:0}},Gt=(t,e)=>Math.sqrt(t*t+e*e);class Yt{constructor(t){this.type=void 0,this.target=void 0,this.currentTarget=void 0,this.interactable=void 0,this._interaction=void 0,this.timeStamp=void 0,this.immediatePropagationStopped=!1,this.propagationStopped=!1,this._interaction=t}preventDefault(){}stopPropagation(){this.propagationStopped=!0}stopImmediatePropagation(){this.immediatePropagationStopped=this.propagationStopped=!0}}Object.defineProperty(Yt.prototype,"interaction",{get(){return this._interaction._proxy},set(){}});const Xt={base:{preventDefault:"auto",deltaSource:"page"},perAction:{enabled:!1,origin:{x:0,y:0}},actions:{}};class Vt extends Yt{constructor(t,e,n,i,r,o,s){super(t),this.target=void 0,this.currentTarget=void 0,this.relatedTarget=null,this.screenX=void 0,this.screenY=void 0,this.button=void 0,this.buttons=void 0,this.ctrlKey=void 0,this.shiftKey=void 0,this.altKey=void 0,this.metaKey=void 0,this.page=void 0,this.client=void 0,this.delta=void 0,this.rect=void 0,this.x0=void 0,this.y0=void 0,this.t0=void 0,this.dt=void 0,this.duration=void 0,this.clientX0=void 0,this.clientY0=void 0,this.velocity=void 0,this.speed=void 0,this.swipe=void 0,this.timeStamp=void 0,this.axes=void 0,this.preEnd=void 0,r=r||t.element;const a=t.interactable,c=(a&&a.options||Xt).deltaSource,l=$t(a,r,n),u="start"===i,h="end"===i,d=u?this:t.prevEvent,f=u?t.coords.start:h?{page:d.page,client:d.client,timeStamp:t.coords.cur.timeStamp}:t.coords.cur;this.page=vt({},f.page),this.client=vt({},f.client),this.rect=vt({},t.rect),this.timeStamp=f.timeStamp,h||(this.page.x-=l.x,this.page.y-=l.y,this.client.x-=l.x,this.client.y-=l.y),this.ctrlKey=e.ctrlKey,this.altKey=e.altKey,this.shiftKey=e.shiftKey,this.metaKey=e.metaKey,this.button=e.button,this.buttons=e.buttons,this.target=r,this.currentTarget=r,this.preEnd=o,this.type=s||n+(i||""),this.interactable=a,this.t0=u?t.pointers[t.pointers.length-1].downTime:d.t0,this.x0=t.coords.start.page.x-l.x,this.y0=t.coords.start.page.y-l.y,this.clientX0=t.coords.start.client.x-l.x,this.clientY0=t.coords.start.client.y-l.y,this.delta=u||h?{x:0,y:0}:{x:this[c].x-d[c].x,y:this[c].y-d[c].y},this.dt=t.coords.delta.timeStamp,this.duration=this.timeStamp-this.t0,this.velocity=vt({},t.coords.velocity[c]),this.speed=Gt(this.velocity.x,this.velocity.y),this.swipe=h||"inertiastart"===i?this.getSwipe():null}getSwipe(){const t=this._interaction;if(t.prevEvent.speed<600||this.timeStamp-t.prevEvent.timeStamp>150)return null;let e=180*Math.atan2(t.prevEvent.velocityY,t.prevEvent.velocityX)/Math.PI;const n=22.5;e<0&&(e+=360);const i=135-n<=e&&e<225+n,r=225-n<=e&&e<315+n,o=!i&&(315-n<=e||e<45+n),s=!r&&45-n<=e&&e<135+n;return{up:r,down:s,left:i,right:o,angle:e,speed:t.prevEvent.speed,velocity:{x:t.prevEvent.velocityX,y:t.prevEvent.velocityY}}}preventDefault(){}stopImmediatePropagation(){this.immediatePropagationStopped=this.propagationStopped=!0}stopPropagation(){this.propagationStopped=!0}}function qt(t,e){if(e.phaselessTypes[t])return!0;for(const n in e.map)if(0===t.indexOf(n)&&t.substr(n.length)in e.phases)return!0;return!1}Object.defineProperties(Vt.prototype,{pageX:{get(){return this.page.x},set(t){this.page.x=t}},pageY:{get(){return this.page.y},set(t){this.page.y=t}},clientX:{get(){return this.client.x},set(t){this.client.x=t}},clientY:{get(){return this.client.y},set(t){this.client.y=t}},dx:{get(){return this.delta.x},set(t){this.delta.x=t}},dy:{get(){return this.delta.y},set(t){this.delta.y=t}},velocityX:{get(){return this.velocity.x},set(t){this.velocity.x=t}},velocityY:{get(){return this.velocity.y},set(t){this.velocity.y=t}}});class Ut{get _defaults(){return{base:{},perAction:{},actions:{}}}constructor(t,e,n,i){this.options=void 0,this._actions=void 0,this.target=void 0,this.events=new zt,this._context=void 0,this._win=void 0,this._doc=void 0,this._scopeEvents=void 0,this._rectChecker=void 0,this._actions=e.actions,this.target=t,this._context=e.context||n,this._win=Z(Ct(t)?this._context:t),this._doc=this._win.document,this._scopeEvents=i,this.set(e)}setOnEvents(t,e){return at.func(e.onstart)&&this.on(t+"start",e.onstart),at.func(e.onmove)&&this.on(t+"move",e.onmove),at.func(e.onend)&&this.on(t+"end",e.onend),at.func(e.oninertiastart)&&this.on(t+"inertiastart",e.oninertiastart),this}updatePerActionListeners(t,e,n){(at.array(e)||at.object(e))&&this.off(t,e),(at.array(n)||at.object(n))&&this.on(t,n)}setPerAction(t,e){const n=this._defaults;for(const i in e){const r=i,o=this.options[t],s=e[r];"listeners"===r&&this.updatePerActionListeners(t,o.listeners,s),at.array(s)?o[r]=ft(s):at.plainObject(s)?(o[r]=vt(o[r]||{},mt(s)),at.object(n.perAction[r])&&"enabled"in n.perAction[r]&&(o[r].enabled=!1!==s.enabled)):at.bool(s)&&at.object(n.perAction[r])?o[r].enabled=s:o[r]=s}}getRect(t){return t=t||(at.element(this.target)?this.target:null),at.string(this.target)&&(t=t||this._context.querySelector(this.target)),jt(t)}rectChecker(t){return at.func(t)?(this._rectChecker=t,this.getRect=t=>{const e=vt({},this._rectChecker(t));return"width"in e||(e.width=e.right-e.left,e.height=e.bottom-e.top),e},this):null===t?(delete this.getRect,delete this._rectChecker,this):this.getRect}_backCompatOption(t,e){if(Ct(e)||at.object(e)){this.options[t]=e;for(const n in this._actions.map)this.options[n][t]=e;return this}return this.options[t]}origin(t){return this._backCompatOption("origin",t)}deltaSource(t){return"page"===t||"client"===t?(this.options.deltaSource=t,this):this.options.deltaSource}context(){return this._context}inContext(t){return this._context===t.ownerDocument||Ot(this._context,t)}testIgnoreAllow(t,e,n){return!this.testIgnore(t.ignoreFrom,e,n)&&this.testAllow(t.allowFrom,e,n)}testAllow(t,e,n){return!t||!!at.element(n)&&(at.string(t)?Dt(n,t,e):!!at.element(t)&&Ot(t,n))}testIgnore(t,e,n){return!(!t||!at.element(n))&&(at.string(t)?Dt(n,t,e):!!at.element(t)&&Ot(t,n))}fire(t){return this.events.fire(t),this}_onOff(t,e,n,i){at.object(e)&&!at.array(e)&&(i=n,n=null);const r="on"===t?"add":"remove",o=Et(e,n);for(let s in o){"wheel"===s&&(s=ut.wheelEvent);for(const e of o[s])qt(s,this._actions)?this.events[t](s,e):at.string(this.target)?this._scopeEvents[r+"Delegate"](this.target,this._context,s,e,i):this._scopeEvents[r](this.target,s,e,i)}return this}on(t,e,n){return this._onOff("on",t,e,n)}off(t,e,n){return this._onOff("off",t,e,n)}set(t){const e=this._defaults;at.object(t)||(t={}),this.options=mt(e.base);for(const n in this._actions.methodDict){const i=n,r=this._actions.methodDict[i];this.options[i]={},this.setPerAction(i,vt(vt({},e.perAction),e.actions[i])),this[r](t[i])}for(const n in t)at.func(this[n])&&this[n](t[n]);return this}unset(){if(at.string(this.target))for(const t in this._scopeEvents.delegatedEvents){const e=this._scopeEvents.delegatedEvents[t];for(let n=e.length-1;n>=0;n--){const{selector:i,context:r,listeners:o}=e[n];i===this.target&&r===this._context&&e.splice(n,1);for(let e=o.length-1;e>=0;e--)this._scopeEvents.removeDelegate(this.target,this._context,t,o[e][0],o[e][1])}}else this._scopeEvents.remove(this.target,"all")}}class Zt{constructor(t){this.list=[],this.selectorMap={},this.scope=void 0,this.scope=t,t.addListeners({"interactable:unset":({interactable:t})=>{const{target:e,_context:n}=t,i=at.string(e)?this.selectorMap[e]:e[this.scope.id],r=pt(i,t=>t.context===n);i[r]&&(i[r].context=null,i[r].interactable=null),i.splice(r,1)}})}new(t,e){e=vt(e||{},{actions:this.scope.actions});const n=new this.scope.Interactable(t,e,this.scope.document,this.scope.events),i={context:n._context,interactable:n};return this.scope.addDocument(n._doc),this.list.push(n),at.string(t)?(this.selectorMap[t]||(this.selectorMap[t]=[]),this.selectorMap[t].push(i)):(n.target[this.scope.id]||Object.defineProperty(t,this.scope.id,{value:[],configurable:!0}),t[this.scope.id].push(i)),this.scope.fire("interactable:new",{target:t,options:e,interactable:n,win:this.scope._win}),n}get(t,e){const n=e&&e.context||this.scope.document,i=at.string(t),r=i?this.selectorMap[t]:t[this.scope.id];if(!r)return null;const o=gt(r,e=>e.context===n&&(i||e.interactable.inContext(t)));return o&&o.interactable}forEachMatch(t,e){for(const n of this.list){let i;if((at.string(n.target)?at.element(t)&&_t(t,n.target):t===n.target)&&n.inContext(t)&&(i=e(n)),void 0!==i)return i}}}function Kt(t,e){for(const n in e){const i=Kt.prefixedPropREs;let r=!1;for(const t in i)if(0===n.indexOf(t)&&i[t].test(n)){r=!0;break}r||"function"===typeof e[n]||(t[n]=e[n])}return t}Kt.prefixedPropREs={webkit:/(Movement[XY]|Radius[XY]|RotationAngle|Force)$/,moz:/(Pressure)$/};var Jt=Kt;function Qt(t,e){t.page=t.page||{},t.page.x=e.page.x,t.page.y=e.page.y,t.client=t.client||{},t.client.x=e.client.x,t.client.y=e.client.y,t.timeStamp=e.timeStamp}function te(t,e,n){t.page.x=n.page.x-e.page.x,t.page.y=n.page.y-e.page.y,t.client.x=n.client.x-e.client.x,t.client.y=n.client.y-e.client.y,t.timeStamp=n.timeStamp-e.timeStamp}function ee(t,e){const n=Math.max(e.timeStamp/1e3,.001);t.page.x=e.page.x/n,t.page.y=e.page.y/n,t.client.x=e.client.x/n,t.client.y=e.client.y/n,t.timeStamp=n}function ne(t){t.page.x=0,t.page.y=0,t.client.x=0,t.client.y=0}function ie(t){return t instanceof G.Event||t instanceof G.Touch}function re(t,e,n){return n=n||{},t=t||"page",n.x=e[t+"X"],n.y=e[t+"Y"],n}function oe(t,e){return e=e||{x:0,y:0},ut.isOperaMobile&&ie(t)?(re("screen",t,e),e.x+=window.scrollX,e.y+=window.scrollY):re("page",t,e),e}function se(t,e){return e=e||{},ut.isOperaMobile&&ie(t)?re("screen",t,e):re("client",t,e),e}function ae(t){return at.number(t.pointerId)?t.pointerId:t.identifier}function ce(t,e,n){const i=e.length>1?ue(e):e[0];oe(i,t.page),se(i,t.client),t.timeStamp=n}function le(t){const e=[];return at.array(t)?(e[0]=t[0],e[1]=t[1]):"touchend"===t.type?1===t.touches.length?(e[0]=t.touches[0],e[1]=t.changedTouches[0]):0===t.touches.length&&(e[0]=t.changedTouches[0],e[1]=t.changedTouches[1]):(e[0]=t.touches[0],e[1]=t.touches[1]),e}function ue(t){const e={pageX:0,pageY:0,clientX:0,clientY:0,screenX:0,screenY:0};for(const n of t)for(const t in e)e[t]+=n[t];for(const n in e)e[n]/=t.length;return e}function he(t){if(!t.length)return null;const e=le(t),n=Math.min(e[0].pageX,e[1].pageX),i=Math.min(e[0].pageY,e[1].pageY),r=Math.max(e[0].pageX,e[1].pageX),o=Math.max(e[0].pageY,e[1].pageY);return{x:n,y:i,left:n,top:i,right:r,bottom:o,width:r-n,height:o-i}}function de(t,e){const n=e+"X",i=e+"Y",r=le(t),o=r[0][n]-r[1][n],s=r[0][i]-r[1][i];return Gt(o,s)}function fe(t,e){const n=e+"X",i=e+"Y",r=le(t),o=r[1][n]-r[0][n],s=r[1][i]-r[0][i],a=180*Math.atan2(s,o)/Math.PI;return a}function pe(t){return at.string(t.pointerType)?t.pointerType:at.number(t.pointerType)?[void 0,void 0,"touch","pen","mouse"][t.pointerType]:/touch/.test(t.type)||t instanceof G.Touch?"touch":"mouse"}function ge(t){const e=at.func(t.composedPath)?t.composedPath():t.path;return[kt(e?e[0]:t.target),kt(t.currentTarget)]}function me(){return{page:{x:0,y:0},client:{x:0,y:0},timeStamp:0}}function ve(t){const e=[],n={},i=[],r={add:o,remove:s,addDelegate:a,removeDelegate:c,delegateListener:l,delegateUseCapture:u,delegatedEvents:n,documents:i,targets:e,supportsOptions:!1,supportsPassive:!1};function o(t,n,i,o){const s=be(o);let a=gt(e,e=>e.eventTarget===t);a||(a={eventTarget:t,events:{}},e.push(a)),a.events[n]||(a.events[n]=[]),t.addEventListener&&!ht(a.events[n],i)&&(t.addEventListener(n,i,r.supportsOptions?s:s.capture),a.events[n].push(i))}function s(t,n,i,o){const a=be(o),c=pt(e,e=>e.eventTarget===t),l=e[c];if(!l||!l.events)return;if("all"===n){for(n in l.events)l.events.hasOwnProperty(n)&&s(t,n,"all");return}let u=!1;const h=l.events[n];if(h){if("all"===i){for(let e=h.length-1;e>=0;e--)s(t,n,h[e],a);return}for(let e=0;e<h.length;e++)if(h[e]===i){t.removeEventListener(n,i,r.supportsOptions?a:a.capture),h.splice(e,1),0===h.length&&(delete l.events[n],u=!0);break}}u&&!Object.keys(l.events).length&&e.splice(c,1)}function a(t,e,r,s,a){const c=be(a);if(!n[r]){n[r]=[];for(const t of i)o(t,r,l),o(t,r,u,!0)}const h=n[r];let d=gt(h,n=>n.selector===t&&n.context===e);d||(d={selector:t,context:e,listeners:[]},h.push(d)),d.listeners.push([s,c])}function c(t,e,i,r,o){const a=be(o),c=n[i];let h,d=!1;if(c)for(h=c.length-1;h>=0;h--){const n=c[h];if(n.selector===t&&n.context===e){const{listeners:t}=n;for(let n=t.length-1;n>=0;n--){const[o,{capture:f,passive:p}]=t[n];if(o===r&&f===a.capture&&p===a.passive){t.splice(n,1),t.length||(c.splice(h,1),s(e,i,l),s(e,i,u,!0)),d=!0;break}}if(d)break}}}function l(t,e){const i=be(e),r=new ye(t),o=n[t.type],[s]=ge(t);let a=s;while(at.element(a)){for(let t=0;t<o.length;t++){const e=o[t],{selector:n,context:c}=e;if(_t(a,n)&&Ot(c,s)&&Ot(c,a)){const{listeners:t}=e;r.currentTarget=a;for(const[e,{capture:n,passive:o}]of t)n===i.capture&&o===i.passive&&e(r)}}a=It(a)}}function u(t){return l.call(this,t,!0)}return t.document.createElement("div").addEventListener("test",null,{get capture(){return r.supportsOptions=!0},get passive(){return r.supportsPassive=!0}}),t.events=r,r}class ye{constructor(t){this.currentTarget=void 0,this.originalEvent=void 0,this.type=void 0,this.originalEvent=t,Jt(this,t)}preventOriginalDefault(){this.originalEvent.preventDefault()}stopPropagation(){this.originalEvent.stopPropagation()}stopImmediatePropagation(){this.originalEvent.stopImmediatePropagation()}}function be(t){if(!at.object(t))return{capture:!!t,passive:!1};const e=vt({},t);return e.capture=!!t.capture,e.passive=!!t.passive,e}var xe={id:"events",install:ve};function we(t,e){let n=!1;return function(){return n||(q.console.warn(e),n=!0),t.apply(this,arguments)}}function Se(t,e){return t.name=e.name,t.axis=e.axis,t.edges=e.edges,t}function Ee(t){const e=(n,i)=>{let r=t.interactables.get(n,i);return r||(r=t.interactables.new(n,i),r.events.global=e.globalEvents),r};return e.getPointerAverage=ue,e.getTouchBBox=he,e.getTouchDistance=de,e.getTouchAngle=fe,e.getElementRect=jt,e.getElementClientRect=Rt,e.matchesSelector=_t,e.closest=Pt,e.globalEvents={},e.version="1.10.2",e.scope=t,e.use=function(t,e){return this.scope.usePlugin(t,e),this},e.isSet=function(t,e){return!!this.scope.interactables.get(t,e&&e.context)},e.on=we((function(t,e,n){if(at.string(t)&&-1!==t.search(" ")&&(t=t.trim().split(/ +/)),at.array(t)){for(const i of t)this.on(i,e,n);return this}if(at.object(t)){for(const n in t)this.on(n,t[n],e);return this}return qt(t,this.scope.actions)?this.globalEvents[t]?this.globalEvents[t].push(e):this.globalEvents[t]=[e]:this.scope.events.add(this.scope.document,t,e,{options:n}),this}),"The interact.on() method is being deprecated"),e.off=we((function(t,e,n){if(at.string(t)&&-1!==t.search(" ")&&(t=t.trim().split(/ +/)),at.array(t)){for(const i of t)this.off(i,e,n);return this}if(at.object(t)){for(const n in t)this.off(n,t[n],e);return this}if(qt(t,this.scope.actions)){let n;t in this.globalEvents&&-1!==(n=this.globalEvents[t].indexOf(e))&&this.globalEvents[t].splice(n,1)}else this.scope.events.remove(this.scope.document,t,e,n);return this}),"The interact.off() method is being deprecated"),e.debug=function(){return this.scope},e.supportsTouch=function(){return ut.supportsTouch},e.supportsPointerEvent=function(){return ut.supportsPointerEvent},e.stop=function(){for(const t of this.scope.interactions.list)t.stop();return this},e.pointerMoveTolerance=function(t){return at.number(t)?(this.scope.interactions.pointerMoveTolerance=t,this):this.scope.interactions.pointerMoveTolerance},e.addDocument=function(t,e){this.scope.addDocument(t,e)},e.removeDocument=function(t){this.scope.removeDocument(t)},e}class Te{constructor(t,e,n,i,r){this.id=void 0,this.pointer=void 0,this.event=void 0,this.downTime=void 0,this.downTarget=void 0,this.id=t,this.pointer=e,this.event=n,this.downTime=i,this.downTarget=r}}let Me,ze;(function(t){t["interactable"]="",t["element"]="",t["prepared"]="",t["pointerIsDown"]="",t["pointerWasMoved"]="",t["_proxy"]=""})(Me||(Me={})),function(t){t["start"]="",t["move"]="",t["end"]="",t["stop"]="",t["interacting"]=""}(ze||(ze={}));let Oe=0;class Pe{get pointerMoveTolerance(){return 1}constructor({pointerType:t,scopeFire:e}){this.interactable=null,this.element=null,this.rect=void 0,this._rects=void 0,this.edges=void 0,this._scopeFire=void 0,this.prepared={name:null,axis:null,edges:null},this.pointerType=void 0,this.pointers=[],this.downEvent=null,this.downPointer={},this._latestPointer={pointer:null,event:null,eventTarget:null},this.prevEvent=null,this.pointerIsDown=!1,this.pointerWasMoved=!1,this._interacting=!1,this._ending=!1,this._stopped=!0,this._proxy=null,this.simulation=null,this.doMove=we((function(t){this.move(t)}),"The interaction.doMove() method has been renamed to interaction.move()"),this.coords={start:me(),prev:me(),cur:me(),delta:me(),velocity:me()},this._id=Oe++,this._scopeFire=e,this.pointerType=t;const n=this;this._proxy={};for(const i in Me)Object.defineProperty(this._proxy,i,{get(){return n[i]}});for(const i in ze)Object.defineProperty(this._proxy,i,{value:(...t)=>n[i](...t)});this._scopeFire("interactions:new",{interaction:this})}pointerDown(t,e,n){const i=this.updatePointer(t,e,n,!0),r=this.pointers[i];this._scopeFire("interactions:down",{pointer:t,event:e,eventTarget:n,pointerIndex:i,pointerInfo:r,type:"down",interaction:this})}start(t,e,n){return!(this.interacting()||!this.pointerIsDown||this.pointers.length<("gesture"===t.name?2:1)||!e.options[t.name].enabled)&&(Se(this.prepared,t),this.interactable=e,this.element=n,this.rect=e.getRect(n),this.edges=this.prepared.edges?vt({},this.prepared.edges):{left:!0,right:!0,top:!0,bottom:!0},this._stopped=!1,this._interacting=this._doPhase({interaction:this,event:this.downEvent,phase:"start"})&&!this._stopped,this._interacting)}pointerMove(t,e,n){this.simulation||this.modification&&this.modification.endResult||this.updatePointer(t,e,n,!1);const i=this.coords.cur.page.x===this.coords.prev.page.x&&this.coords.cur.page.y===this.coords.prev.page.y&&this.coords.cur.client.x===this.coords.prev.client.x&&this.coords.cur.client.y===this.coords.prev.client.y;let r,o;this.pointerIsDown&&!this.pointerWasMoved&&(r=this.coords.cur.client.x-this.coords.start.client.x,o=this.coords.cur.client.y-this.coords.start.client.y,this.pointerWasMoved=Gt(r,o)>this.pointerMoveTolerance);const s=this.getPointerIndex(t),a={pointer:t,pointerIndex:s,pointerInfo:this.pointers[s],event:e,type:"move",eventTarget:n,dx:r,dy:o,duplicate:i,interaction:this};i||ee(this.coords.velocity,this.coords.delta),this._scopeFire("interactions:move",a),i||this.simulation||(this.interacting()&&(a.type=null,this.move(a)),this.pointerWasMoved&&Qt(this.coords.prev,this.coords.cur))}move(t){t&&t.event||ne(this.coords.delta),t=vt({pointer:this._latestPointer.pointer,event:this._latestPointer.event,eventTarget:this._latestPointer.eventTarget,interaction:this},t||{}),t.phase="move",this._doPhase(t)}pointerUp(t,e,n,i){let r=this.getPointerIndex(t);-1===r&&(r=this.updatePointer(t,e,n,!1));const o=/cancel$/i.test(e.type)?"cancel":"up";this._scopeFire("interactions:"+o,{pointer:t,pointerIndex:r,pointerInfo:this.pointers[r],event:e,eventTarget:n,type:o,curEventTarget:i,interaction:this}),this.simulation||this.end(e),this.removePointer(t,e)}documentBlur(t){this.end(t),this._scopeFire("interactions:blur",{event:t,type:"blur",interaction:this})}end(t){let e;this._ending=!0,t=t||this._latestPointer.event,this.interacting()&&(e=this._doPhase({event:t,interaction:this,phase:"end"})),this._ending=!1,!0===e&&this.stop()}currentAction(){return this._interacting?this.prepared.name:null}interacting(){return this._interacting}stop(){this._scopeFire("interactions:stop",{interaction:this}),this.interactable=this.element=null,this._interacting=!1,this._stopped=!0,this.prepared.name=this.prevEvent=null}getPointerIndex(t){const e=ae(t);return"mouse"===this.pointerType||"pen"===this.pointerType?this.pointers.length-1:pt(this.pointers,t=>t.id===e)}getPointerInfo(t){return this.pointers[this.getPointerIndex(t)]}updatePointer(t,e,n,i){const r=ae(t);let o=this.getPointerIndex(t),s=this.pointers[o];return i=!1!==i&&(i||/(down|start)$/i.test(e.type)),s?s.pointer=t:(s=new Te(r,t,e,null,null),o=this.pointers.length,this.pointers.push(s)),ce(this.coords.cur,this.pointers.map(t=>t.pointer),this._now()),te(this.coords.delta,this.coords.prev,this.coords.cur),i&&(this.pointerIsDown=!0,s.downTime=this.coords.cur.timeStamp,s.downTarget=n,Jt(this.downPointer,t),this.interacting()||(Qt(this.coords.start,this.coords.cur),Qt(this.coords.prev,this.coords.cur),this.downEvent=e,this.pointerWasMoved=!1)),this._updateLatestPointer(t,e,n),this._scopeFire("interactions:update-pointer",{pointer:t,event:e,eventTarget:n,down:i,pointerInfo:s,pointerIndex:o,interaction:this}),o}removePointer(t,e){const n=this.getPointerIndex(t);if(-1===n)return;const i=this.pointers[n];this._scopeFire("interactions:remove-pointer",{pointer:t,event:e,eventTarget:null,pointerIndex:n,pointerInfo:i,interaction:this}),this.pointers.splice(n,1),this.pointerIsDown=!1}_updateLatestPointer(t,e,n){this._latestPointer.pointer=t,this._latestPointer.event=e,this._latestPointer.eventTarget=n}destroy(){this._latestPointer.pointer=null,this._latestPointer.event=null,this._latestPointer.eventTarget=null}_createPreparedEvent(t,e,n,i){return new Vt(this,t,this.prepared.name,e,this.element,n,i)}_fireEvent(t){this.interactable.fire(t),(!this.prevEvent||t.timeStamp>=this.prevEvent.timeStamp)&&(this.prevEvent=t)}_doPhase(t){const{event:e,phase:n,preEnd:i,type:r}=t,{rect:o}=this;o&&"move"===n&&(Ft(this.edges,o,this.coords.delta[this.interactable.options.deltaSource]),o.width=o.right-o.left,o.height=o.bottom-o.top);const s=this._scopeFire("interactions:before-action-"+n,t);if(!1===s)return!1;const a=t.iEvent=this._createPreparedEvent(e,n,i,r);return this._scopeFire("interactions:action-"+n,t),"start"===n&&(this.prevEvent=a),this._fireEvent(a),this._scopeFire("interactions:after-action-"+n,t),!0}_now(){return Date.now()}}var Ie=Pe;function _e(t){return/^(always|never|auto)$/.test(t)?(this.options.preventDefault=t,this):at.bool(t)?(this.options.preventDefault=t?"always":"never",this):this.options.preventDefault}function De(t,e,n){const i=t.options.preventDefault;if("never"!==i)if("always"!==i){if(e.events.supportsPassive&&/^touch(start|move)$/.test(n.type)){const t=Z(n.target).document,i=e.getDocOptions(t);if(!i||!i.events||!1!==i.events.passive)return}/^(mouse|pointer|touch)*(down|start)/i.test(n.type)||at.element(n.target)&&_t(n.target,"input,select,textarea,[contenteditable=true],[contenteditable=true] *")||n.preventDefault()}else n.preventDefault()}function ke({interaction:t,event:e}){t.interactable&&t.interactable.checkAndPreventDefault(e)}function Ae(t){const{Interactable:e}=t;e.prototype.preventDefault=_e,e.prototype.checkAndPreventDefault=function(e){return De(this,t,e)},t.interactions.docEvents.push({type:"dragstart",listener(e){for(const n of t.interactions.list)if(n.element&&(n.element===e.target||Ot(n.element,e.target)))return void n.interactable.checkAndPreventDefault(e)}})}var Re={id:"core/interactablePreventDefault",install:Ae,listeners:["down","move","up","cancel"].reduce((t,e)=>(t["interactions:"+e]=ke,t),{})};const je={methodOrder:["simulationResume","mouseOrPen","hasPointer","idle"],search(t){for(const e of je.methodOrder){const n=je[e](t);if(n)return n}return null},simulationResume({pointerType:t,eventType:e,eventTarget:n,scope:i}){if(!/down|start/i.test(e))return null;for(const r of i.interactions.list){let e=n;if(r.simulation&&r.simulation.allowResume&&r.pointerType===t)while(e){if(e===r.element)return r;e=It(e)}}return null},mouseOrPen({pointerId:t,pointerType:e,eventType:n,scope:i}){if("mouse"!==e&&"pen"!==e)return null;let r;for(const o of i.interactions.list)if(o.pointerType===e){if(o.simulation&&!Ce(o,t))continue;if(o.interacting())return o;r||(r=o)}if(r)return r;for(const o of i.interactions.list)if(o.pointerType===e&&(!/down/i.test(n)||!o.simulation))return o;return null},hasPointer({pointerId:t,scope:e}){for(const n of e.interactions.list)if(Ce(n,t))return n;return null},idle({pointerType:t,scope:e}){for(const n of e.interactions.list){if(1===n.pointers.length){const t=n.interactable;if(t&&(!t.options.gesture||!t.options.gesture.enabled))continue}else if(n.pointers.length>=2)continue;if(!n.interacting()&&t===n.pointerType)return n}return null}};function Ce(t,e){return t.pointers.some(({id:t})=>t===e)}var He=je;const Le=["pointerDown","pointerMove","pointerUp","updatePointer","removePointer","windowBlur"];function Ne(t){const e={};for(const o of Le)e[o]=We(o,t);const n=ut.pEventTypes;let i;function r(){for(const e of t.interactions.list)if(e.pointerIsDown&&"touch"===e.pointerType&&!e._interacting)for(const n of e.pointers)t.documents.some(({doc:t})=>Ot(t,n.downTarget))||e.removePointer(n.pointer,n.event)}i=G.PointerEvent?[{type:n.down,listener:r},{type:n.down,listener:e.pointerDown},{type:n.move,listener:e.pointerMove},{type:n.up,listener:e.pointerUp},{type:n.cancel,listener:e.pointerUp}]:[{type:"mousedown",listener:e.pointerDown},{type:"mousemove",listener:e.pointerMove},{type:"mouseup",listener:e.pointerUp},{type:"touchstart",listener:r},{type:"touchstart",listener:e.pointerDown},{type:"touchmove",listener:e.pointerMove},{type:"touchend",listener:e.pointerUp},{type:"touchcancel",listener:e.pointerUp}],i.push({type:"blur",listener(e){for(const n of t.interactions.list)n.documentBlur(e)}}),t.prevTouchTime=0,t.Interaction=class extends Ie{get pointerMoveTolerance(){return t.interactions.pointerMoveTolerance}set pointerMoveTolerance(e){t.interactions.pointerMoveTolerance=e}_now(){return t.now()}},t.interactions={list:[],new(e){e.scopeFire=(e,n)=>t.fire(e,n);const n=new t.Interaction(e);return t.interactions.list.push(n),n},listeners:e,docEvents:i,pointerMoveTolerance:1},t.usePlugin(Re)}function We(t,e){return function(n){const i=e.interactions.list,r=pe(n),[o,s]=ge(n),a=[];if(/^touch/.test(n.type)){e.prevTouchTime=e.now();for(const t of n.changedTouches){const i=t,c=ae(i),l={pointer:i,pointerId:c,pointerType:r,eventType:n.type,eventTarget:o,curEventTarget:s,scope:e},u=Be(l);a.push([l.pointer,l.eventTarget,l.curEventTarget,u])}}else{let t=!1;if(!ut.supportsPointerEvent&&/mouse/.test(n.type)){for(let e=0;e<i.length&&!t;e++)t="mouse"!==i[e].pointerType&&i[e].pointerIsDown;t=t||e.now()-e.prevTouchTime<500||0===n.timeStamp}if(!t){const t={pointer:n,pointerId:ae(n),pointerType:r,eventType:n.type,curEventTarget:s,eventTarget:o,scope:e},i=Be(t);a.push([t.pointer,t.eventTarget,t.curEventTarget,i])}}for(const[e,c,l,u]of a)u[t](e,n,c,l)}}function Be(t){const{pointerType:e,scope:n}=t,i=He.search(t),r={interaction:i,searchDetails:t};return n.fire("interactions:find",r),r.interaction||n.interactions.new({pointerType:e})}function Fe({doc:t,scope:e,options:n},i){const{interactions:{docEvents:r},events:o}=e,s=o[i];e.browser.isIOS&&!n.events&&(n.events={passive:!1});for(const c in o.delegatedEvents)s(t,c,o.delegateListener),s(t,c,o.delegateUseCapture,!0);const a=n&&n.events;for(const{type:c,listener:l}of r)s(t,c,l,a)}const $e={id:"core/interactions",install:Ne,listeners:{"scope:add-document":t=>Fe(t,"add"),"scope:remove-document":t=>Fe(t,"remove"),"interactable:unset":({interactable:t},e)=>{for(let n=e.interactions.list.length-1;n>=0;n--){const i=e.interactions.list[n];i.interactable===t&&(i.stop(),e.fire("interactions:destroy",{interaction:i}),i.destroy(),e.interactions.list.length>2&&e.interactions.list.splice(n,1))}}},onDocSignal:Fe,doOnInteractions:We,methodNames:Le};var Ge=$e;class Ye{constructor(){this.id="__interact_scope_"+Math.floor(100*Math.random()),this.isInitialized=!1,this.listenerMaps=[],this.browser=ut,this.defaults=mt(Xt),this.Eventable=zt,this.actions={map:{},phases:{start:!0,move:!0,end:!0},methodDict:{},phaselessTypes:{}},this.interactStatic=Ee(this),this.InteractEvent=Vt,this.Interactable=void 0,this.interactables=new Zt(this),this._win=void 0,this.document=void 0,this.window=void 0,this.documents=[],this._plugins={list:[],map:{}},this.onWindowUnload=t=>this.removeDocument(t.target);const t=this;this.Interactable=class extends Ut{get _defaults(){return t.defaults}set(e){return super.set(e),t.fire("interactable:set",{options:e,interactable:this}),this}unset(){super.unset(),t.interactables.list.splice(t.interactables.list.indexOf(this),1),t.fire("interactable:unset",{interactable:this})}}}addListeners(t,e){this.listenerMaps.push({id:e,map:t})}fire(t,e){for(const{map:{[t]:n}}of this.listenerMaps)if(n&&!1===n(e,this,t))return!1}init(t){return this.isInitialized?this:Xe(this,t)}pluginIsInstalled(t){return this._plugins.map[t.id]||-1!==this._plugins.list.indexOf(t)}usePlugin(t,e){if(!this.isInitialized)return this;if(this.pluginIsInstalled(t))return this;if(t.id&&(this._plugins.map[t.id]=t),this._plugins.list.push(t),t.install&&t.install(this,e),t.listeners&&t.before){let e=0;const n=this.listenerMaps.length,i=t.before.reduce((t,e)=>(t[e]=!0,t[Ve(e)]=!0,t),{});for(;e<n;e++){const t=this.listenerMaps[e].id;if(i[t]||i[Ve(t)])break}this.listenerMaps.splice(e,0,{id:t.id,map:t.listeners})}else t.listeners&&this.listenerMaps.push({id:t.id,map:t.listeners});return this}addDocument(t,e){if(-1!==this.getDocIndex(t))return!1;const n=Z(t);e=e?vt({},e):{},this.documents.push({doc:t,options:e}),this.events.documents.push(t),t!==this.document&&this.events.add(n,"unload",this.onWindowUnload),this.fire("scope:add-document",{doc:t,window:n,scope:this,options:e})}removeDocument(t){const e=this.getDocIndex(t),n=Z(t),i=this.documents[e].options;this.events.remove(n,"unload",this.onWindowUnload),this.documents.splice(e,1),this.events.documents.splice(e,1),this.fire("scope:remove-document",{doc:t,window:n,scope:this,options:i})}getDocIndex(t){for(let e=0;e<this.documents.length;e++)if(this.documents[e].doc===t)return e;return-1}getDocOptions(t){const e=this.getDocIndex(t);return-1===e?null:this.documents[e].options}now(){return(this.window.Date||Date).now()}}function Xe(t,e){return t.isInitialized=!0,U(e),G.init(e),ut.init(e),St.init(e),t.window=e,t.document=e.document,t.usePlugin(Ge),t.usePlugin(xe),t}function Ve(t){return t&&t.replace(/\/.*$/,"")}const qe=new Ye,Ue=qe.interactStatic;var Ze=Ue;const Ke=t=>qe.init(t);function Je(t){const{Interactable:e}=t;e.prototype.getAction=function(e,n,i,r){const o=Qe(this,n,i,r,t);return this.options.actionChecker?this.options.actionChecker(e,n,o,this,r,i):o},e.prototype.ignoreFrom=we((function(t){return this._backCompatOption("ignoreFrom",t)}),"Interactable.ignoreFrom() has been deprecated. Use Interactble.draggable({ignoreFrom: newValue})."),e.prototype.allowFrom=we((function(t){return this._backCompatOption("allowFrom",t)}),"Interactable.allowFrom() has been deprecated. Use Interactble.draggable({allowFrom: newValue})."),e.prototype.actionChecker=en,e.prototype.styleCursor=tn}function Qe(t,e,n,i,r){const o=t.getRect(i),s=e.buttons||{0:1,1:4,3:8,4:16}[e.button],a={action:null,interactable:t,interaction:n,element:i,rect:o,buttons:s};return r.fire("auto-start:check",a),a.action}function tn(t){return at.bool(t)?(this.options.styleCursor=t,this):null===t?(delete this.options.styleCursor,this):this.options.styleCursor}function en(t){return at.func(t)?(this.options.actionChecker=t,this):null===t?(delete this.options.actionChecker,this):this.options.actionChecker}"object"===typeof window&&window&&Ke(window);var nn={id:"auto-start/interactableMethods",install:Je};function rn(t){const{interactStatic:e,defaults:n}=t;t.usePlugin(nn),n.base.actionChecker=null,n.base.styleCursor=!0,vt(n.perAction,{manualStart:!1,max:1/0,maxPerElement:1,allowFrom:null,ignoreFrom:null,mouseButtons:1}),e.maxInteractions=e=>pn(e,t),t.autoStart={maxInteractions:1/0,withinInteractionLimit:fn,cursorElement:null}}function on({interaction:t,pointer:e,event:n,eventTarget:i},r){if(t.interacting())return;const o=hn(t,e,n,i,r);dn(t,o,r)}function sn({interaction:t,pointer:e,event:n,eventTarget:i},r){if("mouse"!==t.pointerType||t.pointerIsDown||t.interacting())return;const o=hn(t,e,n,i,r);dn(t,o,r)}function an(t,e){const{interaction:n}=t;if(!n.pointerIsDown||n.interacting()||!n.pointerWasMoved||!n.prepared.name)return;e.fire("autoStart:before-start",t);const{interactable:i}=n,r=n.prepared.name;r&&i&&(i.options[r].manualStart||!fn(i,n.element,n.prepared,e)?n.stop():(n.start(n.prepared,i,n.element),mn(n,e)))}function cn({interaction:t},e){const{interactable:n}=t;n&&n.options.styleCursor&&gn(t.element,"",e)}function ln(t,e,n,i,r){return e.testIgnoreAllow(e.options[t.name],n,i)&&e.options[t.name].enabled&&fn(e,n,t,r)?t:null}function un(t,e,n,i,r,o,s){for(let a=0,c=i.length;a<c;a++){const c=i[a],l=r[a],u=c.getAction(e,n,t,l);if(!u)continue;const h=ln(u,c,l,o,s);if(h)return{action:h,interactable:c,element:l}}return{action:null,interactable:null,element:null}}function hn(t,e,n,i,r){let o=[],s=[],a=i;function c(t){o.push(t),s.push(a)}while(at.element(a)){o=[],s=[],r.interactables.forEachMatch(a,c);const l=un(t,e,n,o,s,i,r);if(l.action&&!l.interactable.options[l.action.name].manualStart)return l;a=It(a)}return{action:null,interactable:null,element:null}}function dn(t,{action:e,interactable:n,element:i},r){e=e||{name:null},t.interactable=n,t.element=i,Se(t.prepared,e),t.rect=n&&e.name?n.getRect(i):null,mn(t,r),r.fire("autoStart:prepared",{interaction:t})}function fn(t,e,n,i){const r=t.options,o=r[n.name].max,s=r[n.name].maxPerElement,a=i.autoStart.maxInteractions;let c=0,l=0,u=0;if(!(o&&s&&a))return!1;for(const h of i.interactions.list){const i=h.prepared.name;if(h.interacting()){if(c++,c>=a)return!1;if(h.interactable===t){if(l+=i===n.name?1:0,l>=o)return!1;if(h.element===e&&(u++,i===n.name&&u>=s))return!1}}}return a>0}function pn(t,e){return at.number(t)?(e.autoStart.maxInteractions=t,this):e.autoStart.maxInteractions}function gn(t,e,n){const{cursorElement:i}=n.autoStart;i&&i!==t&&(i.style.cursor=""),t.ownerDocument.documentElement.style.cursor=e,t.style.cursor=e,n.autoStart.cursorElement=e?t:null}function mn(t,e){const{interactable:n,element:i,prepared:r}=t;if("mouse"!==t.pointerType||!n||!n.options.styleCursor)return void(e.autoStart.cursorElement&&gn(e.autoStart.cursorElement,"",e));let o="";if(r.name){const s=n.options[r.name].cursorChecker;o=at.func(s)?s(r,n,i,t._interacting):e.actions.map[r.name].getCursor(r)}gn(t.element,o||"",e)}const vn={id:"auto-start/base",before:["actions"],install:rn,listeners:{"interactions:down":on,"interactions:move":(t,e)=>{sn(t,e),an(t,e)},"interactions:stop":cn},maxInteractions:pn,withinInteractionLimit:fn,validateAction:ln};var yn=vn;function bn({interaction:t,eventTarget:e,dx:n,dy:i},r){if("drag"!==t.prepared.name)return;const o=Math.abs(n),s=Math.abs(i),a=t.interactable.options.drag,c=a.startAxis,l=o>s?"x":o<s?"y":"xy";if(t.prepared.axis="start"===a.lockAxis?l[0]:a.lockAxis,"xy"!==l&&"xy"!==c&&c!==l){t.prepared.name=null;let n=e;const i=function(i){if(i===t.interactable)return;const o=t.interactable.options.drag;if(!o.manualStart&&i.testIgnoreAllow(o,n,e)){const o=i.getAction(t.downPointer,t.downEvent,t,n);if(o&&"drag"===o.name&&xn(l,i)&&yn.validateAction(o,i,n,e,r))return i}};while(at.element(n)){const e=r.interactables.forEachMatch(n,i);if(e){t.prepared.name="drag",t.interactable=e,t.element=n;break}n=It(n)}}}function xn(t,e){if(!e)return!1;const n=e.options.drag.startAxis;return"xy"===t||"xy"===n||n===t}var wn={id:"auto-start/dragAxis",listeners:{"autoStart:before-start":bn}};function Sn(t){const{defaults:e}=t;t.usePlugin(yn),e.perAction.hold=0,e.perAction.delay=0}function En(t){const e=t.prepared&&t.prepared.name;if(!e)return null;const n=t.interactable.options;return n[e].hold||n[e].delay}const Tn={id:"auto-start/hold",install:Sn,listeners:{"interactions:new":({interaction:t})=>{t.autoStartHoldTimer=null},"autoStart:prepared":({interaction:t})=>{const e=En(t);e>0&&(t.autoStartHoldTimer=setTimeout(()=>{t.start(t.prepared,t.interactable,t.element)},e))},"interactions:move":({interaction:t,duplicate:e})=>{t.autoStartHoldTimer&&t.pointerWasMoved&&!e&&(clearTimeout(t.autoStartHoldTimer),t.autoStartHoldTimer=null)},"autoStart:before-start":({interaction:t})=>{const e=En(t);e>0&&(t.prepared.name=null)}},getHoldDuration:En};var Mn=Tn,zn={id:"auto-start",install(t){t.usePlugin(yn),t.usePlugin(Mn),t.usePlugin(wn)}};function On(t){const{actions:e,Interactable:n,defaults:i}=t;n.prototype.draggable=Dn.draggable,e.map.drag=Dn,e.methodDict.drag="draggable",i.actions.drag=Dn.defaults}function Pn({interaction:t}){if("drag"!==t.prepared.name)return;const e=t.prepared.axis;"x"===e?(t.coords.cur.page.y=t.coords.start.page.y,t.coords.cur.client.y=t.coords.start.client.y,t.coords.velocity.client.y=0,t.coords.velocity.page.y=0):"y"===e&&(t.coords.cur.page.x=t.coords.start.page.x,t.coords.cur.client.x=t.coords.start.client.x,t.coords.velocity.client.x=0,t.coords.velocity.page.x=0)}function In({iEvent:t,interaction:e}){if("drag"!==e.prepared.name)return;const n=e.prepared.axis;if("x"===n||"y"===n){const i="x"===n?"y":"x";t.page[i]=e.coords.start.page[i],t.client[i]=e.coords.start.client[i],t.delta[i]=0}}"object"===typeof window&&window&&Ke(window),Ze.use(zn);const _n=function(t){return at.object(t)?(this.options.drag.enabled=!1!==t.enabled,this.setPerAction("drag",t),this.setOnEvents("drag",t),/^(xy|x|y|start)$/.test(t.lockAxis)&&(this.options.drag.lockAxis=t.lockAxis),/^(xy|x|y)$/.test(t.startAxis)&&(this.options.drag.startAxis=t.startAxis),this):at.bool(t)?(this.options.drag.enabled=t,this):this.options.drag},Dn={id:"actions/drag",install:On,listeners:{"interactions:before-action-move":Pn,"interactions:action-resume":Pn,"interactions:action-move":In,"auto-start:check":t=>{const{interaction:e,interactable:n,buttons:i}=t,r=n.options.drag;if(r&&r.enabled&&(!e.pointerIsDown||!/mouse|pointer/.test(e.pointerType)||0!==(i&n.options.drag.mouseButtons)))return t.action={name:"drag",axis:"start"===r.lockAxis?r.startAxis:r.lockAxis},!1}},draggable:_n,beforeMove:Pn,move:In,defaults:{startAxis:"xy",lockAxis:"xy"},getCursor(){return"move"}};var kn=Dn;function An(t){const{actions:e,browser:n,Interactable:i,defaults:r}=t;Fn.cursors=Hn(n),Fn.defaultMargin=n.supportsTouch||n.supportsPointerEvent?20:10,i.prototype.resizable=function(e){return jn(this,e,t)},e.map.resize=Fn,e.methodDict.resize="resizable",r.actions.resize=Fn.defaults}function Rn(t){const{interaction:e,interactable:n,element:i,rect:r,buttons:o}=t;if(!r)return;const s=vt({},e.coords.cur.page),a=n.options.resize;if(a&&a.enabled&&(!e.pointerIsDown||!/mouse|pointer/.test(e.pointerType)||0!==(o&a.mouseButtons))){if(at.object(a.edges)){const n={left:!1,right:!1,top:!1,bottom:!1};for(const t in n)n[t]=Cn(t,a.edges[t],s,e._latestPointer.eventTarget,i,r,a.margin||Fn.defaultMargin);n.left=n.left&&!n.right,n.top=n.top&&!n.bottom,(n.left||n.right||n.top||n.bottom)&&(t.action={name:"resize",edges:n})}else{const e="y"!==a.axis&&s.x>r.right-Fn.defaultMargin,n="x"!==a.axis&&s.y>r.bottom-Fn.defaultMargin;(e||n)&&(t.action={name:"resize",axes:(e?"x":"")+(n?"y":"")})}return!t.action&&void 0}}function jn(t,e,n){return at.object(e)?(t.options.resize.enabled=!1!==e.enabled,t.setPerAction("resize",e),t.setOnEvents("resize",e),at.string(e.axis)&&/^x$|^y$|^xy$/.test(e.axis)?t.options.resize.axis=e.axis:null===e.axis&&(t.options.resize.axis=n.defaults.actions.resize.axis),at.bool(e.preserveAspectRatio)?t.options.resize.preserveAspectRatio=e.preserveAspectRatio:at.bool(e.square)&&(t.options.resize.square=e.square),t):at.bool(e)?(t.options.resize.enabled=e,t):t.options.resize}function Cn(t,e,n,i,r,o,s){if(!e)return!1;if(!0===e){const e=at.number(o.width)?o.width:o.right-o.left,i=at.number(o.height)?o.height:o.bottom-o.top;if(s=Math.min(s,Math.abs(("left"===t||"right"===t?e:i)/2)),e<0&&("left"===t?t="right":"right"===t&&(t="left")),i<0&&("top"===t?t="bottom":"bottom"===t&&(t="top")),"left"===t)return n.x<(e>=0?o.left:o.right)+s;if("top"===t)return n.y<(i>=0?o.top:o.bottom)+s;if("right"===t)return n.x>(e>=0?o.right:o.left)-s;if("bottom"===t)return n.y>(i>=0?o.bottom:o.top)-s}return!!at.element(i)&&(at.element(e)?e===i:Dt(i,e,r))}function Hn(t){return t.isIe9?{x:"e-resize",y:"s-resize",xy:"se-resize",top:"n-resize",left:"w-resize",bottom:"s-resize",right:"e-resize",topleft:"se-resize",bottomright:"se-resize",topright:"ne-resize",bottomleft:"ne-resize"}:{x:"ew-resize",y:"ns-resize",xy:"nwse-resize",top:"ns-resize",left:"ew-resize",bottom:"ns-resize",right:"ew-resize",topleft:"nwse-resize",bottomright:"nwse-resize",topright:"nesw-resize",bottomleft:"nesw-resize"}}function Ln({iEvent:t,interaction:e}){if("resize"!==e.prepared.name||!e.prepared.edges)return;const n=t,i=e.rect;e._rects={start:vt({},i),corrected:vt({},i),previous:vt({},i),delta:{left:0,right:0,width:0,top:0,bottom:0,height:0}},n.edges=e.prepared.edges,n.rect=e._rects.corrected,n.deltaRect=e._rects.delta}function Nn({iEvent:t,interaction:e}){if("resize"!==e.prepared.name||!e.prepared.edges)return;const n=t,i=e.interactable.options.resize,r=i.invert,o="reposition"===r||"negate"===r,s=e.rect,{start:a,corrected:c,delta:l,previous:u}=e._rects;if(vt(u,c),o){if(vt(c,s),"reposition"===r){if(c.top>c.bottom){const t=c.top;c.top=c.bottom,c.bottom=t}if(c.left>c.right){const t=c.left;c.left=c.right,c.right=t}}}else c.top=Math.min(s.top,a.bottom),c.bottom=Math.max(s.bottom,a.top),c.left=Math.min(s.left,a.right),c.right=Math.max(s.right,a.left);c.width=c.right-c.left,c.height=c.bottom-c.top;for(const h in c)l[h]=c[h]-u[h];n.edges=e.prepared.edges,n.rect=c,n.deltaRect=l}function Wn({iEvent:t,interaction:e}){if("resize"!==e.prepared.name||!e.prepared.edges)return;const n=t;n.edges=e.prepared.edges,n.rect=e._rects.corrected,n.deltaRect=e._rects.delta}function Bn({iEvent:t,interaction:e}){if("resize"!==e.prepared.name||!e.resizeAxes)return;const n=e.interactable.options,i=t;n.resize.square?("y"===e.resizeAxes?i.delta.x=i.delta.y:i.delta.y=i.delta.x,i.axes="xy"):(i.axes=e.resizeAxes,"x"===e.resizeAxes?i.delta.y=0:"y"===e.resizeAxes&&(i.delta.x=0))}"object"===typeof window&&window&&Ke(window),Ze.use(kn);const Fn={id:"actions/resize",before:["actions/drag"],install:An,listeners:{"interactions:new":({interaction:t})=>{t.resizeAxes="xy"},"interactions:action-start":t=>{Ln(t),Bn(t)},"interactions:action-move":t=>{Nn(t),Bn(t)},"interactions:action-end":Wn,"auto-start:check":Rn},defaults:{square:!1,preserveAspectRatio:!1,axis:"xy",margin:NaN,edges:null,invert:"none"},cursors:null,getCursor({edges:t,axis:e,name:n}){const i=Fn.cursors;let r=null;if(e)r=i[n+e];else if(t){let e="";for(const n of["top","bottom","left","right"])t[n]&&(e+=n);r=i[e]}return r},defaultMargin:null};var $n=Fn;"object"===typeof window&&window&&Ke(window),Ze.use($n);var Gn=()=>{},Yn=()=>{},Xn=t=>{const e=[["x","y"],["left","top"],["right","bottom"],["width","height"]].filter(([e,n])=>e in t||n in t),n=(n,i)=>{const{range:r,limits:o={left:-1/0,right:1/0,top:-1/0,bottom:1/0},offset:s={x:0,y:0}}=t,a={range:r,grid:t,x:null,y:null};for(const[c,l]of e){const e=Math.round((n-s.x)/t[c]),r=Math.round((i-s.y)/t[l]);a[c]=Math.max(o.left,Math.min(o.right,e*t[c]+s.x)),a[l]=Math.max(o.top,Math.min(o.bottom,r*t[l]+s.y))}return a};return n.grid=t,n.coordFields=e,n};const Vn={id:"snappers",install(t){const{interactStatic:e}=t;e.snappers=vt(e.snappers||{},i),e.createSnapGrid=e.snappers.grid}};var qn=Vn;class Un{constructor(t){this.states=[],this.startOffset={left:0,right:0,top:0,bottom:0},this.startDelta=null,this.result=null,this.endResult=null,this.edges=void 0,this.interaction=void 0,this.interaction=t,this.result=Zn()}start({phase:t},e){const{interaction:n}=this,i=Kn(n);this.prepareStates(i),this.edges=vt({},n.edges),this.startOffset=Jn(n.rect,e),this.startDelta={x:0,y:0};const r={phase:t,pageCoords:e,preEnd:!1};this.result=Zn(),this.startAll(r);const o=this.result=this.setAll(r);return o}fillArg(t){const{interaction:e}=this;t.interaction=e,t.interactable=e.interactable,t.element=e.element,t.rect=t.rect||e.rect,t.edges=this.edges,t.startOffset=this.startOffset}startAll(t){this.fillArg(t);for(const e of this.states)e.methods.start&&(t.state=e,e.methods.start(t))}setAll(t){this.fillArg(t);const{phase:e,preEnd:n,skipModifiers:i,rect:r}=t;t.coords=vt({},t.pageCoords),t.rect=vt({},r);const o=i?this.states.slice(i):this.states,s=Zn(t.coords,t.rect);for(const l of o){const{options:i}=l,r=vt({},t.coords);let o=null;l.methods.set&&this.shouldDo(i,n,e)&&(t.state=l,o=l.methods.set(t),Ft(this.interaction.edges,t.rect,{x:t.coords.x-r.x,y:t.coords.y-r.y})),s.eventProps.push(o)}s.delta.x=t.coords.x-t.pageCoords.x,s.delta.y=t.coords.y-t.pageCoords.y,s.rectDelta.left=t.rect.left-r.left,s.rectDelta.right=t.rect.right-r.right,s.rectDelta.top=t.rect.top-r.top,s.rectDelta.bottom=t.rect.bottom-r.bottom;const a=this.result.coords,c=this.result.rect;if(a&&c){const t=s.rect.left!==c.left||s.rect.right!==c.right||s.rect.top!==c.top||s.rect.bottom!==c.bottom;s.changed=t||a.x!==s.coords.x||a.y!==s.coords.y}return s}applyToInteraction(t){const{interaction:e}=this,{phase:n}=t,i=e.coords.cur,r=e.coords.start,{result:o,startDelta:s}=this,a=o.delta;"start"===n&&vt(this.startDelta,o.delta);for(const[u,h]of[[r,s],[i,a]])u.page.x+=h.x,u.page.y+=h.y,u.client.x+=h.x,u.client.y+=h.y;const{rectDelta:c}=this.result,l=t.rect||e.rect;l.left+=c.left,l.right+=c.right,l.top+=c.top,l.bottom+=c.bottom,l.width=l.right-l.left,l.height=l.bottom-l.top}setAndApply(t){const{interaction:e}=this,{phase:n,preEnd:i,skipModifiers:r}=t,o=this.setAll({preEnd:i,phase:n,pageCoords:t.modifiedCoords||e.coords.cur.page});if(this.result=o,!o.changed&&(!r||r<this.states.length)&&e.interacting())return!1;if(t.modifiedCoords){const{page:n}=e.coords.cur,i={x:t.modifiedCoords.x-n.x,y:t.modifiedCoords.y-n.y};o.coords.x+=i.x,o.coords.y+=i.y,o.delta.x+=i.x,o.delta.y+=i.y}this.applyToInteraction(t)}beforeEnd(t){const{interaction:e,event:n}=t,i=this.states;if(!i||!i.length)return;let r=!1;for(const o of i){t.state=o;const{options:e,methods:n}=o,i=n.beforeEnd&&n.beforeEnd(t);if(i)return this.endResult=i,!1;r=r||!r&&this.shouldDo(e,!0,t.phase,!0)}r&&e.move({event:n,preEnd:!0})}stop(t){const{interaction:e}=t;if(!this.states||!this.states.length)return;const n=vt({states:this.states,interactable:e.interactable,element:e.element,rect:null},t);this.fillArg(n);for(const i of this.states)n.state=i,i.methods.stop&&i.methods.stop(n);this.states=null,this.endResult=null}prepareStates(t){this.states=[];for(let e=0;e<t.length;e++){const{options:n,methods:i,name:r}=t[e];this.states.push({options:n,methods:i,index:e,name:r})}return this.states}restoreInteractionCoords({interaction:{coords:t,rect:e,modification:n}}){if(!n.result)return;const{startDelta:i}=n,{delta:r,rectDelta:o}=n.result,s=[[t.start,i],[t.cur,r]];for(const[a,c]of s)a.page.x-=c.x,a.page.y-=c.y,a.client.x-=c.x,a.client.y-=c.y;e.left-=o.left,e.right-=o.right,e.top-=o.top,e.bottom-=o.bottom}shouldDo(t,e,n,i){return!(!t||!1===t.enabled||i&&!t.endOnly||t.endOnly&&!e||"start"===n&&!t.setStart)}copyFrom(t){this.startOffset=t.startOffset,this.startDelta=t.startDelta,this.edges=t.edges,this.states=t.states.map(t=>mt(t)),this.result=Zn(vt({},t.result.coords),vt({},t.result.rect))}destroy(){for(const t in this)this[t]=null}}function Zn(t,e){return{rect:e,coords:t,delta:{x:0,y:0},rectDelta:{left:0,right:0,top:0,bottom:0},eventProps:[],changed:!0}}function Kn(t){const e=t.interactable.options[t.prepared.name],n=e.modifiers;return n&&n.length?n:["snap","snapSize","snapEdges","restrict","restrictEdges","restrictSize"].map(t=>{const n=e[t];return n&&n.enabled&&{options:n,methods:n._methods}}).filter(t=>!!t)}function Jn(t,e){return t?{left:e.x-t.left,top:e.y-t.top,right:t.right-e.x,bottom:t.bottom-e.y}:{left:0,top:0,right:0,bottom:0}}function Qn(t,e){const{defaults:n}=t,i={start:t.start,set:t.set,beforeEnd:t.beforeEnd,stop:t.stop},r=t=>{const r=t||{};r.enabled=!1!==r.enabled;for(const e in n)e in r||(r[e]=n[e]);const o={options:r,methods:i,name:e,enable:()=>(r.enabled=!0,o),disable:()=>(r.enabled=!1,o)};return o};return e&&"string"===typeof e&&(r._defaults=n,r._methods=i),r}function ti({iEvent:t,interaction:{modification:{result:e}}}){e&&(t.modifiers=e.eventProps)}const ei={id:"modifiers/base",before:["actions"],install:t=>{t.defaults.perAction.modifiers=[]},listeners:{"interactions:new":({interaction:t})=>{t.modification=new Un(t)},"interactions:before-action-start":t=>{const{modification:e}=t.interaction;e.start(t,t.interaction.coords.start.page),t.interaction.edges=e.edges,e.applyToInteraction(t)},"interactions:before-action-move":t=>t.interaction.modification.setAndApply(t),"interactions:before-action-end":t=>t.interaction.modification.beforeEnd(t),"interactions:action-start":ti,"interactions:action-move":ti,"interactions:action-end":ti,"interactions:after-action-start":t=>t.interaction.modification.restoreInteractionCoords(t),"interactions:after-action-move":t=>t.interaction.modification.restoreInteractionCoords(t),"interactions:stop":t=>t.interaction.modification.stop(t)}};var ni=ei;const ii={start(t){const{state:e,rect:n,edges:i,pageCoords:r}=t;let{ratio:o}=e.options;const{equalDelta:s,modifiers:a}=e.options;"preserve"===o&&(o=n.width/n.height),e.startCoords=vt({},r),e.startRect=vt({},n),e.ratio=o,e.equalDelta=s;const c=e.linkedEdges={top:i.top||i.left&&!i.bottom,left:i.left||i.top&&!i.right,bottom:i.bottom||i.right&&!i.top,right:i.right||i.bottom&&!i.left};if(e.xIsPrimaryAxis=!(!i.left&&!i.right),e.equalDelta)e.edgeSign=(c.left?1:-1)*(c.top?1:-1);else{const t=e.xIsPrimaryAxis?c.top:c.left;e.edgeSign=t?-1:1}if(vt(t.edges,c),!a||!a.length)return;const l=new Un(t.interaction);l.copyFrom(t.interaction.modification),l.prepareStates(a),e.subModification=l,l.startAll({...t})},set(t){const{state:e,rect:n,coords:i}=t,r=vt({},i),o=e.equalDelta?ri:oi;if(o(e,e.xIsPrimaryAxis,i,n),!e.subModification)return null;const s=vt({},n);Ft(e.linkedEdges,s,{x:i.x-r.x,y:i.y-r.y});const a=e.subModification.setAll({...t,rect:s,edges:e.linkedEdges,pageCoords:i,prevCoords:i,prevRect:s}),{delta:c}=a;if(a.changed){const t=Math.abs(c.x)>Math.abs(c.y);o(e,t,a.coords,a.rect),vt(i,a.coords)}return a.eventProps},defaults:{ratio:"preserve",equalDelta:!1,modifiers:[],enabled:!1}};function ri({startCoords:t,edgeSign:e},n,i){n?i.y=t.y+(i.x-t.x)*e:i.x=t.x+(i.y-t.y)*e}function oi({startRect:t,startCoords:e,ratio:n,edgeSign:i},r,o,s){if(r){const r=s.width/n;o.y=e.y+(r-t.height)*i}else{const r=s.height*n;o.x=e.x+(r-t.width)*i}}var si=Qn(ii,"aspectRatio");const ai=()=>{};ai._defaults={};var ci=ai;function li({rect:t,startOffset:e,state:n,interaction:i,pageCoords:r}){const{options:o}=n,{elementRect:s}=o,a=vt({left:0,top:0,right:0,bottom:0},o.offset||{});if(t&&s){const n=hi(o.restriction,i,r);if(n){const e=n.right-n.left-t.width,i=n.bottom-n.top-t.height;e<0&&(a.left+=e,a.right+=e),i<0&&(a.top+=i,a.bottom+=i)}a.left+=e.left-t.width*s.left,a.top+=e.top-t.height*s.top,a.right+=e.right-t.width*(1-s.right),a.bottom+=e.bottom-t.height*(1-s.bottom)}n.offset=a}function ui({coords:t,interaction:e,state:n}){const{options:i,offset:r}=n,o=hi(i.restriction,e,t);if(!o)return;const s=Wt(o);t.x=Math.max(Math.min(s.right-r.right,t.x),s.left+r.left),t.y=Math.max(Math.min(s.bottom-r.bottom,t.y),s.top+r.top)}function hi(t,e,n){return at.func(t)?Lt(t,e.interactable,e.element,[n.x,n.y,e]):Lt(t,e.interactable,e.element)}const di={restriction:null,elementRect:null,offset:null,endOnly:!1,enabled:!1},fi={start:li,set:ui,defaults:di};var pi=Qn(fi,"restrict");const gi={top:1/0,left:1/0,bottom:-1/0,right:-1/0},mi={top:-1/0,left:-1/0,bottom:1/0,right:1/0};function vi({interaction:t,startOffset:e,state:n}){const{options:i}=n;let r;if(i){const e=hi(i.offset,t,t.coords.start.page);r=Nt(e)}r=r||{x:0,y:0},n.offset={top:r.y+e.top,left:r.x+e.left,bottom:r.y-e.bottom,right:r.x-e.right}}function yi({coords:t,edges:e,interaction:n,state:i}){const{offset:r,options:o}=i;if(!e)return;const s=vt({},t),a=hi(o.inner,n,s)||{},c=hi(o.outer,n,s)||{};bi(a,gi),bi(c,mi),e.top?t.y=Math.min(Math.max(c.top+r.top,s.y),a.top+r.top):e.bottom&&(t.y=Math.max(Math.min(c.bottom+r.bottom,s.y),a.bottom+r.bottom)),e.left?t.x=Math.min(Math.max(c.left+r.left,s.x),a.left+r.left):e.right&&(t.x=Math.max(Math.min(c.right+r.right,s.x),a.right+r.right))}function bi(t,e){for(const n of["top","left","bottom","right"])n in t||(t[n]=e[n]);return t}const xi={inner:null,outer:null,offset:null,endOnly:!1,enabled:!1},wi={noInner:gi,noOuter:mi,start:vi,set:yi,defaults:xi};var Si=Qn(wi,"restrictEdges");const Ei=vt({get elementRect(){return{top:0,left:0,bottom:1,right:1}},set elementRect(t){}},fi.defaults),Ti={start:fi.start,set:fi.set,defaults:Ei};var Mi=Qn(Ti,"restrictRect");const zi={width:-1/0,height:-1/0},Oi={width:1/0,height:1/0};function Pi(t){return wi.start(t)}function Ii(t){const{interaction:e,state:n,rect:i,edges:r}=t,{options:o}=n;if(!r)return;const s=Bt(hi(o.min,e,t.coords))||zi,a=Bt(hi(o.max,e,t.coords))||Oi;n.options={endOnly:o.endOnly,inner:vt({},wi.noInner),outer:vt({},wi.noOuter)},r.top?(n.options.inner.top=i.bottom-s.height,n.options.outer.top=i.bottom-a.height):r.bottom&&(n.options.inner.bottom=i.top+s.height,n.options.outer.bottom=i.top+a.height),r.left?(n.options.inner.left=i.right-s.width,n.options.outer.left=i.right-a.width):r.right&&(n.options.inner.right=i.left+s.width,n.options.outer.right=i.left+a.width),wi.set(t),n.options=o}const _i={min:null,max:null,endOnly:!1,enabled:!1},Di={start:Pi,set:Ii,defaults:_i};var ki=Qn(Di,"restrictSize");function Ai(t){const{interaction:e,interactable:n,element:i,rect:r,state:o,startOffset:s}=t,{options:a}=o,c=a.offsetWithOrigin?ji(t):{x:0,y:0};let l;if("startCoords"===a.offset)l={x:e.coords.start.page.x,y:e.coords.start.page.y};else{const t=Lt(a.offset,n,i,[e]);l=Nt(t)||{x:0,y:0},l.x+=c.x,l.y+=c.y}const{relativePoints:u}=a;o.offsets=r&&u&&u.length?u.map((t,e)=>({index:e,relativePoint:t,x:s.left-r.width*t.x+l.x,y:s.top-r.height*t.y+l.y})):[vt({index:0,relativePoint:null},l)]}function Ri(t){const{interaction:e,coords:n,state:i}=t,{options:r,offsets:o}=i,s=$t(e.interactable,e.element,e.prepared.name),a=vt({},n),c=[];r.offsetWithOrigin||(a.x-=s.x,a.y-=s.y);for(const u of o){const t=a.x-u.x,n=a.y-u.y;for(let i=0,o=r.targets.length;i<o;i++){const o=r.targets[i];let s;s=at.func(o)?o(t,n,e._proxy,u,i):o,s&&c.push({x:(at.number(s.x)?s.x:t)+u.x,y:(at.number(s.y)?s.y:n)+u.y,range:at.number(s.range)?s.range:r.range,source:o,index:i,offset:u})}}const l={target:null,inRange:!1,distance:0,range:0,delta:{x:0,y:0}};for(const u of c){const t=u.range,e=u.x-a.x,n=u.y-a.y,i=Gt(e,n);let r=i<=t;t===1/0&&l.inRange&&l.range!==1/0&&(r=!1),l.target&&!(r?l.inRange&&t!==1/0?i/t<l.distance/l.range:t===1/0&&l.range!==1/0||i<l.distance:!l.inRange&&i<l.distance)||(l.target=u,l.distance=i,l.range=t,l.inRange=r,l.delta.x=e,l.delta.y=n)}return l.inRange&&(n.x=l.target.x,n.y=l.target.y),i.closest=l,l}function ji(t){const{element:e}=t.interaction,n=Nt(Lt(t.state.options.origin,null,null,[e])),i=n||$t(t.interactable,e,t.interaction.prepared.name);return i}const Ci={range:1/0,targets:null,offset:null,offsetWithOrigin:!0,origin:null,relativePoints:null,endOnly:!1,enabled:!1},Hi={start:Ai,set:Ri,defaults:Ci};var Li=Qn(Hi,"snap");function Ni(t){const{state:e,edges:n}=t,{options:i}=e;if(!n)return null;t.state={options:{targets:null,relativePoints:[{x:n.left?0:1,y:n.top?0:1}],offset:i.offset||"self",origin:{x:0,y:0},range:i.range}},e.targetFields=e.targetFields||[["width","height"],["x","y"]],Hi.start(t),e.offsets=t.state.offsets,t.state=e}function Wi(t){const{interaction:e,state:n,coords:i}=t,{options:r,offsets:o}=n,s={x:i.x-o[0].x,y:i.y-o[0].y};n.options=vt({},r),n.options.targets=[];for(const c of r.targets||[]){let t;if(t=at.func(c)?c(s.x,s.y,e):c,t){for(const[e,i]of n.targetFields)if(e in t||i in t){t.x=t[e],t.y=t[i];break}n.options.targets.push(t)}}const a=Hi.set(t);return n.options=r,a}const Bi={range:1/0,targets:null,offset:null,endOnly:!1,enabled:!1},Fi={start:Ni,set:Wi,defaults:Bi};var $i=Qn(Fi,"snapSize");function Gi(t){const{edges:e}=t;return e?(t.state.targetFields=t.state.targetFields||[[e.left?"left":"right",e.top?"top":"bottom"]],Fi.start(t)):null}const Yi={start:Gi,set:Fi.set,defaults:vt(mt(Fi.defaults),{targets:null,range:null,offset:{x:0,y:0}})};var Xi=Qn(Yi,"snapEdges"),Vi={aspectRatio:si,restrictEdges:Si,restrict:pi,restrictRect:Mi,restrictSize:ki,snapEdges:Xi,snap:Li,snapSize:$i,spring:ci,avoid:ci,transform:ci,rubberband:ci};const qi={id:"modifiers",install(t){const{interactStatic:e}=t;t.usePlugin(ni),t.usePlugin(qn),e.modifiers=Vi;for(const n in Vi){const{_defaults:e,_methods:i}=Vi[n];e._methods=i,t.defaults.perAction[n]=e}}};var Ui,Zi=qi;"object"===typeof window&&window&&Ke(window),Ze.use(Zi),function(t){t["touchAction"]="touchAction",t["boxSizing"]="boxSizing",t["noListeners"]="noListeners"}(Ui||(Ui={}));const Ki="[interact.js] ",Ji={touchAction:"https://developer.mozilla.org/en-US/docs/Web/CSS/touch-action",boxSizing:"https://developer.mozilla.org/en-US/docs/Web/CSS/box-sizing"},Qi=!1;function tr(t,{logger:e}={}){const{Interactable:n,defaults:i}=t;t.logger=e||console,i.base.devTools={ignore:{}},n.prototype.devTools=function(t){return t?(vt(this.options.devTools,t),this):this.options.devTools}}const er=[{name:Ui.touchAction,perform({element:t}){return!ir(t,"touchAction",/pan-|pinch|none/)},getInfo({element:t}){return[t,Ji.touchAction]},text:'Consider adding CSS "touch-action: none" to this element\n'},{name:Ui.boxSizing,perform(t){const{element:e}=t;return"resize"===t.prepared.name&&e instanceof G.HTMLElement&&!nr(e,"boxSizing",/border-box/)},text:'Consider adding CSS "box-sizing: border-box" to this resizable element',getInfo({element:t}){return[t,Ji.boxSizing]}},{name:Ui.noListeners,perform(t){const e=t.prepared.name,n=t.interactable.events.types[e+"move"]||[];return!n.length},getInfo(t){return[t.prepared.name,t.interactable]},text:"There are no listeners set for this action"}];function nr(t,e,n){const i=t.style[e]||q.getComputedStyle(t)[e];return n.test((i||"").toString())}function ir(t,e,n){let i=t;while(at.element(i)){if(nr(i,e,n))return!0;i=It(i)}return!1}const rr="dev-tools",or=Qi?{id:rr,install:()=>{}}:{id:rr,install:tr,listeners:{"interactions:action-start":({interaction:t},e)=>{for(const n of er){const i=t.interactable&&t.interactable.options;i&&i.devTools&&i.devTools.ignore[n.name]||!n.perform(t)||e.logger.warn(Ki+n.text,...n.getInfo(t))}}},checks:er,CheckName:Ui,links:Ji,prefix:Ki};var sr=or;"object"===typeof window&&window&&Ke(window),Ze.use(sr);var ar={name:"GridItem",props:{isDraggable:{type:Boolean,required:!1,default:null},isResizable:{type:Boolean,required:!1,default:null},static:{type:Boolean,required:!1,default:!1},minH:{type:Number,required:!1,default:1},minW:{type:Number,required:!1,default:1},maxH:{type:Number,required:!1,default:1/0},maxW:{type:Number,required:!1,default:1/0},x:{type:Number,required:!0},y:{type:Number,required:!0},w:{type:Number,required:!0},h:{type:Number,required:!0},i:{required:!0},dragIgnoreFrom:{type:String,required:!1,default:"a, button"},dragAllowFrom:{type:String,required:!1,default:null},resizeIgnoreFrom:{type:String,required:!1,default:"a, button"},preserveAspectRatio:{type:Boolean,required:!1,default:!1}},inject:["eventBus","layout"],data:function(){return{cols:1,containerWidth:100,rowHeight:30,margin:[10,10],maxRows:1/0,draggable:null,resizable:null,useCssTransforms:!0,useStyleCursor:!0,isDragging:!1,dragging:null,isResizing:!1,resizing:null,lastX:NaN,lastY:NaN,lastW:NaN,lastH:NaN,style:{},rtl:!1,dragEventSet:!1,resizeEventSet:!1,previousW:null,previousH:null,previousX:null,previousY:null,innerX:this.x,innerY:this.y,innerW:this.w,innerH:this.h}},created:function(){var t=this,e=this;e.updateWidthHandler=function(t){e.updateWidth(t)},e.compactHandler=function(t){e.compact(t)},e.setDraggableHandler=function(t){null===e.isDraggable&&(e.draggable=t)},e.setResizableHandler=function(t){null===e.isResizable&&(e.resizable=t)},e.setRowHeightHandler=function(t){e.rowHeight=t},e.setMaxRowsHandler=function(t){e.maxRows=t},e.directionchangeHandler=function(){t.rtl="rtl"===N(),t.compact()},e.setColNum=function(t){e.cols=parseInt(t)},this.eventBus.on("updateWidth",e.updateWidthHandler),this.eventBus.on("compact",e.compactHandler),this.eventBus.on("setDraggable",e.setDraggableHandler),this.eventBus.on("setResizable",e.setResizableHandler),this.eventBus.on("setRowHeight",e.setRowHeightHandler),this.eventBus.on("setMaxRows",e.setMaxRowsHandler),this.eventBus.on("directionchange",e.directionchangeHandler),this.eventBus.on("setColNum",e.setColNum),this.rtl="rtl"===N()},beforeUnmount:function(){var t=this;this.eventBus.off("updateWidth",t.updateWidthHandler),this.eventBus.off("compact",t.compactHandler),this.eventBus.off("setDraggable",t.setDraggableHandler),this.eventBus.off("setResizable",t.setResizableHandler),this.eventBus.off("setRowHeight",t.setRowHeightHandler),this.eventBus.off("setMaxRows",t.setMaxRowsHandler),this.eventBus.off("directionchange",t.directionchangeHandler),this.eventBus.off("setColNum",t.setColNum),this.interactObj&&this.interactObj.unset()},mounted:function(){this.layout.responsive&&this.layout.lastBreakpoint?this.cols=A(this.layout.lastBreakpoint,this.layout.cols):this.cols=this.layout.colNum,this.rowHeight=this.layout.rowHeight,this.containerWidth=null!==this.layout.width?this.layout.width:100,this.margin=void 0!==this.layout.margin?this.layout.margin:[10,10],this.maxRows=this.layout.maxRows,null===this.isDraggable?this.draggable=this.layout.isDraggable:this.draggable=this.isDraggable,null===this.isResizable?this.resizable=this.layout.isResizable:this.resizable=this.isResizable,this.useCssTransforms=this.layout.useCssTransforms,this.useStyleCursor=this.layout.useStyleCursor,this.createStyle()},watch:{isDraggable:function(){this.draggable=this.isDraggable},static:function(){this.tryMakeDraggable(),this.tryMakeResizable()},draggable:function(){this.tryMakeDraggable()},isResizable:function(){this.resizable=this.isResizable},resizable:function(){this.tryMakeResizable()},rowHeight:function(){this.createStyle(),this.emitContainerResized()},cols:function(){this.tryMakeResizable(),this.createStyle(),this.emitContainerResized()},containerWidth:function(){this.tryMakeResizable(),this.createStyle(),this.emitContainerResized()},x:function(t){this.innerX=t,this.createStyle()},y:function(t){this.innerY=t,this.createStyle()},h:function(t){this.innerH=t,this.createStyle()},w:function(t){this.innerW=t,this.createStyle()},renderRtl:function(){this.tryMakeResizable(),this.createStyle()},minH:function(){this.tryMakeResizable()},maxH:function(){this.tryMakeResizable()},minW:function(){this.tryMakeResizable()},maxW:function(){this.tryMakeResizable()},"$parent.margin":function(t){!t||t[0]==this.margin[0]&&t[1]==this.margin[1]||(this.margin=t.map((function(t){return Number(t)})),this.createStyle(),this.emitContainerResized())}},computed:{classObj:function(){return{"vue-resizable":this.resizableAndNotStatic,static:this.static,resizing:this.isResizing,"vue-draggable-dragging":this.isDragging,cssTransforms:this.useCssTransforms,"render-rtl":this.renderRtl,"disable-userselect":this.isDragging,"no-touch":this.isAndroid&&this.draggableOrResizableAndNotStatic}},resizableAndNotStatic:function(){return this.resizable&&!this.static},draggableOrResizableAndNotStatic:function(){return(this.draggable||this.resizable)&&!this.static},isAndroid:function(){return-1!==navigator.userAgent.toLowerCase().indexOf("android")},renderRtl:function(){return this.layout.isMirrored?!this.rtl:this.rtl},resizableHandleClass:function(){return this.renderRtl?"vue-resizable-handle vue-rtl-resizable-handle":"vue-resizable-handle"}},methods:{createStyle:function(){this.x+this.w>this.cols?(this.innerX=0,this.innerW=this.w>this.cols?this.cols:this.w):(this.innerX=this.x,this.innerW=this.w);var t,e=this.calcPosition(this.innerX,this.innerY,this.innerW,this.innerH);this.isDragging&&(e.top=this.dragging.top,this.renderRtl?e.right=this.dragging.left:e.left=this.dragging.left),this.isResizing&&(e.width=this.resizing.width,e.height=this.resizing.height),t=this.useCssTransforms?this.renderRtl?E(e.top,e.right,e.width,e.height):S(e.top,e.left,e.width,e.height):this.renderRtl?M(e.top,e.right,e.width,e.height):T(e.top,e.left,e.width,e.height),this.style=t},emitContainerResized:function(){for(var t={},e=0,n=["width","height"];e<n.length;e++){var i=n[e],r=this.style[i],o=r.match(/^(\d+)px$/);if(!o)return;t[i]=o[1]}this.$emit("container-resized",this.i,this.h,this.w,t.height,t.width)},handleResize:function(t){if(!this.static){var e=P(t);if(null!=e){var n,i=e.x,r=e.y,o={width:0,height:0};switch(t.type){case"resizestart":this.previousW=this.innerW,this.previousH=this.innerH,n=this.calcPosition(this.innerX,this.innerY,this.innerW,this.innerH),o.width=n.width,o.height=n.height,this.resizing=o,this.isResizing=!0;break;case"resizemove":var s=_(this.lastW,this.lastH,i,r);this.renderRtl?o.width=this.resizing.width-s.deltaX:o.width=this.resizing.width+s.deltaX,o.height=this.resizing.height+s.deltaY,this.resizing=o;break;case"resizeend":n=this.calcPosition(this.innerX,this.innerY,this.innerW,this.innerH),o.width=n.width,o.height=n.height,this.resizing=null,this.isResizing=!1;break}n=this.calcWH(o.height,o.width),n.w<this.minW&&(n.w=this.minW),n.w>this.maxW&&(n.w=this.maxW),n.h<this.minH&&(n.h=this.minH),n.h>this.maxH&&(n.h=this.maxH),n.h<1&&(n.h=1),n.w<1&&(n.w=1),this.lastW=i,this.lastH=r,this.innerW===n.w&&this.innerH===n.h||this.$emit("resize",this.i,n.h,n.w,o.height,o.width),"resizeend"!==t.type||this.previousW===this.innerW&&this.previousH===this.innerH||this.$emit("resized",this.i,n.h,n.w,o.height,o.width),this.eventBus.emit("resizeEvent",{eventType:t.type,i:this.i,x:this.innerX,y:this.innerY,h:n.h,w:n.w})}}},handleDrag:function(t){if(!this.static&&!this.isResizing){var e=P(t);if(null!==e){var n,i=e.x,r=e.y,o={top:0,left:0};switch(t.type){case"dragstart":this.previousX=this.innerX,this.previousY=this.innerY;var s=t.target.offsetParent.getBoundingClientRect(),a=t.target.getBoundingClientRect();this.renderRtl?o.left=-1*(a.right-s.right):o.left=a.left-s.left,o.top=a.top-s.top,this.dragging=o,this.isDragging=!0;break;case"dragend":if(!this.isDragging)return;var c=t.target.offsetParent.getBoundingClientRect(),l=t.target.getBoundingClientRect();this.renderRtl?o.left=-1*(l.right-c.right):o.left=l.left-c.left,o.top=l.top-c.top,this.dragging=null,this.isDragging=!1;break;case"dragmove":var u=_(this.lastX,this.lastY,i,r);this.renderRtl?o.left=this.dragging.left-u.deltaX:o.left=this.dragging.left+u.deltaX,o.top=this.dragging.top+u.deltaY,this.dragging=o;break}n=(this.renderRtl,this.calcXY(o.top,o.left)),this.lastX=i,this.lastY=r,this.innerX===n.x&&this.innerY===n.y||this.$emit("move",this.i,n.x,n.y),"dragend"!==t.type||this.previousX===this.innerX&&this.previousY===this.innerY||this.$emit("moved",this.i,n.x,n.y),this.eventBus.emit("dragEvent",{eventType:t.type,i:this.i,x:n.x,y:n.y,h:this.innerH,w:this.innerW})}}},calcPosition:function(t,e,n,i){var r,o=this.calcColWidth();return r=this.renderRtl?{right:Math.round(o*t+(t+1)*this.margin[0]),top:Math.round(this.rowHeight*e+(e+1)*this.margin[1]),width:n===1/0?n:Math.round(o*n+Math.max(0,n-1)*this.margin[0]),height:i===1/0?i:Math.round(this.rowHeight*i+Math.max(0,i-1)*this.margin[1])}:{left:Math.round(o*t+(t+1)*this.margin[0]),top:Math.round(this.rowHeight*e+(e+1)*this.margin[1]),width:n===1/0?n:Math.round(o*n+Math.max(0,n-1)*this.margin[0]),height:i===1/0?i:Math.round(this.rowHeight*i+Math.max(0,i-1)*this.margin[1])},r},calcXY:function(t,e){var n=this.calcColWidth(),i=Math.round((e-this.margin[0])/(n+this.margin[0])),r=Math.round((t-this.margin[1])/(this.rowHeight+this.margin[1]));return i=Math.max(Math.min(i,this.cols-this.innerW),0),r=Math.max(Math.min(r,this.maxRows-this.innerH),0),{x:i,y:r}},calcColWidth:function(){var t=(this.containerWidth-this.margin[0]*(this.cols+1))/this.cols;return t},calcWH:function(t,e){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=this.calcColWidth(),r=Math.round((e+this.margin[0])/(i+this.margin[0])),o=0;return o=n?Math.ceil((t+this.margin[1])/(this.rowHeight+this.margin[1])):Math.round((t+this.margin[1])/(this.rowHeight+this.margin[1])),r=Math.max(Math.min(r,this.cols-this.innerX),0),o=Math.max(Math.min(o,this.maxRows-this.innerY),0),{w:r,h:o}},updateWidth:function(t,e){this.containerWidth=t,void 0!==e&&null!==e&&(this.cols=e)},compact:function(){this.createStyle()},tryMakeDraggable:function(){var t=this;if(null!==this.interactObj&&void 0!==this.interactObj||(this.interactObj=Ze(this.$refs.item),this.useStyleCursor||this.interactObj.styleCursor(!1)),this.draggable&&!this.static){var e={ignoreFrom:this.dragIgnoreFrom,allowFrom:this.dragAllowFrom};this.interactObj.draggable(e),this.dragEventSet||(this.dragEventSet=!0,this.interactObj.on("dragstart dragmove dragend",(function(e){t.handleDrag(e)})))}else this.interactObj.draggable({enabled:!1})},tryMakeResizable:function(){var t=this;if(null!==this.interactObj&&void 0!==this.interactObj||(this.interactObj=Ze(this.$refs.item),this.useStyleCursor||this.interactObj.styleCursor(!1)),this.resizable&&!this.static){var e=this.calcPosition(0,0,this.maxW,this.maxH),n=this.calcPosition(0,0,this.minW,this.minH),i={edges:{left:!1,right:"."+this.resizableHandleClass.trim().replace(" ","."),bottom:"."+this.resizableHandleClass.trim().replace(" ","."),top:!1},ignoreFrom:this.resizeIgnoreFrom,restrictSize:{min:{height:n.height,width:n.width},max:{height:e.height,width:e.width}}};this.preserveAspectRatio&&(i.modifiers=[Ze.modifiers.aspectRatio({ratio:"preserve"})]),this.interactObj.resizable(i),this.resizeEventSet||(this.resizeEventSet=!0,this.interactObj.on("resizestart resizemove resizeend",(function(e){t.handleResize(e)})))}else this.interactObj.resizable({enabled:!1})},autoSize:function(){this.previousW=this.innerW,this.previousH=this.innerH;var t=this.$slots().default[0].elm.getBoundingClientRect(),e=this.calcWH(t.height,t.width,!0);e.w<this.minW&&(e.w=this.minW),e.w>this.maxW&&(e.w=this.maxW),e.h<this.minH&&(e.h=this.minH),e.h>this.maxH&&(e.h=this.maxH),e.h<1&&(e.h=1),e.w<1&&(e.w=1),this.innerW===e.w&&this.innerH===e.h||this.$emit("resize",this.i,e.h,e.w,t.height,t.width),this.previousW===e.w&&this.previousH===e.h||(this.$emit("resized",this.i,e.h,e.w,t.height,t.width),this.eventBus.emit("resizeEvent",{eventType:"resizeend",i:this.i,x:this.innerX,y:this.innerY,h:e.h,w:e.w}))}}},cr=(n("083e"),n("6b0d")),lr=n.n(cr);const ur=lr()(ar,[["render",c]]);var hr=ur;function dr(t,e,n,i,r,o){var s=Object(a["resolveComponent"])("grid-item");return Object(a["openBlock"])(),Object(a["createBlock"])("div",{ref:"item",class:"vue-grid-layout",style:t.mergedStyle},[Object(a["renderSlot"])(t.$slots,"default"),Object(a["withDirectives"])(Object(a["createVNode"])(s,{class:"vue-grid-placeholder",x:t.placeholder.x,y:t.placeholder.y,w:t.placeholder.w,h:t.placeholder.h,i:t.placeholder.i},null,8,["x","y","w","h","i"]),[[a["vShow"],t.isDragging]])],4)}n("8e6e"),n("fca0");var fr=n("85f2"),pr=n.n(fr);function gr(t,e,n){return e in t?pr()(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}var mr=function(t){return{all:t=t||new Map,on:function(e,n){var i=t.get(e);i&&i.push(n)||t.set(e,[n])},off:function(e,n){var i=t.get(e);i&&i.splice(i.indexOf(n)>>>0,1)},emit:function(e,n){(t.get(e)||[]).slice().map((function(t){t(n)})),(t.get("*")||[]).slice().map((function(t){t(e,n)}))}}};function vr(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);e&&(i=i.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,i)}return n}function yr(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?vr(Object(n),!0).forEach((function(e){gr(t,e,n[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):vr(Object(n)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))}))}return t}var br=n("eec4"),xr={name:"GridLayout",provide:function(){return{eventBus:this.eventBus,layout:this}},components:{GridItem:hr},props:{autoSize:{type:Boolean,default:!0},colNum:{type:Number,default:12},rowHeight:{type:Number,default:150},maxRows:{type:Number,default:1/0},margin:{type:Array,default:function(){return[10,10]}},isDraggable:{type:Boolean,default:!0},isResizable:{type:Boolean,default:!0},isMirrored:{type:Boolean,default:!1},useCssTransforms:{type:Boolean,default:!0},verticalCompact:{type:Boolean,default:!0},layout:{type:Array,required:!0},responsive:{type:Boolean,default:!1},responsiveLayouts:{type:Object,default:function(){return{}}},breakpoints:{type:Object,default:function(){return{lg:1200,md:996,sm:768,xs:480,xxs:0}}},cols:{type:Object,default:function(){return{lg:12,md:10,sm:6,xs:4,xxs:2}}},preventCollision:{type:Boolean,default:!1},useStyleCursor:{type:Boolean,default:!0}},data:function(){return{eventBus:mr(),width:null,mergedStyle:{},lastLayoutLength:0,isDragging:!1,placeholder:{x:0,y:0,w:0,h:0,i:-1},layouts:{},lastBreakpoint:null,originalLayout:null}},created:function(){var t=this;t.resizeEventHandler=function(e){var n=e.eventType,i=e.i,r=e.x,o=e.y,s=e.h,a=e.w;t.resizeEvent(n,i,r,o,s,a)},t.dragEventHandler=function(e){var n=e.eventType,i=e.i,r=e.x,o=e.y,s=e.h,a=e.w;t.dragEvent(n,i,r,o,s,a)},t.eventBus.on("resizeEvent",t.resizeEventHandler),t.eventBus.on("dragEvent",t.dragEventHandler),t.$emit("layout-created",t.layout)},beforeUnmount:function(){this.eventBus.off("resizeEvent",this.resizeEventHandler),this.eventBus.off("dragEvent",this.dragEventHandler),B("resize",this.onWindowResize),this.erd&&this.erd.uninstall(this.$refs.item)},beforeMount:function(){this.$emit("layout-before-mount",this.layout)},mounted:function(){this.$emit("layout-mounted",this.layout),this.$nextTick((function(){O(this.layout),this.originalLayout=this.layout;var t=this;this.$nextTick((function(){t.onWindowResize(),t.initResponsiveFeatures(),W("resize",t.onWindowResize),f(t.layout,t.verticalCompact),t.$emit("layout-updated",t.layout),t.updateHeight(),t.$nextTick((function(){this.erd=br({strategy:"scroll",callOnAdd:!1}),this.erd.listenTo(t.$refs.item,(function(){t.onWindowResize()}))}))}))}))},watch:{width:function(t,e){var n=this;this.$nextTick((function(){var t=this;this.eventBus.emit("updateWidth",this.width),null===e&&this.$nextTick((function(){t.$emit("layout-ready",n.layout)})),this.updateHeight()}))},layout:function(){this.layoutUpdate()},colNum:function(t){this.eventBus.emit("setColNum",t)},rowHeight:function(){this.eventBus.emit("setRowHeight",this.rowHeight)},isDraggable:function(){this.eventBus.emit("setDraggable",this.isDraggable)},isResizable:function(){this.eventBus.emit("setResizable",this.isResizable)},responsive:function(){this.responsive||(this.$emit("update:layout",this.originalLayout),this.eventBus.emit("setColNum",this.colNum)),this.onWindowResize()},maxRows:function(){this.eventBus.emit("setMaxRows",this.maxRows)},margin:function(){this.updateHeight()}},methods:{layoutUpdate:function(){if(void 0!==this.layout&&null!==this.originalLayout){if(this.layout.length!==this.originalLayout.length){var t=this.findDifference(this.layout,this.originalLayout);t.length>0&&(this.layout.length>this.originalLayout.length?this.originalLayout=this.originalLayout.concat(t):this.originalLayout=this.originalLayout.filter((function(e){return!t.some((function(t){return e.i===t.i}))}))),this.lastLayoutLength=this.layout.length,this.initResponsiveFeatures()}f(this.layout,this.verticalCompact),this.eventBus.emit("updateWidth",this.width),this.updateHeight(),this.$emit("layout-updated",this.layout)}},updateHeight:function(){this.mergedStyle={height:this.containerHeight()}},onWindowResize:function(){null!==this.$refs&&null!==this.$refs.item&&void 0!==this.$refs.item&&(this.width=this.$refs.item.offsetWidth),this.eventBus.emit("resizeEvent",{})},containerHeight:function(){if(this.autoSize){var t=l(this.layout)*(this.rowHeight+this.margin[1])+this.margin[1]+"px";return t}},dragEvent:function(t,e,n,i,r,o){var s=m(this.layout,e);void 0!==s&&null!==s||(s={x:0,y:0}),"dragmove"===t||"dragstart"===t?(this.placeholder.i=e,this.placeholder.x=s.x,this.placeholder.y=s.y,this.placeholder.w=o,this.placeholder.h=r,this.$nextTick((function(){this.isDragging=!0})),this.eventBus.emit("updateWidth",this.width)):this.$nextTick((function(){this.isDragging=!1})),this.$emit("update:layout",x(this.layout,s,n,i,!0,this.preventCollision)),f(this.layout,this.verticalCompact),this.eventBus.emit("compact"),this.updateHeight(),"dragend"===t&&this.$emit("layout-updated",this.layout)},resizeEvent:function(t,e,n,i,r,o){var s,a=m(this.layout,e);if(void 0!==a&&null!==a||(a={h:0,w:0}),this.preventCollision){var c=y(this.layout,yr(yr({},a),{},{w:o,h:r})).filter((function(t){return t.i!==a.i}));if(s=c.length>0,s){var l=1/0,u=1/0;c.forEach((function(t){t.x>a.x&&(l=Math.min(l,t.x)),t.y>a.y&&(u=Math.min(u,t.y))})),Number.isFinite(l)&&(a.w=l-a.x),Number.isFinite(u)&&(a.h=u-a.y)}}s||(a.w=o,a.h=r),"resizestart"===t||"resizemove"===t?(this.placeholder.i=e,this.placeholder.x=n,this.placeholder.y=i,this.placeholder.w=a.w,this.placeholder.h=a.h,this.$nextTick((function(){this.isDragging=!0})),this.eventBus.emit("updateWidth",this.width)):this.$nextTick((function(){this.isDragging=!1})),this.responsive&&this.responsiveGridLayout(),f(this.layout,this.verticalCompact),this.eventBus.emit("compact"),this.updateHeight(),"resizeend"===t&&this.$emit("layout-updated",this.layout)},responsiveGridLayout:function(){var t=k(this.breakpoints,this.width),e=A(t,this.cols);null==this.lastBreakpoint||this.layouts[this.lastBreakpoint]||(this.layouts[this.lastBreakpoint]=u(this.layout));var n=R(this.originalLayout,this.layouts,this.breakpoints,t,this.lastBreakpoint,e,this.verticalCompact);this.layouts[t]=n,this.lastBreakpoint!==t&&this.$emit("breakpoint-changed",t,n),this.$emit("update:layout",n),this.lastBreakpoint=t,this.eventBus.emit("setColNum",A(t,this.cols))},initResponsiveFeatures:function(){this.layouts=Object.assign({},this.responsiveLayouts)},findDifference:function(t,e){var n=t.filter((function(t){return!e.some((function(e){return t.i===e.i}))})),i=e.filter((function(e){return!t.some((function(t){return e.i===t.i}))}));return n.concat(i)}}};n("6521");const wr=lr()(xr,[["render",dr]]);var Sr=wr,Er=function(t){t.component("grid-layout",Sr),t.component("grid-item",hr)};Er.GridItem=hr,Er.GridLayout=Sr;var Tr=Er;e["default"]=Tr},fca0:function(t,e,n){var i=n("5ca1"),r=n("7726").isFinite;i(i.S,"Number",{isFinite:function(t){return"number"==typeof t&&r(t)}})},fdef:function(t,e){t.exports="\t\n\v\f\r   ᠎              \u2028\u2029\ufeff"}})["default"]}));
 //# sourceMappingURL=vue-grid-layout.umd.min.js.map
\ No newline at end of file
diff --git a/dist/vue-grid-layout.umd.min.js.map b/dist/vue-grid-layout.umd.min.js.map
index 4d4c3e71..fc4d9f79 100644
--- a/dist/vue-grid-layout.umd.min.js.map
+++ b/dist/vue-grid-layout.umd.min.js.map
@@ -1 +1 @@
-{"version":3,"sources":["webpack://VueGridLayout/webpack/universalModuleDefinition","webpack://VueGridLayout/webpack/bootstrap","webpack://VueGridLayout/./node_modules/core-js/modules/_iter-define.js","webpack://VueGridLayout/./node_modules/core-js/modules/_string-at.js","webpack://VueGridLayout/./node_modules/core-js/modules/_advance-string-index.js","webpack://VueGridLayout/./src/components/GridItem.vue?d411","webpack://VueGridLayout/./node_modules/core-js/modules/_flags.js","webpack://VueGridLayout/./node_modules/core-js/modules/_object-keys.js","webpack://VueGridLayout/./node_modules/core-js/modules/_object-gopd.js","webpack://VueGridLayout/./node_modules/core-js/modules/_object-dps.js","webpack://VueGridLayout/./node_modules/element-resize-detector/src/detection-strategy/object.js","webpack://VueGridLayout/./node_modules/element-resize-detector/src/browser-detector.js","webpack://VueGridLayout/./node_modules/core-js/modules/_fix-re-wks.js","webpack://VueGridLayout/./node_modules/core-js/modules/_dom-create.js","webpack://VueGridLayout/./node_modules/core-js/modules/_classof.js","webpack://VueGridLayout/./node_modules/css-loader/dist/runtime/api.js","webpack://VueGridLayout/./node_modules/core-js/modules/_object-gops.js","webpack://VueGridLayout/./node_modules/core-js/modules/_redefine.js","webpack://VueGridLayout/./node_modules/core-js/modules/_object-create.js","webpack://VueGridLayout/./node_modules/core-js/modules/_wks.js","webpack://VueGridLayout/./node_modules/element-resize-detector/src/id-generator.js","webpack://VueGridLayout/./node_modules/core-js/modules/_library.js","webpack://VueGridLayout/./node_modules/core-js/modules/_cof.js","webpack://VueGridLayout/./node_modules/core-js/modules/_strict-method.js","webpack://VueGridLayout/./node_modules/core-js/modules/_hide.js","webpack://VueGridLayout/./node_modules/core-js/modules/_object-gpo.js","webpack://VueGridLayout/./node_modules/core-js/modules/_iter-create.js","webpack://VueGridLayout/./node_modules/core-js/modules/es6.object.keys.js","webpack://VueGridLayout/./node_modules/core-js/modules/_to-integer.js","webpack://VueGridLayout/./node_modules/core-js/modules/_property-desc.js","webpack://VueGridLayout/./node_modules/core-js/modules/es6.regexp.match.js","webpack://VueGridLayout/./src/components/GridItem.vue?3b34","webpack://VueGridLayout/./node_modules/vue-style-loader/lib/listToStyles.js","webpack://VueGridLayout/./node_modules/vue-style-loader/lib/addStylesClient.js","webpack://VueGridLayout/./node_modules/element-resize-detector/src/listener-handler.js","webpack://VueGridLayout/./node_modules/core-js/modules/_to-object.js","webpack://VueGridLayout/./node_modules/element-resize-detector/src/id-handler.js","webpack://VueGridLayout/./node_modules/batch-processor/src/utils.js","webpack://VueGridLayout/./node_modules/core-js/modules/_regexp-exec.js","webpack://VueGridLayout/./node_modules/core-js/modules/_object-pie.js","webpack://VueGridLayout/./node_modules/core-js/modules/_shared.js","webpack://VueGridLayout/./node_modules/core-js/modules/es6.array.sort.js","webpack://VueGridLayout/./node_modules/element-resize-detector/src/element-utils.js","webpack://VueGridLayout/./node_modules/core-js/modules/_export.js","webpack://VueGridLayout/./node_modules/core-js/modules/_inherit-if-required.js","webpack://VueGridLayout/./node_modules/core-js/modules/_object-sap.js","webpack://VueGridLayout/./node_modules/core-js/modules/_regexp-exec-abstract.js","webpack://VueGridLayout/./node_modules/core-js/modules/_shared-key.js","webpack://VueGridLayout/./node_modules/core-js/modules/_iobject.js","webpack://VueGridLayout/./src/components/GridLayout.vue?845a","webpack://VueGridLayout/./node_modules/core-js/modules/_to-iobject.js","webpack://VueGridLayout/./node_modules/core-js/modules/_has.js","webpack://VueGridLayout/./node_modules/core-js/modules/_to-primitive.js","webpack://VueGridLayout/./node_modules/core-js/modules/_object-assign.js","webpack://VueGridLayout/./node_modules/core-js/modules/_global.js","webpack://VueGridLayout/./node_modules/core-js/modules/_to-absolute-index.js","webpack://VueGridLayout/./node_modules/core-js/modules/_fails.js","webpack://VueGridLayout/./node_modules/core-js/modules/_set-to-string-tag.js","webpack://VueGridLayout/./node_modules/core-js/modules/_core.js","webpack://VueGridLayout/./src/components/GridLayout.vue?2bad","webpack://VueGridLayout/./node_modules/core-js/modules/_iterators.js","webpack://VueGridLayout/./node_modules/core-js/modules/_object-dp.js","webpack://VueGridLayout/./node_modules/@soda/get-current-script/index.js","webpack://VueGridLayout/./node_modules/core-js/modules/_set-proto.js","webpack://VueGridLayout/external {\"commonjs\":\"vue\",\"commonjs2\":\"vue\",\"root\":\"Vue\"}","webpack://VueGridLayout/./node_modules/core-js/modules/es7.object.get-own-property-descriptors.js","webpack://VueGridLayout/./node_modules/core-js/modules/_object-gopn.js","webpack://VueGridLayout/./src/components/GridLayout.vue?c712","webpack://VueGridLayout/./node_modules/core-js/modules/_own-keys.js","webpack://VueGridLayout/./node_modules/core-js/modules/_ctx.js","webpack://VueGridLayout/./node_modules/core-js/modules/_add-to-unscopables.js","webpack://VueGridLayout/./node_modules/core-js/modules/_to-length.js","webpack://VueGridLayout/./node_modules/core-js/modules/_descriptors.js","webpack://VueGridLayout/./node_modules/core-js/modules/es6.regexp.replace.js","webpack://VueGridLayout/./node_modules/core-js/modules/_string-trim.js","webpack://VueGridLayout/./node_modules/element-resize-detector/src/reporter.js","webpack://VueGridLayout/./node_modules/core-js/modules/web.dom.iterable.js","webpack://VueGridLayout/./node_modules/core-js/modules/es6.regexp.exec.js","webpack://VueGridLayout/./node_modules/element-resize-detector/src/collection-utils.js","webpack://VueGridLayout/./node_modules/core-js/modules/_defined.js","webpack://VueGridLayout/./node_modules/batch-processor/src/batch-processor.js","webpack://VueGridLayout/./node_modules/core-js/modules/_array-includes.js","webpack://VueGridLayout/./src/components/GridItem.vue?1d19","webpack://VueGridLayout/./node_modules/core-js/modules/es6.number.constructor.js","webpack://VueGridLayout/./node_modules/core-js/modules/_ie8-dom-define.js","webpack://VueGridLayout/./node_modules/element-resize-detector/src/detection-strategy/scroll.js","webpack://VueGridLayout/./node_modules/core-js/modules/_uid.js","webpack://VueGridLayout/./node_modules/core-js/modules/es6.array.iterator.js","webpack://VueGridLayout/./node_modules/core-js/modules/_an-object.js","webpack://VueGridLayout/./node_modules/core-js/modules/_object-keys-internal.js","webpack://VueGridLayout/./node_modules/core-js/modules/_is-object.js","webpack://VueGridLayout/./node_modules/core-js/modules/_iter-step.js","webpack://VueGridLayout/./node_modules/element-resize-detector/src/state-handler.js","webpack://VueGridLayout/./node_modules/core-js/modules/_a-function.js","webpack://VueGridLayout/./node_modules/core-js/modules/_enum-bug-keys.js","webpack://VueGridLayout/./node_modules/element-resize-detector/src/element-resize-detector.js","webpack://VueGridLayout/./node_modules/core-js/modules/_create-property.js","webpack://VueGridLayout/./node_modules/core-js/modules/es6.object.assign.js","webpack://VueGridLayout/./node_modules/core-js/modules/_function-to-string.js","webpack://VueGridLayout/./node_modules/core-js/modules/_html.js","webpack://VueGridLayout/./node_modules/@vue/cli-service/lib/commands/build/setPublicPath.js","webpack://VueGridLayout/./src/components/GridItem.vue","webpack://VueGridLayout/./src/helpers/utils.js","webpack://VueGridLayout/./src/helpers/draggableUtils.js","webpack://VueGridLayout/./src/helpers/responsiveUtils.js","webpack://VueGridLayout/./src/helpers/DOM.js","webpack://VueGridLayout/./node_modules/@interactjs/utils/domObjects.js","webpack://VueGridLayout/./node_modules/@interactjs/utils/isWindow.js","webpack://VueGridLayout/./node_modules/@interactjs/utils/window.js","webpack://VueGridLayout/./node_modules/@interactjs/utils/is.js","webpack://VueGridLayout/./node_modules/@interactjs/utils/browser.js","webpack://VueGridLayout/./node_modules/@interactjs/utils/arr.js","webpack://VueGridLayout/./node_modules/@interactjs/utils/clone.js","webpack://VueGridLayout/./node_modules/@interactjs/utils/extend.js","webpack://VueGridLayout/./node_modules/@interactjs/utils/raf.js","webpack://VueGridLayout/./node_modules/@interactjs/utils/normalizeListeners.js","webpack://VueGridLayout/./node_modules/@interactjs/core/Eventable.js","webpack://VueGridLayout/./node_modules/@interactjs/utils/domUtils.js","webpack://VueGridLayout/./node_modules/@interactjs/utils/rect.js","webpack://VueGridLayout/./node_modules/@interactjs/utils/getOriginXY.js","webpack://VueGridLayout/./node_modules/@interactjs/utils/hypot.js","webpack://VueGridLayout/./node_modules/@interactjs/core/BaseEvent.js","webpack://VueGridLayout/./node_modules/@interactjs/core/defaultOptions.js","webpack://VueGridLayout/./node_modules/@interactjs/core/InteractEvent.js","webpack://VueGridLayout/./node_modules/@interactjs/core/isNonNativeEvent.js","webpack://VueGridLayout/./node_modules/@interactjs/core/Interactable.js","webpack://VueGridLayout/./node_modules/@interactjs/core/InteractableSet.js","webpack://VueGridLayout/./node_modules/@interactjs/utils/pointerExtend.js","webpack://VueGridLayout/./node_modules/@interactjs/utils/pointerUtils.js","webpack://VueGridLayout/./node_modules/@interactjs/core/events.js","webpack://VueGridLayout/./node_modules/@interactjs/utils/misc.js","webpack://VueGridLayout/./node_modules/@interactjs/core/interactStatic.js","webpack://VueGridLayout/./node_modules/@interactjs/core/PointerInfo.js","webpack://VueGridLayout/./node_modules/@interactjs/core/Interaction.js","webpack://VueGridLayout/./node_modules/@interactjs/core/interactablePreventDefault.js","webpack://VueGridLayout/./node_modules/@interactjs/core/interactionFinder.js","webpack://VueGridLayout/./node_modules/@interactjs/core/interactions.js","webpack://VueGridLayout/./node_modules/@interactjs/core/scope.js","webpack://VueGridLayout/./node_modules/@interactjs/interact/index.js","webpack://VueGridLayout/./node_modules/@interactjs/auto-start/InteractableMethods.js","webpack://VueGridLayout/./node_modules/@interactjs/auto-start/base.js","webpack://VueGridLayout/./node_modules/@interactjs/auto-start/dragAxis.js","webpack://VueGridLayout/./node_modules/@interactjs/auto-start/hold.js","webpack://VueGridLayout/./node_modules/@interactjs/auto-start/plugin.js","webpack://VueGridLayout/./node_modules/@interactjs/actions/drag/plugin.js","webpack://VueGridLayout/./node_modules/@interactjs/auto-start/index.js","webpack://VueGridLayout/./node_modules/@interactjs/actions/resize/plugin.js","webpack://VueGridLayout/./node_modules/@interactjs/actions/drag/index.js","webpack://VueGridLayout/./node_modules/@interactjs/actions/resize/index.js","webpack://VueGridLayout/./node_modules/@interactjs/snappers/edgeTarget.js","webpack://VueGridLayout/./node_modules/@interactjs/snappers/elements.js","webpack://VueGridLayout/./node_modules/@interactjs/snappers/grid.js","webpack://VueGridLayout/./node_modules/@interactjs/snappers/plugin.js","webpack://VueGridLayout/./node_modules/@interactjs/modifiers/Modification.js","webpack://VueGridLayout/./node_modules/@interactjs/modifiers/base.js","webpack://VueGridLayout/./node_modules/@interactjs/modifiers/aspectRatio.js","webpack://VueGridLayout/./node_modules/@interactjs/modifiers/noop.js","webpack://VueGridLayout/./node_modules/@interactjs/modifiers/restrict/pointer.js","webpack://VueGridLayout/./node_modules/@interactjs/modifiers/restrict/edges.js","webpack://VueGridLayout/./node_modules/@interactjs/modifiers/restrict/rect.js","webpack://VueGridLayout/./node_modules/@interactjs/modifiers/restrict/size.js","webpack://VueGridLayout/./node_modules/@interactjs/modifiers/snap/pointer.js","webpack://VueGridLayout/./node_modules/@interactjs/modifiers/snap/size.js","webpack://VueGridLayout/./node_modules/@interactjs/modifiers/snap/edges.js","webpack://VueGridLayout/./node_modules/@interactjs/modifiers/all.js","webpack://VueGridLayout/./node_modules/@interactjs/modifiers/plugin.js","webpack://VueGridLayout/./node_modules/@interactjs/dev-tools/plugin.js","webpack://VueGridLayout/./node_modules/@interactjs/modifiers/index.js","webpack://VueGridLayout/./node_modules/@interactjs/dev-tools/index.js","webpack://VueGridLayout/./src/components/GridItem.vue?0590","webpack://VueGridLayout/./src/components/GridLayout.vue","webpack://VueGridLayout/./node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://VueGridLayout/./node_modules/mitt/dist/mitt.es.js","webpack://VueGridLayout/./src/components/GridLayout.vue?19aa","webpack://VueGridLayout/./src/components/index.js","webpack://VueGridLayout/./node_modules/@vue/cli-service/lib/commands/build/entry-lib.js","webpack://VueGridLayout/./node_modules/core-js/modules/es6.number.is-finite.js","webpack://VueGridLayout/./node_modules/core-js/modules/_string-ws.js"],"names":["root","factory","exports","module","require","define","amd","self","this","__WEBPACK_EXTERNAL_MODULE__8bbf__","installedModules","__webpack_require__","moduleId","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","LIBRARY","$export","redefine","hide","Iterators","$iterCreate","setToStringTag","getPrototypeOf","ITERATOR","BUGGY","keys","FF_ITERATOR","KEYS","VALUES","returnThis","Base","NAME","Constructor","next","DEFAULT","IS_SET","FORCED","methods","IteratorPrototype","getMethod","kind","proto","TAG","DEF_VALUES","VALUES_BUG","$native","$default","$entries","undefined","$anyNative","entries","values","P","F","toInteger","defined","TO_STRING","that","pos","a","b","String","length","charCodeAt","charAt","slice","at","S","index","unicode","anObject","result","global","ignoreCase","multiline","sticky","$keys","enumBugKeys","O","pIE","createDesc","toIObject","toPrimitive","has","IE8_DOM_DEFINE","gOPD","getOwnPropertyDescriptor","f","e","dP","getKeys","defineProperties","Properties","browserDetector","options","reporter","batchProcessor","getState","stateHandler","Error","addListener","element","listener","listenerProxy","isIE","proxy","attachEvent","getObject","contentDocument","defaultView","addEventListener","buildCssTextString","rules","seperator","important","join","trim","makeDetectable","callback","debug","injectObject","OBJECT_STYLE","positionCheckPerformed","style","window","getComputedStyle","width","offsetWidth","height","offsetHeight","mutateDom","alterPositionStyles","position","setProperty","removeRelativeStyles","getNumericalValue","replace","warn","onObjectLoad","getDocument","state","checkForObjectDocumentTimeoutId","clearTimeout","setTimeout","objectElement","objectDocument","document","createElement","cssText","tabIndex","type","setAttribute","onload","data","appendChild","startSize","add","uninstall","detachEvent","removeChild","detector","version","isAnyIeVersion","agent","navigator","userAgent","toLowerCase","indexOf","ieVersion","undef","v","div","all","getElementsByTagName","innerHTML","isLegacyOpera","opera","fails","wks","regexpExec","SPECIES","REPLACE_SUPPORTS_NAMED_GROUPS","re","exec","groups","SPLIT_WORKS_WITH_OVERWRITTEN_EXEC","originalExec","apply","arguments","split","KEY","SYMBOL","DELEGATES_TO_SYMBOL","DELEGATES_TO_EXEC","execCalled","constructor","nativeRegExpMethod","fns","nativeMethod","regexp","str","arg2","forceStringMethod","done","strfn","rxfn","RegExp","string","arg","isObject","is","it","cof","ARG","tryGet","T","B","callee","cssWithMappingToString","item","useSourceMap","content","cssMapping","btoa","sourceMapping","toComment","sourceURLs","sources","map","source","concat","sourceRoot","sourceMap","base64","unescape","encodeURIComponent","JSON","stringify","list","toString","mediaQuery","dedupe","alreadyImportedModules","id","_i","push","getOwnPropertySymbols","SRC","$toString","TPL","inspectSource","val","safe","isFunction","Function","dPs","IE_PROTO","Empty","PROTOTYPE","createDict","iframeDocument","iframe","lt","gt","display","src","contentWindow","open","write","close","store","uid","USE_SYMBOL","$exports","idCount","generate","method","toObject","ObjectProto","descriptor","ceil","Math","floor","isNaN","bitmap","configurable","writable","toLength","advanceStringIndex","regExpExec","MATCH","$match","maybeCallNative","fn","res","rx","fullUnicode","lastIndex","A","matchStr","___CSS_LOADER_API_IMPORT___","listToStyles","parentId","styles","newStyles","css","media","part","parts","hasDocument","DEBUG","stylesInDom","head","singletonElement","singletonCounter","isProduction","noop","ssrIdKey","isOldIE","test","addStylesClient","_isProduction","_options","addStylesToDom","newList","mayRemove","domStyle","refs","j","addStyle","createStyleElement","styleElement","obj","update","remove","querySelector","parentNode","styleIndex","applyToSingletonTag","applyToTag","newObj","replaceText","textStore","replacement","filter","Boolean","styleSheet","cssNode","createTextNode","childNodes","insertBefore","ssrId","firstChild","idHandler","eventListeners","getListeners","removeListener","listeners","len","splice","removeAllListeners","idGenerator","getId","setId","set","utils","getOption","defaultValue","regexpFlags","nativeExec","nativeReplace","patchedExec","LAST_INDEX","UPDATES_LAST_INDEX_WRONG","re1","re2","NPCG_INCLUDED","PATCH","reCopy","match","propertyIsEnumerable","core","SHARED","copyright","aFunction","$sort","sort","comparefn","isDetectable","markAsDetectable","isBusy","busy","markBusy","ctx","own","out","exp","IS_FORCED","IS_GLOBAL","G","IS_STATIC","IS_PROTO","IS_BIND","target","expProto","U","W","R","setPrototypeOf","C","classof","builtinExec","TypeError","shared","IObject","valueOf","DESCRIPTORS","gOPS","$assign","assign","K","forEach","k","aLen","getSymbols","isEnum","__g","max","min","def","tag","stat","__e","Attributes","getCurrentScript","currentScript","err","pageSource","inlineScriptSourceRegExp","inlineScriptSource","ieStackRegExp","ffStackRegExp","stackDetails","stack","scriptLocation","line","currentLocation","location","href","hash","scripts","documentElement","outerHTML","readyState","check","buggy","Array","__proto__","ownKeys","createProperty","getOwnPropertyDescriptors","desc","getDesc","hiddenKeys","getOwnPropertyNames","locals","default","gOPN","Reflect","UNSCOPABLES","ArrayProto","SUBSTITUTION_SYMBOLS","SUBSTITUTION_SYMBOLS_NO_NAMED","maybeToString","REPLACE","$replace","searchValue","replaceValue","functionalReplace","results","accumulatedResult","nextSourcePosition","matched","captures","namedCaptures","replacerArgs","getSubstitution","tailPos","symbols","ch","capture","spaces","space","non","ltrim","rtrim","exporter","ALIAS","FORCE","TYPE","quiet","log","error","console","attachFunction","$iterators","TO_STRING_TAG","ArrayValues","DOMIterables","CSSRuleList","CSSStyleDeclaration","CSSValueList","ClientRectList","DOMRectList","DOMStringList","DOMTokenList","DataTransferItemList","FileList","HTMLAllCollection","HTMLCollection","HTMLFormElement","HTMLSelectElement","MediaList","MimeTypeArray","NamedNodeMap","NodeList","PaintRequestList","Plugin","PluginArray","SVGLengthList","SVGNumberList","SVGPathSegList","SVGPointList","SVGStringList","SVGTransformList","SourceBufferList","StyleSheetList","TextTrackCueList","TextTrackList","TouchList","collections","explicit","Collection","forced","collection","Batch","batch","size","topLevel","bottomLevel","level","process","getSize","asyncProcess","autoProcess","asyncFrameHandler","isProcessing","addFunction","processBatchAsync","processBatch","processingBatch","forceProcessBatch","localAsyncProcess","cancelFrame","requestFrame","cancel","raf","force","toAbsoluteIndex","IS_INCLUDES","$this","el","fromIndex","inheritIfRequired","$trim","NUMBER","$Number","BROKEN_COF","TRIM","toNumber","argument","third","radix","maxCode","first","NaN","code","digits","parseInt","hasState","scrollbarSizes","getScrollbarSizes","styleId","detectionContainerClass","initDocument","targetDocument","injectScrollStyle","child","container","body","widthSize","clientWidth","heightSize","clientHeight","containerClass","injectStyle","getElementById","containerAnimationClass","containerAnimationActiveClass","addAnimationClass","className","addEvent","cb","removeEvent","removeEventListener","getExpandElement","getShrinkElement","args","unshift","isDetached","isInDocument","ownerDocument","contains","isUnrendered","getStyle","elementStyle","top","right","bottom","left","widthCSS","heightCSS","storeStartSize","initListeners","storeStyle","storeCurrentSize","lastWidth","lastHeight","getExpandChildElement","getWidthOffset","getHeightOffset","getExpandWidth","getExpandHeight","getShrinkWidth","getShrinkHeight","positionScrollbars","expand","shrink","expandWidth","expandHeight","shrinkWidth","shrinkHeight","scrollLeft","scrollTop","injectContainerElement","onAnimationStart","onRendered","injectScrollElements","getLeftTopBottomRightCssText","rootContainer","scrollbarWidth","scrollbarHeight","containerContainerStyle","containerStyle","expandStyle","shrinkStyle","expandChildStyle","shrinkChildStyle","containerContainer","expandChild","shrinkChild","dir","onExpandScroll","onShrinkScroll","onExpand","onShrink","registerListenersAndPositionElements","updateChildSizes","updateDetectorElements","sizeChanged","areElementsInjected","w","h","notifyListenersIfNeeded","isFirstNotify","lastNotifiedWidth","lastNotifiedHeight","handleRender","handleScroll","finalizeDomMutation","ready","install","px","random","addToUnscopables","step","iterated","_t","_k","Arguments","arrayIndexOf","names","prop","initState","cleanState","elementUtilsMaker","listenerHandlerMaker","idGeneratorMaker","idHandlerMaker","reporterMaker","batchProcessorMaker","objectStrategyMaker","scrollStrategyMaker","isCollection","isArray","toArray","array","isElement","nodeType","defaultIdHandler","globalOptions","callOnAdd","detectionStrategy","eventListenerHandler","elementUtils","desiredStrategy","importantCssRules","strategyOptions","onReadyCallbacks","listenTo","elements","onResizeCallback","elementsReady","onReadyCallback","$defineProperty","ref","class","classObj","resizableAndNotStatic","resizableHandleClass","layout","bottomY","y","cloneLayout","newLayout","cloneLayoutItem","layoutItem","parse","collides","l1","l2","x","compact","verticalCompact","compareWith","getStatics","sorted","sortLayoutItemsByRowCol","static","compactItem","moved","getFirstCollision","correctBounds","bounds","collidesWith","cols","getLayoutItem","getAllCollisions","moveElement","isUserAction","preventCollision","oldX","oldY","movingUp","reverse","collisions","collision","moveElementAwayFromCollision","itemToMove","fakeItem","setTransform","translate","transform","WebkitTransform","MozTransform","msTransform","OTransform","setTransformRtl","setTopLeft","setTopRight","validateLayout","contextName","subProps","keyArr","getControlPosition","offsetXYFromParentOf","evt","offsetParent","offsetParentRect","getBoundingClientRect","clientX","clientY","createCoreData","lastX","lastY","isStart","isNum","deltaX","deltaY","num","getBreakpointFromWidth","breakpoints","sortBreakpoints","matching","breakpointName","getColsFromBreakpoint","breakpoint","findOrGenerateResponsiveLayout","orgLayout","layouts","lastBreakpoint","breakpointsSorted","breakpointsAbove","currentDir","hasWindow","getDocumentDir","direction","getAttribute","addWindowEventListener","event","removeWindowEventListener","domObjects","init","DocumentFragment","SVGElement","SVGSVGElement","SVGElementInstance","Element","HTMLElement","Event","Touch","PointerEvent","blank","win","MSPointerEvent","thing","realWindow","wrap","getWindow","node","isWindow","rootNode","docFrag","func","number","bool","_window","nodeName","plainObject","browser","supportsTouch","supportsPointerEvent","isIOS7","isIOS","isIe9","isOperaMobile","prefixedMatchesSelector","pEventTypes","wheelEvent","DocumentTouch","pointerEnabled","platform","appVersion","appName","up","down","over","move","merge","from","findIndex","find","clone","dest","extend","ret","request","lastTime","requestAnimationFrame","cancelAnimationFrame","vendors","vendor","currTime","Date","now","timeToCall","token","normalize","search","reduce","acc","prefix","combinedTypes","fireUntilImmediateStopped","immediatePropagationStopped","types","propagationStopped","eventList","subListener","_element","nodeContains","parent","selector","matchesSelector","host","matchesUpTo","limit","getActualElement","correspondingUseElement","getScrollXY","relevantWindow","scrollX","scrollY","getElementClientRect","clientRect","getClientRects","getElementRect","scroll","trySelector","getStringOptionResult","getRect","resolveRectLike","functionArgs","returnValue","rectToXY","rect","xywhToTlbr","tlbrToXywh","addEdges","edges","delta","actionOptions","actionName","actionOrigin","origin","originRect","BaseEvent","interaction","currentTarget","interactable","_interaction","timeStamp","_proxy","base","preventDefault","deltaSource","perAction","enabled","actions","phase","preEnd","super","relatedTarget","screenX","screenY","button","buttons","ctrlKey","shiftKey","altKey","metaKey","page","client","x0","y0","t0","dt","duration","clientX0","clientY0","velocity","speed","swipe","axes","getOriginXY","starting","ending","prevEvent","coords","start","cur","pointers","downTime","hypot","getSwipe","angle","atan2","velocityY","velocityX","PI","overlap","isNonNativeEvent","phaselessTypes","substr","phases","pageX","pageY","dx","dy","defaultContext","scopeEvents","_actions","events","_context","_win","_doc","_scopeEvents","_rectChecker","context","onstart","on","onmove","onend","oninertiastart","prev","off","defaults","_defaults","optionName_","optionName","optionValue","updatePerActionListeners","checker","newValue","action","_backCompatOption","targetNode","eventTarget","testIgnore","ignoreFrom","testAllow","allowFrom","iEvent","fire","typeArg","listenerArg","addRemove","_onOff","actionName_","methodDict","methodName","setPerAction","setting","delegatedEvents","delegated","removeDelegate","scope","selectorMap","addListeners","targetMappings","targetIndex","Interactable","mappingInfo","addDocument","isSelector","found","inContext","pointerExtend","prefixedPropREs","deprecated","webkit","moz","copyCoords","setCoordDeltas","targetObj","setCoordVelocity","setZeroCoords","isNativePointer","pointer","getXY","xy","getPageXY","getClientXY","getPointerId","pointerId","identifier","setCoords","pointerAverage","getTouchPair","touches","changedTouches","average","touchBBox","minX","minY","maxX","maxY","touchDistance","sourceX","sourceY","touchAngle","getPointerType","pointerType","getEventTargets","path","composedPath","newCoords","targets","documents","eventsMethods","addDelegate","delegateListener","delegateUseCapture","supportsOptions","supportsPassive","optionalArg","getOptions","typeIsEmpty","typeListeners","doc","delegates","delegate","matchFound","passive","fakeEvent","originalEvent","stopPropagation","stopImmediatePropagation","param","warnOnce","message","warned","copyAction","axis","createInteractStatic","interact","interactables","new","globalEvents","getPointerAverage","getTouchBBox","getTouchDistance","getTouchAngle","closest","use","plugin","usePlugin","isSet","eventType","stop","interactions","pointerMoveTolerance","removeDocument","PointerInfo","downTarget","_ProxyValues","_ProxyMethods","idCounter","scopeFire","_rects","_scopeFire","prepared","downEvent","downPointer","_latestPointer","pointerIsDown","pointerWasMoved","_interacting","_ending","_stopped","simulation","doMove","signalArg","_id","pointerIndex","updatePointer","pointerInfo","interacting","_doPhase","modification","endResult","duplicateMove","getPointerIndex","duplicate","curEventTarget","end","removePointer","endPhaseResult","curPointer","_now","_updateLatestPointer","beforeResult","_createPreparedEvent","_fireEvent","checkAndPreventDefault","docOptions","getDocOptions","onInteractionEvent","docEvents","finder","methodOrder","details","allowResume","firstNonActive","hasPointerId","gesture","some","methodNames","doOnInteractions","releasePointersOnRemovedEls","pointerDown","pointerMove","pointerUp","documentBlur","prevTouchTime","Interaction","interactablePreventDefault","matches","changedTouch","searchDetails","getInteraction","invalidPointer","foundInteraction","onDocSignal","eventMethodName","eventMethod","eventOptions","destroy","isInitialized","listenerMaps","Eventable","interactStatic","InteractEvent","_plugins","onWindowUnload","unset","initScope","pluginIsInstalled","before","pluginIdRoot","otherId","getDocIndex","docIndex","getAction","defaultActionChecker","actionChecker","styleCursor","0","1","3","4","InteractableMethods","manualStart","Infinity","maxPerElement","mouseButtons","maxInteractions","autoStart","withinInteractionLimit","cursorElement","prepareOnDown","actionInfo","getActionInfo","prepare","prepareOnMove","startOnMove","setInteractionCursor","clearCursorOnStop","setCursor","validateAction","testIgnoreAllow","validateMatches","matchElements","matchElement","matchAction","pushMatches","forEachMatch","maxActions","autoStartMax","activeInteractions","interactableCount","elementCount","otherAction","cursor","prevCursorElement","cursorChecker","getCursor","beforeStart","absX","abs","absY","targetOptions","drag","startAxis","currentAxis","lockAxis","getDraggable","checkStartAxis","thisAxis","hold","delay","getHoldDuration","autoStartHoldTimer","holdDuration","dragAxis","draggable","beforeMove","opposite","setOnEvents","dragOptions","resize","cursors","initCursors","defaultMargin","resizable","resizeChecker","resizeOptions","resizeEdges","edge","checkResizeEdge","margin","preserveAspectRatio","square","interactableElement","topleft","bottomright","topright","bottomleft","resizeEvent","corrected","previous","deltaRect","invert","invertible","current","startRect","swap","updateEventAxes","resizeAxes","cursorKey","grid","coordFields","xField","yField","gridFunc","range","limits","offset","gridx","round","gridy","snappersPlugin","snappers","createSnapGrid","states","startOffset","startDelta","createResult","pageCoords","modifierList","getModifierList","prepareStates","getRectOffset","startAll","setAll","fillArg","skipModifiers","unmodifiedRect","newResult","lastModifierCoords","shouldDo","eventProps","rectDelta","prevCoords","prevRect","rectChanged","changed","curCoords","startCoords","curDelta","coordsSet","modifiedCoords","adjustment","applyToInteraction","doPreend","endPosition","beforeEnd","modifierArg","coordsAndDeltas","requireEndOnly","endOnly","setStart","other","actionModifiers","modifiers","_methods","makeModifier","modifier","enable","disable","addEventModifiers","modifiersBase","setAndApply","restoreInteractionCoords","aspectRatio","originalEdges","ratio","equalDelta","linkedEdges","xIsPrimaryAxis","edgeSign","negativeSecondaryEdge","subModification","copyFrom","initialCoords","aspectMethod","setEqualDelta","setRatio","correctedRect","xIsCriticalAxis","newHeight","newWidth","elementRect","restriction","getRestrictionRect","widthDiff","heightDiff","restrict","noInner","noOuter","offsetRect","inner","outer","fixRect","restrictEdges","_","restrictRect","noMin","noMax","minSize","maxSize","restrictSize","offsetWithOrigin","getOrigin","snapOffset","relativePoints","offsets","relativePoint","relativeX","relativeY","snapTarget","inRange","distance","optionsOrigin","snap","targetFields","relative","snapSize","snapEdges","spring","avoid","rubberband","CheckName","links","touchAction","boxSizing","logger","devTools","ignore","checks","parentHasStyle","text","hasStyle","noListeners","moveListeners","styleRe","defaultExport","perform","getInfo","props","isDraggable","required","isResizable","minH","Number","minW","maxH","maxW","dragIgnoreFrom","dragAllowFrom","resizeIgnoreFrom","inject","containerWidth","rowHeight","maxRows","useCssTransforms","useStyleCursor","isDragging","dragging","isResizing","resizing","lastW","lastH","rtl","dragEventSet","resizeEventSet","previousW","previousH","previousX","previousY","innerX","innerY","innerW","innerH","created","updateWidthHandler","updateWidth","compactHandler","setDraggableHandler","setResizableHandler","setRowHeightHandler","setMaxRowsHandler","directionchangeHandler","setColNum","colNum","eventBus","beforeUnmount","interactObj","mounted","responsive","createStyle","watch","tryMakeDraggable","tryMakeResizable","emitContainerResized","newVal","renderRtl","computed","isAndroid","draggableOrResizableAndNotStatic","isMirrored","calcPosition","styleProps","$emit","handleResize","newSize","coreEvent","calcWH","emit","handleDrag","newPosition","parentRect","calcXY","colWidth","calcColWidth","autoSizeFlag","$refs","opts","maximum","minimum","autoSize","$slots","elm","render","mergedStyle","placeholder","_defineProperty","Map","elementResizeDetectorMaker","provide","components","GridItem","responsiveLayouts","lg","md","sm","xs","xxs","lastLayoutLength","originalLayout","resizeEventHandler","dragEventHandler","dragEvent","onWindowResize","erd","beforeMount","$nextTick","initResponsiveFeatures","updateHeight","strategy","newval","oldval","layoutUpdate","diff","findDifference","obj2","containerHeight","eventName","hasCollisions","leastX","leastY","isFinite","responsiveGridLayout","newBreakpoint","newCols","uniqueResultOne","uniqueResultTwo","app","component","GridLayout","_isFinite"],"mappings":"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","file":"vue-grid-layout.umd.min.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"vue\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"VueGridLayout\"] = factory(require(\"vue\"));\n\telse\n\t\troot[\"VueGridLayout\"] = factory(root[\"Vue\"]);\n})((typeof self !== 'undefined' ? self : this), function(__WEBPACK_EXTERNAL_MODULE__8bbf__) {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"fb15\");\n","'use strict';\nvar LIBRARY = require('./_library');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar $iterCreate = require('./_iter-create');\nvar setToStringTag = require('./_set-to-string-tag');\nvar getPrototypeOf = require('./_object-gpo');\nvar ITERATOR = require('./_wks')('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n  $iterCreate(Constructor, NAME, next);\n  var getMethod = function (kind) {\n    if (!BUGGY && kind in proto) return proto[kind];\n    switch (kind) {\n      case KEYS: return function keys() { return new Constructor(this, kind); };\n      case VALUES: return function values() { return new Constructor(this, kind); };\n    } return function entries() { return new Constructor(this, kind); };\n  };\n  var TAG = NAME + ' Iterator';\n  var DEF_VALUES = DEFAULT == VALUES;\n  var VALUES_BUG = false;\n  var proto = Base.prototype;\n  var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n  var $default = $native || getMethod(DEFAULT);\n  var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n  var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n  var methods, key, IteratorPrototype;\n  // Fix native\n  if ($anyNative) {\n    IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n    if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n      // Set @@toStringTag to native iterators\n      setToStringTag(IteratorPrototype, TAG, true);\n      // fix for some old engines\n      if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);\n    }\n  }\n  // fix Array#{values, @@iterator}.name in V8 / FF\n  if (DEF_VALUES && $native && $native.name !== VALUES) {\n    VALUES_BUG = true;\n    $default = function values() { return $native.call(this); };\n  }\n  // Define iterator\n  if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n    hide(proto, ITERATOR, $default);\n  }\n  // Plug for library\n  Iterators[NAME] = $default;\n  Iterators[TAG] = returnThis;\n  if (DEFAULT) {\n    methods = {\n      values: DEF_VALUES ? $default : getMethod(VALUES),\n      keys: IS_SET ? $default : getMethod(KEYS),\n      entries: $entries\n    };\n    if (FORCED) for (key in methods) {\n      if (!(key in proto)) redefine(proto, key, methods[key]);\n    } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n  }\n  return methods;\n};\n","var toInteger = require('./_to-integer');\nvar defined = require('./_defined');\n// true  -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n  return function (that, pos) {\n    var s = String(defined(that));\n    var i = toInteger(pos);\n    var l = s.length;\n    var a, b;\n    if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n    a = s.charCodeAt(i);\n    return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n      ? TO_STRING ? s.charAt(i) : a\n      : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n  };\n};\n","'use strict';\nvar at = require('./_string-at')(true);\n\n // `AdvanceStringIndex` abstract operation\n// https://tc39.github.io/ecma262/#sec-advancestringindex\nmodule.exports = function (S, index, unicode) {\n  return index + (unicode ? at(S, index).length : 1);\n};\n","export * from \"-!../../node_modules/vue-style-loader/index.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./GridItem.vue?vue&type=style&index=0&id=46ff2fc8&lang=css\"","'use strict';\n// 21.2.5.3 get RegExp.prototype.flags\nvar anObject = require('./_an-object');\nmodule.exports = function () {\n  var that = anObject(this);\n  var result = '';\n  if (that.global) result += 'g';\n  if (that.ignoreCase) result += 'i';\n  if (that.multiline) result += 'm';\n  if (that.unicode) result += 'u';\n  if (that.sticky) result += 'y';\n  return result;\n};\n","// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = require('./_object-keys-internal');\nvar enumBugKeys = require('./_enum-bug-keys');\n\nmodule.exports = Object.keys || function keys(O) {\n  return $keys(O, enumBugKeys);\n};\n","var pIE = require('./_object-pie');\nvar createDesc = require('./_property-desc');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar has = require('./_has');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nexports.f = require('./_descriptors') ? gOPD : function getOwnPropertyDescriptor(O, P) {\n  O = toIObject(O);\n  P = toPrimitive(P, true);\n  if (IE8_DOM_DEFINE) try {\n    return gOPD(O, P);\n  } catch (e) { /* empty */ }\n  if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);\n};\n","var dP = require('./_object-dp');\nvar anObject = require('./_an-object');\nvar getKeys = require('./_object-keys');\n\nmodule.exports = require('./_descriptors') ? Object.defineProperties : function defineProperties(O, Properties) {\n  anObject(O);\n  var keys = getKeys(Properties);\n  var length = keys.length;\n  var i = 0;\n  var P;\n  while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n  return O;\n};\n","/**\n * Resize detection strategy that injects objects to elements in order to detect resize events.\n * Heavily inspired by: http://www.backalleycoder.com/2013/03/18/cross-browser-event-based-element-resize-detection/\n */\n\n\"use strict\";\n\nvar browserDetector = require(\"../browser-detector\");\n\nmodule.exports = function(options) {\n    options             = options || {};\n    var reporter        = options.reporter;\n    var batchProcessor  = options.batchProcessor;\n    var getState        = options.stateHandler.getState;\n\n    if(!reporter) {\n        throw new Error(\"Missing required dependency: reporter.\");\n    }\n\n    /**\n     * Adds a resize event listener to the element.\n     * @public\n     * @param {element} element The element that should have the listener added.\n     * @param {function} listener The listener callback to be called for each resize event of the element. The element will be given as a parameter to the listener callback.\n     */\n    function addListener(element, listener) {\n        function listenerProxy() {\n            listener(element);\n        }\n\n        if(browserDetector.isIE(8)) {\n            //IE 8 does not support object, but supports the resize event directly on elements.\n            getState(element).object = {\n                proxy: listenerProxy\n            };\n            element.attachEvent(\"onresize\", listenerProxy);\n        } else {\n            var object = getObject(element);\n\n            if(!object) {\n                throw new Error(\"Element is not detectable by this strategy.\");\n            }\n\n            object.contentDocument.defaultView.addEventListener(\"resize\", listenerProxy);\n        }\n    }\n\n    function buildCssTextString(rules) {\n        var seperator = options.important ? \" !important; \" : \"; \";\n\n        return (rules.join(seperator) + seperator).trim();\n    }\n\n    /**\n     * Makes an element detectable and ready to be listened for resize events. Will call the callback when the element is ready to be listened for resize changes.\n     * @private\n     * @param {object} options Optional options object.\n     * @param {element} element The element to make detectable\n     * @param {function} callback The callback to be called when the element is ready to be listened for resize changes. Will be called with the element as first parameter.\n     */\n    function makeDetectable(options, element, callback) {\n        if (!callback) {\n            callback = element;\n            element = options;\n            options = null;\n        }\n\n        options = options || {};\n        var debug = options.debug;\n\n        function injectObject(element, callback) {\n            var OBJECT_STYLE = buildCssTextString([\"display: block\", \"position: absolute\", \"top: 0\", \"left: 0\", \"width: 100%\", \"height: 100%\", \"border: none\", \"padding: 0\", \"margin: 0\", \"opacity: 0\", \"z-index: -1000\", \"pointer-events: none\"]);\n\n            //The target element needs to be positioned (everything except static) so the absolute positioned object will be positioned relative to the target element.\n\n            // Position altering may be performed directly or on object load, depending on if style resolution is possible directly or not.\n            var positionCheckPerformed = false;\n\n            // The element may not yet be attached to the DOM, and therefore the style object may be empty in some browsers.\n            // Since the style object is a reference, it will be updated as soon as the element is attached to the DOM.\n            var style = window.getComputedStyle(element);\n            var width = element.offsetWidth;\n            var height = element.offsetHeight;\n\n            getState(element).startSize = {\n                width: width,\n                height: height\n            };\n\n            function mutateDom() {\n                function alterPositionStyles() {\n                    if(style.position === \"static\") {\n                        element.style.setProperty(\"position\", \"relative\", options.important ? \"important\" : \"\");\n\n                        var removeRelativeStyles = function(reporter, element, style, property) {\n                            function getNumericalValue(value) {\n                                return value.replace(/[^-\\d\\.]/g, \"\");\n                            }\n\n                            var value = style[property];\n\n                            if(value !== \"auto\" && getNumericalValue(value) !== \"0\") {\n                                reporter.warn(\"An element that is positioned static has style.\" + property + \"=\" + value + \" which is ignored due to the static positioning. The element will need to be positioned relative, so the style.\" + property + \" will be set to 0. Element: \", element);\n                                element.style.setProperty(property, \"0\", options.important ? \"important\" : \"\");\n                            }\n                        };\n\n                        //Check so that there are no accidental styles that will make the element styled differently now that is is relative.\n                        //If there are any, set them to 0 (this should be okay with the user since the style properties did nothing before [since the element was positioned static] anyway).\n                        removeRelativeStyles(reporter, element, style, \"top\");\n                        removeRelativeStyles(reporter, element, style, \"right\");\n                        removeRelativeStyles(reporter, element, style, \"bottom\");\n                        removeRelativeStyles(reporter, element, style, \"left\");\n                    }\n                }\n\n                function onObjectLoad() {\n                    // The object has been loaded, which means that the element now is guaranteed to be attached to the DOM.\n                    if (!positionCheckPerformed) {\n                        alterPositionStyles();\n                    }\n\n                    /*jshint validthis: true */\n\n                    function getDocument(element, callback) {\n                        //Opera 12 seem to call the object.onload before the actual document has been created.\n                        //So if it is not present, poll it with an timeout until it is present.\n                        //TODO: Could maybe be handled better with object.onreadystatechange or similar.\n                        if(!element.contentDocument) {\n                            var state = getState(element);\n                            if (state.checkForObjectDocumentTimeoutId) {\n                                window.clearTimeout(state.checkForObjectDocumentTimeoutId);\n                            }\n                            state.checkForObjectDocumentTimeoutId = setTimeout(function checkForObjectDocument() {\n                                state.checkForObjectDocumentTimeoutId = 0;\n                                getDocument(element, callback);\n                            }, 100);\n\n                            return;\n                        }\n\n                        callback(element.contentDocument);\n                    }\n\n                    //Mutating the object element here seems to fire another load event.\n                    //Mutating the inner document of the object element is fine though.\n                    var objectElement = this;\n\n                    //Create the style element to be added to the object.\n                    getDocument(objectElement, function onObjectDocumentReady(objectDocument) {\n                        //Notify that the element is ready to be listened to.\n                        callback(element);\n                    });\n                }\n\n                // The element may be detached from the DOM, and some browsers does not support style resolving of detached elements.\n                // The alterPositionStyles needs to be delayed until we know the element has been attached to the DOM (which we are sure of when the onObjectLoad has been fired), if style resolution is not possible.\n                if (style.position !== \"\") {\n                    alterPositionStyles(style);\n                    positionCheckPerformed = true;\n                }\n\n                //Add an object element as a child to the target element that will be listened to for resize events.\n                var object = document.createElement(\"object\");\n                object.style.cssText = OBJECT_STYLE;\n                object.tabIndex = -1;\n                object.type = \"text/html\";\n                object.setAttribute(\"aria-hidden\", \"true\");\n                object.onload = onObjectLoad;\n\n                //Safari: This must occur before adding the object to the DOM.\n                //IE: Does not like that this happens before, even if it is also added after.\n                if(!browserDetector.isIE()) {\n                    object.data = \"about:blank\";\n                }\n\n                if (!getState(element)) {\n                    // The element has been uninstalled before the actual loading happened.\n                    return;\n                }\n\n                element.appendChild(object);\n                getState(element).object = object;\n\n                //IE: This must occur after adding the object to the DOM.\n                if(browserDetector.isIE()) {\n                    object.data = \"about:blank\";\n                }\n            }\n\n            if(batchProcessor) {\n                batchProcessor.add(mutateDom);\n            } else {\n                mutateDom();\n            }\n        }\n\n        if(browserDetector.isIE(8)) {\n            //IE 8 does not support objects properly. Luckily they do support the resize event.\n            //So do not inject the object and notify that the element is already ready to be listened to.\n            //The event handler for the resize event is attached in the utils.addListener instead.\n            callback(element);\n        } else {\n            injectObject(element, callback);\n        }\n    }\n\n    /**\n     * Returns the child object of the target element.\n     * @private\n     * @param {element} element The target element.\n     * @returns The object element of the target.\n     */\n    function getObject(element) {\n        return getState(element).object;\n    }\n\n    function uninstall(element) {\n        if (!getState(element)) {\n            return;\n        }\n\n        var object = getObject(element);\n\n        if (!object) {\n            return;\n        }\n\n        if (browserDetector.isIE(8)) {\n            element.detachEvent(\"onresize\", object.proxy);\n        } else {\n            element.removeChild(object);\n        }\n\n        if (getState(element).checkForObjectDocumentTimeoutId) {\n            window.clearTimeout(getState(element).checkForObjectDocumentTimeoutId);\n        }\n\n        delete getState(element).object;\n    }\n\n    return {\n        makeDetectable: makeDetectable,\n        addListener: addListener,\n        uninstall: uninstall\n    };\n};\n","\"use strict\";\n\nvar detector = module.exports = {};\n\ndetector.isIE = function(version) {\n    function isAnyIeVersion() {\n        var agent = navigator.userAgent.toLowerCase();\n        return agent.indexOf(\"msie\") !== -1 || agent.indexOf(\"trident\") !== -1 || agent.indexOf(\" edge/\") !== -1;\n    }\n\n    if(!isAnyIeVersion()) {\n        return false;\n    }\n\n    if(!version) {\n        return true;\n    }\n\n    //Shamelessly stolen from https://gist.github.com/padolsey/527683\n    var ieVersion = (function(){\n        var undef,\n            v = 3,\n            div = document.createElement(\"div\"),\n            all = div.getElementsByTagName(\"i\");\n\n        do {\n            div.innerHTML = \"<!--[if gt IE \" + (++v) + \"]><i></i><![endif]-->\";\n        }\n        while (all[0]);\n\n        return v > 4 ? v : undef;\n    }());\n\n    return version === ieVersion;\n};\n\ndetector.isLegacyOpera = function() {\n    return !!window.opera;\n};\n","'use strict';\nrequire('./es6.regexp.exec');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar fails = require('./_fails');\nvar defined = require('./_defined');\nvar wks = require('./_wks');\nvar regexpExec = require('./_regexp-exec');\n\nvar SPECIES = wks('species');\n\nvar REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {\n  // #replace needs built-in support for named groups.\n  // #match works fine because it just return the exec results, even if it has\n  // a \"grops\" property.\n  var re = /./;\n  re.exec = function () {\n    var result = [];\n    result.groups = { a: '7' };\n    return result;\n  };\n  return ''.replace(re, '$<a>') !== '7';\n});\n\nvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = (function () {\n  // Chrome 51 has a buggy \"split\" implementation when RegExp#exec !== nativeExec\n  var re = /(?:)/;\n  var originalExec = re.exec;\n  re.exec = function () { return originalExec.apply(this, arguments); };\n  var result = 'ab'.split(re);\n  return result.length === 2 && result[0] === 'a' && result[1] === 'b';\n})();\n\nmodule.exports = function (KEY, length, exec) {\n  var SYMBOL = wks(KEY);\n\n  var DELEGATES_TO_SYMBOL = !fails(function () {\n    // String methods call symbol-named RegEp methods\n    var O = {};\n    O[SYMBOL] = function () { return 7; };\n    return ''[KEY](O) != 7;\n  });\n\n  var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL ? !fails(function () {\n    // Symbol-named RegExp methods call .exec\n    var execCalled = false;\n    var re = /a/;\n    re.exec = function () { execCalled = true; return null; };\n    if (KEY === 'split') {\n      // RegExp[@@split] doesn't call the regex's exec method, but first creates\n      // a new one. We need to return the patched regex when creating the new one.\n      re.constructor = {};\n      re.constructor[SPECIES] = function () { return re; };\n    }\n    re[SYMBOL]('');\n    return !execCalled;\n  }) : undefined;\n\n  if (\n    !DELEGATES_TO_SYMBOL ||\n    !DELEGATES_TO_EXEC ||\n    (KEY === 'replace' && !REPLACE_SUPPORTS_NAMED_GROUPS) ||\n    (KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC)\n  ) {\n    var nativeRegExpMethod = /./[SYMBOL];\n    var fns = exec(\n      defined,\n      SYMBOL,\n      ''[KEY],\n      function maybeCallNative(nativeMethod, regexp, str, arg2, forceStringMethod) {\n        if (regexp.exec === regexpExec) {\n          if (DELEGATES_TO_SYMBOL && !forceStringMethod) {\n            // The native String method already delegates to @@method (this\n            // polyfilled function), leasing to infinite recursion.\n            // We avoid it by directly calling the native @@method method.\n            return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) };\n          }\n          return { done: true, value: nativeMethod.call(str, regexp, arg2) };\n        }\n        return { done: false };\n      }\n    );\n    var strfn = fns[0];\n    var rxfn = fns[1];\n\n    redefine(String.prototype, KEY, strfn);\n    hide(RegExp.prototype, SYMBOL, length == 2\n      // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)\n      // 21.2.5.11 RegExp.prototype[@@split](string, limit)\n      ? function (string, arg) { return rxfn.call(string, this, arg); }\n      // 21.2.5.6 RegExp.prototype[@@match](string)\n      // 21.2.5.9 RegExp.prototype[@@search](string)\n      : function (string) { return rxfn.call(string, this); }\n    );\n  }\n};\n","var isObject = require('./_is-object');\nvar document = require('./_global').document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n  return is ? document.createElement(it) : {};\n};\n","// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = require('./_cof');\nvar TAG = require('./_wks')('toStringTag');\n// ES3 wrong here\nvar ARG = cof(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n  try {\n    return it[key];\n  } catch (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n  var O, T, B;\n  return it === undefined ? 'Undefined' : it === null ? 'Null'\n    // @@toStringTag case\n    : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n    // builtinTag case\n    : ARG ? cof(O)\n    // ES3 arguments fallback\n    : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n","\"use strict\";\n\n/*\n  MIT License http://www.opensource.org/licenses/mit-license.php\n  Author Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\n// eslint-disable-next-line func-names\nmodule.exports = function (useSourceMap) {\n  var list = []; // return the list of modules as css string\n\n  list.toString = function toString() {\n    return this.map(function (item) {\n      var content = cssWithMappingToString(item, useSourceMap);\n\n      if (item[2]) {\n        return \"@media \".concat(item[2], \" {\").concat(content, \"}\");\n      }\n\n      return content;\n    }).join('');\n  }; // import a list of modules into the list\n  // eslint-disable-next-line func-names\n\n\n  list.i = function (modules, mediaQuery, dedupe) {\n    if (typeof modules === 'string') {\n      // eslint-disable-next-line no-param-reassign\n      modules = [[null, modules, '']];\n    }\n\n    var alreadyImportedModules = {};\n\n    if (dedupe) {\n      for (var i = 0; i < this.length; i++) {\n        // eslint-disable-next-line prefer-destructuring\n        var id = this[i][0];\n\n        if (id != null) {\n          alreadyImportedModules[id] = true;\n        }\n      }\n    }\n\n    for (var _i = 0; _i < modules.length; _i++) {\n      var item = [].concat(modules[_i]);\n\n      if (dedupe && alreadyImportedModules[item[0]]) {\n        // eslint-disable-next-line no-continue\n        continue;\n      }\n\n      if (mediaQuery) {\n        if (!item[2]) {\n          item[2] = mediaQuery;\n        } else {\n          item[2] = \"\".concat(mediaQuery, \" and \").concat(item[2]);\n        }\n      }\n\n      list.push(item);\n    }\n  };\n\n  return list;\n};\n\nfunction cssWithMappingToString(item, useSourceMap) {\n  var content = item[1] || ''; // eslint-disable-next-line prefer-destructuring\n\n  var cssMapping = item[3];\n\n  if (!cssMapping) {\n    return content;\n  }\n\n  if (useSourceMap && typeof btoa === 'function') {\n    var sourceMapping = toComment(cssMapping);\n    var sourceURLs = cssMapping.sources.map(function (source) {\n      return \"/*# sourceURL=\".concat(cssMapping.sourceRoot || '').concat(source, \" */\");\n    });\n    return [content].concat(sourceURLs).concat([sourceMapping]).join('\\n');\n  }\n\n  return [content].join('\\n');\n} // Adapted from convert-source-map (MIT)\n\n\nfunction toComment(sourceMap) {\n  // eslint-disable-next-line no-undef\n  var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));\n  var data = \"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(base64);\n  return \"/*# \".concat(data, \" */\");\n}","exports.f = Object.getOwnPropertySymbols;\n","var global = require('./_global');\nvar hide = require('./_hide');\nvar has = require('./_has');\nvar SRC = require('./_uid')('src');\nvar $toString = require('./_function-to-string');\nvar TO_STRING = 'toString';\nvar TPL = ('' + $toString).split(TO_STRING);\n\nrequire('./_core').inspectSource = function (it) {\n  return $toString.call(it);\n};\n\n(module.exports = function (O, key, val, safe) {\n  var isFunction = typeof val == 'function';\n  if (isFunction) has(val, 'name') || hide(val, 'name', key);\n  if (O[key] === val) return;\n  if (isFunction) has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key)));\n  if (O === global) {\n    O[key] = val;\n  } else if (!safe) {\n    delete O[key];\n    hide(O, key, val);\n  } else if (O[key]) {\n    O[key] = val;\n  } else {\n    hide(O, key, val);\n  }\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, TO_STRING, function toString() {\n  return typeof this == 'function' && this[SRC] || $toString.call(this);\n});\n","// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = require('./_an-object');\nvar dPs = require('./_object-dps');\nvar enumBugKeys = require('./_enum-bug-keys');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n  // Thrash, waste and sodomy: IE GC bug\n  var iframe = require('./_dom-create')('iframe');\n  var i = enumBugKeys.length;\n  var lt = '<';\n  var gt = '>';\n  var iframeDocument;\n  iframe.style.display = 'none';\n  require('./_html').appendChild(iframe);\n  iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n  // createDict = iframe.contentWindow.Object;\n  // html.removeChild(iframe);\n  iframeDocument = iframe.contentWindow.document;\n  iframeDocument.open();\n  iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n  iframeDocument.close();\n  createDict = iframeDocument.F;\n  while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n  return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n  var result;\n  if (O !== null) {\n    Empty[PROTOTYPE] = anObject(O);\n    result = new Empty();\n    Empty[PROTOTYPE] = null;\n    // add \"__proto__\" for Object.getPrototypeOf polyfill\n    result[IE_PROTO] = O;\n  } else result = createDict();\n  return Properties === undefined ? result : dPs(result, Properties);\n};\n","var store = require('./_shared')('wks');\nvar uid = require('./_uid');\nvar Symbol = require('./_global').Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n  return store[name] || (store[name] =\n    USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n","\"use strict\";\n\nmodule.exports = function() {\n    var idCount = 1;\n\n    /**\n     * Generates a new unique id in the context.\n     * @public\n     * @returns {number} A unique id in the context.\n     */\n    function generate() {\n        return idCount++;\n    }\n\n    return {\n        generate: generate\n    };\n};\n","module.exports = false;\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n  return toString.call(it).slice(8, -1);\n};\n","'use strict';\nvar fails = require('./_fails');\n\nmodule.exports = function (method, arg) {\n  return !!method && fails(function () {\n    // eslint-disable-next-line no-useless-call\n    arg ? method.call(null, function () { /* empty */ }, 1) : method.call(null);\n  });\n};\n","var dP = require('./_object-dp');\nvar createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function (object, key, value) {\n  return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n  object[key] = value;\n  return object;\n};\n","// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = require('./_has');\nvar toObject = require('./_to-object');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n  O = toObject(O);\n  if (has(O, IE_PROTO)) return O[IE_PROTO];\n  if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n    return O.constructor.prototype;\n  } return O instanceof Object ? ObjectProto : null;\n};\n","'use strict';\nvar create = require('./_object-create');\nvar descriptor = require('./_property-desc');\nvar setToStringTag = require('./_set-to-string-tag');\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nrequire('./_hide')(IteratorPrototype, require('./_wks')('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n  Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n  setToStringTag(Constructor, NAME + ' Iterator');\n};\n","// 19.1.2.14 Object.keys(O)\nvar toObject = require('./_to-object');\nvar $keys = require('./_object-keys');\n\nrequire('./_object-sap')('keys', function () {\n  return function keys(it) {\n    return $keys(toObject(it));\n  };\n});\n","// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n  return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n","module.exports = function (bitmap, value) {\n  return {\n    enumerable: !(bitmap & 1),\n    configurable: !(bitmap & 2),\n    writable: !(bitmap & 4),\n    value: value\n  };\n};\n","'use strict';\n\nvar anObject = require('./_an-object');\nvar toLength = require('./_to-length');\nvar advanceStringIndex = require('./_advance-string-index');\nvar regExpExec = require('./_regexp-exec-abstract');\n\n// @@match logic\nrequire('./_fix-re-wks')('match', 1, function (defined, MATCH, $match, maybeCallNative) {\n  return [\n    // `String.prototype.match` method\n    // https://tc39.github.io/ecma262/#sec-string.prototype.match\n    function match(regexp) {\n      var O = defined(this);\n      var fn = regexp == undefined ? undefined : regexp[MATCH];\n      return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[MATCH](String(O));\n    },\n    // `RegExp.prototype[@@match]` method\n    // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@match\n    function (regexp) {\n      var res = maybeCallNative($match, regexp, this);\n      if (res.done) return res.value;\n      var rx = anObject(regexp);\n      var S = String(this);\n      if (!rx.global) return regExpExec(rx, S);\n      var fullUnicode = rx.unicode;\n      rx.lastIndex = 0;\n      var A = [];\n      var n = 0;\n      var result;\n      while ((result = regExpExec(rx, S)) !== null) {\n        var matchStr = String(result[0]);\n        A[n] = matchStr;\n        if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n        n++;\n      }\n      return n === 0 ? null : A;\n    }\n  ];\n});\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".vue-grid-item{-webkit-transition:all .2s ease;transition:all .2s ease;-webkit-transition-property:left,top,right;transition-property:left,top,right}.vue-grid-item,.vue-grid-item.no-touch{-ms-touch-action:none;touch-action:none}.vue-grid-item.cssTransforms{-webkit-transition-property:-webkit-transform;transition-property:-webkit-transform;transition-property:transform;transition-property:transform,-webkit-transform;left:0;right:auto}.vue-grid-item.cssTransforms.render-rtl{left:auto;right:0}.vue-grid-item.resizing{opacity:.6;z-index:3}.vue-grid-item.vue-draggable-dragging{-webkit-transition:none;transition:none;z-index:3}.vue-grid-item.vue-grid-placeholder{background:red;opacity:.2;-webkit-transition-duration:.1s;transition-duration:.1s;z-index:2;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none}.vue-grid-item>.vue-resizable-handle{position:absolute;width:20px;height:20px;bottom:0;right:0;background:url(\\\"data:image/svg+xml;base64,PHN2ZyBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjojZmZmZmZmMDAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjYiIGhlaWdodD0iNiI+PHBhdGggZD0iTTYgNkgwVjQuMmg0LjJWMEg2djZ6IiBvcGFjaXR5PSIuMzAyIi8+PC9zdmc+\\\");background-position:100% 100%;padding:0 3px 3px 0;background-repeat:no-repeat;background-origin:content-box;-webkit-box-sizing:border-box;box-sizing:border-box;cursor:se-resize}.vue-grid-item>.vue-rtl-resizable-handle{bottom:0;left:0;background:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTAiIGhlaWdodD0iMTAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbD0ibm9uZSIgZD0iTS0xLTFoMTJ2MTJILTF6Ii8+PGc+PHBhdGggc3Ryb2tlLWxpbmVjYXA9InVuZGVmaW5lZCIgc3Ryb2tlLWxpbmVqb2luPSJ1bmRlZmluZWQiIHN0cm9rZS13aWR0aD0iMS41IiBzdHJva2U9IiMwMDAiIGZpbGw9Im5vbmUiIGQ9Ik0xNDQuODIxLTM4LjM5M2wtMjAuMzU3LTMxLjc4NSIvPjxwYXRoIHN0cm9rZT0iIzY2NiIgc3Ryb2tlLWxpbmVjYXA9InVuZGVmaW5lZCIgc3Ryb2tlLWxpbmVqb2luPSJ1bmRlZmluZWQiIHN0cm9rZS13aWR0aD0iMiIgZmlsbD0ibm9uZSIgZD0iTS45NDctLjAxOHY5LjEyNU0tLjY1NiA5aDEwLjczIi8+PC9nPjwvc3ZnPg==);background-position:0 100%;padding-left:3px;background-repeat:no-repeat;background-origin:content-box;cursor:sw-resize;right:auto}.vue-grid-item.disable-userselect{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}\", \"\"]);\n// Exports\nmodule.exports = exports;\n","/**\n * Translates the list format produced by css-loader into something\n * easier to manipulate.\n */\nexport default function listToStyles (parentId, list) {\n  var styles = []\n  var newStyles = {}\n  for (var i = 0; i < list.length; i++) {\n    var item = list[i]\n    var id = item[0]\n    var css = item[1]\n    var media = item[2]\n    var sourceMap = item[3]\n    var part = {\n      id: parentId + ':' + i,\n      css: css,\n      media: media,\n      sourceMap: sourceMap\n    }\n    if (!newStyles[id]) {\n      styles.push(newStyles[id] = { id: id, parts: [part] })\n    } else {\n      newStyles[id].parts.push(part)\n    }\n  }\n  return styles\n}\n","/*\n  MIT License http://www.opensource.org/licenses/mit-license.php\n  Author Tobias Koppers @sokra\n  Modified by Evan You @yyx990803\n*/\n\nimport listToStyles from './listToStyles'\n\nvar hasDocument = typeof document !== 'undefined'\n\nif (typeof DEBUG !== 'undefined' && DEBUG) {\n  if (!hasDocument) {\n    throw new Error(\n    'vue-style-loader cannot be used in a non-browser environment. ' +\n    \"Use { target: 'node' } in your Webpack config to indicate a server-rendering environment.\"\n  ) }\n}\n\n/*\ntype StyleObject = {\n  id: number;\n  parts: Array<StyleObjectPart>\n}\n\ntype StyleObjectPart = {\n  css: string;\n  media: string;\n  sourceMap: ?string\n}\n*/\n\nvar stylesInDom = {/*\n  [id: number]: {\n    id: number,\n    refs: number,\n    parts: Array<(obj?: StyleObjectPart) => void>\n  }\n*/}\n\nvar head = hasDocument && (document.head || document.getElementsByTagName('head')[0])\nvar singletonElement = null\nvar singletonCounter = 0\nvar isProduction = false\nvar noop = function () {}\nvar options = null\nvar ssrIdKey = 'data-vue-ssr-id'\n\n// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>\n// tags it will allow on a page\nvar isOldIE = typeof navigator !== 'undefined' && /msie [6-9]\\b/.test(navigator.userAgent.toLowerCase())\n\nexport default function addStylesClient (parentId, list, _isProduction, _options) {\n  isProduction = _isProduction\n\n  options = _options || {}\n\n  var styles = listToStyles(parentId, list)\n  addStylesToDom(styles)\n\n  return function update (newList) {\n    var mayRemove = []\n    for (var i = 0; i < styles.length; i++) {\n      var item = styles[i]\n      var domStyle = stylesInDom[item.id]\n      domStyle.refs--\n      mayRemove.push(domStyle)\n    }\n    if (newList) {\n      styles = listToStyles(parentId, newList)\n      addStylesToDom(styles)\n    } else {\n      styles = []\n    }\n    for (var i = 0; i < mayRemove.length; i++) {\n      var domStyle = mayRemove[i]\n      if (domStyle.refs === 0) {\n        for (var j = 0; j < domStyle.parts.length; j++) {\n          domStyle.parts[j]()\n        }\n        delete stylesInDom[domStyle.id]\n      }\n    }\n  }\n}\n\nfunction addStylesToDom (styles /* Array<StyleObject> */) {\n  for (var i = 0; i < styles.length; i++) {\n    var item = styles[i]\n    var domStyle = stylesInDom[item.id]\n    if (domStyle) {\n      domStyle.refs++\n      for (var j = 0; j < domStyle.parts.length; j++) {\n        domStyle.parts[j](item.parts[j])\n      }\n      for (; j < item.parts.length; j++) {\n        domStyle.parts.push(addStyle(item.parts[j]))\n      }\n      if (domStyle.parts.length > item.parts.length) {\n        domStyle.parts.length = item.parts.length\n      }\n    } else {\n      var parts = []\n      for (var j = 0; j < item.parts.length; j++) {\n        parts.push(addStyle(item.parts[j]))\n      }\n      stylesInDom[item.id] = { id: item.id, refs: 1, parts: parts }\n    }\n  }\n}\n\nfunction createStyleElement () {\n  var styleElement = document.createElement('style')\n  styleElement.type = 'text/css'\n  head.appendChild(styleElement)\n  return styleElement\n}\n\nfunction addStyle (obj /* StyleObjectPart */) {\n  var update, remove\n  var styleElement = document.querySelector('style[' + ssrIdKey + '~=\"' + obj.id + '\"]')\n\n  if (styleElement) {\n    if (isProduction) {\n      // has SSR styles and in production mode.\n      // simply do nothing.\n      return noop\n    } else {\n      // has SSR styles but in dev mode.\n      // for some reason Chrome can't handle source map in server-rendered\n      // style tags - source maps in <style> only works if the style tag is\n      // created and inserted dynamically. So we remove the server rendered\n      // styles and inject new ones.\n      styleElement.parentNode.removeChild(styleElement)\n    }\n  }\n\n  if (isOldIE) {\n    // use singleton mode for IE9.\n    var styleIndex = singletonCounter++\n    styleElement = singletonElement || (singletonElement = createStyleElement())\n    update = applyToSingletonTag.bind(null, styleElement, styleIndex, false)\n    remove = applyToSingletonTag.bind(null, styleElement, styleIndex, true)\n  } else {\n    // use multi-style-tag mode in all other cases\n    styleElement = createStyleElement()\n    update = applyToTag.bind(null, styleElement)\n    remove = function () {\n      styleElement.parentNode.removeChild(styleElement)\n    }\n  }\n\n  update(obj)\n\n  return function updateStyle (newObj /* StyleObjectPart */) {\n    if (newObj) {\n      if (newObj.css === obj.css &&\n          newObj.media === obj.media &&\n          newObj.sourceMap === obj.sourceMap) {\n        return\n      }\n      update(obj = newObj)\n    } else {\n      remove()\n    }\n  }\n}\n\nvar replaceText = (function () {\n  var textStore = []\n\n  return function (index, replacement) {\n    textStore[index] = replacement\n    return textStore.filter(Boolean).join('\\n')\n  }\n})()\n\nfunction applyToSingletonTag (styleElement, index, remove, obj) {\n  var css = remove ? '' : obj.css\n\n  if (styleElement.styleSheet) {\n    styleElement.styleSheet.cssText = replaceText(index, css)\n  } else {\n    var cssNode = document.createTextNode(css)\n    var childNodes = styleElement.childNodes\n    if (childNodes[index]) styleElement.removeChild(childNodes[index])\n    if (childNodes.length) {\n      styleElement.insertBefore(cssNode, childNodes[index])\n    } else {\n      styleElement.appendChild(cssNode)\n    }\n  }\n}\n\nfunction applyToTag (styleElement, obj) {\n  var css = obj.css\n  var media = obj.media\n  var sourceMap = obj.sourceMap\n\n  if (media) {\n    styleElement.setAttribute('media', media)\n  }\n  if (options.ssrId) {\n    styleElement.setAttribute(ssrIdKey, obj.id)\n  }\n\n  if (sourceMap) {\n    // https://developer.chrome.com/devtools/docs/javascript-debugging\n    // this makes source maps inside style tags work properly in Chrome\n    css += '\\n/*# sourceURL=' + sourceMap.sources[0] + ' */'\n    // http://stackoverflow.com/a/26603875\n    css += '\\n/*# sourceMappingURL=data:application/json;base64,' + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + ' */'\n  }\n\n  if (styleElement.styleSheet) {\n    styleElement.styleSheet.cssText = css\n  } else {\n    while (styleElement.firstChild) {\n      styleElement.removeChild(styleElement.firstChild)\n    }\n    styleElement.appendChild(document.createTextNode(css))\n  }\n}\n","\"use strict\";\n\nmodule.exports = function(idHandler) {\n    var eventListeners = {};\n\n    /**\n     * Gets all listeners for the given element.\n     * @public\n     * @param {element} element The element to get all listeners for.\n     * @returns All listeners for the given element.\n     */\n    function getListeners(element) {\n        var id = idHandler.get(element);\n\n        if (id === undefined) {\n            return [];\n        }\n\n        return eventListeners[id] || [];\n    }\n\n    /**\n     * Stores the given listener for the given element. Will not actually add the listener to the element.\n     * @public\n     * @param {element} element The element that should have the listener added.\n     * @param {function} listener The callback that the element has added.\n     */\n    function addListener(element, listener) {\n        var id = idHandler.get(element);\n\n        if(!eventListeners[id]) {\n            eventListeners[id] = [];\n        }\n\n        eventListeners[id].push(listener);\n    }\n\n    function removeListener(element, listener) {\n        var listeners = getListeners(element);\n        for (var i = 0, len = listeners.length; i < len; ++i) {\n            if (listeners[i] === listener) {\n              listeners.splice(i, 1);\n              break;\n            }\n        }\n    }\n\n    function removeAllListeners(element) {\n      var listeners = getListeners(element);\n      if (!listeners) { return; }\n      listeners.length = 0;\n    }\n\n    return {\n        get: getListeners,\n        add: addListener,\n        removeListener: removeListener,\n        removeAllListeners: removeAllListeners\n    };\n};\n","// 7.1.13 ToObject(argument)\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n  return Object(defined(it));\n};\n","\"use strict\";\n\nmodule.exports = function(options) {\n    var idGenerator     = options.idGenerator;\n    var getState        = options.stateHandler.getState;\n\n    /**\n     * Gets the resize detector id of the element.\n     * @public\n     * @param {element} element The target element to get the id of.\n     * @returns {string|number|null} The id of the element. Null if it has no id.\n     */\n    function getId(element) {\n        var state = getState(element);\n\n        if (state && state.id !== undefined) {\n            return state.id;\n        }\n\n        return null;\n    }\n\n    /**\n     * Sets the resize detector id of the element. Requires the element to have a resize detector state initialized.\n     * @public\n     * @param {element} element The target element to set the id of.\n     * @returns {string|number|null} The id of the element.\n     */\n    function setId(element) {\n        var state = getState(element);\n\n        if (!state) {\n            throw new Error(\"setId required the element to have a resize detection state.\");\n        }\n\n        var id = idGenerator.generate();\n\n        state.id = id;\n\n        return id;\n    }\n\n    return {\n        get: getId,\n        set: setId\n    };\n};\n","\"use strict\";\n\nvar utils = module.exports = {};\n\nutils.getOption = getOption;\n\nfunction getOption(options, name, defaultValue) {\n    var value = options[name];\n\n    if((value === undefined || value === null) && defaultValue !== undefined) {\n        return defaultValue;\n    }\n\n    return value;\n}\n","'use strict';\n\nvar regexpFlags = require('./_flags');\n\nvar nativeExec = RegExp.prototype.exec;\n// This always refers to the native implementation, because the\n// String#replace polyfill uses ./fix-regexp-well-known-symbol-logic.js,\n// which loads this file before patching the method.\nvar nativeReplace = String.prototype.replace;\n\nvar patchedExec = nativeExec;\n\nvar LAST_INDEX = 'lastIndex';\n\nvar UPDATES_LAST_INDEX_WRONG = (function () {\n  var re1 = /a/,\n      re2 = /b*/g;\n  nativeExec.call(re1, 'a');\n  nativeExec.call(re2, 'a');\n  return re1[LAST_INDEX] !== 0 || re2[LAST_INDEX] !== 0;\n})();\n\n// nonparticipating capturing group, copied from es5-shim's String#split patch.\nvar NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;\n\nvar PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED;\n\nif (PATCH) {\n  patchedExec = function exec(str) {\n    var re = this;\n    var lastIndex, reCopy, match, i;\n\n    if (NPCG_INCLUDED) {\n      reCopy = new RegExp('^' + re.source + '$(?!\\\\s)', regexpFlags.call(re));\n    }\n    if (UPDATES_LAST_INDEX_WRONG) lastIndex = re[LAST_INDEX];\n\n    match = nativeExec.call(re, str);\n\n    if (UPDATES_LAST_INDEX_WRONG && match) {\n      re[LAST_INDEX] = re.global ? match.index + match[0].length : lastIndex;\n    }\n    if (NPCG_INCLUDED && match && match.length > 1) {\n      // Fix browsers whose `exec` methods don't consistently return `undefined`\n      // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/\n      // eslint-disable-next-line no-loop-func\n      nativeReplace.call(match[0], reCopy, function () {\n        for (i = 1; i < arguments.length - 2; i++) {\n          if (arguments[i] === undefined) match[i] = undefined;\n        }\n      });\n    }\n\n    return match;\n  };\n}\n\nmodule.exports = patchedExec;\n","exports.f = {}.propertyIsEnumerable;\n","var core = require('./_core');\nvar global = require('./_global');\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n  return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n  version: core.version,\n  mode: require('./_library') ? 'pure' : 'global',\n  copyright: '© 2020 Denis Pushkarev (zloirock.ru)'\n});\n","'use strict';\nvar $export = require('./_export');\nvar aFunction = require('./_a-function');\nvar toObject = require('./_to-object');\nvar fails = require('./_fails');\nvar $sort = [].sort;\nvar test = [1, 2, 3];\n\n$export($export.P + $export.F * (fails(function () {\n  // IE8-\n  test.sort(undefined);\n}) || !fails(function () {\n  // V8 bug\n  test.sort(null);\n  // Old WebKit\n}) || !require('./_strict-method')($sort)), 'Array', {\n  // 22.1.3.25 Array.prototype.sort(comparefn)\n  sort: function sort(comparefn) {\n    return comparefn === undefined\n      ? $sort.call(toObject(this))\n      : $sort.call(toObject(this), aFunction(comparefn));\n  }\n});\n","\"use strict\";\n\nmodule.exports = function(options) {\n    var getState = options.stateHandler.getState;\n\n    /**\n     * Tells if the element has been made detectable and ready to be listened for resize events.\n     * @public\n     * @param {element} The element to check.\n     * @returns {boolean} True or false depending on if the element is detectable or not.\n     */\n    function isDetectable(element) {\n        var state = getState(element);\n        return state && !!state.isDetectable;\n    }\n\n    /**\n     * Marks the element that it has been made detectable and ready to be listened for resize events.\n     * @public\n     * @param {element} The element to mark.\n     */\n    function markAsDetectable(element) {\n        getState(element).isDetectable = true;\n    }\n\n    /**\n     * Tells if the element is busy or not.\n     * @public\n     * @param {element} The element to check.\n     * @returns {boolean} True or false depending on if the element is busy or not.\n     */\n    function isBusy(element) {\n        return !!getState(element).busy;\n    }\n\n    /**\n     * Marks the object is busy and should not be made detectable.\n     * @public\n     * @param {element} element The element to mark.\n     * @param {boolean} busy If the element is busy or not.\n     */\n    function markBusy(element, busy) {\n        getState(element).busy = !!busy;\n    }\n\n    return {\n        isDetectable: isDetectable,\n        markAsDetectable: markAsDetectable,\n        isBusy: isBusy,\n        markBusy: markBusy\n    };\n};\n","var global = require('./_global');\nvar core = require('./_core');\nvar hide = require('./_hide');\nvar redefine = require('./_redefine');\nvar ctx = require('./_ctx');\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n  var IS_FORCED = type & $export.F;\n  var IS_GLOBAL = type & $export.G;\n  var IS_STATIC = type & $export.S;\n  var IS_PROTO = type & $export.P;\n  var IS_BIND = type & $export.B;\n  var target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE];\n  var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n  var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {});\n  var key, own, out, exp;\n  if (IS_GLOBAL) source = name;\n  for (key in source) {\n    // contains in native\n    own = !IS_FORCED && target && target[key] !== undefined;\n    // export native or passed\n    out = (own ? target : source)[key];\n    // bind timers to global for call from export context\n    exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n    // extend global\n    if (target) redefine(target, key, out, type & $export.U);\n    // export\n    if (exports[key] != out) hide(exports, key, exp);\n    if (IS_PROTO && expProto[key] != out) expProto[key] = out;\n  }\n};\nglobal.core = core;\n// type bitmap\n$export.F = 1;   // forced\n$export.G = 2;   // global\n$export.S = 4;   // static\n$export.P = 8;   // proto\n$export.B = 16;  // bind\n$export.W = 32;  // wrap\n$export.U = 64;  // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n","var isObject = require('./_is-object');\nvar setPrototypeOf = require('./_set-proto').set;\nmodule.exports = function (that, target, C) {\n  var S = target.constructor;\n  var P;\n  if (S !== C && typeof S == 'function' && (P = S.prototype) !== C.prototype && isObject(P) && setPrototypeOf) {\n    setPrototypeOf(that, P);\n  } return that;\n};\n","// most Object methods by ES6 should accept primitives\nvar $export = require('./_export');\nvar core = require('./_core');\nvar fails = require('./_fails');\nmodule.exports = function (KEY, exec) {\n  var fn = (core.Object || {})[KEY] || Object[KEY];\n  var exp = {};\n  exp[KEY] = exec(fn);\n  $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);\n};\n","'use strict';\n\nvar classof = require('./_classof');\nvar builtinExec = RegExp.prototype.exec;\n\n // `RegExpExec` abstract operation\n// https://tc39.github.io/ecma262/#sec-regexpexec\nmodule.exports = function (R, S) {\n  var exec = R.exec;\n  if (typeof exec === 'function') {\n    var result = exec.call(R, S);\n    if (typeof result !== 'object') {\n      throw new TypeError('RegExp exec method returned something other than an Object or null');\n    }\n    return result;\n  }\n  if (classof(R) !== 'RegExp') {\n    throw new TypeError('RegExp#exec called on incompatible receiver');\n  }\n  return builtinExec.call(R, S);\n};\n","var shared = require('./_shared')('keys');\nvar uid = require('./_uid');\nmodule.exports = function (key) {\n  return shared[key] || (shared[key] = uid(key));\n};\n","// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = require('./_cof');\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n  return cof(it) == 'String' ? it.split('') : Object(it);\n};\n","export * from \"-!../../node_modules/vue-style-loader/index.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./GridLayout.vue?vue&type=style&index=0&id=fc5948f6&lang=css\"","// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = require('./_iobject');\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n  return IObject(defined(it));\n};\n","var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n  return hasOwnProperty.call(it, key);\n};\n","// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n  if (!isObject(it)) return it;\n  var fn, val;\n  if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n  if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n  if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n  throw TypeError(\"Can't convert object to primitive value\");\n};\n","'use strict';\n// 19.1.2.1 Object.assign(target, source, ...)\nvar DESCRIPTORS = require('./_descriptors');\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nvar toObject = require('./_to-object');\nvar IObject = require('./_iobject');\nvar $assign = Object.assign;\n\n// should work with symbols and should have deterministic property order (V8 bug)\nmodule.exports = !$assign || require('./_fails')(function () {\n  var A = {};\n  var B = {};\n  // eslint-disable-next-line no-undef\n  var S = Symbol();\n  var K = 'abcdefghijklmnopqrst';\n  A[S] = 7;\n  K.split('').forEach(function (k) { B[k] = k; });\n  return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n  var T = toObject(target);\n  var aLen = arguments.length;\n  var index = 1;\n  var getSymbols = gOPS.f;\n  var isEnum = pIE.f;\n  while (aLen > index) {\n    var S = IObject(arguments[index++]);\n    var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);\n    var length = keys.length;\n    var j = 0;\n    var key;\n    while (length > j) {\n      key = keys[j++];\n      if (!DESCRIPTORS || isEnum.call(S, key)) T[key] = S[key];\n    }\n  } return T;\n} : $assign;\n","// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n  ? window : typeof self != 'undefined' && self.Math == Math ? self\n  // eslint-disable-next-line no-new-func\n  : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n","var toInteger = require('./_to-integer');\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n  index = toInteger(index);\n  return index < 0 ? max(index + length, 0) : min(index, length);\n};\n","module.exports = function (exec) {\n  try {\n    return !!exec();\n  } catch (e) {\n    return true;\n  }\n};\n","var def = require('./_object-dp').f;\nvar has = require('./_has');\nvar TAG = require('./_wks')('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n  if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n","var core = module.exports = { version: '2.6.12' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".vue-grid-layout{position:relative;-webkit-transition:height .2s ease;transition:height .2s ease}\", \"\"]);\n// Exports\nmodule.exports = exports;\n","module.exports = {};\n","var anObject = require('./_an-object');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar toPrimitive = require('./_to-primitive');\nvar dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n  anObject(O);\n  P = toPrimitive(P, true);\n  anObject(Attributes);\n  if (IE8_DOM_DEFINE) try {\n    return dP(O, P, Attributes);\n  } catch (e) { /* empty */ }\n  if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n  if ('value' in Attributes) O[P] = Attributes.value;\n  return O;\n};\n","// addapted from the document.currentScript polyfill by Adam Miller\n// MIT license\n// source: https://github.com/amiller-gh/currentScript-polyfill\n\n// added support for Firefox https://bugzilla.mozilla.org/show_bug.cgi?id=1620505\n\n(function (root, factory) {\n  if (typeof define === 'function' && define.amd) {\n    define([], factory);\n  } else if (typeof module === 'object' && module.exports) {\n    module.exports = factory();\n  } else {\n    root.getCurrentScript = factory();\n  }\n}(typeof self !== 'undefined' ? self : this, function () {\n  function getCurrentScript () {\n    var descriptor = Object.getOwnPropertyDescriptor(document, 'currentScript')\n    // for chrome\n    if (!descriptor && 'currentScript' in document && document.currentScript) {\n      return document.currentScript\n    }\n\n    // for other browsers with native support for currentScript\n    if (descriptor && descriptor.get !== getCurrentScript && document.currentScript) {\n      return document.currentScript\n    }\n  \n    // IE 8-10 support script readyState\n    // IE 11+ & Firefox support stack trace\n    try {\n      throw new Error();\n    }\n    catch (err) {\n      // Find the second match for the \"at\" string to get file src url from stack.\n      var ieStackRegExp = /.*at [^(]*\\((.*):(.+):(.+)\\)$/ig,\n        ffStackRegExp = /@([^@]*):(\\d+):(\\d+)\\s*$/ig,\n        stackDetails = ieStackRegExp.exec(err.stack) || ffStackRegExp.exec(err.stack),\n        scriptLocation = (stackDetails && stackDetails[1]) || false,\n        line = (stackDetails && stackDetails[2]) || false,\n        currentLocation = document.location.href.replace(document.location.hash, ''),\n        pageSource,\n        inlineScriptSourceRegExp,\n        inlineScriptSource,\n        scripts = document.getElementsByTagName('script'); // Live NodeList collection\n  \n      if (scriptLocation === currentLocation) {\n        pageSource = document.documentElement.outerHTML;\n        inlineScriptSourceRegExp = new RegExp('(?:[^\\\\n]+?\\\\n){0,' + (line - 2) + '}[^<]*<script>([\\\\d\\\\D]*?)<\\\\/script>[\\\\d\\\\D]*', 'i');\n        inlineScriptSource = pageSource.replace(inlineScriptSourceRegExp, '$1').trim();\n      }\n  \n      for (var i = 0; i < scripts.length; i++) {\n        // If ready state is interactive, return the script tag\n        if (scripts[i].readyState === 'interactive') {\n          return scripts[i];\n        }\n  \n        // If src matches, return the script tag\n        if (scripts[i].src === scriptLocation) {\n          return scripts[i];\n        }\n  \n        // If inline source matches, return the script tag\n        if (\n          scriptLocation === currentLocation &&\n          scripts[i].innerHTML &&\n          scripts[i].innerHTML.trim() === inlineScriptSource\n        ) {\n          return scripts[i];\n        }\n      }\n  \n      // If no match, return null\n      return null;\n    }\n  };\n\n  return getCurrentScript\n}));\n","// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nvar isObject = require('./_is-object');\nvar anObject = require('./_an-object');\nvar check = function (O, proto) {\n  anObject(O);\n  if (!isObject(proto) && proto !== null) throw TypeError(proto + \": can't set as prototype!\");\n};\nmodule.exports = {\n  set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line\n    function (test, buggy, set) {\n      try {\n        set = require('./_ctx')(Function.call, require('./_object-gopd').f(Object.prototype, '__proto__').set, 2);\n        set(test, []);\n        buggy = !(test instanceof Array);\n      } catch (e) { buggy = true; }\n      return function setPrototypeOf(O, proto) {\n        check(O, proto);\n        if (buggy) O.__proto__ = proto;\n        else set(O, proto);\n        return O;\n      };\n    }({}, false) : undefined),\n  check: check\n};\n","module.exports = __WEBPACK_EXTERNAL_MODULE__8bbf__;","// https://github.com/tc39/proposal-object-getownpropertydescriptors\nvar $export = require('./_export');\nvar ownKeys = require('./_own-keys');\nvar toIObject = require('./_to-iobject');\nvar gOPD = require('./_object-gopd');\nvar createProperty = require('./_create-property');\n\n$export($export.S, 'Object', {\n  getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object) {\n    var O = toIObject(object);\n    var getDesc = gOPD.f;\n    var keys = ownKeys(O);\n    var result = {};\n    var i = 0;\n    var key, desc;\n    while (keys.length > i) {\n      desc = getDesc(O, key = keys[i++]);\n      if (desc !== undefined) createProperty(result, key, desc);\n    }\n    return result;\n  }\n});\n","// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)\nvar $keys = require('./_object-keys-internal');\nvar hiddenKeys = require('./_enum-bug-keys').concat('length', 'prototype');\n\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n  return $keys(O, hiddenKeys);\n};\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./GridLayout.vue?vue&type=style&index=0&id=fc5948f6&lang=css\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"ff1827d0\", content, true, {\"sourceMap\":false,\"shadowMode\":false});","// all object keys, includes non-enumerable and symbols\nvar gOPN = require('./_object-gopn');\nvar gOPS = require('./_object-gops');\nvar anObject = require('./_an-object');\nvar Reflect = require('./_global').Reflect;\nmodule.exports = Reflect && Reflect.ownKeys || function ownKeys(it) {\n  var keys = gOPN.f(anObject(it));\n  var getSymbols = gOPS.f;\n  return getSymbols ? keys.concat(getSymbols(it)) : keys;\n};\n","// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function (fn, that, length) {\n  aFunction(fn);\n  if (that === undefined) return fn;\n  switch (length) {\n    case 1: return function (a) {\n      return fn.call(that, a);\n    };\n    case 2: return function (a, b) {\n      return fn.call(that, a, b);\n    };\n    case 3: return function (a, b, c) {\n      return fn.call(that, a, b, c);\n    };\n  }\n  return function (/* ...args */) {\n    return fn.apply(that, arguments);\n  };\n};\n","// 22.1.3.31 Array.prototype[@@unscopables]\nvar UNSCOPABLES = require('./_wks')('unscopables');\nvar ArrayProto = Array.prototype;\nif (ArrayProto[UNSCOPABLES] == undefined) require('./_hide')(ArrayProto, UNSCOPABLES, {});\nmodule.exports = function (key) {\n  ArrayProto[UNSCOPABLES][key] = true;\n};\n","// 7.1.15 ToLength\nvar toInteger = require('./_to-integer');\nvar min = Math.min;\nmodule.exports = function (it) {\n  return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n","// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function () {\n  return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n","'use strict';\n\nvar anObject = require('./_an-object');\nvar toObject = require('./_to-object');\nvar toLength = require('./_to-length');\nvar toInteger = require('./_to-integer');\nvar advanceStringIndex = require('./_advance-string-index');\nvar regExpExec = require('./_regexp-exec-abstract');\nvar max = Math.max;\nvar min = Math.min;\nvar floor = Math.floor;\nvar SUBSTITUTION_SYMBOLS = /\\$([$&`']|\\d\\d?|<[^>]*>)/g;\nvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\$([$&`']|\\d\\d?)/g;\n\nvar maybeToString = function (it) {\n  return it === undefined ? it : String(it);\n};\n\n// @@replace logic\nrequire('./_fix-re-wks')('replace', 2, function (defined, REPLACE, $replace, maybeCallNative) {\n  return [\n    // `String.prototype.replace` method\n    // https://tc39.github.io/ecma262/#sec-string.prototype.replace\n    function replace(searchValue, replaceValue) {\n      var O = defined(this);\n      var fn = searchValue == undefined ? undefined : searchValue[REPLACE];\n      return fn !== undefined\n        ? fn.call(searchValue, O, replaceValue)\n        : $replace.call(String(O), searchValue, replaceValue);\n    },\n    // `RegExp.prototype[@@replace]` method\n    // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@replace\n    function (regexp, replaceValue) {\n      var res = maybeCallNative($replace, regexp, this, replaceValue);\n      if (res.done) return res.value;\n\n      var rx = anObject(regexp);\n      var S = String(this);\n      var functionalReplace = typeof replaceValue === 'function';\n      if (!functionalReplace) replaceValue = String(replaceValue);\n      var global = rx.global;\n      if (global) {\n        var fullUnicode = rx.unicode;\n        rx.lastIndex = 0;\n      }\n      var results = [];\n      while (true) {\n        var result = regExpExec(rx, S);\n        if (result === null) break;\n        results.push(result);\n        if (!global) break;\n        var matchStr = String(result[0]);\n        if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n      }\n      var accumulatedResult = '';\n      var nextSourcePosition = 0;\n      for (var i = 0; i < results.length; i++) {\n        result = results[i];\n        var matched = String(result[0]);\n        var position = max(min(toInteger(result.index), S.length), 0);\n        var captures = [];\n        // NOTE: This is equivalent to\n        //   captures = result.slice(1).map(maybeToString)\n        // but for some reason `nativeSlice.call(result, 1, result.length)` (called in\n        // the slice polyfill when slicing native arrays) \"doesn't work\" in safari 9 and\n        // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.\n        for (var j = 1; j < result.length; j++) captures.push(maybeToString(result[j]));\n        var namedCaptures = result.groups;\n        if (functionalReplace) {\n          var replacerArgs = [matched].concat(captures, position, S);\n          if (namedCaptures !== undefined) replacerArgs.push(namedCaptures);\n          var replacement = String(replaceValue.apply(undefined, replacerArgs));\n        } else {\n          replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);\n        }\n        if (position >= nextSourcePosition) {\n          accumulatedResult += S.slice(nextSourcePosition, position) + replacement;\n          nextSourcePosition = position + matched.length;\n        }\n      }\n      return accumulatedResult + S.slice(nextSourcePosition);\n    }\n  ];\n\n    // https://tc39.github.io/ecma262/#sec-getsubstitution\n  function getSubstitution(matched, str, position, captures, namedCaptures, replacement) {\n    var tailPos = position + matched.length;\n    var m = captures.length;\n    var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;\n    if (namedCaptures !== undefined) {\n      namedCaptures = toObject(namedCaptures);\n      symbols = SUBSTITUTION_SYMBOLS;\n    }\n    return $replace.call(replacement, symbols, function (match, ch) {\n      var capture;\n      switch (ch.charAt(0)) {\n        case '$': return '$';\n        case '&': return matched;\n        case '`': return str.slice(0, position);\n        case \"'\": return str.slice(tailPos);\n        case '<':\n          capture = namedCaptures[ch.slice(1, -1)];\n          break;\n        default: // \\d\\d?\n          var n = +ch;\n          if (n === 0) return match;\n          if (n > m) {\n            var f = floor(n / 10);\n            if (f === 0) return match;\n            if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1);\n            return match;\n          }\n          capture = captures[n - 1];\n      }\n      return capture === undefined ? '' : capture;\n    });\n  }\n});\n","var $export = require('./_export');\nvar defined = require('./_defined');\nvar fails = require('./_fails');\nvar spaces = require('./_string-ws');\nvar space = '[' + spaces + ']';\nvar non = '\\u200b\\u0085';\nvar ltrim = RegExp('^' + space + space + '*');\nvar rtrim = RegExp(space + space + '*$');\n\nvar exporter = function (KEY, exec, ALIAS) {\n  var exp = {};\n  var FORCE = fails(function () {\n    return !!spaces[KEY]() || non[KEY]() != non;\n  });\n  var fn = exp[KEY] = FORCE ? exec(trim) : spaces[KEY];\n  if (ALIAS) exp[ALIAS] = fn;\n  $export($export.P + $export.F * FORCE, 'String', exp);\n};\n\n// 1 -> String#trimLeft\n// 2 -> String#trimRight\n// 3 -> String#trim\nvar trim = exporter.trim = function (string, TYPE) {\n  string = String(defined(string));\n  if (TYPE & 1) string = string.replace(ltrim, '');\n  if (TYPE & 2) string = string.replace(rtrim, '');\n  return string;\n};\n\nmodule.exports = exporter;\n","\"use strict\";\n\n/* global console: false */\n\n/**\n * Reporter that handles the reporting of logs, warnings and errors.\n * @public\n * @param {boolean} quiet Tells if the reporter should be quiet or not.\n */\nmodule.exports = function(quiet) {\n    function noop() {\n        //Does nothing.\n    }\n\n    var reporter = {\n        log: noop,\n        warn: noop,\n        error: noop\n    };\n\n    if(!quiet && window.console) {\n        var attachFunction = function(reporter, name) {\n            //The proxy is needed to be able to call the method with the console context,\n            //since we cannot use bind.\n            reporter[name] = function reporterProxy() {\n                var f = console[name];\n                if (f.apply) { //IE9 does not support console.log.apply :)\n                    f.apply(console, arguments);\n                } else {\n                    for (var i = 0; i < arguments.length; i++) {\n                        f(arguments[i]);\n                    }\n                }\n            };\n        };\n\n        attachFunction(reporter, \"log\");\n        attachFunction(reporter, \"warn\");\n        attachFunction(reporter, \"error\");\n    }\n\n    return reporter;\n};","var $iterators = require('./es6.array.iterator');\nvar getKeys = require('./_object-keys');\nvar redefine = require('./_redefine');\nvar global = require('./_global');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar wks = require('./_wks');\nvar ITERATOR = wks('iterator');\nvar TO_STRING_TAG = wks('toStringTag');\nvar ArrayValues = Iterators.Array;\n\nvar DOMIterables = {\n  CSSRuleList: true, // TODO: Not spec compliant, should be false.\n  CSSStyleDeclaration: false,\n  CSSValueList: false,\n  ClientRectList: false,\n  DOMRectList: false,\n  DOMStringList: false,\n  DOMTokenList: true,\n  DataTransferItemList: false,\n  FileList: false,\n  HTMLAllCollection: false,\n  HTMLCollection: false,\n  HTMLFormElement: false,\n  HTMLSelectElement: false,\n  MediaList: true, // TODO: Not spec compliant, should be false.\n  MimeTypeArray: false,\n  NamedNodeMap: false,\n  NodeList: true,\n  PaintRequestList: false,\n  Plugin: false,\n  PluginArray: false,\n  SVGLengthList: false,\n  SVGNumberList: false,\n  SVGPathSegList: false,\n  SVGPointList: false,\n  SVGStringList: false,\n  SVGTransformList: false,\n  SourceBufferList: false,\n  StyleSheetList: true, // TODO: Not spec compliant, should be false.\n  TextTrackCueList: false,\n  TextTrackList: false,\n  TouchList: false\n};\n\nfor (var collections = getKeys(DOMIterables), i = 0; i < collections.length; i++) {\n  var NAME = collections[i];\n  var explicit = DOMIterables[NAME];\n  var Collection = global[NAME];\n  var proto = Collection && Collection.prototype;\n  var key;\n  if (proto) {\n    if (!proto[ITERATOR]) hide(proto, ITERATOR, ArrayValues);\n    if (!proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n    Iterators[NAME] = ArrayValues;\n    if (explicit) for (key in $iterators) if (!proto[key]) redefine(proto, key, $iterators[key], true);\n  }\n}\n","'use strict';\nvar regexpExec = require('./_regexp-exec');\nrequire('./_export')({\n  target: 'RegExp',\n  proto: true,\n  forced: regexpExec !== /./.exec\n}, {\n  exec: regexpExec\n});\n","\"use strict\";\n\nvar utils = module.exports = {};\n\n/**\n * Loops through the collection and calls the callback for each element. if the callback returns truthy, the loop is broken and returns the same value.\n * @public\n * @param {*} collection The collection to loop through. Needs to have a length property set and have indices set from 0 to length - 1.\n * @param {function} callback The callback to be called for each element. The element will be given as a parameter to the callback. If this callback returns truthy, the loop is broken and the same value is returned.\n * @returns {*} The value that a callback has returned (if truthy). Otherwise nothing.\n */\nutils.forEach = function(collection, callback) {\n    for(var i = 0; i < collection.length; i++) {\n        var result = callback(collection[i]);\n        if(result) {\n            return result;\n        }\n    }\n};\n","// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n  if (it == undefined) throw TypeError(\"Can't call method on  \" + it);\n  return it;\n};\n","\"use strict\";\n\nvar utils = require(\"./utils\");\n\nmodule.exports = function batchProcessorMaker(options) {\n    options             = options || {};\n    var reporter        = options.reporter;\n    var asyncProcess    = utils.getOption(options, \"async\", true);\n    var autoProcess     = utils.getOption(options, \"auto\", true);\n\n    if(autoProcess && !asyncProcess) {\n        reporter && reporter.warn(\"Invalid options combination. auto=true and async=false is invalid. Setting async=true.\");\n        asyncProcess = true;\n    }\n\n    var batch = Batch();\n    var asyncFrameHandler;\n    var isProcessing = false;\n\n    function addFunction(level, fn) {\n        if(!isProcessing && autoProcess && asyncProcess && batch.size() === 0) {\n            // Since this is async, it is guaranteed to be executed after that the fn is added to the batch.\n            // This needs to be done before, since we're checking the size of the batch to be 0.\n            processBatchAsync();\n        }\n\n        batch.add(level, fn);\n    }\n\n    function processBatch() {\n        // Save the current batch, and create a new batch so that incoming functions are not added into the currently processing batch.\n        // Continue processing until the top-level batch is empty (functions may be added to the new batch while processing, and so on).\n        isProcessing = true;\n        while (batch.size()) {\n            var processingBatch = batch;\n            batch = Batch();\n            processingBatch.process();\n        }\n        isProcessing = false;\n    }\n\n    function forceProcessBatch(localAsyncProcess) {\n        if (isProcessing) {\n            return;\n        }\n\n        if(localAsyncProcess === undefined) {\n            localAsyncProcess = asyncProcess;\n        }\n\n        if(asyncFrameHandler) {\n            cancelFrame(asyncFrameHandler);\n            asyncFrameHandler = null;\n        }\n\n        if(localAsyncProcess) {\n            processBatchAsync();\n        } else {\n            processBatch();\n        }\n    }\n\n    function processBatchAsync() {\n        asyncFrameHandler = requestFrame(processBatch);\n    }\n\n    function clearBatch() {\n        batch           = {};\n        batchSize       = 0;\n        topLevel        = 0;\n        bottomLevel     = 0;\n    }\n\n    function cancelFrame(listener) {\n        // var cancel = window.cancelAnimationFrame || window.mozCancelAnimationFrame || window.webkitCancelAnimationFrame || window.clearTimeout;\n        var cancel = clearTimeout;\n        return cancel(listener);\n    }\n\n    function requestFrame(callback) {\n        // var raf = window.requestAnimationFrame || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame || function(fn) { return window.setTimeout(fn, 20); };\n        var raf = function(fn) { return setTimeout(fn, 0); };\n        return raf(callback);\n    }\n\n    return {\n        add: addFunction,\n        force: forceProcessBatch\n    };\n};\n\nfunction Batch() {\n    var batch       = {};\n    var size        = 0;\n    var topLevel    = 0;\n    var bottomLevel = 0;\n\n    function add(level, fn) {\n        if(!fn) {\n            fn = level;\n            level = 0;\n        }\n\n        if(level > topLevel) {\n            topLevel = level;\n        } else if(level < bottomLevel) {\n            bottomLevel = level;\n        }\n\n        if(!batch[level]) {\n            batch[level] = [];\n        }\n\n        batch[level].push(fn);\n        size++;\n    }\n\n    function process() {\n        for(var level = bottomLevel; level <= topLevel; level++) {\n            var fns = batch[level];\n\n            for(var i = 0; i < fns.length; i++) {\n                var fn = fns[i];\n                fn();\n            }\n        }\n    }\n\n    function getSize() {\n        return size;\n    }\n\n    return {\n        add: add,\n        process: process,\n        size: getSize\n    };\n}\n","// false -> Array#indexOf\n// true  -> Array#includes\nvar toIObject = require('./_to-iobject');\nvar toLength = require('./_to-length');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nmodule.exports = function (IS_INCLUDES) {\n  return function ($this, el, fromIndex) {\n    var O = toIObject($this);\n    var length = toLength(O.length);\n    var index = toAbsoluteIndex(fromIndex, length);\n    var value;\n    // Array#includes uses SameValueZero equality algorithm\n    // eslint-disable-next-line no-self-compare\n    if (IS_INCLUDES && el != el) while (length > index) {\n      value = O[index++];\n      // eslint-disable-next-line no-self-compare\n      if (value != value) return true;\n    // Array#indexOf ignores holes, Array#includes - not\n    } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n      if (O[index] === el) return IS_INCLUDES || index || 0;\n    } return !IS_INCLUDES && -1;\n  };\n};\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./GridItem.vue?vue&type=style&index=0&id=46ff2fc8&lang=css\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"40158674\", content, true, {\"sourceMap\":false,\"shadowMode\":false});","'use strict';\nvar global = require('./_global');\nvar has = require('./_has');\nvar cof = require('./_cof');\nvar inheritIfRequired = require('./_inherit-if-required');\nvar toPrimitive = require('./_to-primitive');\nvar fails = require('./_fails');\nvar gOPN = require('./_object-gopn').f;\nvar gOPD = require('./_object-gopd').f;\nvar dP = require('./_object-dp').f;\nvar $trim = require('./_string-trim').trim;\nvar NUMBER = 'Number';\nvar $Number = global[NUMBER];\nvar Base = $Number;\nvar proto = $Number.prototype;\n// Opera ~12 has broken Object#toString\nvar BROKEN_COF = cof(require('./_object-create')(proto)) == NUMBER;\nvar TRIM = 'trim' in String.prototype;\n\n// 7.1.3 ToNumber(argument)\nvar toNumber = function (argument) {\n  var it = toPrimitive(argument, false);\n  if (typeof it == 'string' && it.length > 2) {\n    it = TRIM ? it.trim() : $trim(it, 3);\n    var first = it.charCodeAt(0);\n    var third, radix, maxCode;\n    if (first === 43 || first === 45) {\n      third = it.charCodeAt(2);\n      if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix\n    } else if (first === 48) {\n      switch (it.charCodeAt(1)) {\n        case 66: case 98: radix = 2; maxCode = 49; break; // fast equal /^0b[01]+$/i\n        case 79: case 111: radix = 8; maxCode = 55; break; // fast equal /^0o[0-7]+$/i\n        default: return +it;\n      }\n      for (var digits = it.slice(2), i = 0, l = digits.length, code; i < l; i++) {\n        code = digits.charCodeAt(i);\n        // parseInt parses a string to a first unavailable symbol\n        // but ToNumber should return NaN if a string contains unavailable symbols\n        if (code < 48 || code > maxCode) return NaN;\n      } return parseInt(digits, radix);\n    }\n  } return +it;\n};\n\nif (!$Number(' 0o1') || !$Number('0b1') || $Number('+0x1')) {\n  $Number = function Number(value) {\n    var it = arguments.length < 1 ? 0 : value;\n    var that = this;\n    return that instanceof $Number\n      // check on 1..constructor(foo) case\n      && (BROKEN_COF ? fails(function () { proto.valueOf.call(that); }) : cof(that) != NUMBER)\n        ? inheritIfRequired(new Base(toNumber(it)), that, $Number) : toNumber(it);\n  };\n  for (var keys = require('./_descriptors') ? gOPN(Base) : (\n    // ES3:\n    'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' +\n    // ES6 (in case, if modules with ES6 Number statics required before):\n    'EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,' +\n    'MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger'\n  ).split(','), j = 0, key; keys.length > j; j++) {\n    if (has(Base, key = keys[j]) && !has($Number, key)) {\n      dP($Number, key, gOPD(Base, key));\n    }\n  }\n  $Number.prototype = proto;\n  proto.constructor = $Number;\n  require('./_redefine')(global, NUMBER, $Number);\n}\n","module.exports = !require('./_descriptors') && !require('./_fails')(function () {\n  return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n","/**\n * Resize detection strategy that injects divs to elements in order to detect resize events on scroll events.\n * Heavily inspired by: https://github.com/marcj/css-element-queries/blob/master/src/ResizeSensor.js\n */\n\n\"use strict\";\n\nvar forEach = require(\"../collection-utils\").forEach;\n\nmodule.exports = function(options) {\n    options             = options || {};\n    var reporter        = options.reporter;\n    var batchProcessor  = options.batchProcessor;\n    var getState        = options.stateHandler.getState;\n    var hasState        = options.stateHandler.hasState;\n    var idHandler       = options.idHandler;\n\n    if (!batchProcessor) {\n        throw new Error(\"Missing required dependency: batchProcessor\");\n    }\n\n    if (!reporter) {\n        throw new Error(\"Missing required dependency: reporter.\");\n    }\n\n    //TODO: Could this perhaps be done at installation time?\n    var scrollbarSizes = getScrollbarSizes();\n\n    var styleId = \"erd_scroll_detection_scrollbar_style\";\n    var detectionContainerClass = \"erd_scroll_detection_container\";\n\n    function initDocument(targetDocument) {\n        // Inject the scrollbar styling that prevents them from appearing sometimes in Chrome.\n        // The injected container needs to have a class, so that it may be styled with CSS (pseudo elements).\n        injectScrollStyle(targetDocument, styleId, detectionContainerClass);\n    }\n\n    initDocument(window.document);\n\n    function buildCssTextString(rules) {\n        var seperator = options.important ? \" !important; \" : \"; \";\n\n        return (rules.join(seperator) + seperator).trim();\n    }\n\n    function getScrollbarSizes() {\n        var width = 500;\n        var height = 500;\n\n        var child = document.createElement(\"div\");\n        child.style.cssText = buildCssTextString([\"position: absolute\", \"width: \" + width*2 + \"px\", \"height: \" + height*2 + \"px\", \"visibility: hidden\", \"margin: 0\", \"padding: 0\"]);\n\n        var container = document.createElement(\"div\");\n        container.style.cssText = buildCssTextString([\"position: absolute\", \"width: \" + width + \"px\", \"height: \" + height + \"px\", \"overflow: scroll\", \"visibility: none\", \"top: \" + -width*3 + \"px\", \"left: \" + -height*3 + \"px\", \"visibility: hidden\", \"margin: 0\", \"padding: 0\"]);\n\n        container.appendChild(child);\n\n        document.body.insertBefore(container, document.body.firstChild);\n\n        var widthSize = width - container.clientWidth;\n        var heightSize = height - container.clientHeight;\n\n        document.body.removeChild(container);\n\n        return {\n            width: widthSize,\n            height: heightSize\n        };\n    }\n\n    function injectScrollStyle(targetDocument, styleId, containerClass) {\n        function injectStyle(style, method) {\n            method = method || function (element) {\n                targetDocument.head.appendChild(element);\n            };\n\n            var styleElement = targetDocument.createElement(\"style\");\n            styleElement.innerHTML = style;\n            styleElement.id = styleId;\n            method(styleElement);\n            return styleElement;\n        }\n\n        if (!targetDocument.getElementById(styleId)) {\n            var containerAnimationClass = containerClass + \"_animation\";\n            var containerAnimationActiveClass = containerClass + \"_animation_active\";\n            var style = \"/* Created by the element-resize-detector library. */\\n\";\n            style += \".\" + containerClass + \" > div::-webkit-scrollbar { \" + buildCssTextString([\"display: none\"]) + \" }\\n\\n\";\n            style += \".\" + containerAnimationActiveClass + \" { \" + buildCssTextString([\"-webkit-animation-duration: 0.1s\", \"animation-duration: 0.1s\", \"-webkit-animation-name: \" + containerAnimationClass, \"animation-name: \" + containerAnimationClass]) + \" }\\n\";\n            style += \"@-webkit-keyframes \" + containerAnimationClass +  \" { 0% { opacity: 1; } 50% { opacity: 0; } 100% { opacity: 1; } }\\n\";\n            style += \"@keyframes \" + containerAnimationClass +          \" { 0% { opacity: 1; } 50% { opacity: 0; } 100% { opacity: 1; } }\";\n            injectStyle(style);\n        }\n    }\n\n    function addAnimationClass(element) {\n        element.className += \" \" + detectionContainerClass + \"_animation_active\";\n    }\n\n    function addEvent(el, name, cb) {\n        if (el.addEventListener) {\n            el.addEventListener(name, cb);\n        } else if(el.attachEvent) {\n            el.attachEvent(\"on\" + name, cb);\n        } else {\n            return reporter.error(\"[scroll] Don't know how to add event listeners.\");\n        }\n    }\n\n    function removeEvent(el, name, cb) {\n        if (el.removeEventListener) {\n            el.removeEventListener(name, cb);\n        } else if(el.detachEvent) {\n            el.detachEvent(\"on\" + name, cb);\n        } else {\n            return reporter.error(\"[scroll] Don't know how to remove event listeners.\");\n        }\n    }\n\n    function getExpandElement(element) {\n        return getState(element).container.childNodes[0].childNodes[0].childNodes[0];\n    }\n\n    function getShrinkElement(element) {\n        return getState(element).container.childNodes[0].childNodes[0].childNodes[1];\n    }\n\n    /**\n     * Adds a resize event listener to the element.\n     * @public\n     * @param {element} element The element that should have the listener added.\n     * @param {function} listener The listener callback to be called for each resize event of the element. The element will be given as a parameter to the listener callback.\n     */\n    function addListener(element, listener) {\n        var listeners = getState(element).listeners;\n\n        if (!listeners.push) {\n            throw new Error(\"Cannot add listener to an element that is not detectable.\");\n        }\n\n        getState(element).listeners.push(listener);\n    }\n\n    /**\n     * Makes an element detectable and ready to be listened for resize events. Will call the callback when the element is ready to be listened for resize changes.\n     * @private\n     * @param {object} options Optional options object.\n     * @param {element} element The element to make detectable\n     * @param {function} callback The callback to be called when the element is ready to be listened for resize changes. Will be called with the element as first parameter.\n     */\n    function makeDetectable(options, element, callback) {\n        if (!callback) {\n            callback = element;\n            element = options;\n            options = null;\n        }\n\n        options = options || {};\n\n        function debug() {\n            if (options.debug) {\n                var args = Array.prototype.slice.call(arguments);\n                args.unshift(idHandler.get(element), \"Scroll: \");\n                if (reporter.log.apply) {\n                    reporter.log.apply(null, args);\n                } else {\n                    for (var i = 0; i < args.length; i++) {\n                        reporter.log(args[i]);\n                    }\n                }\n            }\n        }\n\n        function isDetached(element) {\n            function isInDocument(element) {\n                return element === element.ownerDocument.body || element.ownerDocument.body.contains(element);\n            }\n\n            if (!isInDocument(element)) {\n                return true;\n            }\n\n            // FireFox returns null style in hidden iframes. See https://github.com/wnr/element-resize-detector/issues/68 and https://bugzilla.mozilla.org/show_bug.cgi?id=795520\n            if (window.getComputedStyle(element) === null) {\n                return true;\n            }\n\n            return false;\n        }\n\n        function isUnrendered(element) {\n            // Check the absolute positioned container since the top level container is display: inline.\n            var container = getState(element).container.childNodes[0];\n            var style = window.getComputedStyle(container);\n            return !style.width || style.width.indexOf(\"px\") === -1; //Can only compute pixel value when rendered.\n        }\n\n        function getStyle() {\n            // Some browsers only force layouts when actually reading the style properties of the style object, so make sure that they are all read here,\n            // so that the user of the function can be sure that it will perform the layout here, instead of later (important for batching).\n            var elementStyle            = window.getComputedStyle(element);\n            var style                   = {};\n            style.position              = elementStyle.position;\n            style.width                 = element.offsetWidth;\n            style.height                = element.offsetHeight;\n            style.top                   = elementStyle.top;\n            style.right                 = elementStyle.right;\n            style.bottom                = elementStyle.bottom;\n            style.left                  = elementStyle.left;\n            style.widthCSS              = elementStyle.width;\n            style.heightCSS             = elementStyle.height;\n            return style;\n        }\n\n        function storeStartSize() {\n            var style = getStyle();\n            getState(element).startSize = {\n                width: style.width,\n                height: style.height\n            };\n            debug(\"Element start size\", getState(element).startSize);\n        }\n\n        function initListeners() {\n            getState(element).listeners = [];\n        }\n\n        function storeStyle() {\n            debug(\"storeStyle invoked.\");\n            if (!getState(element)) {\n                debug(\"Aborting because element has been uninstalled\");\n                return;\n            }\n\n            var style = getStyle();\n            getState(element).style = style;\n        }\n\n        function storeCurrentSize(element, width, height) {\n            getState(element).lastWidth = width;\n            getState(element).lastHeight  = height;\n        }\n\n        function getExpandChildElement(element) {\n            return getExpandElement(element).childNodes[0];\n        }\n\n        function getWidthOffset() {\n            return 2 * scrollbarSizes.width + 1;\n        }\n\n        function getHeightOffset() {\n            return 2 * scrollbarSizes.height + 1;\n        }\n\n        function getExpandWidth(width) {\n            return width + 10 + getWidthOffset();\n        }\n\n        function getExpandHeight(height) {\n            return height + 10 + getHeightOffset();\n        }\n\n        function getShrinkWidth(width) {\n            return width * 2 + getWidthOffset();\n        }\n\n        function getShrinkHeight(height) {\n            return height * 2 + getHeightOffset();\n        }\n\n        function positionScrollbars(element, width, height) {\n            var expand          = getExpandElement(element);\n            var shrink          = getShrinkElement(element);\n            var expandWidth     = getExpandWidth(width);\n            var expandHeight    = getExpandHeight(height);\n            var shrinkWidth     = getShrinkWidth(width);\n            var shrinkHeight    = getShrinkHeight(height);\n            expand.scrollLeft   = expandWidth;\n            expand.scrollTop    = expandHeight;\n            shrink.scrollLeft   = shrinkWidth;\n            shrink.scrollTop    = shrinkHeight;\n        }\n\n        function injectContainerElement() {\n            var container = getState(element).container;\n\n            if (!container) {\n                container                   = document.createElement(\"div\");\n                container.className         = detectionContainerClass;\n                container.style.cssText     = buildCssTextString([\"visibility: hidden\", \"display: inline\", \"width: 0px\", \"height: 0px\", \"z-index: -1\", \"overflow: hidden\", \"margin: 0\", \"padding: 0\"]);\n                getState(element).container = container;\n                addAnimationClass(container);\n                element.appendChild(container);\n\n                var onAnimationStart = function () {\n                    getState(element).onRendered && getState(element).onRendered();\n                };\n\n                addEvent(container, \"animationstart\", onAnimationStart);\n\n                // Store the event handler here so that they may be removed when uninstall is called.\n                // See uninstall function for an explanation why it is needed.\n                getState(element).onAnimationStart = onAnimationStart;\n            }\n\n            return container;\n        }\n\n        function injectScrollElements() {\n            function alterPositionStyles() {\n                var style = getState(element).style;\n\n                if(style.position === \"static\") {\n                    element.style.setProperty(\"position\", \"relative\",options.important ? \"important\" : \"\");\n\n                    var removeRelativeStyles = function(reporter, element, style, property) {\n                        function getNumericalValue(value) {\n                            return value.replace(/[^-\\d\\.]/g, \"\");\n                        }\n\n                        var value = style[property];\n\n                        if(value !== \"auto\" && getNumericalValue(value) !== \"0\") {\n                            reporter.warn(\"An element that is positioned static has style.\" + property + \"=\" + value + \" which is ignored due to the static positioning. The element will need to be positioned relative, so the style.\" + property + \" will be set to 0. Element: \", element);\n                            element.style[property] = 0;\n                        }\n                    };\n\n                    //Check so that there are no accidental styles that will make the element styled differently now that is is relative.\n                    //If there are any, set them to 0 (this should be okay with the user since the style properties did nothing before [since the element was positioned static] anyway).\n                    removeRelativeStyles(reporter, element, style, \"top\");\n                    removeRelativeStyles(reporter, element, style, \"right\");\n                    removeRelativeStyles(reporter, element, style, \"bottom\");\n                    removeRelativeStyles(reporter, element, style, \"left\");\n                }\n            }\n\n            function getLeftTopBottomRightCssText(left, top, bottom, right) {\n                left = (!left ? \"0\" : (left + \"px\"));\n                top = (!top ? \"0\" : (top + \"px\"));\n                bottom = (!bottom ? \"0\" : (bottom + \"px\"));\n                right = (!right ? \"0\" : (right + \"px\"));\n\n                return [\"left: \" + left, \"top: \" + top, \"right: \" + right, \"bottom: \" + bottom];\n            }\n\n            debug(\"Injecting elements\");\n\n            if (!getState(element)) {\n                debug(\"Aborting because element has been uninstalled\");\n                return;\n            }\n\n            alterPositionStyles();\n\n            var rootContainer = getState(element).container;\n\n            if (!rootContainer) {\n                rootContainer = injectContainerElement();\n            }\n\n            // Due to this WebKit bug https://bugs.webkit.org/show_bug.cgi?id=80808 (currently fixed in Blink, but still present in WebKit browsers such as Safari),\n            // we need to inject two containers, one that is width/height 100% and another that is left/top -1px so that the final container always is 1x1 pixels bigger than\n            // the targeted element.\n            // When the bug is resolved, \"containerContainer\" may be removed.\n\n            // The outer container can occasionally be less wide than the targeted when inside inline elements element in WebKit (see https://bugs.webkit.org/show_bug.cgi?id=152980).\n            // This should be no problem since the inner container either way makes sure the injected scroll elements are at least 1x1 px.\n\n            var scrollbarWidth          = scrollbarSizes.width;\n            var scrollbarHeight         = scrollbarSizes.height;\n            var containerContainerStyle = buildCssTextString([\"position: absolute\", \"flex: none\", \"overflow: hidden\", \"z-index: -1\", \"visibility: hidden\", \"width: 100%\", \"height: 100%\", \"left: 0px\", \"top: 0px\"]);\n            var containerStyle          = buildCssTextString([\"position: absolute\", \"flex: none\", \"overflow: hidden\", \"z-index: -1\", \"visibility: hidden\"].concat(getLeftTopBottomRightCssText(-(1 + scrollbarWidth), -(1 + scrollbarHeight), -scrollbarHeight, -scrollbarWidth)));\n            var expandStyle             = buildCssTextString([\"position: absolute\", \"flex: none\", \"overflow: scroll\", \"z-index: -1\", \"visibility: hidden\", \"width: 100%\", \"height: 100%\"]);\n            var shrinkStyle             = buildCssTextString([\"position: absolute\", \"flex: none\", \"overflow: scroll\", \"z-index: -1\", \"visibility: hidden\", \"width: 100%\", \"height: 100%\"]);\n            var expandChildStyle        = buildCssTextString([\"position: absolute\", \"left: 0\", \"top: 0\"]);\n            var shrinkChildStyle        = buildCssTextString([\"position: absolute\", \"width: 200%\", \"height: 200%\"]);\n\n            var containerContainer      = document.createElement(\"div\");\n            var container               = document.createElement(\"div\");\n            var expand                  = document.createElement(\"div\");\n            var expandChild             = document.createElement(\"div\");\n            var shrink                  = document.createElement(\"div\");\n            var shrinkChild             = document.createElement(\"div\");\n\n            // Some browsers choke on the resize system being rtl, so force it to ltr. https://github.com/wnr/element-resize-detector/issues/56\n            // However, dir should not be set on the top level container as it alters the dimensions of the target element in some browsers.\n            containerContainer.dir              = \"ltr\";\n\n            containerContainer.style.cssText    = containerContainerStyle;\n            containerContainer.className        = detectionContainerClass;\n            container.className                 = detectionContainerClass;\n            container.style.cssText             = containerStyle;\n            expand.style.cssText                = expandStyle;\n            expandChild.style.cssText           = expandChildStyle;\n            shrink.style.cssText                = shrinkStyle;\n            shrinkChild.style.cssText           = shrinkChildStyle;\n\n            expand.appendChild(expandChild);\n            shrink.appendChild(shrinkChild);\n            container.appendChild(expand);\n            container.appendChild(shrink);\n            containerContainer.appendChild(container);\n            rootContainer.appendChild(containerContainer);\n\n            function onExpandScroll() {\n                getState(element).onExpand && getState(element).onExpand();\n            }\n\n            function onShrinkScroll() {\n                getState(element).onShrink && getState(element).onShrink();\n            }\n\n            addEvent(expand, \"scroll\", onExpandScroll);\n            addEvent(shrink, \"scroll\", onShrinkScroll);\n\n            // Store the event handlers here so that they may be removed when uninstall is called.\n            // See uninstall function for an explanation why it is needed.\n            getState(element).onExpandScroll = onExpandScroll;\n            getState(element).onShrinkScroll = onShrinkScroll;\n        }\n\n        function registerListenersAndPositionElements() {\n            function updateChildSizes(element, width, height) {\n                var expandChild             = getExpandChildElement(element);\n                var expandWidth             = getExpandWidth(width);\n                var expandHeight            = getExpandHeight(height);\n                expandChild.style.setProperty(\"width\", expandWidth + \"px\", options.important ? \"important\" : \"\");\n                expandChild.style.setProperty(\"height\", expandHeight + \"px\", options.important ? \"important\" : \"\");\n            }\n\n            function updateDetectorElements(done) {\n                var width           = element.offsetWidth;\n                var height          = element.offsetHeight;\n\n                // Check whether the size has actually changed since last time the algorithm ran. If not, some steps may be skipped.\n                var sizeChanged = width !== getState(element).lastWidth || height !== getState(element).lastHeight;\n\n                debug(\"Storing current size\", width, height);\n\n                // Store the size of the element sync here, so that multiple scroll events may be ignored in the event listeners.\n                // Otherwise the if-check in handleScroll is useless.\n                storeCurrentSize(element, width, height);\n\n                // Since we delay the processing of the batch, there is a risk that uninstall has been called before the batch gets to execute.\n                // Since there is no way to cancel the fn executions, we need to add an uninstall guard to all fns of the batch.\n\n                batchProcessor.add(0, function performUpdateChildSizes() {\n                    if (!sizeChanged) {\n                        return;\n                    }\n\n                    if (!getState(element)) {\n                        debug(\"Aborting because element has been uninstalled\");\n                        return;\n                    }\n\n                    if (!areElementsInjected()) {\n                        debug(\"Aborting because element container has not been initialized\");\n                        return;\n                    }\n\n                    if (options.debug) {\n                        var w = element.offsetWidth;\n                        var h = element.offsetHeight;\n\n                        if (w !== width || h !== height) {\n                            reporter.warn(idHandler.get(element), \"Scroll: Size changed before updating detector elements.\");\n                        }\n                    }\n\n                    updateChildSizes(element, width, height);\n                });\n\n                batchProcessor.add(1, function updateScrollbars() {\n                    // This function needs to be invoked event though the size is unchanged. The element could have been resized very quickly and then\n                    // been restored to the original size, which will have changed the scrollbar positions.\n\n                    if (!getState(element)) {\n                        debug(\"Aborting because element has been uninstalled\");\n                        return;\n                    }\n\n                    if (!areElementsInjected()) {\n                        debug(\"Aborting because element container has not been initialized\");\n                        return;\n                    }\n\n                    positionScrollbars(element, width, height);\n                });\n\n                if (sizeChanged && done) {\n                    batchProcessor.add(2, function () {\n                        if (!getState(element)) {\n                            debug(\"Aborting because element has been uninstalled\");\n                            return;\n                        }\n\n                        if (!areElementsInjected()) {\n                          debug(\"Aborting because element container has not been initialized\");\n                          return;\n                        }\n\n                        done();\n                    });\n                }\n            }\n\n            function areElementsInjected() {\n                return !!getState(element).container;\n            }\n\n            function notifyListenersIfNeeded() {\n                function isFirstNotify() {\n                    return getState(element).lastNotifiedWidth === undefined;\n                }\n\n                debug(\"notifyListenersIfNeeded invoked\");\n\n                var state = getState(element);\n\n                // Don't notify if the current size is the start size, and this is the first notification.\n                if (isFirstNotify() && state.lastWidth === state.startSize.width && state.lastHeight === state.startSize.height) {\n                    return debug(\"Not notifying: Size is the same as the start size, and there has been no notification yet.\");\n                }\n\n                // Don't notify if the size already has been notified.\n                if (state.lastWidth === state.lastNotifiedWidth && state.lastHeight === state.lastNotifiedHeight) {\n                    return debug(\"Not notifying: Size already notified\");\n                }\n\n\n                debug(\"Current size not notified, notifying...\");\n                state.lastNotifiedWidth = state.lastWidth;\n                state.lastNotifiedHeight = state.lastHeight;\n                forEach(getState(element).listeners, function (listener) {\n                    listener(element);\n                });\n            }\n\n            function handleRender() {\n                debug(\"startanimation triggered.\");\n\n                if (isUnrendered(element)) {\n                    debug(\"Ignoring since element is still unrendered...\");\n                    return;\n                }\n\n                debug(\"Element rendered.\");\n                var expand = getExpandElement(element);\n                var shrink = getShrinkElement(element);\n                if (expand.scrollLeft === 0 || expand.scrollTop === 0 || shrink.scrollLeft === 0 || shrink.scrollTop === 0) {\n                    debug(\"Scrollbars out of sync. Updating detector elements...\");\n                    updateDetectorElements(notifyListenersIfNeeded);\n                }\n            }\n\n            function handleScroll() {\n                debug(\"Scroll detected.\");\n\n                if (isUnrendered(element)) {\n                    // Element is still unrendered. Skip this scroll event.\n                    debug(\"Scroll event fired while unrendered. Ignoring...\");\n                    return;\n                }\n\n                updateDetectorElements(notifyListenersIfNeeded);\n            }\n\n            debug(\"registerListenersAndPositionElements invoked.\");\n\n            if (!getState(element)) {\n                debug(\"Aborting because element has been uninstalled\");\n                return;\n            }\n\n            getState(element).onRendered = handleRender;\n            getState(element).onExpand = handleScroll;\n            getState(element).onShrink = handleScroll;\n\n            var style = getState(element).style;\n            updateChildSizes(element, style.width, style.height);\n        }\n\n        function finalizeDomMutation() {\n            debug(\"finalizeDomMutation invoked.\");\n\n            if (!getState(element)) {\n                debug(\"Aborting because element has been uninstalled\");\n                return;\n            }\n\n            var style = getState(element).style;\n            storeCurrentSize(element, style.width, style.height);\n            positionScrollbars(element, style.width, style.height);\n        }\n\n        function ready() {\n            callback(element);\n        }\n\n        function install() {\n            debug(\"Installing...\");\n            initListeners();\n            storeStartSize();\n\n            batchProcessor.add(0, storeStyle);\n            batchProcessor.add(1, injectScrollElements);\n            batchProcessor.add(2, registerListenersAndPositionElements);\n            batchProcessor.add(3, finalizeDomMutation);\n            batchProcessor.add(4, ready);\n        }\n\n        debug(\"Making detectable...\");\n\n        if (isDetached(element)) {\n            debug(\"Element is detached\");\n\n            injectContainerElement();\n\n            debug(\"Waiting until element is attached...\");\n\n            getState(element).onRendered = function () {\n                debug(\"Element is now attached\");\n                install();\n            };\n        } else {\n            install();\n        }\n    }\n\n    function uninstall(element) {\n        var state = getState(element);\n\n        if (!state) {\n            // Uninstall has been called on a non-erd element.\n            return;\n        }\n\n        // Uninstall may have been called in the following scenarios:\n        // (1) Right between the sync code and async batch (here state.busy = true, but nothing have been registered or injected).\n        // (2) In the ready callback of the last level of the batch by another element (here, state.busy = true, but all the stuff has been injected).\n        // (3) After the installation process (here, state.busy = false and all the stuff has been injected).\n        // So to be on the safe side, let's check for each thing before removing.\n\n        // We need to remove the event listeners, because otherwise the event might fire on an uninstall element which results in an error when trying to get the state of the element.\n        state.onExpandScroll && removeEvent(getExpandElement(element), \"scroll\", state.onExpandScroll);\n        state.onShrinkScroll && removeEvent(getShrinkElement(element), \"scroll\", state.onShrinkScroll);\n        state.onAnimationStart && removeEvent(state.container, \"animationstart\", state.onAnimationStart);\n\n        state.container && element.removeChild(state.container);\n    }\n\n    return {\n        makeDetectable: makeDetectable,\n        addListener: addListener,\n        uninstall: uninstall,\n        initDocument: initDocument\n    };\n};\n","var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n  return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n","'use strict';\nvar addToUnscopables = require('./_add-to-unscopables');\nvar step = require('./_iter-step');\nvar Iterators = require('./_iterators');\nvar toIObject = require('./_to-iobject');\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = require('./_iter-define')(Array, 'Array', function (iterated, kind) {\n  this._t = toIObject(iterated); // target\n  this._i = 0;                   // next index\n  this._k = kind;                // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n  var O = this._t;\n  var kind = this._k;\n  var index = this._i++;\n  if (!O || index >= O.length) {\n    this._t = undefined;\n    return step(1);\n  }\n  if (kind == 'keys') return step(0, index);\n  if (kind == 'values') return step(0, O[index]);\n  return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n","var isObject = require('./_is-object');\nmodule.exports = function (it) {\n  if (!isObject(it)) throw TypeError(it + ' is not an object!');\n  return it;\n};\n","var has = require('./_has');\nvar toIObject = require('./_to-iobject');\nvar arrayIndexOf = require('./_array-includes')(false);\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\n\nmodule.exports = function (object, names) {\n  var O = toIObject(object);\n  var i = 0;\n  var result = [];\n  var key;\n  for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n  // Don't enum bug & hidden keys\n  while (names.length > i) if (has(O, key = names[i++])) {\n    ~arrayIndexOf(result, key) || result.push(key);\n  }\n  return result;\n};\n","module.exports = function (it) {\n  return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","module.exports = function (done, value) {\n  return { value: value, done: !!done };\n};\n","\"use strict\";\n\nvar prop = \"_erd\";\n\nfunction initState(element) {\n    element[prop] = {};\n    return getState(element);\n}\n\nfunction getState(element) {\n    return element[prop];\n}\n\nfunction cleanState(element) {\n    delete element[prop];\n}\n\nmodule.exports = {\n    initState: initState,\n    getState: getState,\n    cleanState: cleanState\n};\n","module.exports = function (it) {\n  if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n  return it;\n};\n","// IE 8- don't enum bug keys\nmodule.exports = (\n  'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n","\"use strict\";\n\nvar forEach                 = require(\"./collection-utils\").forEach;\nvar elementUtilsMaker       = require(\"./element-utils\");\nvar listenerHandlerMaker    = require(\"./listener-handler\");\nvar idGeneratorMaker        = require(\"./id-generator\");\nvar idHandlerMaker          = require(\"./id-handler\");\nvar reporterMaker           = require(\"./reporter\");\nvar browserDetector         = require(\"./browser-detector\");\nvar batchProcessorMaker     = require(\"batch-processor\");\nvar stateHandler            = require(\"./state-handler\");\n\n//Detection strategies.\nvar objectStrategyMaker     = require(\"./detection-strategy/object.js\");\nvar scrollStrategyMaker     = require(\"./detection-strategy/scroll.js\");\n\nfunction isCollection(obj) {\n    return Array.isArray(obj) || obj.length !== undefined;\n}\n\nfunction toArray(collection) {\n    if (!Array.isArray(collection)) {\n        var array = [];\n        forEach(collection, function (obj) {\n            array.push(obj);\n        });\n        return array;\n    } else {\n        return collection;\n    }\n}\n\nfunction isElement(obj) {\n    return obj && obj.nodeType === 1;\n}\n\n/**\n * @typedef idHandler\n * @type {object}\n * @property {function} get Gets the resize detector id of the element.\n * @property {function} set Generate and sets the resize detector id of the element.\n */\n\n/**\n * @typedef Options\n * @type {object}\n * @property {boolean} callOnAdd    Determines if listeners should be called when they are getting added.\n                                    Default is true. If true, the listener is guaranteed to be called when it has been added.\n                                    If false, the listener will not be guarenteed to be called when it has been added (does not prevent it from being called).\n * @property {idHandler} idHandler  A custom id handler that is responsible for generating, setting and retrieving id's for elements.\n                                    If not provided, a default id handler will be used.\n * @property {reporter} reporter    A custom reporter that handles reporting logs, warnings and errors.\n                                    If not provided, a default id handler will be used.\n                                    If set to false, then nothing will be reported.\n * @property {boolean} debug        If set to true, the the system will report debug messages as default for the listenTo method.\n */\n\n/**\n * Creates an element resize detector instance.\n * @public\n * @param {Options?} options Optional global options object that will decide how this instance will work.\n */\nmodule.exports = function(options) {\n    options = options || {};\n\n    //idHandler is currently not an option to the listenTo function, so it should not be added to globalOptions.\n    var idHandler;\n\n    if (options.idHandler) {\n        // To maintain compatability with idHandler.get(element, readonly), make sure to wrap the given idHandler\n        // so that readonly flag always is true when it's used here. This may be removed next major version bump.\n        idHandler = {\n            get: function (element) { return options.idHandler.get(element, true); },\n            set: options.idHandler.set\n        };\n    } else {\n        var idGenerator = idGeneratorMaker();\n        var defaultIdHandler = idHandlerMaker({\n            idGenerator: idGenerator,\n            stateHandler: stateHandler\n        });\n        idHandler = defaultIdHandler;\n    }\n\n    //reporter is currently not an option to the listenTo function, so it should not be added to globalOptions.\n    var reporter = options.reporter;\n\n    if(!reporter) {\n        //If options.reporter is false, then the reporter should be quiet.\n        var quiet = reporter === false;\n        reporter = reporterMaker(quiet);\n    }\n\n    //batchProcessor is currently not an option to the listenTo function, so it should not be added to globalOptions.\n    var batchProcessor = getOption(options, \"batchProcessor\", batchProcessorMaker({ reporter: reporter }));\n\n    //Options to be used as default for the listenTo function.\n    var globalOptions = {};\n    globalOptions.callOnAdd     = !!getOption(options, \"callOnAdd\", true);\n    globalOptions.debug         = !!getOption(options, \"debug\", false);\n\n    var eventListenerHandler    = listenerHandlerMaker(idHandler);\n    var elementUtils            = elementUtilsMaker({\n        stateHandler: stateHandler\n    });\n\n    //The detection strategy to be used.\n    var detectionStrategy;\n    var desiredStrategy = getOption(options, \"strategy\", \"object\");\n    var importantCssRules = getOption(options, \"important\", false);\n    var strategyOptions = {\n        reporter: reporter,\n        batchProcessor: batchProcessor,\n        stateHandler: stateHandler,\n        idHandler: idHandler,\n        important: importantCssRules\n    };\n\n    if(desiredStrategy === \"scroll\") {\n        if (browserDetector.isLegacyOpera()) {\n            reporter.warn(\"Scroll strategy is not supported on legacy Opera. Changing to object strategy.\");\n            desiredStrategy = \"object\";\n        } else if (browserDetector.isIE(9)) {\n            reporter.warn(\"Scroll strategy is not supported on IE9. Changing to object strategy.\");\n            desiredStrategy = \"object\";\n        }\n    }\n\n    if(desiredStrategy === \"scroll\") {\n        detectionStrategy = scrollStrategyMaker(strategyOptions);\n    } else if(desiredStrategy === \"object\") {\n        detectionStrategy = objectStrategyMaker(strategyOptions);\n    } else {\n        throw new Error(\"Invalid strategy name: \" + desiredStrategy);\n    }\n\n    //Calls can be made to listenTo with elements that are still being installed.\n    //Also, same elements can occur in the elements list in the listenTo function.\n    //With this map, the ready callbacks can be synchronized between the calls\n    //so that the ready callback can always be called when an element is ready - even if\n    //it wasn't installed from the function itself.\n    var onReadyCallbacks = {};\n\n    /**\n     * Makes the given elements resize-detectable and starts listening to resize events on the elements. Calls the event callback for each event for each element.\n     * @public\n     * @param {Options?} options Optional options object. These options will override the global options. Some options may not be overriden, such as idHandler.\n     * @param {element[]|element} elements The given array of elements to detect resize events of. Single element is also valid.\n     * @param {function} listener The callback to be executed for each resize event for each element.\n     */\n    function listenTo(options, elements, listener) {\n        function onResizeCallback(element) {\n            var listeners = eventListenerHandler.get(element);\n            forEach(listeners, function callListenerProxy(listener) {\n                listener(element);\n            });\n        }\n\n        function addListener(callOnAdd, element, listener) {\n            eventListenerHandler.add(element, listener);\n\n            if(callOnAdd) {\n                listener(element);\n            }\n        }\n\n        //Options object may be omitted.\n        if(!listener) {\n            listener = elements;\n            elements = options;\n            options = {};\n        }\n\n        if(!elements) {\n            throw new Error(\"At least one element required.\");\n        }\n\n        if(!listener) {\n            throw new Error(\"Listener required.\");\n        }\n\n        if (isElement(elements)) {\n            // A single element has been passed in.\n            elements = [elements];\n        } else if (isCollection(elements)) {\n            // Convert collection to array for plugins.\n            // TODO: May want to check so that all the elements in the collection are valid elements.\n            elements = toArray(elements);\n        } else {\n            return reporter.error(\"Invalid arguments. Must be a DOM element or a collection of DOM elements.\");\n        }\n\n        var elementsReady = 0;\n\n        var callOnAdd = getOption(options, \"callOnAdd\", globalOptions.callOnAdd);\n        var onReadyCallback = getOption(options, \"onReady\", function noop() {});\n        var debug = getOption(options, \"debug\", globalOptions.debug);\n\n        forEach(elements, function attachListenerToElement(element) {\n            if (!stateHandler.getState(element)) {\n                stateHandler.initState(element);\n                idHandler.set(element);\n            }\n\n            var id = idHandler.get(element);\n\n            debug && reporter.log(\"Attaching listener to element\", id, element);\n\n            if(!elementUtils.isDetectable(element)) {\n                debug && reporter.log(id, \"Not detectable.\");\n                if(elementUtils.isBusy(element)) {\n                    debug && reporter.log(id, \"System busy making it detectable\");\n\n                    //The element is being prepared to be detectable. Do not make it detectable.\n                    //Just add the listener, because the element will soon be detectable.\n                    addListener(callOnAdd, element, listener);\n                    onReadyCallbacks[id] = onReadyCallbacks[id] || [];\n                    onReadyCallbacks[id].push(function onReady() {\n                        elementsReady++;\n\n                        if(elementsReady === elements.length) {\n                            onReadyCallback();\n                        }\n                    });\n                    return;\n                }\n\n                debug && reporter.log(id, \"Making detectable...\");\n                //The element is not prepared to be detectable, so do prepare it and add a listener to it.\n                elementUtils.markBusy(element, true);\n                return detectionStrategy.makeDetectable({ debug: debug, important: importantCssRules }, element, function onElementDetectable(element) {\n                    debug && reporter.log(id, \"onElementDetectable\");\n\n                    if (stateHandler.getState(element)) {\n                        elementUtils.markAsDetectable(element);\n                        elementUtils.markBusy(element, false);\n                        detectionStrategy.addListener(element, onResizeCallback);\n                        addListener(callOnAdd, element, listener);\n\n                        // Since the element size might have changed since the call to \"listenTo\", we need to check for this change,\n                        // so that a resize event may be emitted.\n                        // Having the startSize object is optional (since it does not make sense in some cases such as unrendered elements), so check for its existance before.\n                        // Also, check the state existance before since the element may have been uninstalled in the installation process.\n                        var state = stateHandler.getState(element);\n                        if (state && state.startSize) {\n                            var width = element.offsetWidth;\n                            var height = element.offsetHeight;\n                            if (state.startSize.width !== width || state.startSize.height !== height) {\n                                onResizeCallback(element);\n                            }\n                        }\n\n                        if(onReadyCallbacks[id]) {\n                            forEach(onReadyCallbacks[id], function(callback) {\n                                callback();\n                            });\n                        }\n                    } else {\n                        // The element has been unisntalled before being detectable.\n                        debug && reporter.log(id, \"Element uninstalled before being detectable.\");\n                    }\n\n                    delete onReadyCallbacks[id];\n\n                    elementsReady++;\n                    if(elementsReady === elements.length) {\n                        onReadyCallback();\n                    }\n                });\n            }\n\n            debug && reporter.log(id, \"Already detecable, adding listener.\");\n\n            //The element has been prepared to be detectable and is ready to be listened to.\n            addListener(callOnAdd, element, listener);\n            elementsReady++;\n        });\n\n        if(elementsReady === elements.length) {\n            onReadyCallback();\n        }\n    }\n\n    function uninstall(elements) {\n        if(!elements) {\n            return reporter.error(\"At least one element is required.\");\n        }\n\n        if (isElement(elements)) {\n            // A single element has been passed in.\n            elements = [elements];\n        } else if (isCollection(elements)) {\n            // Convert collection to array for plugins.\n            // TODO: May want to check so that all the elements in the collection are valid elements.\n            elements = toArray(elements);\n        } else {\n            return reporter.error(\"Invalid arguments. Must be a DOM element or a collection of DOM elements.\");\n        }\n\n        forEach(elements, function (element) {\n            eventListenerHandler.removeAllListeners(element);\n            detectionStrategy.uninstall(element);\n            stateHandler.cleanState(element);\n        });\n    }\n\n    function initDocument(targetDocument) {\n        detectionStrategy.initDocument && detectionStrategy.initDocument(targetDocument);\n    }\n\n    return {\n        listenTo: listenTo,\n        removeListener: eventListenerHandler.removeListener,\n        removeAllListeners: eventListenerHandler.removeAllListeners,\n        uninstall: uninstall,\n        initDocument: initDocument\n    };\n};\n\nfunction getOption(options, name, defaultValue) {\n    var value = options[name];\n\n    if((value === undefined || value === null) && defaultValue !== undefined) {\n        return defaultValue;\n    }\n\n    return value;\n}\n","'use strict';\nvar $defineProperty = require('./_object-dp');\nvar createDesc = require('./_property-desc');\n\nmodule.exports = function (object, index, value) {\n  if (index in object) $defineProperty.f(object, index, createDesc(0, value));\n  else object[index] = value;\n};\n","// 19.1.3.1 Object.assign(target, source)\nvar $export = require('./_export');\n\n$export($export.S + $export.F, 'Object', { assign: require('./_object-assign') });\n","module.exports = require('./_shared')('native-function-to-string', Function.toString);\n","var document = require('./_global').document;\nmodule.exports = document && document.documentElement;\n","// This file is imported into lib/wc client bundles.\n\nif (typeof window !== 'undefined') {\n  var currentScript = window.document.currentScript\n  if (process.env.NEED_CURRENTSCRIPT_POLYFILL) {\n    var getCurrentScript = require('@soda/get-current-script')\n    currentScript = getCurrentScript()\n\n    // for backward compatibility, because previously we directly included the polyfill\n    if (!('currentScript' in document)) {\n      Object.defineProperty(document, 'currentScript', { get: getCurrentScript })\n    }\n  }\n\n  var src = currentScript && currentScript.src.match(/(.+\\/)[^/]+\\.js(\\?.*)?$/)\n  if (src) {\n    __webpack_public_path__ = src[1] // eslint-disable-line\n  }\n}\n\n// Indicate to webpack that this file can be concatenated\nexport default null\n","<template>\r\n    <div ref=\"item\"\r\n         class=\"vue-grid-item\"\r\n         :class=\"classObj\"\r\n         :style=\"style\"\r\n    >\r\n        <slot></slot>\r\n        <span v-if=\"resizableAndNotStatic\" ref=\"handle\" :class=\"resizableHandleClass\"></span>\r\n        <!--<span v-if=\"draggable\" ref=\"dragHandle\" class=\"vue-draggable-handle\"></span>-->\r\n    </div>\r\n</template>\r\n<style>\r\n    .vue-grid-item {\r\n        touch-action: none;\r\n        transition: all 200ms ease;\r\n        transition-property: left, top, right;\r\n        /* add right for rtl */\r\n    }\r\n\r\n    .vue-grid-item.no-touch {\r\n        -ms-touch-action: none;\r\n        touch-action: none;\r\n    }\r\n\r\n    .vue-grid-item.cssTransforms {\r\n        transition-property: transform;\r\n        left: 0;\r\n        right: auto;\r\n    }\r\n\r\n    .vue-grid-item.cssTransforms.render-rtl {\r\n        left: auto;\r\n        right: 0;\r\n    }\r\n\r\n    .vue-grid-item.resizing {\r\n        opacity: 0.6;\r\n        z-index: 3;\r\n    }\r\n\r\n    .vue-grid-item.vue-draggable-dragging {\r\n        transition:none;\r\n        z-index: 3;\r\n    }\r\n\r\n    .vue-grid-item.vue-grid-placeholder {\r\n        background: red;\r\n        opacity: 0.2;\r\n        transition-duration: 100ms;\r\n        z-index: 2;\r\n        -webkit-user-select: none;\r\n        -moz-user-select: none;\r\n        -ms-user-select: none;\r\n        -o-user-select: none;\r\n        user-select: none;\r\n    }\r\n\r\n    .vue-grid-item > .vue-resizable-handle {\r\n        position: absolute;\r\n        width: 20px;\r\n        height: 20px;\r\n        bottom: 0;\r\n        right: 0;\r\n        background: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/Pg08IS0tIEdlbmVyYXRvcjogQWRvYmUgRmlyZXdvcmtzIENTNiwgRXhwb3J0IFNWRyBFeHRlbnNpb24gYnkgQWFyb24gQmVhbGwgKGh0dHA6Ly9maXJld29ya3MuYWJlYWxsLmNvbSkgLiBWZXJzaW9uOiAwLjYuMSAgLS0+DTwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+DTxzdmcgaWQ9IlVudGl0bGVkLVBhZ2UlMjAxIiB2aWV3Qm94PSIwIDAgNiA2IiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjojZmZmZmZmMDAiIHZlcnNpb249IjEuMSINCXhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhtbDpzcGFjZT0icHJlc2VydmUiDQl4PSIwcHgiIHk9IjBweCIgd2lkdGg9IjZweCIgaGVpZ2h0PSI2cHgiDT4NCTxnIG9wYWNpdHk9IjAuMzAyIj4NCQk8cGF0aCBkPSJNIDYgNiBMIDAgNiBMIDAgNC4yIEwgNCA0LjIgTCA0LjIgNC4yIEwgNC4yIDAgTCA2IDAgTCA2IDYgTCA2IDYgWiIgZmlsbD0iIzAwMDAwMCIvPg0JPC9nPg08L3N2Zz4=');\r\n        background-position: bottom right;\r\n        padding: 0 3px 3px 0;\r\n        background-repeat: no-repeat;\r\n        background-origin: content-box;\r\n        box-sizing: border-box;\r\n        cursor: se-resize;\r\n    }\r\n\r\n    .vue-grid-item > .vue-rtl-resizable-handle {\r\n        bottom: 0;\r\n        left: 0;\r\n        background: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTAuMDAwMDAwMDAwMDAwMDAyIiBoZWlnaHQ9IjEwLjAwMDAwMDAwMDAwMDAwMiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KIDwhLS0gQ3JlYXRlZCB3aXRoIE1ldGhvZCBEcmF3IC0gaHR0cDovL2dpdGh1Yi5jb20vZHVvcGl4ZWwvTWV0aG9kLURyYXcvIC0tPgogPGc+CiAgPHRpdGxlPmJhY2tncm91bmQ8L3RpdGxlPgogIDxyZWN0IGZpbGw9Im5vbmUiIGlkPSJjYW52YXNfYmFja2dyb3VuZCIgaGVpZ2h0PSIxMiIgd2lkdGg9IjEyIiB5PSItMSIgeD0iLTEiLz4KICA8ZyBkaXNwbGF5PSJub25lIiBvdmVyZmxvdz0idmlzaWJsZSIgeT0iMCIgeD0iMCIgaGVpZ2h0PSIxMDAlIiB3aWR0aD0iMTAwJSIgaWQ9ImNhbnZhc0dyaWQiPgogICA8cmVjdCBmaWxsPSJ1cmwoI2dyaWRwYXR0ZXJuKSIgc3Ryb2tlLXdpZHRoPSIwIiB5PSIwIiB4PSIwIiBoZWlnaHQ9IjEwMCUiIHdpZHRoPSIxMDAlIi8+CiAgPC9nPgogPC9nPgogPGc+CiAgPHRpdGxlPkxheWVyIDE8L3RpdGxlPgogIDxsaW5lIGNhbnZhcz0iI2ZmZmZmZiIgY2FudmFzLW9wYWNpdHk9IjEiIHN0cm9rZS1saW5lY2FwPSJ1bmRlZmluZWQiIHN0cm9rZS1saW5lam9pbj0idW5kZWZpbmVkIiBpZD0ic3ZnXzEiIHkyPSItNzAuMTc4NDA3IiB4Mj0iMTI0LjQ2NDE3NSIgeTE9Ii0zOC4zOTI3MzciIHgxPSIxNDQuODIxMjg5IiBzdHJva2Utd2lkdGg9IjEuNSIgc3Ryb2tlPSIjMDAwIiBmaWxsPSJub25lIi8+CiAgPGxpbmUgc3Ryb2tlPSIjNjY2NjY2IiBzdHJva2UtbGluZWNhcD0idW5kZWZpbmVkIiBzdHJva2UtbGluZWpvaW49InVuZGVmaW5lZCIgaWQ9InN2Z181IiB5Mj0iOS4xMDY5NTciIHgyPSIwLjk0NzI0NyIgeTE9Ii0wLjAxODEyOCIgeDE9IjAuOTQ3MjQ3IiBzdHJva2Utd2lkdGg9IjIiIGZpbGw9Im5vbmUiLz4KICA8bGluZSBzdHJva2UtbGluZWNhcD0idW5kZWZpbmVkIiBzdHJva2UtbGluZWpvaW49InVuZGVmaW5lZCIgaWQ9InN2Z183IiB5Mj0iOSIgeDI9IjEwLjA3MzUyOSIgeTE9IjkiIHgxPSItMC42NTU2NCIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2U9IiM2NjY2NjYiIGZpbGw9Im5vbmUiLz4KIDwvZz4KPC9zdmc+);\r\n        background-position: bottom left;\r\n        padding-left: 3px;\r\n        background-repeat: no-repeat;\r\n        background-origin: content-box;\r\n        cursor: sw-resize;\r\n        right: auto;\r\n    }\r\n\r\n    .vue-grid-item.disable-userselect {\r\n        user-select: none;\r\n    }\r\n</style>\r\n<script>\r\n    import {setTopLeft, setTopRight, setTransformRtl, setTransform} from '@/helpers/utils';\r\n    import {getControlPosition, createCoreData} from '@/helpers/draggableUtils';\r\n    import {getColsFromBreakpoint} from '@/helpers/responsiveUtils';\r\n    import {getDocumentDir} from \"@/helpers/DOM\";\r\n    //    var eventBus = require('./eventBus');\r\n\r\n    import '@interactjs/auto-start'\r\n    import '@interactjs/actions/drag'\r\n    import '@interactjs/actions/resize'\r\n    import '@interactjs/modifiers'\r\n    import '@interactjs/dev-tools'\r\n    import interact from '@interactjs/interact'\r\n\r\n    export default {\r\n        name: \"GridItem\",\r\n        props: {\r\n            /*cols: {\r\n             type: Number,\r\n             required: true\r\n             },*/\r\n            /*containerWidth: {\r\n             type: Number,\r\n             required: true\r\n\r\n             },\r\n             rowHeight: {\r\n             type: Number,\r\n             required: true\r\n             },\r\n             margin: {\r\n             type: Array,\r\n             required: true\r\n             },\r\n             maxRows: {\r\n             type: Number,\r\n             required: true\r\n             },*/\r\n            isDraggable: {\r\n                type: Boolean,\r\n                required: false,\r\n                default: null\r\n            },\r\n            isResizable: {\r\n                type: Boolean,\r\n                required: false,\r\n                default: null\r\n            },\r\n            /*useCssTransforms: {\r\n             type: Boolean,\r\n             required: true\r\n             },\r\n             */\r\n            static: {\r\n                type: Boolean,\r\n                required: false,\r\n                default: false\r\n            },\r\n            minH: {\r\n                type: Number,\r\n                required: false,\r\n                default: 1\r\n            },\r\n            minW: {\r\n                type: Number,\r\n                required: false,\r\n                default: 1\r\n            },\r\n            maxH: {\r\n                type: Number,\r\n                required: false,\r\n                default: Infinity\r\n            },\r\n            maxW: {\r\n                type: Number,\r\n                required: false,\r\n                default: Infinity\r\n            },\r\n            x: {\r\n                type: Number,\r\n                required: true\r\n            },\r\n            y: {\r\n                type: Number,\r\n                required: true\r\n            },\r\n            w: {\r\n                type: Number,\r\n                required: true\r\n            },\r\n            h: {\r\n                type: Number,\r\n                required: true\r\n            },\r\n            i: {\r\n                required: true\r\n            },\r\n            dragIgnoreFrom: {\r\n                type: String,\r\n                required: false,\r\n                default: 'a, button'\r\n            },\r\n            dragAllowFrom: {\r\n                type: String,\r\n                required: false,\r\n                default: null\r\n            },\r\n            resizeIgnoreFrom: {\r\n                type: String,\r\n                required: false,\r\n                default: 'a, button'\r\n            },\r\n            preserveAspectRatio: {\r\n                type: Boolean,\r\n                required: false,\r\n                default: false,\r\n            }\r\n        },\r\n        inject: [\"eventBus\", \"layout\"],\r\n        data: function () {\r\n            return {\r\n                cols: 1,\r\n                containerWidth: 100,\r\n                rowHeight: 30,\r\n                margin: [10, 10],\r\n                maxRows: Infinity,\r\n                draggable: null,\r\n                resizable: null,\r\n                useCssTransforms: true,\r\n                useStyleCursor: true,\r\n\r\n                isDragging: false,\r\n                dragging: null,\r\n                isResizing: false,\r\n                resizing: null,\r\n                lastX: NaN,\r\n                lastY: NaN,\r\n                lastW: NaN,\r\n                lastH: NaN,\r\n                style: {},\r\n                rtl: false,\r\n\r\n                dragEventSet: false,\r\n                resizeEventSet: false,\r\n\r\n                previousW: null,\r\n                previousH: null,\r\n                previousX: null,\r\n                previousY: null,\r\n                innerX: this.x,\r\n                innerY: this.y,\r\n                innerW: this.w,\r\n                innerH: this.h\r\n            }\r\n        },\r\n        created () {\r\n            let self = this;\r\n\r\n            // Accessible refernces of functions for removing in beforeUnmount\r\n            self.updateWidthHandler = function (width) {\r\n                self.updateWidth(width);\r\n            };\r\n\r\n            self.compactHandler = function (layout) {\r\n                self.compact(layout);\r\n            };\r\n\r\n            self.setDraggableHandler = function (isDraggable) {\r\n                if (self.isDraggable === null) {\r\n                    self.draggable = isDraggable;\r\n                }\r\n            };\r\n\r\n            self.setResizableHandler = function (isResizable) {\r\n                if (self.isResizable === null) {\r\n                    self.resizable = isResizable;\r\n                }\r\n            };\r\n\r\n            self.setRowHeightHandler = function (rowHeight) {\r\n                self.rowHeight = rowHeight;\r\n            };\r\n\r\n            self.setMaxRowsHandler = function (maxRows) {\r\n                self.maxRows = maxRows;\r\n            };\r\n\r\n            self.directionchangeHandler = () => {\r\n                this.rtl = getDocumentDir() === 'rtl';\r\n                this.compact();\r\n            };\r\n\r\n            self.setColNum = (colNum) => {\r\n               self.cols = parseInt(colNum);\r\n            }\r\n\r\n            this.eventBus.on('updateWidth', self.updateWidthHandler);\r\n            this.eventBus.on('compact', self.compactHandler);\r\n            this.eventBus.on('setDraggable', self.setDraggableHandler);\r\n            this.eventBus.on('setResizable', self.setResizableHandler);\r\n            this.eventBus.on('setRowHeight', self.setRowHeightHandler);\r\n            this.eventBus.on('setMaxRows', self.setMaxRowsHandler);\r\n            this.eventBus.on('directionchange', self.directionchangeHandler);\r\n            this.eventBus.on('setColNum', self.setColNum)\r\n\r\n            this.rtl = getDocumentDir() === 'rtl';\r\n        },\r\n        beforeUnmount: function(){\r\n            let self = this;\r\n            //Remove listeners\r\n            this.eventBus.off('updateWidth', self.updateWidthHandler);\r\n            this.eventBus.off('compact', self.compactHandler);\r\n            this.eventBus.off('setDraggable', self.setDraggableHandler);\r\n            this.eventBus.off('setResizable', self.setResizableHandler);\r\n            this.eventBus.off('setRowHeight', self.setRowHeightHandler);\r\n            this.eventBus.off('setMaxRows', self.setMaxRowsHandler);\r\n            this.eventBus.off('directionchange', self.directionchangeHandler);\r\n            this.eventBus.off('setColNum', self.setColNum);\r\n            if (this.interactObj) {\r\n                this.interactObj.unset() // destroy interact intance\r\n            }\r\n        },\r\n        mounted: function () {\r\n            if (this.layout.responsive && this.layout.lastBreakpoint) {\r\n                this.cols = getColsFromBreakpoint(this.layout.lastBreakpoint, this.layout.cols);\r\n            } else {\r\n                this.cols = this.layout.colNum;\r\n            }\r\n            this.rowHeight = this.layout.rowHeight;\r\n            this.containerWidth = this.layout.width !== null ? this.layout.width : 100;\r\n            this.margin = this.layout.margin !== undefined ? this.layout.margin : [10, 10];\r\n            this.maxRows = this.layout.maxRows;\r\n\r\n            if (this.isDraggable === null) {\r\n                this.draggable = this.layout.isDraggable;\r\n            } else {\r\n                this.draggable = this.isDraggable;\r\n            }\r\n            if (this.isResizable === null) {\r\n                this.resizable = this.layout.isResizable;\r\n            } else {\r\n                this.resizable = this.isResizable;\r\n            }\r\n            this.useCssTransforms = this.layout.useCssTransforms;\r\n            this.useStyleCursor = this.layout.useStyleCursor;\r\n            this.createStyle();\r\n        },\r\n        watch: {\r\n            isDraggable: function () {\r\n                this.draggable = this.isDraggable;\r\n            },\r\n            static: function () {\r\n                this.tryMakeDraggable();\r\n                this.tryMakeResizable();\r\n            },\r\n            draggable: function () {\r\n                this.tryMakeDraggable();\r\n            },\r\n            isResizable: function () {\r\n                this.resizable = this.isResizable;\r\n            },\r\n            resizable: function () {\r\n                this.tryMakeResizable();\r\n            },\r\n            rowHeight: function () {\r\n                this.createStyle();\r\n                this.emitContainerResized();\r\n            },\r\n            cols: function () {\r\n                this.tryMakeResizable();\r\n                this.createStyle();\r\n                this.emitContainerResized();\r\n            },\r\n            containerWidth: function () {\r\n                this.tryMakeResizable();\r\n                this.createStyle();\r\n                this.emitContainerResized();\r\n            },\r\n            x: function (newVal) {\r\n                this.innerX = newVal;\r\n                this.createStyle();\r\n            },\r\n            y: function (newVal) {\r\n                this.innerY = newVal;\r\n                this.createStyle();\r\n            },\r\n            h: function (newVal) {\r\n                this.innerH = newVal\r\n                this.createStyle();\r\n                // this.emitContainerResized();\r\n            },\r\n            w: function (newVal) {\r\n                this.innerW = newVal;\r\n                this.createStyle();\r\n                // this.emitContainerResized();\r\n            },\r\n            renderRtl: function () {\r\n                // console.log(\"### renderRtl\");\r\n                this.tryMakeResizable();\r\n                this.createStyle();\r\n            },\r\n            minH: function () {\r\n                this.tryMakeResizable();\r\n            },\r\n            maxH: function () {\r\n                this.tryMakeResizable();\r\n            },\r\n            minW: function () {\r\n                this.tryMakeResizable();\r\n            },\r\n            maxW: function () {\r\n                this.tryMakeResizable();\r\n            },\r\n            \"$parent.margin\": function (margin) {\r\n                if (!margin || (margin[0] == this.margin[0] && margin[1] == this.margin[1])) {\r\n                    return;\r\n                }\r\n                this.margin = margin.map(m => Number(m));\r\n                this.createStyle();\r\n                this.emitContainerResized();\r\n            },\r\n        },\r\n        computed: {\r\n            classObj() {\r\n                return {\r\n                    'vue-resizable' : this.resizableAndNotStatic,\r\n                    'static': this.static,\r\n                    'resizing' : this.isResizing,\r\n                    'vue-draggable-dragging' : this.isDragging,\r\n                    'cssTransforms' : this.useCssTransforms,\r\n                    'render-rtl' : this.renderRtl,\r\n                    'disable-userselect': this.isDragging,\r\n                    'no-touch': this.isAndroid && this.draggableOrResizableAndNotStatic\r\n                }\r\n            },\r\n            resizableAndNotStatic(){\r\n                return this.resizable && !this.static;\r\n            },\r\n            draggableOrResizableAndNotStatic(){\r\n                return (this.draggable || this.resizable) && !this.static;\r\n            },\r\n            isAndroid() {\r\n                return navigator.userAgent.toLowerCase().indexOf(\"android\") !== -1;\r\n            },\r\n            renderRtl() {\r\n                return (this.layout.isMirrored) ? !this.rtl : this.rtl;\r\n            },\r\n            resizableHandleClass() {\r\n                if (this.renderRtl) {\r\n                    return 'vue-resizable-handle vue-rtl-resizable-handle';\r\n                } else {\r\n                    return 'vue-resizable-handle';\r\n                }\r\n            }\r\n        },\r\n        methods: {\r\n            createStyle: function () {\r\n                if (this.x + this.w > this.cols) {\r\n                    this.innerX = 0;\r\n                    this.innerW = (this.w > this.cols) ? this.cols : this.w\r\n                } else {\r\n                  this.innerX = this.x;\r\n                  this.innerW = this.w;\r\n                }\r\n                let pos = this.calcPosition(this.innerX, this.innerY, this.innerW, this.innerH);\r\n\r\n\r\n                if (this.isDragging) {\r\n                    pos.top = this.dragging.top;\r\n//                    Add rtl support\r\n                    if (this.renderRtl) {\r\n                        pos.right = this.dragging.left;\r\n                    } else {\r\n                        pos.left = this.dragging.left;\r\n                    }\r\n                }\r\n                if (this.isResizing) {\r\n                    pos.width = this.resizing.width;\r\n                    pos.height = this.resizing.height;\r\n                }\r\n\r\n                let style;\r\n                // CSS Transforms support (default)\r\n                if (this.useCssTransforms) {\r\n//                    Add rtl support\r\n                    if (this.renderRtl) {\r\n                        style = setTransformRtl(pos.top, pos.right, pos.width, pos.height);\r\n                    } else {\r\n                        style = setTransform(pos.top, pos.left, pos.width, pos.height);\r\n                    }\r\n\r\n                } else { // top,left (slow)\r\n//                    Add rtl support\r\n                    if (this.renderRtl) {\r\n                        style = setTopRight(pos.top, pos.right, pos.width, pos.height);\r\n                    } else {\r\n                        style = setTopLeft(pos.top, pos.left, pos.width, pos.height);\r\n                    }\r\n                }\r\n                this.style = style;\r\n            },\r\n            emitContainerResized() {\r\n                // this.style has width and height with trailing 'px'. The\r\n                // resized event is without them\r\n                let styleProps = {};\r\n                for (let prop of ['width', 'height']) {\r\n                    let val = this.style[prop];\r\n                    let matches = val.match(/^(\\d+)px$/);\r\n                    if (! matches)\r\n                        return;\r\n                    styleProps[prop] = matches[1];\r\n                }\r\n                this.$emit(\"container-resized\", this.i, this.h, this.w, styleProps.height, styleProps.width);\r\n            },\r\n            handleResize: function (event) {\r\n                if (this.static) return;\r\n                const position = getControlPosition(event);\r\n                // Get the current drag point from the event. This is used as the offset.\r\n                if (position == null) return; // not possible but satisfies flow\r\n                const {x, y} = position;\r\n\r\n                const newSize = {width: 0, height: 0};\r\n                let pos;\r\n                switch (event.type) {\r\n                    case \"resizestart\": {\r\n                        this.previousW = this.innerW;\r\n                        this.previousH = this.innerH;\r\n                        pos = this.calcPosition(this.innerX, this.innerY, this.innerW, this.innerH);\r\n                        newSize.width = pos.width;\r\n                        newSize.height = pos.height;\r\n                        this.resizing = newSize;\r\n                        this.isResizing = true;\r\n                        break;\r\n                    }\r\n                    case \"resizemove\": {\r\n//                        console.log(\"### resize => \" + event.type + \", lastW=\" + this.lastW + \", lastH=\" + this.lastH);\r\n                        const coreEvent = createCoreData(this.lastW, this.lastH, x, y);\r\n                        if (this.renderRtl) {\r\n                            newSize.width = this.resizing.width - coreEvent.deltaX;\r\n                        } else {\r\n                            newSize.width = this.resizing.width + coreEvent.deltaX;\r\n                        }\r\n                        newSize.height = this.resizing.height + coreEvent.deltaY;\r\n\r\n                        ///console.log(\"### resize => \" + event.type + \", deltaX=\" + coreEvent.deltaX + \", deltaY=\" + coreEvent.deltaY);\r\n                        this.resizing = newSize;\r\n                        break;\r\n                    }\r\n                    case \"resizeend\": {\r\n                        //console.log(\"### resize end => x=\" +this.innerX + \" y=\" + this.innerY + \" w=\" + this.innerW + \" h=\" + this.innerH);\r\n                        pos = this.calcPosition(this.innerX, this.innerY, this.innerW, this.innerH);\r\n                        newSize.width = pos.width;\r\n                        newSize.height = pos.height;\r\n//                        console.log(\"### resize end => \" + JSON.stringify(newSize));\r\n                        this.resizing = null;\r\n                        this.isResizing = false;\r\n                        break;\r\n                    }\r\n                }\r\n\r\n                // Get new WH\r\n                pos = this.calcWH(newSize.height, newSize.width);\r\n                if (pos.w < this.minW) {\r\n                    pos.w = this.minW;\r\n                }\r\n                if (pos.w > this.maxW) {\r\n                    pos.w = this.maxW;\r\n                }\r\n                if (pos.h < this.minH) {\r\n                    pos.h = this.minH;\r\n                }\r\n                if (pos.h > this.maxH) {\r\n                    pos.h = this.maxH;\r\n                }\r\n\r\n                if (pos.h < 1) {\r\n                    pos.h = 1;\r\n                }\r\n                if (pos.w < 1) {\r\n                    pos.w = 1;\r\n                }\r\n\r\n                this.lastW = x;\r\n                this.lastH = y;\r\n\r\n                if (this.innerW !== pos.w || this.innerH !== pos.h) {\r\n                    this.$emit(\"resize\", this.i, pos.h, pos.w, newSize.height, newSize.width);\r\n                }\r\n                if (event.type === \"resizeend\" && (this.previousW !== this.innerW || this.previousH !== this.innerH)) {\r\n                    this.$emit(\"resized\", this.i, pos.h, pos.w, newSize.height, newSize.width);\r\n                }\r\n                this.eventBus.emit(\"resizeEvent\", {eventType: event.type, i: this.i, x: this.innerX, y: this.innerY, h: pos.h, w: pos.w});\r\n            },\r\n            handleDrag(event) {\r\n                if (this.static) return;\r\n                if (this.isResizing) return;\r\n\r\n                const position = getControlPosition(event);\r\n\r\n                // Get the current drag point from the event. This is used as the offset.\r\n                if (position === null) return; // not possible but satisfies flow\r\n                const {x, y} = position;\r\n\r\n                // let shouldUpdate = false;\r\n                let newPosition = {top: 0, left: 0};\r\n                switch (event.type) {\r\n                    case \"dragstart\": {\r\n                        this.previousX = this.innerX;\r\n                        this.previousY = this.innerY;\r\n\r\n                        let parentRect = event.target.offsetParent.getBoundingClientRect();\r\n                        let clientRect = event.target.getBoundingClientRect();\r\n                        if (this.renderRtl) {\r\n                            newPosition.left = (clientRect.right - parentRect.right) * -1;\r\n                        } else {\r\n                            newPosition.left = clientRect.left - parentRect.left;\r\n                        }\r\n                        newPosition.top = clientRect.top - parentRect.top;\r\n                        this.dragging = newPosition;\r\n                        this.isDragging = true;\r\n                        break;\r\n                    }\r\n                    case \"dragend\": {\r\n                        if (!this.isDragging) return;\r\n                        let parentRect = event.target.offsetParent.getBoundingClientRect();\r\n                        let clientRect = event.target.getBoundingClientRect();\r\n//                        Add rtl support\r\n                        if (this.renderRtl) {\r\n                            newPosition.left = (clientRect.right - parentRect.right) * -1;\r\n                        } else {\r\n                            newPosition.left = clientRect.left - parentRect.left;\r\n                        }\r\n                        newPosition.top = clientRect.top - parentRect.top;\r\n//                        console.log(\"### drag end => \" + JSON.stringify(newPosition));\r\n//                        console.log(\"### DROP: \" + JSON.stringify(newPosition));\r\n                        this.dragging = null;\r\n                        this.isDragging = false;\r\n                        // shouldUpdate = true;\r\n                        break;\r\n                    }\r\n                    case \"dragmove\": {\r\n                        const coreEvent = createCoreData(this.lastX, this.lastY, x, y);\r\n//                        Add rtl support\r\n                        if (this.renderRtl) {\r\n                            newPosition.left = this.dragging.left - coreEvent.deltaX;\r\n                        } else {\r\n                            newPosition.left = this.dragging.left + coreEvent.deltaX;\r\n                        }\r\n                        newPosition.top = this.dragging.top + coreEvent.deltaY;\r\n//                        console.log(\"### drag => \" + event.type + \", x=\" + x + \", y=\" + y);\r\n//                        console.log(\"### drag => \" + event.type + \", deltaX=\" + coreEvent.deltaX + \", deltaY=\" + coreEvent.deltaY);\r\n//                        console.log(\"### drag end => \" + JSON.stringify(newPosition));\r\n                        this.dragging = newPosition;\r\n                        break;\r\n                    }\r\n                }\r\n\r\n                // Get new XY\r\n                let pos;\r\n                if (this.renderRtl) {\r\n                    pos = this.calcXY(newPosition.top, newPosition.left);\r\n                } else {\r\n                    pos = this.calcXY(newPosition.top, newPosition.left);\r\n                }\r\n\r\n                this.lastX = x;\r\n                this.lastY = y;\r\n\r\n                if (this.innerX !== pos.x || this.innerY !== pos.y) {\r\n                    this.$emit(\"move\", this.i, pos.x, pos.y);\r\n                }\r\n                if (event.type === \"dragend\" && (this.previousX !== this.innerX || this.previousY !== this.innerY)) {\r\n                    this.$emit(\"moved\", this.i, pos.x, pos.y);\r\n                }\r\n                this.eventBus.emit(\"dragEvent\", {eventType: event.type, i: this.i, x: pos.x, y: pos.y, h: this.innerH, w: this.innerW});\r\n            },\r\n            calcPosition: function (x, y, w, h) {\r\n                const colWidth = this.calcColWidth();\r\n                // add rtl support\r\n                let out;\r\n                if (this.renderRtl) {\r\n                    out = {\r\n                        right: Math.round(colWidth * x + (x + 1) * this.margin[0]),\r\n                        top: Math.round(this.rowHeight * y + (y + 1) * this.margin[1]),\r\n                        // 0 * Infinity === NaN, which causes problems with resize constriants;\r\n                        // Fix this if it occurs.\r\n                        // Note we do it here rather than later because Math.round(Infinity) causes deopt\r\n                        width: w === Infinity ? w : Math.round(colWidth * w + Math.max(0, w - 1) * this.margin[0]),\r\n                        height: h === Infinity ? h : Math.round(this.rowHeight * h + Math.max(0, h - 1) * this.margin[1])\r\n                    };\r\n                } else {\r\n                    out = {\r\n                        left: Math.round(colWidth * x + (x + 1) * this.margin[0]),\r\n                        top: Math.round(this.rowHeight * y + (y + 1) * this.margin[1]),\r\n                        // 0 * Infinity === NaN, which causes problems with resize constriants;\r\n                        // Fix this if it occurs.\r\n                        // Note we do it here rather than later because Math.round(Infinity) causes deopt\r\n                        width: w === Infinity ? w : Math.round(colWidth * w + Math.max(0, w - 1) * this.margin[0]),\r\n                        height: h === Infinity ? h : Math.round(this.rowHeight * h + Math.max(0, h - 1) * this.margin[1])\r\n                    };\r\n                }\r\n\r\n\r\n                return out;\r\n            },\r\n            /**\r\n             * Translate x and y coordinates from pixels to grid units.\r\n             * @param  {Number} top  Top position (relative to parent) in pixels.\r\n             * @param  {Number} left Left position (relative to parent) in pixels.\r\n             * @return {Object} x and y in grid units.\r\n             */\r\n            // TODO check if this function needs change in order to support rtl.\r\n            calcXY(top, left) {\r\n                const colWidth = this.calcColWidth();\r\n\r\n                // left = colWidth * x + margin * (x + 1)\r\n                // l = cx + m(x+1)\r\n                // l = cx + mx + m\r\n                // l - m = cx + mx\r\n                // l - m = x(c + m)\r\n                // (l - m) / (c + m) = x\r\n                // x = (left - margin) / (coldWidth + margin)\r\n                let x = Math.round((left - this.margin[0]) / (colWidth + this.margin[0]));\r\n                let y = Math.round((top - this.margin[1]) / (this.rowHeight + this.margin[1]));\r\n\r\n                // Capping\r\n                x = Math.max(Math.min(x, this.cols - this.innerW), 0);\r\n                y = Math.max(Math.min(y, this.maxRows - this.innerH), 0);\r\n\r\n                return {x, y};\r\n            },\r\n            // Helper for generating column width\r\n            calcColWidth() {\r\n                const colWidth = (this.containerWidth - (this.margin[0] * (this.cols + 1))) / this.cols;\r\n               // console.log(\"### COLS=\" + this.cols + \" COL WIDTH=\" + colWidth + \" MARGIN \" + this.margin[0]);\r\n                return colWidth;\r\n            },\r\n\r\n            /**\r\n             * Given a height and width in pixel values, calculate grid units.\r\n             * @param  {Number} height Height in pixels.\r\n             * @param  {Number} width  Width in pixels.\r\n             * @param  {Boolean} autoSizeFlag  function autoSize identifier.\r\n             * @return {Object} w, h as grid units.\r\n             */\r\n            calcWH(height, width, autoSizeFlag = false) {\r\n                const colWidth = this.calcColWidth();\r\n\r\n                // width = colWidth * w - (margin * (w - 1))\r\n                // ...\r\n                // w = (width + margin) / (colWidth + margin)\r\n                let w = Math.round((width + this.margin[0]) / (colWidth + this.margin[0]));\r\n                let h = 0;\r\n                if (!autoSizeFlag) {\r\n                    h = Math.round((height + this.margin[1]) / (this.rowHeight + this.margin[1]));\r\n                } else {\r\n                    h = Math.ceil((height + this.margin[1]) / (this.rowHeight + this.margin[1]));\r\n                }\r\n\r\n                // Capping\r\n                w = Math.max(Math.min(w, this.cols - this.innerX), 0);\r\n                h = Math.max(Math.min(h, this.maxRows - this.innerY), 0);\r\n                return {w, h};\r\n            },\r\n            updateWidth: function (width, colNum) {\r\n                this.containerWidth = width;\r\n                if (colNum !== undefined && colNum !== null) {\r\n                    this.cols = colNum;\r\n                }\r\n            },\r\n            compact: function () {\r\n                this.createStyle();\r\n            },\r\n            tryMakeDraggable: function(){\r\n                const self = this;\r\n                if (this.interactObj === null || this.interactObj === undefined) {\r\n                    this.interactObj = interact(this.$refs.item);\r\n                    if (!this.useStyleCursor) {\r\n                        this.interactObj.styleCursor(false);\r\n                    }\r\n                }\r\n                if (this.draggable && !this.static) {\r\n                    const opts = {\r\n                        ignoreFrom: this.dragIgnoreFrom,\r\n                        allowFrom: this.dragAllowFrom\r\n                    };\r\n                    this.interactObj.draggable(opts);\r\n                    /*this.interactObj.draggable({allowFrom: '.vue-draggable-handle'});*/\r\n                    if (!this.dragEventSet) {\r\n                        this.dragEventSet = true;\r\n                        this.interactObj.on('dragstart dragmove dragend', function (event) {\r\n                            self.handleDrag(event);\r\n                        });\r\n                    }\r\n                } else {\r\n                    this.interactObj.draggable({\r\n                        enabled: false\r\n                    });\r\n                }\r\n            },\r\n            tryMakeResizable: function(){\r\n                const self = this;\r\n                if (this.interactObj === null || this.interactObj === undefined) {\r\n                    this.interactObj = interact(this.$refs.item);\r\n                    if (!this.useStyleCursor) {\r\n                        this.interactObj.styleCursor(false);\r\n                    }\r\n                }\r\n                if (this.resizable && !this.static) {\r\n                    let maximum = this.calcPosition(0,0,this.maxW, this.maxH);\r\n                    let minimum = this.calcPosition(0,0, this.minW, this.minH);\r\n\r\n                    // console.log(\"### MAX \" + JSON.stringify(maximum));\r\n                    // console.log(\"### MIN \" + JSON.stringify(minimum));\r\n\r\n                    const opts = {\r\n                        // allowFrom: \".\" + this.resizableHandleClass.trim().replace(\" \", \".\"),\r\n                        edges: {\r\n                            left: false,\r\n                            right: \".\" + this.resizableHandleClass.trim().replace(\" \", \".\"),\r\n                            bottom: \".\" + this.resizableHandleClass.trim().replace(\" \", \".\"),\r\n                            top: false\r\n                        },\r\n                        ignoreFrom: this.resizeIgnoreFrom,\r\n                        restrictSize: {\r\n                            min: {\r\n                                height: minimum.height,\r\n                                width: minimum.width\r\n                            },\r\n                            max: {\r\n                                height: maximum.height,\r\n                                width: maximum.width\r\n                            }\r\n                        }\r\n                    };\r\n\r\n                    if (this.preserveAspectRatio) {\r\n                        opts.modifiers = [\r\n                            interact.modifiers.aspectRatio({\r\n                                ratio: 'preserve'\r\n                            }),\r\n                        ]\r\n                    }\r\n\r\n                    this.interactObj.resizable(opts);\r\n                    if (!this.resizeEventSet) {\r\n                        this.resizeEventSet = true;\r\n                        this.interactObj\r\n                            .on('resizestart resizemove resizeend', function (event) {\r\n                                self.handleResize(event);\r\n                            });\r\n                    }\r\n                } else {\r\n                    this.interactObj.resizable({\r\n                        enabled: false\r\n                    });\r\n                }\r\n            },\r\n            autoSize: function() {\r\n                // ok here we want to calculate if a resize is needed\r\n                this.previousW = this.innerW;\r\n                this.previousH = this.innerH;\r\n\r\n                let newSize=this.$slots().default[0].elm.getBoundingClientRect();\r\n                let pos = this.calcWH(newSize.height, newSize.width, true);\r\n                if (pos.w < this.minW) {\r\n                    pos.w = this.minW;\r\n                }\r\n                if (pos.w > this.maxW) {\r\n                    pos.w = this.maxW;\r\n                }\r\n                if (pos.h < this.minH) {\r\n                    pos.h = this.minH;\r\n                }\r\n                if (pos.h > this.maxH) {\r\n                    pos.h = this.maxH;\r\n                }\r\n\r\n                if (pos.h < 1) {\r\n                    pos.h = 1;\r\n                }\r\n                if (pos.w < 1) {\r\n                    pos.w = 1;\r\n                }\r\n\r\n                // this.lastW = x; // basically, this is copied from resizehandler, but shouldn't be needed\r\n                // this.lastH = y;\r\n\r\n                if (this.innerW !== pos.w || this.innerH !== pos.h) {\r\n                    this.$emit(\"resize\", this.i, pos.h, pos.w, newSize.height, newSize.width);\r\n                }\r\n                if (this.previousW !== pos.w || this.previousH !== pos.h) {\r\n                    this.$emit(\"resized\", this.i, pos.h, pos.w, newSize.height, newSize.width);\r\n                    this.eventBus.emit(\"resizeEvent\", {eventType: \"resizeend\", i: this.i, x: this.innerX, y: this.innerY, h: pos.h, w: pos.w});\r\n                }\r\n            }\r\n        },\r\n    }\r\n</script>\r\n","// @flow\r\nexport type LayoutItemRequired = {w: number, h: number, x: number, y: number, i: string};\r\nexport type LayoutItem = LayoutItemRequired &\r\n                         {minW?: number, minH?: number, maxW?: number, maxH?: number,\r\n                          moved?: boolean, static?: boolean,\r\n                          isDraggable?: ?boolean, isResizable?: ?boolean};\r\nexport type Layout = Array<LayoutItem>;\r\n// export type Position = {left: number, top: number, width: number, height: number};\r\n/*\r\nexport type DragCallbackData = {\r\n  node: HTMLElement,\r\n  x: number, y: number,\r\n  deltaX: number, deltaY: number,\r\n  lastX: number, lastY: number\r\n};\r\n*/\r\n// export type DragEvent = {e: Event} & DragCallbackData;\r\nexport type Size = {width: number, height: number};\r\n// export type ResizeEvent = {e: Event, node: HTMLElement, size: Size};\r\n\r\n// const isProduction = process.env.NODE_ENV === 'production';\r\n/**\r\n * Return the bottom coordinate of the layout.\r\n *\r\n * @param  {Array} layout Layout array.\r\n * @return {Number}       Bottom coordinate.\r\n */\r\nexport function bottom(layout: Layout): number {\r\n  let max = 0, bottomY;\r\n  for (let i = 0, len = layout.length; i < len; i++) {\r\n    bottomY = layout[i]. y + layout[i].h;\r\n    if (bottomY > max) max = bottomY;\r\n  }\r\n  return max;\r\n}\r\n\r\nexport function cloneLayout(layout: Layout): Layout {\r\n  const newLayout = Array(layout.length);\r\n  for (let i = 0, len = layout.length; i < len; i++) {\r\n    newLayout[i] = cloneLayoutItem(layout[i]);\r\n  }\r\n  return newLayout;\r\n}\r\n\r\n// Fast path to cloning, since this is monomorphic\r\nexport function cloneLayoutItem(layoutItem: LayoutItem): LayoutItem {\r\n  /*return {\r\n    w: layoutItem.w, h: layoutItem.h, x: layoutItem.x, y: layoutItem.y, i: layoutItem.i,\r\n    minW: layoutItem.minW, maxW: layoutItem.maxW, minH: layoutItem.minH, maxH: layoutItem.maxH,\r\n    moved: Boolean(layoutItem.moved), static: Boolean(layoutItem.static),\r\n    // These can be null\r\n    isDraggable: layoutItem.isDraggable, isResizable: layoutItem.isResizable\r\n  };*/\r\n    return JSON.parse(JSON.stringify(layoutItem));\r\n}\r\n\r\n/**\r\n * Given two layoutitems, check if they collide.\r\n *\r\n * @return {Boolean}   True if colliding.\r\n */\r\nexport function collides(l1: LayoutItem, l2: LayoutItem): boolean {\r\n  if (l1 === l2) return false; // same element\r\n  if (l1.x + l1.w <= l2.x) return false; // l1 is left of l2\r\n  if (l1.x >= l2.x + l2.w) return false; // l1 is right of l2\r\n  if (l1.y + l1.h <= l2.y) return false; // l1 is above l2\r\n  if (l1.y >= l2.y + l2.h) return false; // l1 is below l2\r\n  return true; // boxes overlap\r\n}\r\n\r\n/**\r\n * Given a layout, compact it. This involves going down each y coordinate and removing gaps\r\n * between items.\r\n *\r\n * @param  {Array} layout Layout.\r\n * @param  {Boolean} verticalCompact Whether or not to compact the layout\r\n *   vertically.\r\n * @return {Array}       Compacted Layout.\r\n */\r\nexport function compact(layout: Layout, verticalCompact: Boolean): Layout {\r\n    // Statics go in the compareWith array right away so items flow around them.\r\n  const compareWith = getStatics(layout);\r\n  // We go through the items by row and column.\r\n  const sorted = sortLayoutItemsByRowCol(layout);\r\n  // Holding for new items.\r\n  const out = Array(layout.length);\r\n\r\n  for (let i = 0, len = sorted.length; i < len; i++) {\r\n    let l = sorted[i];\r\n\r\n    // Don't move static elements\r\n    if (!l.static) {\r\n      l = compactItem(compareWith, l, verticalCompact);\r\n\r\n      // Add to comparison array. We only collide with items before this one.\r\n      // Statics are already in this array.\r\n      compareWith.push(l);\r\n    }\r\n\r\n    // Add to output array to make sure they still come out in the right order.\r\n    out[layout.indexOf(l)] = l;\r\n\r\n    // Clear moved flag, if it exists.\r\n    l.moved = false;\r\n  }\r\n\r\n  return out;\r\n}\r\n\r\n/**\r\n * Compact an item in the layout.\r\n */\r\nexport function compactItem(compareWith: Layout, l: LayoutItem, verticalCompact: boolean): LayoutItem {\r\n  if (verticalCompact) {\r\n    // Move the element up as far as it can go without colliding.\r\n    while (l.y > 0 && !getFirstCollision(compareWith, l)) {\r\n      l.y--;\r\n    }\r\n  }\r\n\r\n  // Move it down, and keep moving it down if it's colliding.\r\n  let collides;\r\n  while((collides = getFirstCollision(compareWith, l))) {\r\n    l.y = collides.y + collides.h;\r\n  }\r\n  return l;\r\n}\r\n\r\n/**\r\n * Given a layout, make sure all elements fit within its bounds.\r\n *\r\n * @param  {Array} layout Layout array.\r\n * @param  {Number} bounds Number of columns.\r\n */\r\nexport function correctBounds(layout: Layout, bounds: {cols: number}): Layout {\r\n  const collidesWith = getStatics(layout);\r\n  for (let i = 0, len = layout.length; i < len; i++) {\r\n    const l = layout[i];\r\n    // Overflows right\r\n    if (l.x + l.w > bounds.cols) l.x = bounds.cols - l.w;\r\n    // Overflows left\r\n    if (l.x < 0) {\r\n      l.x = 0;\r\n      l.w = bounds.cols;\r\n    }\r\n    if (!l.static) collidesWith.push(l);\r\n    else {\r\n      // If this is static and collides with other statics, we must move it down.\r\n      // We have to do something nicer than just letting them overlap.\r\n      while(getFirstCollision(collidesWith, l)) {\r\n        l.y++;\r\n      }\r\n    }\r\n  }\r\n  return layout;\r\n}\r\n\r\n/**\r\n * Get a layout item by ID. Used so we can override later on if necessary.\r\n *\r\n * @param  {Array}  layout Layout array.\r\n * @param  {String} id     ID\r\n * @return {LayoutItem}    Item at ID.\r\n */\r\nexport function getLayoutItem(layout: Layout, id: string): ?LayoutItem {\r\n  for (let i = 0, len = layout.length; i < len; i++) {\r\n    if (layout[i].i === id) return layout[i];\r\n  }\r\n}\r\n\r\n/**\r\n * Returns the first item this layout collides with.\r\n * It doesn't appear to matter which order we approach this from, although\r\n * perhaps that is the wrong thing to do.\r\n *\r\n * @param  {Object} layoutItem Layout item.\r\n * @return {Object|undefined}  A colliding layout item, or undefined.\r\n */\r\nexport function getFirstCollision(layout: Layout, layoutItem: LayoutItem): ?LayoutItem {\r\n  for (let i = 0, len = layout.length; i < len; i++) {\r\n    if (collides(layout[i], layoutItem)) return layout[i];\r\n  }\r\n}\r\n\r\nexport function getAllCollisions(layout: Layout, layoutItem: LayoutItem): Array<LayoutItem> {\r\n  return layout.filter((l) => collides(l, layoutItem));\r\n}\r\n\r\n/**\r\n * Get all static elements.\r\n * @param  {Array} layout Array of layout objects.\r\n * @return {Array}        Array of static layout items..\r\n */\r\nexport function getStatics(layout: Layout): Array<LayoutItem> {\r\n    //return [];\r\n    return layout.filter((l) => l.static);\r\n}\r\n\r\n/**\r\n * Move an element. Responsible for doing cascading movements of other elements.\r\n *\r\n * @param  {Array}      layout Full layout to modify.\r\n * @param  {LayoutItem} l      element to move.\r\n * @param  {Number}     [x]    X position in grid units.\r\n * @param  {Number}     [y]    Y position in grid units.\r\n * @param  {Boolean}    [isUserAction] If true, designates that the item we're moving is\r\n *                                     being dragged/resized by th euser.\r\n */\r\nexport function moveElement(layout: Layout, l: LayoutItem, x: Number, y: Number, isUserAction: Boolean, preventCollision: Boolean): Layout {\r\n  if (l.static) return layout;\r\n\r\n  // Short-circuit if nothing to do.\r\n  //if (l.y === y && l.x === x) return layout;\r\n\r\n  const oldX = l.x;\r\n  const oldY = l.y;\r\n\r\n  const movingUp = y && l.y > y;\r\n  // This is quite a bit faster than extending the object\r\n  if (typeof x === 'number') l.x = x;\r\n  if (typeof y === 'number') l.y = y;\r\n  l.moved = true;\r\n\r\n  // If this collides with anything, move it.\r\n  // When doing this comparison, we have to sort the items we compare with\r\n  // to ensure, in the case of multiple collisions, that we're getting the\r\n  // nearest collision.\r\n  let sorted = sortLayoutItemsByRowCol(layout);\r\n  if (movingUp) sorted = sorted.reverse();\r\n  const collisions = getAllCollisions(sorted, l);\r\n\r\n  if (preventCollision && collisions.length) {\r\n    l.x = oldX;\r\n    l.y = oldY;\r\n    l.moved = false;\r\n    return layout;\r\n  }\r\n\r\n  // Move each item that collides away from this element.\r\n  for (let i = 0, len = collisions.length; i < len; i++) {\r\n    const collision = collisions[i];\r\n    // console.log('resolving collision between', l.i, 'at', l.y, 'and', collision.i, 'at', collision.y);\r\n\r\n    // Short circuit so we can't infinite loop\r\n    if (collision.moved) continue;\r\n\r\n    // This makes it feel a bit more precise by waiting to swap for just a bit when moving up.\r\n    if (l.y > collision.y && l.y - collision.y > collision.h / 4) continue;\r\n\r\n    // Don't move static items - we have to move *this* element away\r\n    if (collision.static) {\r\n      layout = moveElementAwayFromCollision(layout, collision, l, isUserAction);\r\n    } else {\r\n      layout = moveElementAwayFromCollision(layout, l, collision, isUserAction);\r\n    }\r\n  }\r\n\r\n  return layout;\r\n}\r\n\r\n/**\r\n * This is where the magic needs to happen - given a collision, move an element away from the collision.\r\n * We attempt to move it up if there's room, otherwise it goes below.\r\n *\r\n * @param  {Array} layout            Full layout to modify.\r\n * @param  {LayoutItem} collidesWith Layout item we're colliding with.\r\n * @param  {LayoutItem} itemToMove   Layout item we're moving.\r\n * @param  {Boolean} [isUserAction]  If true, designates that the item we're moving is being dragged/resized\r\n *                                   by the user.\r\n */\r\nexport function moveElementAwayFromCollision(layout: Layout, collidesWith: LayoutItem,\r\n                                             itemToMove: LayoutItem, isUserAction: ?boolean): Layout {\r\n\r\n  const preventCollision = false // we're already colliding\r\n  // If there is enough space above the collision to put this element, move it there.\r\n  // We only do this on the main collision as this can get funky in cascades and cause\r\n  // unwanted swapping behavior.\r\n  if (isUserAction) {\r\n    // Make a mock item so we don't modify the item here, only modify in moveElement.\r\n    const fakeItem: LayoutItem = {\r\n      x: itemToMove.x,\r\n      y: itemToMove.y,\r\n      w: itemToMove.w,\r\n      h: itemToMove.h,\r\n      i: '-1'\r\n    };\r\n    fakeItem.y = Math.max(collidesWith.y - itemToMove.h, 0);\r\n    if (!getFirstCollision(layout, fakeItem)) {\r\n      return moveElement(layout, itemToMove, undefined, fakeItem.y, preventCollision);\r\n    }\r\n  }\r\n\r\n  // Previously this was optimized to move below the collision directly, but this can cause problems\r\n  // with cascading moves, as an item may actually leapflog a collision and cause a reversal in order.\r\n  return moveElement(layout, itemToMove, undefined, itemToMove.y + 1, preventCollision);\r\n}\r\n\r\n/**\r\n * Helper to convert a number to a percentage string.\r\n *\r\n * @param  {Number} num Any number\r\n * @return {String}     That number as a percentage.\r\n */\r\nexport function perc(num: number): string {\r\n  return num * 100 + '%';\r\n}\r\n\r\nexport function setTransform(top, left, width, height): Object {\r\n  // Replace unitless items with px\r\n  const translate = \"translate3d(\" + left + \"px,\" + top + \"px, 0)\";\r\n  return {\r\n    transform: translate,\r\n    WebkitTransform: translate,\r\n    MozTransform: translate,\r\n    msTransform: translate,\r\n    OTransform: translate,\r\n    width: width + \"px\",\r\n    height: height + \"px\",\r\n    position: 'absolute'\r\n  };\r\n}\r\n/**\r\n * Just like the setTransform method, but instead it will return a negative value of right.\r\n *\r\n * @param top\r\n * @param right\r\n * @param width\r\n * @param height\r\n * @returns {{transform: string, WebkitTransform: string, MozTransform: string, msTransform: string, OTransform: string, width: string, height: string, position: string}}\r\n */\r\nexport function setTransformRtl(top, right, width, height): Object {\r\n    // Replace unitless items with px\r\n    const translate = \"translate3d(\" + right * -1 + \"px,\" + top + \"px, 0)\";\r\n    return {\r\n        transform: translate,\r\n        WebkitTransform: translate,\r\n        MozTransform: translate,\r\n        msTransform: translate,\r\n        OTransform: translate,\r\n        width: width + \"px\",\r\n        height: height + \"px\",\r\n        position: 'absolute'\r\n    };\r\n}\r\n\r\nexport function setTopLeft(top, left, width, height): Object {\r\n    return {\r\n        top: top + \"px\",\r\n        left: left + \"px\",\r\n        width: width + \"px\",\r\n        height: height + \"px\",\r\n        position: 'absolute'\r\n    };\r\n}\r\n/**\r\n * Just like the setTopLeft method, but instead, it will return a right property instead of left.\r\n *\r\n * @param top\r\n * @param right\r\n * @param width\r\n * @param height\r\n * @returns {{top: string, right: string, width: string, height: string, position: string}}\r\n */\r\nexport function setTopRight(top, right, width, height): Object {\r\n    return {\r\n        top: top + \"px\",\r\n        right: right+ \"px\",\r\n        width: width + \"px\",\r\n        height: height + \"px\",\r\n        position: 'absolute'\r\n    };\r\n}\r\n\r\n\r\n/**\r\n * Get layout items sorted from top left to right and down.\r\n *\r\n * @return {Array} Array of layout objects.\r\n * @return {Array}        Layout, sorted static items first.\r\n */\r\nexport function sortLayoutItemsByRowCol(layout: Layout): Layout {\r\n  return [].concat(layout).sort(function(a, b) {\r\n    if (a.y === b.y && a.x === b.x) {\r\n      return 0;\r\n    }\r\n\r\n    if (a.y > b.y || (a.y === b.y && a.x > b.x)) {\r\n      return 1;\r\n    }\r\n\r\n    return -1;\r\n  });\r\n}\r\n\r\n/**\r\n * Generate a layout using the initialLayout and children as a template.\r\n * Missing entries will be added, extraneous ones will be truncated.\r\n *\r\n * @param  {Array}  initialLayout Layout passed in through props.\r\n * @param  {String} breakpoint    Current responsive breakpoint.\r\n * @param  {Boolean} verticalCompact Whether or not to compact the layout vertically.\r\n * @return {Array}                Working layout.\r\n */\r\n/*\r\nexport function synchronizeLayoutWithChildren(initialLayout: Layout, children: Array<React.Element>|React.Element,\r\n                                              cols: number, verticalCompact: boolean): Layout {\r\n  // ensure 'children' is always an array\r\n  if (!Array.isArray(children)) {\r\n    children = [children];\r\n  }\r\n  initialLayout = initialLayout || [];\r\n\r\n  // Generate one layout item per child.\r\n  let layout: Layout = [];\r\n  for (let i = 0, len = children.length; i < len; i++) {\r\n    let newItem;\r\n    const child = children[i];\r\n\r\n    // Don't overwrite if it already exists.\r\n    const exists = getLayoutItem(initialLayout, child.key || \"1\" /!* FIXME satisfies Flow *!/);\r\n    if (exists) {\r\n      newItem = exists;\r\n    } else {\r\n      const g = child.props._grid;\r\n\r\n      // Hey, this item has a _grid property, use it.\r\n      if (g) {\r\n        if (!isProduction) {\r\n          validateLayout([g], 'ReactGridLayout.children');\r\n        }\r\n        // Validated; add it to the layout. Bottom 'y' possible is the bottom of the layout.\r\n        // This allows you to do nice stuff like specify {y: Infinity}\r\n        if (verticalCompact) {\r\n          newItem = cloneLayoutItem({...g, y: Math.min(bottom(layout), g.y), i: child.key});\r\n        } else {\r\n          newItem = cloneLayoutItem({...g, y: g.y, i: child.key});\r\n        }\r\n      }\r\n      // Nothing provided: ensure this is added to the bottom\r\n      else {\r\n        newItem = cloneLayoutItem({w: 1, h: 1, x: 0, y: bottom(layout), i: child.key || \"1\"});\r\n      }\r\n    }\r\n    layout[i] = newItem;\r\n  }\r\n\r\n  // Correct the layout.\r\n  layout = correctBounds(layout, {cols: cols});\r\n  layout = compact(layout, verticalCompact);\r\n\r\n  return layout;\r\n}\r\n*/\r\n\r\n/**\r\n * Validate a layout. Throws errors.\r\n *\r\n * @param  {Array}  layout        Array of layout items.\r\n * @param  {String} [contextName] Context name for errors.\r\n * @throw  {Error}                Validation error.\r\n */\r\nexport function validateLayout(layout: Layout, contextName: string): void {\r\n  contextName = contextName || \"Layout\";\r\n  const subProps = ['x', 'y', 'w', 'h'];\r\n  let keyArr = [];\r\n  if (!Array.isArray(layout)) throw new Error(contextName + \" must be an array!\");\r\n  for (let i = 0, len = layout.length; i < len; i++) {\r\n    const item = layout[i];\r\n    for (let j = 0; j < subProps.length; j++) {\r\n      if (typeof item[subProps[j]] !== 'number') {\r\n        throw new Error('VueGridLayout: ' + contextName + '[' + i + '].' + subProps[j] + ' must be a number!');\r\n      }\r\n    }\r\n\r\n    if (item.i === undefined || item.i === null) {\r\n      throw new Error('VueGridLayout: ' + contextName + '[' + i + '].i cannot be null!');\r\n    }\r\n\r\n    if (typeof item.i !== 'number' && typeof item.i !== 'string') {\r\n      throw new Error('VueGridLayout: ' + contextName + '[' + i + '].i must be a string or number!');\r\n    }\r\n\r\n    if (keyArr.indexOf(item.i) >= 0) {\r\n      throw new Error('VueGridLayout: ' + contextName + '[' + i + '].i must be unique!');\r\n    }\r\n    keyArr.push(item.i);\r\n\r\n    if (item.static !== undefined && typeof item.static !== 'boolean') {\r\n      throw new Error('VueGridLayout: ' + contextName + '[' + i + '].static must be a boolean!');\r\n    }\r\n  }\r\n}\r\n\r\n// Flow can't really figure this out, so we just use Object\r\nexport function autoBindHandlers(el: Object, fns: Array<string>): void {\r\n  fns.forEach((key) => el[key] = el[key].bind(el));\r\n}\r\n\r\n\r\n\r\n/**\r\n * Convert a JS object to CSS string. Similar to React's output of CSS.\r\n * @param obj\r\n * @returns {string}\r\n */\r\nexport function createMarkup(obj) {\r\n    var keys = Object.keys(obj);\r\n    if (!keys.length) return '';\r\n    var i, len = keys.length;\r\n    var result = '';\r\n\r\n    for (i = 0; i < len; i++) {\r\n        var key = keys[i];\r\n        var val = obj[key];\r\n        result += hyphenate(key) + ':' + addPx(key, val) + ';';\r\n    }\r\n\r\n    return result;\r\n}\r\n\r\n\r\n/* The following list is defined in React's core */\r\nexport var IS_UNITLESS = {\r\n    animationIterationCount: true,\r\n    boxFlex: true,\r\n    boxFlexGroup: true,\r\n    boxOrdinalGroup: true,\r\n    columnCount: true,\r\n    flex: true,\r\n    flexGrow: true,\r\n    flexPositive: true,\r\n    flexShrink: true,\r\n    flexNegative: true,\r\n    flexOrder: true,\r\n    gridRow: true,\r\n    gridColumn: true,\r\n    fontWeight: true,\r\n    lineClamp: true,\r\n    lineHeight: true,\r\n    opacity: true,\r\n    order: true,\r\n    orphans: true,\r\n    tabSize: true,\r\n    widows: true,\r\n    zIndex: true,\r\n    zoom: true,\r\n\r\n    // SVG-related properties\r\n    fillOpacity: true,\r\n    stopOpacity: true,\r\n    strokeDashoffset: true,\r\n    strokeOpacity: true,\r\n    strokeWidth: true\r\n};\r\n\r\n\r\n/**\r\n * Will add px to the end of style values which are Numbers.\r\n * @param name\r\n * @param value\r\n * @returns {*}\r\n */\r\nexport function addPx(name, value) {\r\n    if(typeof value === 'number' && !IS_UNITLESS[ name ]) {\r\n        return value + 'px';\r\n    } else {\r\n        return value;\r\n    }\r\n}\r\n\r\n\r\n/**\r\n * Hyphenate a camelCase string.\r\n *\r\n * @param {String} str\r\n * @return {String}\r\n */\r\n\r\nexport var hyphenateRE = /([a-z\\d])([A-Z])/g;\r\n\r\nexport function hyphenate(str) {\r\n    return str.replace(hyphenateRE, '$1-$2').toLowerCase();\r\n}\r\n\r\n\r\nexport function findItemInArray(array, property, value) {\r\n    for (var i=0; i < array.length; i++)\r\n        if (array[i][property] == value)\r\n            return true;\r\n\r\n    return false;\r\n}\r\n\r\nexport function findAndRemove(array, property, value) {\r\n    array.forEach(function (result, index) {\r\n        if (result[property] === value) {\r\n            //Remove from array\r\n            array.splice(index, 1);\r\n        }\r\n    });\r\n}\r\n","// Get {x, y} positions from event.\r\nexport function getControlPosition(e) {\r\n    return offsetXYFromParentOf(e);\r\n}\r\n\r\n\r\n// Get from offsetParent\r\nexport function offsetXYFromParentOf(evt) {\r\n    const offsetParent = evt.target.offsetParent || document.body;\r\n    const offsetParentRect = evt.offsetParent === document.body ? {left: 0, top: 0} : offsetParent.getBoundingClientRect();\r\n\r\n    const x = evt.clientX + offsetParent.scrollLeft - offsetParentRect.left;\r\n    const y = evt.clientY + offsetParent.scrollTop - offsetParentRect.top;\r\n\r\n    /*const x = Math.round(evt.clientX + offsetParent.scrollLeft - offsetParentRect.left);\r\n    const y = Math.round(evt.clientY + offsetParent.scrollTop - offsetParentRect.top);*/\r\n\r\n\r\n    return {x, y};\r\n}\r\n\r\n\r\n// Create an data object exposed by <DraggableCore>'s events\r\nexport function createCoreData(lastX, lastY, x, y) {\r\n    // State changes are often (but not always!) async. We want the latest value.\r\n    const isStart = !isNum(lastX);\r\n\r\n    if (isStart) {\r\n        // If this is our first move, use the x and y as last coords.\r\n        return {\r\n            deltaX: 0, deltaY: 0,\r\n            lastX: x, lastY: y,\r\n            x: x, y: y\r\n        };\r\n    } else {\r\n        // Otherwise calculate proper values.\r\n        return {\r\n            deltaX: x - lastX, deltaY: y - lastY,\r\n            lastX: lastX, lastY: lastY,\r\n            x: x, y: y\r\n        };\r\n    }\r\n}\r\n\r\n\r\nfunction isNum(num)  {\r\n    return typeof num === 'number' && !isNaN(num);\r\n}\r\n\r\n","// @flow\r\n\r\nimport {cloneLayout, compact, correctBounds} from './utils';\r\n\r\nimport type {Layout} from './utils';\r\nexport type ResponsiveLayout = {lg?: Layout, md?: Layout, sm?: Layout, xs?: Layout, xxs?: Layout};\r\ntype Breakpoint = string;\r\ntype Breakpoints = {lg?: number, md?: number, sm?: number, xs?: number, xxs?: number};\r\n\r\n/**\r\n * Given a width, find the highest breakpoint that matches is valid for it (width > breakpoint).\r\n *\r\n * @param  {Object} breakpoints Breakpoints object (e.g. {lg: 1200, md: 960, ...})\r\n * @param  {Number} width Screen width.\r\n * @return {String}       Highest breakpoint that is less than width.\r\n */\r\nexport function getBreakpointFromWidth(breakpoints: Breakpoints, width: number): Breakpoint {\r\n  const sorted = sortBreakpoints(breakpoints);\r\n  let matching = sorted[0];\r\n  for (let i = 1, len = sorted.length; i < len; i++) {\r\n    const breakpointName = sorted[i];\r\n    if (width > breakpoints[breakpointName]) matching = breakpointName;\r\n  }\r\n  return matching;\r\n}\r\n\r\n\r\n/**\r\n * Given a breakpoint, get the # of cols set for it.\r\n * @param  {String} breakpoint Breakpoint name.\r\n * @param  {Object} cols       Map of breakpoints to cols.\r\n * @return {Number}            Number of cols.\r\n */\r\nexport function getColsFromBreakpoint(breakpoint: Breakpoint, cols: Breakpoints): number {\r\n  if (!cols[breakpoint]) {\r\n    throw new Error(\"ResponsiveGridLayout: `cols` entry for breakpoint \" + breakpoint + \" is missing!\");\r\n  }\r\n  return cols[breakpoint];\r\n}\r\n\r\n/**\r\n * Given existing layouts and a new breakpoint, find or generate a new layout.\r\n *\r\n * This finds the layout above the new one and generates from it, if it exists.\r\n *\r\n * @param  {Array} orgLayout     Original layout.\r\n * @param  {Object} layouts     Existing layouts.\r\n * @param  {Array} breakpoints All breakpoints.\r\n * @param  {String} breakpoint New breakpoint.\r\n * @param  {String} breakpoint Last breakpoint (for fallback).\r\n * @param  {Number} cols       Column count at new breakpoint.\r\n * @param  {Boolean} verticalCompact Whether or not to compact the layout\r\n *   vertically.\r\n * @return {Array}             New layout.\r\n */\r\nexport function findOrGenerateResponsiveLayout(orgLayout: Layout, layouts: ResponsiveLayout, breakpoints: Breakpoints,\r\n                                               breakpoint: Breakpoint, lastBreakpoint: Breakpoint,\r\n                                               cols: number, verticalCompact: boolean): Layout {\r\n  // If it already exists, just return it.\r\n  if (layouts[breakpoint]) return cloneLayout(layouts[breakpoint]);\r\n  // Find or generate the next layout\r\n  let layout = orgLayout;\r\n\r\n  const breakpointsSorted = sortBreakpoints(breakpoints);\r\n  const breakpointsAbove = breakpointsSorted.slice(breakpointsSorted.indexOf(breakpoint));\r\n  for (let i = 0, len = breakpointsAbove.length; i < len; i++) {\r\n    const b = breakpointsAbove[i];\r\n    if (layouts[b]) {\r\n      layout = layouts[b];\r\n      break;\r\n    }\r\n  }\r\n  layout = cloneLayout(layout || []); // clone layout so we don't modify existing items\r\n  return compact(correctBounds(layout, {cols: cols}), verticalCompact);\r\n}\r\n\r\nexport function generateResponsiveLayout(layout: Layout, breakpoints: Breakpoints,\r\n                                               breakpoint: Breakpoint, lastBreakpoint: Breakpoint,\r\n                                               cols: number, verticalCompact: boolean): Layout {\r\n  // If it already exists, just return it.\r\n  /*if (layouts[breakpoint]) return cloneLayout(layouts[breakpoint]);\r\n  // Find or generate the next layout\r\n  let layout = layouts[lastBreakpoint];*/\r\n    /*const breakpointsSorted = sortBreakpoints(breakpoints);\r\n  const breakpointsAbove = breakpointsSorted.slice(breakpointsSorted.indexOf(breakpoint));\r\n  for (let i = 0, len = breakpointsAbove.length; i < len; i++) {\r\n    const b = breakpointsAbove[i];\r\n    if (layouts[b]) {\r\n      layout = layouts[b];\r\n      break;\r\n    }\r\n  }*/\r\n  layout = cloneLayout(layout || []); // clone layout so we don't modify existing items\r\n  return compact(correctBounds(layout, {cols: cols}), verticalCompact);\r\n}\r\n\r\n/**\r\n * Given breakpoints, return an array of breakpoints sorted by width. This is usually\r\n * e.g. ['xxs', 'xs', 'sm', ...]\r\n *\r\n * @param  {Object} breakpoints Key/value pair of breakpoint names to widths.\r\n * @return {Array}              Sorted breakpoints.\r\n */\r\nexport function sortBreakpoints(breakpoints: Breakpoints): Array<Breakpoint> {\r\n  const keys: Array<string> = Object.keys(breakpoints);\r\n  return keys.sort(function(a, b) {\r\n    return breakpoints[a] - breakpoints[b];\r\n  });\r\n}\r\n","let currentDir: \"ltr\" | \"rtl\" | \"auto\"  = \"auto\";\r\n// let currentDir = \"auto\";\r\n\r\nfunction hasDocument(){\r\n    return (typeof document !== \"undefined\");\r\n}\r\n\r\nfunction hasWindow(){\r\n    return (typeof window !== \"undefined\");\r\n}\r\n\r\nexport function getDocumentDir(){\r\n    if(!hasDocument()){\r\n        return currentDir;\r\n    }\r\n    const direction = (typeof document.dir !== \"undefined\") ?\r\n        document.dir :\r\n        document.getElementsByTagName(\"html\")[0].getAttribute(\"dir\");\r\n    return direction;\r\n}\r\n\r\nexport function setDocumentDir(dir: \"ltr\" | \"rtl\" | \"auto\"){\r\n// export function setDocumentDir(dir){\r\n    if(!hasDocument){\r\n        currentDir = dir;\r\n        return;\r\n    }\r\n\r\n    const html = document.getElementsByTagName(\"html\")[0];\r\n    html.setAttribute(\"dir\", dir);\r\n}\r\n\r\nexport function addWindowEventListener(event:string, callback: () => mixed){\r\n    if(!hasWindow){\r\n\r\n        callback();\r\n        return;\r\n    }\r\n    window.addEventListener(event, callback);\r\n}\r\n\r\nexport function removeWindowEventListener(event:string, callback: () => mixed){\r\n    if(!hasWindow){\r\n        return;\r\n    }\r\n    window.removeEventListener(event, callback);\r\n}\r\n\r\n\r\n\r\n","const domObjects = {\n  init,\n  document: null,\n  DocumentFragment: null,\n  SVGElement: null,\n  SVGSVGElement: null,\n  SVGElementInstance: null,\n  Element: null,\n  HTMLElement: null,\n  Event: null,\n  Touch: null,\n  PointerEvent: null\n};\n\nfunction blank() {}\n\nexport default domObjects;\n\nfunction init(window) {\n  const win = window;\n  domObjects.document = win.document;\n  domObjects.DocumentFragment = win.DocumentFragment || blank;\n  domObjects.SVGElement = win.SVGElement || blank;\n  domObjects.SVGSVGElement = win.SVGSVGElement || blank;\n  domObjects.SVGElementInstance = win.SVGElementInstance || blank;\n  domObjects.Element = win.Element || blank;\n  domObjects.HTMLElement = win.HTMLElement || domObjects.Element;\n  domObjects.Event = win.Event;\n  domObjects.Touch = win.Touch || blank;\n  domObjects.PointerEvent = win.PointerEvent || win.MSPointerEvent;\n}\n//# sourceMappingURL=domObjects.js.map","export default (thing => !!(thing && thing.Window) && thing instanceof thing.Window);\n//# sourceMappingURL=isWindow.js.map","import isWindow from \"./isWindow.js\";\nexport let realWindow = undefined;\nlet win = undefined;\nexport { win as window };\nexport function init(window) {\n  // get wrapped window if using Shadow DOM polyfill\n  realWindow = window; // create a TextNode\n\n  const el = window.document.createTextNode(''); // check if it's wrapped by a polyfill\n\n  if (el.ownerDocument !== window.document && typeof window.wrap === 'function' && window.wrap(el) === el) {\n    // use wrapped window\n    window = window.wrap(window);\n  }\n\n  win = window;\n}\n\nif (typeof window !== 'undefined' && !!window) {\n  init(window);\n}\n\nexport function getWindow(node) {\n  if (isWindow(node)) {\n    return node;\n  }\n\n  const rootNode = node.ownerDocument || node;\n  return rootNode.defaultView || win.window;\n}\n//# sourceMappingURL=window.js.map","import isWindow from \"./isWindow.js\";\nimport * as win from \"./window.js\";\n\nconst window = thing => thing === win.window || isWindow(thing);\n\nconst docFrag = thing => object(thing) && thing.nodeType === 11;\n\nconst object = thing => !!thing && typeof thing === 'object';\n\nconst func = thing => typeof thing === 'function';\n\nconst number = thing => typeof thing === 'number';\n\nconst bool = thing => typeof thing === 'boolean';\n\nconst string = thing => typeof thing === 'string';\n\nconst element = thing => {\n  if (!thing || typeof thing !== 'object') {\n    return false;\n  } // eslint-disable-next-line import/no-named-as-default-member\n\n\n  const _window = win.getWindow(thing) || win.window;\n\n  return /object|function/.test(typeof _window.Element) ? thing instanceof _window.Element // DOM2\n  : thing.nodeType === 1 && typeof thing.nodeName === 'string';\n};\n\nconst plainObject = thing => object(thing) && !!thing.constructor && /function Object\\b/.test(thing.constructor.toString());\n\nconst array = thing => object(thing) && typeof thing.length !== 'undefined' && func(thing.splice);\n\nexport default {\n  window,\n  docFrag,\n  object,\n  func,\n  number,\n  bool,\n  string,\n  element,\n  plainObject,\n  array\n};\n//# sourceMappingURL=is.js.map","import domObjects from \"./domObjects.js\";\nimport is from \"./is.js\";\nimport * as win from \"./window.js\";\nconst browser = {\n  init,\n  supportsTouch: null,\n  supportsPointerEvent: null,\n  isIOS7: null,\n  isIOS: null,\n  isIe9: null,\n  isOperaMobile: null,\n  prefixedMatchesSelector: null,\n  pEventTypes: null,\n  wheelEvent: null\n};\n\nfunction init(window) {\n  const Element = domObjects.Element;\n  const navigator = win.window.navigator; // Does the browser support touch input?\n\n  browser.supportsTouch = 'ontouchstart' in window || is.func(window.DocumentTouch) && domObjects.document instanceof window.DocumentTouch; // Does the browser support PointerEvents\n\n  browser.supportsPointerEvent = navigator.pointerEnabled !== false && !!domObjects.PointerEvent;\n  browser.isIOS = /iP(hone|od|ad)/.test(navigator.platform); // scrolling doesn't change the result of getClientRects on iOS 7\n\n  browser.isIOS7 = /iP(hone|od|ad)/.test(navigator.platform) && /OS 7[^\\d]/.test(navigator.appVersion);\n  browser.isIe9 = /MSIE 9/.test(navigator.userAgent); // Opera Mobile must be handled differently\n\n  browser.isOperaMobile = navigator.appName === 'Opera' && browser.supportsTouch && /Presto/.test(navigator.userAgent); // prefix matchesSelector\n\n  browser.prefixedMatchesSelector = 'matches' in Element.prototype ? 'matches' : 'webkitMatchesSelector' in Element.prototype ? 'webkitMatchesSelector' : 'mozMatchesSelector' in Element.prototype ? 'mozMatchesSelector' : 'oMatchesSelector' in Element.prototype ? 'oMatchesSelector' : 'msMatchesSelector';\n  browser.pEventTypes = browser.supportsPointerEvent ? domObjects.PointerEvent === window.MSPointerEvent ? {\n    up: 'MSPointerUp',\n    down: 'MSPointerDown',\n    over: 'mouseover',\n    out: 'mouseout',\n    move: 'MSPointerMove',\n    cancel: 'MSPointerCancel'\n  } : {\n    up: 'pointerup',\n    down: 'pointerdown',\n    over: 'pointerover',\n    out: 'pointerout',\n    move: 'pointermove',\n    cancel: 'pointercancel'\n  } : null; // because Webkit and Opera still use 'mousewheel' event type\n\n  browser.wheelEvent = 'onmousewheel' in domObjects.document ? 'mousewheel' : 'wheel';\n}\n\nexport default browser;\n//# sourceMappingURL=browser.js.map","export const contains = (array, target) => array.indexOf(target) !== -1;\nexport const remove = (array, target) => array.splice(array.indexOf(target), 1);\nexport const merge = (target, source) => {\n  for (const item of source) {\n    target.push(item);\n  }\n\n  return target;\n};\nexport const from = source => merge([], source);\nexport const findIndex = (array, func) => {\n  for (let i = 0; i < array.length; i++) {\n    if (func(array[i], i, array)) {\n      return i;\n    }\n  }\n\n  return -1;\n};\nexport const find = (array, func) => array[findIndex(array, func)];\n//# sourceMappingURL=arr.js.map","import * as arr from \"./arr.js\";\nimport is from \"./is.js\"; // tslint:disable-next-line ban-types\n\nexport default function clone(source) {\n  const dest = {};\n\n  for (const prop in source) {\n    const value = source[prop];\n\n    if (is.plainObject(value)) {\n      dest[prop] = clone(value);\n    } else if (is.array(value)) {\n      dest[prop] = arr.from(value);\n    } else {\n      dest[prop] = value;\n    }\n  }\n\n  return dest;\n}\n//# sourceMappingURL=clone.js.map","export default function extend(dest, source) {\n  for (const prop in source) {\n    dest[prop] = source[prop];\n  }\n\n  const ret = dest;\n  return ret;\n}\n//# sourceMappingURL=extend.js.map","let lastTime = 0;\nlet request;\nlet cancel;\n\nfunction init(window) {\n  request = window.requestAnimationFrame;\n  cancel = window.cancelAnimationFrame;\n\n  if (!request) {\n    const vendors = ['ms', 'moz', 'webkit', 'o'];\n\n    for (const vendor of vendors) {\n      request = window[`${vendor}RequestAnimationFrame`];\n      cancel = window[`${vendor}CancelAnimationFrame`] || window[`${vendor}CancelRequestAnimationFrame`];\n    }\n  }\n\n  request = request && request.bind(window);\n  cancel = cancel && cancel.bind(window);\n\n  if (!request) {\n    request = callback => {\n      const currTime = Date.now();\n      const timeToCall = Math.max(0, 16 - (currTime - lastTime)); // eslint-disable-next-line node/no-callback-literal\n\n      const token = window.setTimeout(() => {\n        callback(currTime + timeToCall);\n      }, timeToCall);\n      lastTime = currTime + timeToCall;\n      return token;\n    };\n\n    cancel = token => clearTimeout(token);\n  }\n}\n\nexport default {\n  request: callback => request(callback),\n  cancel: token => cancel(token),\n  init\n};\n//# sourceMappingURL=raf.js.map","import extend from \"./extend.js\";\nimport is from \"./is.js\";\nexport default function normalize(type, listeners, result) {\n  result = result || {};\n\n  if (is.string(type) && type.search(' ') !== -1) {\n    type = split(type);\n  }\n\n  if (is.array(type)) {\n    return type.reduce((acc, t) => extend(acc, normalize(t, listeners, result)), result);\n  } // ({ type: fn }) -> ('', { type: fn })\n\n\n  if (is.object(type)) {\n    listeners = type;\n    type = '';\n  }\n\n  if (is.func(listeners)) {\n    result[type] = result[type] || [];\n    result[type].push(listeners);\n  } else if (is.array(listeners)) {\n    for (const l of listeners) {\n      normalize(type, l, result);\n    }\n  } else if (is.object(listeners)) {\n    for (const prefix in listeners) {\n      const combinedTypes = split(prefix).map(p => `${type}${p}`);\n      normalize(combinedTypes, listeners[prefix], result);\n    }\n  }\n\n  return result;\n}\n\nfunction split(type) {\n  return type.trim().split(/ +/);\n}\n//# sourceMappingURL=normalizeListeners.js.map","import * as arr from \"../utils/arr.js\";\nimport extend from \"../utils/extend.js\";\nimport normalize from \"../utils/normalizeListeners.js\";\n\nfunction fireUntilImmediateStopped(event, listeners) {\n  for (const listener of listeners) {\n    if (event.immediatePropagationStopped) {\n      break;\n    }\n\n    listener(event);\n  }\n}\n\nexport class Eventable {\n  constructor(options) {\n    this.options = void 0;\n    this.types = {};\n    this.propagationStopped = false;\n    this.immediatePropagationStopped = false;\n    this.global = void 0;\n    this.options = extend({}, options || {});\n  }\n\n  fire(event) {\n    let listeners;\n    const global = this.global; // Interactable#on() listeners\n    // tslint:disable no-conditional-assignment\n\n    if (listeners = this.types[event.type]) {\n      fireUntilImmediateStopped(event, listeners);\n    } // interact.on() listeners\n\n\n    if (!event.propagationStopped && global && (listeners = global[event.type])) {\n      fireUntilImmediateStopped(event, listeners);\n    }\n  }\n\n  on(type, listener) {\n    const listeners = normalize(type, listener);\n\n    for (type in listeners) {\n      this.types[type] = arr.merge(this.types[type] || [], listeners[type]);\n    }\n  }\n\n  off(type, listener) {\n    const listeners = normalize(type, listener);\n\n    for (type in listeners) {\n      const eventList = this.types[type];\n\n      if (!eventList || !eventList.length) {\n        continue;\n      }\n\n      for (const subListener of listeners[type]) {\n        const index = eventList.indexOf(subListener);\n\n        if (index !== -1) {\n          eventList.splice(index, 1);\n        }\n      }\n    }\n  }\n\n  getRect(_element) {\n    return null;\n  }\n\n}\n//# sourceMappingURL=Eventable.js.map","import browser from \"./browser.js\";\nimport domObjects from \"./domObjects.js\";\nimport is from \"./is.js\";\nimport * as win from \"./window.js\";\nexport function nodeContains(parent, child) {\n  if (parent.contains) {\n    return parent.contains(child);\n  }\n\n  while (child) {\n    if (child === parent) {\n      return true;\n    }\n\n    child = child.parentNode;\n  }\n\n  return false;\n}\nexport function closest(element, selector) {\n  while (is.element(element)) {\n    if (matchesSelector(element, selector)) {\n      return element;\n    }\n\n    element = parentNode(element);\n  }\n\n  return null;\n}\nexport function parentNode(node) {\n  let parent = node.parentNode;\n\n  if (is.docFrag(parent)) {\n    // skip past #shado-root fragments\n    // tslint:disable-next-line\n    while ((parent = parent.host) && is.docFrag(parent)) {\n      continue;\n    }\n\n    return parent;\n  }\n\n  return parent;\n}\nexport function matchesSelector(element, selector) {\n  // remove /deep/ from selectors if shadowDOM polyfill is used\n  if (win.window !== win.realWindow) {\n    selector = selector.replace(/\\/deep\\//g, ' ');\n  }\n\n  return element[browser.prefixedMatchesSelector](selector);\n}\n\nconst getParent = el => el.parentNode || el.host; // Test for the element that's \"above\" all other qualifiers\n\n\nexport function indexOfDeepestElement(elements) {\n  let deepestNodeParents = [];\n  let deepestNodeIndex;\n\n  for (let i = 0; i < elements.length; i++) {\n    const currentNode = elements[i];\n    const deepestNode = elements[deepestNodeIndex]; // node may appear in elements array multiple times\n\n    if (!currentNode || i === deepestNodeIndex) {\n      continue;\n    }\n\n    if (!deepestNode) {\n      deepestNodeIndex = i;\n      continue;\n    }\n\n    const currentNodeParent = getParent(currentNode);\n    const deepestNodeParent = getParent(deepestNode); // check if the deepest or current are document.documentElement/rootElement\n    // - if the current node is, do nothing and continue\n\n    if (currentNodeParent === currentNode.ownerDocument) {\n      continue;\n    } // - if deepest is, update with the current node and continue to next\n    else if (deepestNodeParent === currentNode.ownerDocument) {\n        deepestNodeIndex = i;\n        continue;\n      } // compare zIndex of siblings\n\n\n    if (currentNodeParent === deepestNodeParent) {\n      if (zIndexIsHigherThan(currentNode, deepestNode)) {\n        deepestNodeIndex = i;\n      }\n\n      continue;\n    } // populate the ancestry array for the latest deepest node\n\n\n    deepestNodeParents = deepestNodeParents.length ? deepestNodeParents : getNodeParents(deepestNode);\n    let ancestryStart; // if the deepest node is an HTMLElement and the current node is a non root svg element\n\n    if (deepestNode instanceof domObjects.HTMLElement && currentNode instanceof domObjects.SVGElement && !(currentNode instanceof domObjects.SVGSVGElement)) {\n      // TODO: is this check necessary? Was this for HTML elements embedded in SVG?\n      if (currentNode === deepestNodeParent) {\n        continue;\n      }\n\n      ancestryStart = currentNode.ownerSVGElement;\n    } else {\n      ancestryStart = currentNode;\n    }\n\n    const currentNodeParents = getNodeParents(ancestryStart, deepestNode.ownerDocument);\n    let commonIndex = 0; // get (position of closest common ancestor) + 1\n\n    while (currentNodeParents[commonIndex] && currentNodeParents[commonIndex] === deepestNodeParents[commonIndex]) {\n      commonIndex++;\n    }\n\n    const parents = [currentNodeParents[commonIndex - 1], currentNodeParents[commonIndex], deepestNodeParents[commonIndex]];\n    let child = parents[0].lastChild;\n\n    while (child) {\n      if (child === parents[1]) {\n        deepestNodeIndex = i;\n        deepestNodeParents = currentNodeParents;\n        break;\n      } else if (child === parents[2]) {\n        break;\n      }\n\n      child = child.previousSibling;\n    }\n  }\n\n  return deepestNodeIndex;\n}\n\nfunction getNodeParents(node, limit) {\n  const parents = [];\n  let parent = node;\n  let parentParent;\n\n  while ((parentParent = getParent(parent)) && parent !== limit && parentParent !== parent.ownerDocument) {\n    parents.unshift(parent);\n    parent = parentParent;\n  }\n\n  return parents;\n}\n\nfunction zIndexIsHigherThan(higherNode, lowerNode) {\n  const higherIndex = parseInt(win.getWindow(higherNode).getComputedStyle(higherNode).zIndex, 10) || 0;\n  const lowerIndex = parseInt(win.getWindow(lowerNode).getComputedStyle(lowerNode).zIndex, 10) || 0;\n  return higherIndex >= lowerIndex;\n}\n\nexport function matchesUpTo(element, selector, limit) {\n  while (is.element(element)) {\n    if (matchesSelector(element, selector)) {\n      return true;\n    }\n\n    element = parentNode(element);\n\n    if (element === limit) {\n      return matchesSelector(element, selector);\n    }\n  }\n\n  return false;\n}\nexport function getActualElement(element) {\n  return element.correspondingUseElement || element;\n}\nexport function getScrollXY(relevantWindow) {\n  relevantWindow = relevantWindow || win.window;\n  return {\n    x: relevantWindow.scrollX || relevantWindow.document.documentElement.scrollLeft,\n    y: relevantWindow.scrollY || relevantWindow.document.documentElement.scrollTop\n  };\n}\nexport function getElementClientRect(element) {\n  const clientRect = element instanceof domObjects.SVGElement ? element.getBoundingClientRect() : element.getClientRects()[0];\n  return clientRect && {\n    left: clientRect.left,\n    right: clientRect.right,\n    top: clientRect.top,\n    bottom: clientRect.bottom,\n    width: clientRect.width || clientRect.right - clientRect.left,\n    height: clientRect.height || clientRect.bottom - clientRect.top\n  };\n}\nexport function getElementRect(element) {\n  const clientRect = getElementClientRect(element);\n\n  if (!browser.isIOS7 && clientRect) {\n    const scroll = getScrollXY(win.getWindow(element));\n    clientRect.left += scroll.x;\n    clientRect.right += scroll.x;\n    clientRect.top += scroll.y;\n    clientRect.bottom += scroll.y;\n  }\n\n  return clientRect;\n}\nexport function getPath(node) {\n  const path = [];\n\n  while (node) {\n    path.push(node);\n    node = parentNode(node);\n  }\n\n  return path;\n}\nexport function trySelector(value) {\n  if (!is.string(value)) {\n    return false;\n  } // an exception will be raised if it is invalid\n\n\n  domObjects.document.querySelector(value);\n  return true;\n}\n//# sourceMappingURL=domUtils.js.map","import { closest, getElementRect, parentNode } from \"./domUtils.js\";\nimport extend from \"./extend.js\";\nimport is from \"./is.js\";\nexport function getStringOptionResult(value, target, element) {\n  if (value === 'parent') {\n    return parentNode(element);\n  }\n\n  if (value === 'self') {\n    return target.getRect(element);\n  }\n\n  return closest(element, value);\n}\nexport function resolveRectLike(value, target, element, functionArgs) {\n  let returnValue = value;\n\n  if (is.string(returnValue)) {\n    returnValue = getStringOptionResult(returnValue, target, element);\n  } else if (is.func(returnValue)) {\n    returnValue = returnValue(...functionArgs);\n  }\n\n  if (is.element(returnValue)) {\n    returnValue = getElementRect(returnValue);\n  }\n\n  return returnValue;\n}\nexport function rectToXY(rect) {\n  return rect && {\n    x: 'x' in rect ? rect.x : rect.left,\n    y: 'y' in rect ? rect.y : rect.top\n  };\n}\nexport function xywhToTlbr(rect) {\n  if (rect && !('left' in rect && 'top' in rect)) {\n    rect = extend({}, rect);\n    rect.left = rect.x || 0;\n    rect.top = rect.y || 0;\n    rect.right = rect.right || rect.left + rect.width;\n    rect.bottom = rect.bottom || rect.top + rect.height;\n  }\n\n  return rect;\n}\nexport function tlbrToXywh(rect) {\n  if (rect && !('x' in rect && 'y' in rect)) {\n    rect = extend({}, rect);\n    rect.x = rect.left || 0;\n    rect.y = rect.top || 0;\n    rect.width = rect.width || (rect.right || 0) - rect.x;\n    rect.height = rect.height || (rect.bottom || 0) - rect.y;\n  }\n\n  return rect;\n}\nexport function addEdges(edges, rect, delta) {\n  if (edges.left) {\n    rect.left += delta.x;\n  }\n\n  if (edges.right) {\n    rect.right += delta.x;\n  }\n\n  if (edges.top) {\n    rect.top += delta.y;\n  }\n\n  if (edges.bottom) {\n    rect.bottom += delta.y;\n  }\n\n  rect.width = rect.right - rect.left;\n  rect.height = rect.bottom - rect.top;\n}\n//# sourceMappingURL=rect.js.map","import { rectToXY, resolveRectLike } from \"./rect.js\";\nexport default function (target, element, actionName) {\n  const actionOptions = target.options[actionName];\n  const actionOrigin = actionOptions && actionOptions.origin;\n  const origin = actionOrigin || target.options.origin;\n  const originRect = resolveRectLike(origin, target, element, [target && element]);\n  return rectToXY(originRect) || {\n    x: 0,\n    y: 0\n  };\n}\n//# sourceMappingURL=getOriginXY.js.map","export default ((x, y) => Math.sqrt(x * x + y * y));\n//# sourceMappingURL=hypot.js.map","export class BaseEvent {\n  constructor(interaction) {\n    this.type = void 0;\n    this.target = void 0;\n    this.currentTarget = void 0;\n    this.interactable = void 0;\n    this._interaction = void 0;\n    this.timeStamp = void 0;\n    this.immediatePropagationStopped = false;\n    this.propagationStopped = false;\n    this._interaction = interaction;\n  }\n\n  preventDefault() {}\n  /**\n   * Don't call any other listeners (even on the current target)\n   */\n\n\n  stopPropagation() {\n    this.propagationStopped = true;\n  }\n  /**\n   * Don't call listeners on the remaining targets\n   */\n\n\n  stopImmediatePropagation() {\n    this.immediatePropagationStopped = this.propagationStopped = true;\n  }\n\n} // defined outside of class definition to avoid assignment of undefined during\n// construction\n\n// getters and setters defined here to support typescript 3.6 and below which\n// don't support getter and setters in .d.ts files\nObject.defineProperty(BaseEvent.prototype, 'interaction', {\n  get() {\n    return this._interaction._proxy;\n  },\n\n  set() {}\n\n});\n//# sourceMappingURL=BaseEvent.js.map","// eslint-disable-next-line @typescript-eslint/no-empty-interface\n// export interface Options extends BaseDefaults, PerActionDefaults {}\nexport const defaults = {\n  base: {\n    preventDefault: 'auto',\n    deltaSource: 'page'\n  },\n  perAction: {\n    enabled: false,\n    origin: {\n      x: 0,\n      y: 0\n    }\n  },\n  actions: {}\n};\n//# sourceMappingURL=defaultOptions.js.map","import extend from \"../utils/extend.js\";\nimport getOriginXY from \"../utils/getOriginXY.js\";\nimport hypot from \"../utils/hypot.js\";\nimport { BaseEvent } from \"./BaseEvent.js\";\nimport { defaults } from \"./defaultOptions.js\";\nexport class InteractEvent extends BaseEvent {\n  // resize\n\n  /** */\n  constructor(interaction, event, actionName, phase, element, preEnd, type) {\n    super(interaction);\n    this.target = void 0;\n    this.currentTarget = void 0;\n    this.relatedTarget = null;\n    this.screenX = void 0;\n    this.screenY = void 0;\n    this.button = void 0;\n    this.buttons = void 0;\n    this.ctrlKey = void 0;\n    this.shiftKey = void 0;\n    this.altKey = void 0;\n    this.metaKey = void 0;\n    this.page = void 0;\n    this.client = void 0;\n    this.delta = void 0;\n    this.rect = void 0;\n    this.x0 = void 0;\n    this.y0 = void 0;\n    this.t0 = void 0;\n    this.dt = void 0;\n    this.duration = void 0;\n    this.clientX0 = void 0;\n    this.clientY0 = void 0;\n    this.velocity = void 0;\n    this.speed = void 0;\n    this.swipe = void 0;\n    this.timeStamp = void 0;\n    this.axes = void 0;\n    this.preEnd = void 0;\n    element = element || interaction.element;\n    const target = interaction.interactable;\n    const deltaSource = (target && target.options || defaults).deltaSource;\n    const origin = getOriginXY(target, element, actionName);\n    const starting = phase === 'start';\n    const ending = phase === 'end';\n    const prevEvent = starting ? this : interaction.prevEvent;\n    const coords = starting ? interaction.coords.start : ending ? {\n      page: prevEvent.page,\n      client: prevEvent.client,\n      timeStamp: interaction.coords.cur.timeStamp\n    } : interaction.coords.cur;\n    this.page = extend({}, coords.page);\n    this.client = extend({}, coords.client);\n    this.rect = extend({}, interaction.rect);\n    this.timeStamp = coords.timeStamp;\n\n    if (!ending) {\n      this.page.x -= origin.x;\n      this.page.y -= origin.y;\n      this.client.x -= origin.x;\n      this.client.y -= origin.y;\n    }\n\n    this.ctrlKey = event.ctrlKey;\n    this.altKey = event.altKey;\n    this.shiftKey = event.shiftKey;\n    this.metaKey = event.metaKey;\n    this.button = event.button;\n    this.buttons = event.buttons;\n    this.target = element;\n    this.currentTarget = element;\n    this.preEnd = preEnd;\n    this.type = type || actionName + (phase || '');\n    this.interactable = target;\n    this.t0 = starting ? interaction.pointers[interaction.pointers.length - 1].downTime : prevEvent.t0;\n    this.x0 = interaction.coords.start.page.x - origin.x;\n    this.y0 = interaction.coords.start.page.y - origin.y;\n    this.clientX0 = interaction.coords.start.client.x - origin.x;\n    this.clientY0 = interaction.coords.start.client.y - origin.y;\n\n    if (starting || ending) {\n      this.delta = {\n        x: 0,\n        y: 0\n      };\n    } else {\n      this.delta = {\n        x: this[deltaSource].x - prevEvent[deltaSource].x,\n        y: this[deltaSource].y - prevEvent[deltaSource].y\n      };\n    }\n\n    this.dt = interaction.coords.delta.timeStamp;\n    this.duration = this.timeStamp - this.t0; // velocity and speed in pixels per second\n\n    this.velocity = extend({}, interaction.coords.velocity[deltaSource]);\n    this.speed = hypot(this.velocity.x, this.velocity.y);\n    this.swipe = ending || phase === 'inertiastart' ? this.getSwipe() : null;\n  }\n\n  getSwipe() {\n    const interaction = this._interaction;\n\n    if (interaction.prevEvent.speed < 600 || this.timeStamp - interaction.prevEvent.timeStamp > 150) {\n      return null;\n    }\n\n    let angle = 180 * Math.atan2(interaction.prevEvent.velocityY, interaction.prevEvent.velocityX) / Math.PI;\n    const overlap = 22.5;\n\n    if (angle < 0) {\n      angle += 360;\n    }\n\n    const left = 135 - overlap <= angle && angle < 225 + overlap;\n    const up = 225 - overlap <= angle && angle < 315 + overlap;\n    const right = !left && (315 - overlap <= angle || angle < 45 + overlap);\n    const down = !up && 45 - overlap <= angle && angle < 135 + overlap;\n    return {\n      up,\n      down,\n      left,\n      right,\n      angle,\n      speed: interaction.prevEvent.speed,\n      velocity: {\n        x: interaction.prevEvent.velocityX,\n        y: interaction.prevEvent.velocityY\n      }\n    };\n  }\n\n  preventDefault() {}\n  /**\n   * Don't call listeners on the remaining targets\n   */\n\n\n  stopImmediatePropagation() {\n    this.immediatePropagationStopped = this.propagationStopped = true;\n  }\n  /**\n   * Don't call any other listeners (even on the current target)\n   */\n\n\n  stopPropagation() {\n    this.propagationStopped = true;\n  }\n\n} // getters and setters defined here to support typescript 3.6 and below which\n// don't support getter and setters in .d.ts files\n\nObject.defineProperties(InteractEvent.prototype, {\n  pageX: {\n    get() {\n      return this.page.x;\n    },\n\n    set(value) {\n      this.page.x = value;\n    }\n\n  },\n  pageY: {\n    get() {\n      return this.page.y;\n    },\n\n    set(value) {\n      this.page.y = value;\n    }\n\n  },\n  clientX: {\n    get() {\n      return this.client.x;\n    },\n\n    set(value) {\n      this.client.x = value;\n    }\n\n  },\n  clientY: {\n    get() {\n      return this.client.y;\n    },\n\n    set(value) {\n      this.client.y = value;\n    }\n\n  },\n  dx: {\n    get() {\n      return this.delta.x;\n    },\n\n    set(value) {\n      this.delta.x = value;\n    }\n\n  },\n  dy: {\n    get() {\n      return this.delta.y;\n    },\n\n    set(value) {\n      this.delta.y = value;\n    }\n\n  },\n  velocityX: {\n    get() {\n      return this.velocity.x;\n    },\n\n    set(value) {\n      this.velocity.x = value;\n    }\n\n  },\n  velocityY: {\n    get() {\n      return this.velocity.y;\n    },\n\n    set(value) {\n      this.velocity.y = value;\n    }\n\n  }\n});\n//# sourceMappingURL=InteractEvent.js.map","export default function isNonNativeEvent(type, actions) {\n  if (actions.phaselessTypes[type]) {\n    return true;\n  }\n\n  for (const name in actions.map) {\n    if (type.indexOf(name) === 0 && type.substr(name.length) in actions.phases) {\n      return true;\n    }\n  }\n\n  return false;\n}\n//# sourceMappingURL=isNonNativeEvent.js.map","/* eslint-disable no-dupe-class-members */\nimport * as arr from \"../utils/arr.js\";\nimport browser from \"../utils/browser.js\";\nimport clone from \"../utils/clone.js\";\nimport { getElementRect, matchesUpTo, nodeContains, trySelector } from \"../utils/domUtils.js\";\nimport extend from \"../utils/extend.js\";\nimport is from \"../utils/is.js\";\nimport normalizeListeners from \"../utils/normalizeListeners.js\";\nimport { getWindow } from \"../utils/window.js\";\nimport { Eventable } from \"./Eventable.js\";\nimport isNonNativeEvent from \"./isNonNativeEvent.js\";\n\n/** */\nexport class Interactable {\n  /** @internal */\n  get _defaults() {\n    return {\n      base: {},\n      perAction: {},\n      actions: {}\n    };\n  }\n\n  /** */\n  constructor(target, options, defaultContext, scopeEvents) {\n    this.options = void 0;\n    this._actions = void 0;\n    this.target = void 0;\n    this.events = new Eventable();\n    this._context = void 0;\n    this._win = void 0;\n    this._doc = void 0;\n    this._scopeEvents = void 0;\n    this._rectChecker = void 0;\n    this._actions = options.actions;\n    this.target = target;\n    this._context = options.context || defaultContext;\n    this._win = getWindow(trySelector(target) ? this._context : target);\n    this._doc = this._win.document;\n    this._scopeEvents = scopeEvents;\n    this.set(options);\n  }\n\n  setOnEvents(actionName, phases) {\n    if (is.func(phases.onstart)) {\n      this.on(`${actionName}start`, phases.onstart);\n    }\n\n    if (is.func(phases.onmove)) {\n      this.on(`${actionName}move`, phases.onmove);\n    }\n\n    if (is.func(phases.onend)) {\n      this.on(`${actionName}end`, phases.onend);\n    }\n\n    if (is.func(phases.oninertiastart)) {\n      this.on(`${actionName}inertiastart`, phases.oninertiastart);\n    }\n\n    return this;\n  }\n\n  updatePerActionListeners(actionName, prev, cur) {\n    if (is.array(prev) || is.object(prev)) {\n      this.off(actionName, prev);\n    }\n\n    if (is.array(cur) || is.object(cur)) {\n      this.on(actionName, cur);\n    }\n  }\n\n  setPerAction(actionName, options) {\n    const defaults = this._defaults; // for all the default per-action options\n\n    for (const optionName_ in options) {\n      const optionName = optionName_;\n      const actionOptions = this.options[actionName];\n      const optionValue = options[optionName]; // remove old event listeners and add new ones\n\n      if (optionName === 'listeners') {\n        this.updatePerActionListeners(actionName, actionOptions.listeners, optionValue);\n      } // if the option value is an array\n\n\n      if (is.array(optionValue)) {\n        actionOptions[optionName] = arr.from(optionValue);\n      } // if the option value is an object\n      else if (is.plainObject(optionValue)) {\n          // copy the object\n          actionOptions[optionName] = extend(actionOptions[optionName] || {}, clone(optionValue)); // set anabled field to true if it exists in the defaults\n\n          if (is.object(defaults.perAction[optionName]) && 'enabled' in defaults.perAction[optionName]) {\n            actionOptions[optionName].enabled = optionValue.enabled !== false;\n          }\n        } // if the option value is a boolean and the default is an object\n        else if (is.bool(optionValue) && is.object(defaults.perAction[optionName])) {\n            actionOptions[optionName].enabled = optionValue;\n          } // if it's anything else, do a plain assignment\n          else {\n              actionOptions[optionName] = optionValue;\n            }\n    }\n  }\n  /**\n   * The default function to get an Interactables bounding rect. Can be\n   * overridden using {@link Interactable.rectChecker}.\n   *\n   * @param {Element} [element] The element to measure.\n   * @return {Rect} The object's bounding rectangle.\n   */\n\n\n  getRect(element) {\n    element = element || (is.element(this.target) ? this.target : null);\n\n    if (is.string(this.target)) {\n      element = element || this._context.querySelector(this.target);\n    }\n\n    return getElementRect(element);\n  }\n  /**\n   * Returns or sets the function used to calculate the interactable's\n   * element's rectangle\n   *\n   * @param {function} [checker] A function which returns this Interactable's\n   * bounding rectangle. See {@link Interactable.getRect}\n   * @return {function | object} The checker function or this Interactable\n   */\n\n\n  rectChecker(checker) {\n    if (is.func(checker)) {\n      this._rectChecker = checker;\n\n      this.getRect = element => {\n        const rect = extend({}, this._rectChecker(element));\n\n        if (!('width' in rect)) {\n          rect.width = rect.right - rect.left;\n          rect.height = rect.bottom - rect.top;\n        }\n\n        return rect;\n      };\n\n      return this;\n    }\n\n    if (checker === null) {\n      delete this.getRect;\n      delete this._rectChecker;\n      return this;\n    }\n\n    return this.getRect;\n  }\n\n  _backCompatOption(optionName, newValue) {\n    if (trySelector(newValue) || is.object(newValue)) {\n      this.options[optionName] = newValue;\n\n      for (const action in this._actions.map) {\n        this.options[action][optionName] = newValue;\n      }\n\n      return this;\n    }\n\n    return this.options[optionName];\n  }\n  /**\n   * Gets or sets the origin of the Interactable's element.  The x and y\n   * of the origin will be subtracted from action event coordinates.\n   *\n   * @param {Element | object | string} [origin] An HTML or SVG Element whose\n   * rect will be used, an object eg. { x: 0, y: 0 } or string 'parent', 'self'\n   * or any CSS selector\n   *\n   * @return {object} The current origin or this Interactable\n   */\n\n\n  origin(newValue) {\n    return this._backCompatOption('origin', newValue);\n  }\n  /**\n   * Returns or sets the mouse coordinate types used to calculate the\n   * movement of the pointer.\n   *\n   * @param {string} [newValue] Use 'client' if you will be scrolling while\n   * interacting; Use 'page' if you want autoScroll to work\n   * @return {string | object} The current deltaSource or this Interactable\n   */\n\n\n  deltaSource(newValue) {\n    if (newValue === 'page' || newValue === 'client') {\n      this.options.deltaSource = newValue;\n      return this;\n    }\n\n    return this.options.deltaSource;\n  }\n  /**\n   * Gets the selector context Node of the Interactable. The default is\n   * `window.document`.\n   *\n   * @return {Node} The context Node of this Interactable\n   */\n\n\n  context() {\n    return this._context;\n  }\n\n  inContext(element) {\n    return this._context === element.ownerDocument || nodeContains(this._context, element);\n  }\n\n  testIgnoreAllow(options, targetNode, eventTarget) {\n    return !this.testIgnore(options.ignoreFrom, targetNode, eventTarget) && this.testAllow(options.allowFrom, targetNode, eventTarget);\n  }\n\n  testAllow(allowFrom, targetNode, element) {\n    if (!allowFrom) {\n      return true;\n    }\n\n    if (!is.element(element)) {\n      return false;\n    }\n\n    if (is.string(allowFrom)) {\n      return matchesUpTo(element, allowFrom, targetNode);\n    } else if (is.element(allowFrom)) {\n      return nodeContains(allowFrom, element);\n    }\n\n    return false;\n  }\n\n  testIgnore(ignoreFrom, targetNode, element) {\n    if (!ignoreFrom || !is.element(element)) {\n      return false;\n    }\n\n    if (is.string(ignoreFrom)) {\n      return matchesUpTo(element, ignoreFrom, targetNode);\n    } else if (is.element(ignoreFrom)) {\n      return nodeContains(ignoreFrom, element);\n    }\n\n    return false;\n  }\n  /**\n   * Calls listeners for the given InteractEvent type bound globally\n   * and directly to this Interactable\n   *\n   * @param {InteractEvent} iEvent The InteractEvent object to be fired on this\n   * Interactable\n   * @return {Interactable} this Interactable\n   */\n\n\n  fire(iEvent) {\n    this.events.fire(iEvent);\n    return this;\n  }\n\n  _onOff(method, typeArg, listenerArg, options) {\n    if (is.object(typeArg) && !is.array(typeArg)) {\n      options = listenerArg;\n      listenerArg = null;\n    }\n\n    const addRemove = method === 'on' ? 'add' : 'remove';\n    const listeners = normalizeListeners(typeArg, listenerArg);\n\n    for (let type in listeners) {\n      if (type === 'wheel') {\n        type = browser.wheelEvent;\n      }\n\n      for (const listener of listeners[type]) {\n        // if it is an action event type\n        if (isNonNativeEvent(type, this._actions)) {\n          this.events[method](type, listener);\n        } // delegated event\n        else if (is.string(this.target)) {\n            this._scopeEvents[`${addRemove}Delegate`](this.target, this._context, type, listener, options);\n          } // remove listener from this Interactable's element\n          else {\n              this._scopeEvents[addRemove](this.target, type, listener, options);\n            }\n      }\n    }\n\n    return this;\n  }\n  /**\n   * Binds a listener for an InteractEvent, pointerEvent or DOM event.\n   *\n   * @param {string | array | object} types The types of events to listen\n   * for\n   * @param {function | array | object} [listener] The event listener function(s)\n   * @param {object | boolean} [options] options object or useCapture flag for\n   * addEventListener\n   * @return {Interactable} This Interactable\n   */\n\n\n  on(types, listener, options) {\n    return this._onOff('on', types, listener, options);\n  }\n  /**\n   * Removes an InteractEvent, pointerEvent or DOM event listener.\n   *\n   * @param {string | array | object} types The types of events that were\n   * listened for\n   * @param {function | array | object} [listener] The event listener function(s)\n   * @param {object | boolean} [options] options object or useCapture flag for\n   * removeEventListener\n   * @return {Interactable} This Interactable\n   */\n\n\n  off(types, listener, options) {\n    return this._onOff('off', types, listener, options);\n  }\n  /**\n   * Reset the options of this Interactable\n   *\n   * @param {object} options The new settings to apply\n   * @return {object} This Interactable\n   */\n\n\n  set(options) {\n    const defaults = this._defaults;\n\n    if (!is.object(options)) {\n      options = {};\n    }\n\n    this.options = clone(defaults.base);\n\n    for (const actionName_ in this._actions.methodDict) {\n      const actionName = actionName_;\n      const methodName = this._actions.methodDict[actionName];\n      this.options[actionName] = {};\n      this.setPerAction(actionName, extend(extend({}, defaults.perAction), defaults.actions[actionName]));\n      this[methodName](options[actionName]);\n    }\n\n    for (const setting in options) {\n      if (is.func(this[setting])) {\n        this[setting](options[setting]);\n      }\n    }\n\n    return this;\n  }\n  /**\n   * Remove this interactable from the list of interactables and remove it's\n   * action capabilities and event listeners\n   */\n\n\n  unset() {\n    if (is.string(this.target)) {\n      // remove delegated events\n      for (const type in this._scopeEvents.delegatedEvents) {\n        const delegated = this._scopeEvents.delegatedEvents[type];\n\n        for (let i = delegated.length - 1; i >= 0; i--) {\n          const {\n            selector,\n            context,\n            listeners\n          } = delegated[i];\n\n          if (selector === this.target && context === this._context) {\n            delegated.splice(i, 1);\n          }\n\n          for (let l = listeners.length - 1; l >= 0; l--) {\n            this._scopeEvents.removeDelegate(this.target, this._context, type, listeners[l][0], listeners[l][1]);\n          }\n        }\n      }\n    } else {\n      this._scopeEvents.remove(this.target, 'all');\n    }\n  }\n\n}\n//# sourceMappingURL=Interactable.js.map","import * as arr from \"../utils/arr.js\";\nimport * as domUtils from \"../utils/domUtils.js\";\nimport extend from \"../utils/extend.js\";\nimport is from \"../utils/is.js\";\nexport class InteractableSet {\n  // all set interactables\n  constructor(scope) {\n    this.list = [];\n    this.selectorMap = {};\n    this.scope = void 0;\n    this.scope = scope;\n    scope.addListeners({\n      'interactable:unset': ({\n        interactable\n      }) => {\n        const {\n          target,\n          _context: context\n        } = interactable;\n        const targetMappings = is.string(target) ? this.selectorMap[target] : target[this.scope.id];\n        const targetIndex = arr.findIndex(targetMappings, m => m.context === context);\n\n        if (targetMappings[targetIndex]) {\n          // Destroying mappingInfo's context and interactable\n          targetMappings[targetIndex].context = null;\n          targetMappings[targetIndex].interactable = null;\n        }\n\n        targetMappings.splice(targetIndex, 1);\n      }\n    });\n  }\n\n  new(target, options) {\n    options = extend(options || {}, {\n      actions: this.scope.actions\n    });\n    const interactable = new this.scope.Interactable(target, options, this.scope.document, this.scope.events);\n    const mappingInfo = {\n      context: interactable._context,\n      interactable\n    };\n    this.scope.addDocument(interactable._doc);\n    this.list.push(interactable);\n\n    if (is.string(target)) {\n      if (!this.selectorMap[target]) {\n        this.selectorMap[target] = [];\n      }\n\n      this.selectorMap[target].push(mappingInfo);\n    } else {\n      if (!interactable.target[this.scope.id]) {\n        Object.defineProperty(target, this.scope.id, {\n          value: [],\n          configurable: true\n        });\n      }\n\n      target[this.scope.id].push(mappingInfo);\n    }\n\n    this.scope.fire('interactable:new', {\n      target,\n      options,\n      interactable,\n      win: this.scope._win\n    });\n    return interactable;\n  }\n\n  get(target, options) {\n    const context = options && options.context || this.scope.document;\n    const isSelector = is.string(target);\n    const targetMappings = isSelector ? this.selectorMap[target] : target[this.scope.id];\n\n    if (!targetMappings) {\n      return null;\n    }\n\n    const found = arr.find(targetMappings, m => m.context === context && (isSelector || m.interactable.inContext(target)));\n    return found && found.interactable;\n  }\n\n  forEachMatch(node, callback) {\n    for (const interactable of this.list) {\n      let ret;\n\n      if ((is.string(interactable.target) // target is a selector and the element matches\n      ? is.element(node) && domUtils.matchesSelector(node, interactable.target) : // target is the element\n      node === interactable.target) && // the element is in context\n      interactable.inContext(node)) {\n        ret = callback(interactable);\n      }\n\n      if (ret !== undefined) {\n        return ret;\n      }\n    }\n  }\n\n}\n//# sourceMappingURL=InteractableSet.js.map","function pointerExtend(dest, source) {\n  for (const prop in source) {\n    const prefixedPropREs = pointerExtend.prefixedPropREs;\n    let deprecated = false; // skip deprecated prefixed properties\n\n    for (const vendor in prefixedPropREs) {\n      if (prop.indexOf(vendor) === 0 && prefixedPropREs[vendor].test(prop)) {\n        deprecated = true;\n        break;\n      }\n    }\n\n    if (!deprecated && typeof source[prop] !== 'function') {\n      dest[prop] = source[prop];\n    }\n  }\n\n  return dest;\n}\n\npointerExtend.prefixedPropREs = {\n  webkit: /(Movement[XY]|Radius[XY]|RotationAngle|Force)$/,\n  moz: /(Pressure)$/\n};\nexport default pointerExtend;\n//# sourceMappingURL=pointerExtend.js.map","import browser from \"./browser.js\";\nimport dom from \"./domObjects.js\";\nimport * as domUtils from \"./domUtils.js\";\nimport hypot from \"./hypot.js\";\nimport is from \"./is.js\";\nimport pointerExtend from \"./pointerExtend.js\";\nexport function copyCoords(dest, src) {\n  dest.page = dest.page || {};\n  dest.page.x = src.page.x;\n  dest.page.y = src.page.y;\n  dest.client = dest.client || {};\n  dest.client.x = src.client.x;\n  dest.client.y = src.client.y;\n  dest.timeStamp = src.timeStamp;\n}\nexport function setCoordDeltas(targetObj, prev, cur) {\n  targetObj.page.x = cur.page.x - prev.page.x;\n  targetObj.page.y = cur.page.y - prev.page.y;\n  targetObj.client.x = cur.client.x - prev.client.x;\n  targetObj.client.y = cur.client.y - prev.client.y;\n  targetObj.timeStamp = cur.timeStamp - prev.timeStamp;\n}\nexport function setCoordVelocity(targetObj, delta) {\n  const dt = Math.max(delta.timeStamp / 1000, 0.001);\n  targetObj.page.x = delta.page.x / dt;\n  targetObj.page.y = delta.page.y / dt;\n  targetObj.client.x = delta.client.x / dt;\n  targetObj.client.y = delta.client.y / dt;\n  targetObj.timeStamp = dt;\n}\nexport function setZeroCoords(targetObj) {\n  targetObj.page.x = 0;\n  targetObj.page.y = 0;\n  targetObj.client.x = 0;\n  targetObj.client.y = 0;\n}\nexport function isNativePointer(pointer) {\n  return pointer instanceof dom.Event || pointer instanceof dom.Touch;\n} // Get specified X/Y coords for mouse or event.touches[0]\n\nexport function getXY(type, pointer, xy) {\n  xy = xy || {};\n  type = type || 'page';\n  xy.x = pointer[type + 'X'];\n  xy.y = pointer[type + 'Y'];\n  return xy;\n}\nexport function getPageXY(pointer, page) {\n  page = page || {\n    x: 0,\n    y: 0\n  }; // Opera Mobile handles the viewport and scrolling oddly\n\n  if (browser.isOperaMobile && isNativePointer(pointer)) {\n    getXY('screen', pointer, page);\n    page.x += window.scrollX;\n    page.y += window.scrollY;\n  } else {\n    getXY('page', pointer, page);\n  }\n\n  return page;\n}\nexport function getClientXY(pointer, client) {\n  client = client || {};\n\n  if (browser.isOperaMobile && isNativePointer(pointer)) {\n    // Opera Mobile handles the viewport and scrolling oddly\n    getXY('screen', pointer, client);\n  } else {\n    getXY('client', pointer, client);\n  }\n\n  return client;\n}\nexport function getPointerId(pointer) {\n  return is.number(pointer.pointerId) ? pointer.pointerId : pointer.identifier;\n}\nexport function setCoords(dest, pointers, timeStamp) {\n  const pointer = pointers.length > 1 ? pointerAverage(pointers) : pointers[0];\n  getPageXY(pointer, dest.page);\n  getClientXY(pointer, dest.client);\n  dest.timeStamp = timeStamp;\n}\nexport function getTouchPair(event) {\n  const touches = []; // array of touches is supplied\n\n  if (is.array(event)) {\n    touches[0] = event[0];\n    touches[1] = event[1];\n  } // an event\n  else {\n      if (event.type === 'touchend') {\n        if (event.touches.length === 1) {\n          touches[0] = event.touches[0];\n          touches[1] = event.changedTouches[0];\n        } else if (event.touches.length === 0) {\n          touches[0] = event.changedTouches[0];\n          touches[1] = event.changedTouches[1];\n        }\n      } else {\n        touches[0] = event.touches[0];\n        touches[1] = event.touches[1];\n      }\n    }\n\n  return touches;\n}\nexport function pointerAverage(pointers) {\n  const average = {\n    pageX: 0,\n    pageY: 0,\n    clientX: 0,\n    clientY: 0,\n    screenX: 0,\n    screenY: 0\n  };\n\n  for (const pointer of pointers) {\n    for (const prop in average) {\n      average[prop] += pointer[prop];\n    }\n  }\n\n  for (const prop in average) {\n    average[prop] /= pointers.length;\n  }\n\n  return average;\n}\nexport function touchBBox(event) {\n  if (!event.length) {\n    return null;\n  }\n\n  const touches = getTouchPair(event);\n  const minX = Math.min(touches[0].pageX, touches[1].pageX);\n  const minY = Math.min(touches[0].pageY, touches[1].pageY);\n  const maxX = Math.max(touches[0].pageX, touches[1].pageX);\n  const maxY = Math.max(touches[0].pageY, touches[1].pageY);\n  return {\n    x: minX,\n    y: minY,\n    left: minX,\n    top: minY,\n    right: maxX,\n    bottom: maxY,\n    width: maxX - minX,\n    height: maxY - minY\n  };\n}\nexport function touchDistance(event, deltaSource) {\n  const sourceX = deltaSource + 'X';\n  const sourceY = deltaSource + 'Y';\n  const touches = getTouchPair(event);\n  const dx = touches[0][sourceX] - touches[1][sourceX];\n  const dy = touches[0][sourceY] - touches[1][sourceY];\n  return hypot(dx, dy);\n}\nexport function touchAngle(event, deltaSource) {\n  const sourceX = deltaSource + 'X';\n  const sourceY = deltaSource + 'Y';\n  const touches = getTouchPair(event);\n  const dx = touches[1][sourceX] - touches[0][sourceX];\n  const dy = touches[1][sourceY] - touches[0][sourceY];\n  const angle = 180 * Math.atan2(dy, dx) / Math.PI;\n  return angle;\n}\nexport function getPointerType(pointer) {\n  return is.string(pointer.pointerType) ? pointer.pointerType : is.number(pointer.pointerType) ? [undefined, undefined, 'touch', 'pen', 'mouse'][pointer.pointerType] // if the PointerEvent API isn't available, then the \"pointer\" must\n  // be either a MouseEvent, TouchEvent, or Touch object\n  : /touch/.test(pointer.type) || pointer instanceof dom.Touch ? 'touch' : 'mouse';\n} // [ event.target, event.currentTarget ]\n\nexport function getEventTargets(event) {\n  const path = is.func(event.composedPath) ? event.composedPath() : event.path;\n  return [domUtils.getActualElement(path ? path[0] : event.target), domUtils.getActualElement(event.currentTarget)];\n}\nexport function newCoords() {\n  return {\n    page: {\n      x: 0,\n      y: 0\n    },\n    client: {\n      x: 0,\n      y: 0\n    },\n    timeStamp: 0\n  };\n}\nexport function coordsToEvent(coords) {\n  const event = {\n    coords,\n\n    get page() {\n      return this.coords.page;\n    },\n\n    get client() {\n      return this.coords.client;\n    },\n\n    get timeStamp() {\n      return this.coords.timeStamp;\n    },\n\n    get pageX() {\n      return this.coords.page.x;\n    },\n\n    get pageY() {\n      return this.coords.page.y;\n    },\n\n    get clientX() {\n      return this.coords.client.x;\n    },\n\n    get clientY() {\n      return this.coords.client.y;\n    },\n\n    get pointerId() {\n      return this.coords.pointerId;\n    },\n\n    get target() {\n      return this.coords.target;\n    },\n\n    get type() {\n      return this.coords.type;\n    },\n\n    get pointerType() {\n      return this.coords.pointerType;\n    },\n\n    get buttons() {\n      return this.coords.buttons;\n    },\n\n    preventDefault() {}\n\n  };\n  return event;\n}\nexport { pointerExtend };\n//# sourceMappingURL=pointerUtils.js.map","import { Scope } from \"./scope.js\";\nimport * as arr from \"../utils/arr.js\";\nimport * as domUtils from \"../utils/domUtils.js\";\nimport extend from \"../utils/extend.js\";\nimport is from \"../utils/is.js\";\nimport pExtend from \"../utils/pointerExtend.js\";\nimport * as pointerUtils from \"../utils/pointerUtils.js\";\n\nfunction install(scope) {\n  const targets = [];\n  const delegatedEvents = {};\n  const documents = [];\n  const eventsMethods = {\n    add,\n    remove,\n    addDelegate,\n    removeDelegate,\n    delegateListener,\n    delegateUseCapture,\n    delegatedEvents,\n    documents,\n    targets,\n    supportsOptions: false,\n    supportsPassive: false\n  }; // check if browser supports passive events and options arg\n\n  scope.document.createElement('div').addEventListener('test', null, {\n    get capture() {\n      return eventsMethods.supportsOptions = true;\n    },\n\n    get passive() {\n      return eventsMethods.supportsPassive = true;\n    }\n\n  });\n  scope.events = eventsMethods;\n\n  function add(eventTarget, type, listener, optionalArg) {\n    const options = getOptions(optionalArg);\n    let target = arr.find(targets, t => t.eventTarget === eventTarget);\n\n    if (!target) {\n      target = {\n        eventTarget,\n        events: {}\n      };\n      targets.push(target);\n    }\n\n    if (!target.events[type]) {\n      target.events[type] = [];\n    }\n\n    if (eventTarget.addEventListener && !arr.contains(target.events[type], listener)) {\n      eventTarget.addEventListener(type, listener, eventsMethods.supportsOptions ? options : options.capture);\n      target.events[type].push(listener);\n    }\n  }\n\n  function remove(eventTarget, type, listener, optionalArg) {\n    const options = getOptions(optionalArg);\n    const targetIndex = arr.findIndex(targets, t => t.eventTarget === eventTarget);\n    const target = targets[targetIndex];\n\n    if (!target || !target.events) {\n      return;\n    }\n\n    if (type === 'all') {\n      for (type in target.events) {\n        if (target.events.hasOwnProperty(type)) {\n          remove(eventTarget, type, 'all');\n        }\n      }\n\n      return;\n    }\n\n    let typeIsEmpty = false;\n    const typeListeners = target.events[type];\n\n    if (typeListeners) {\n      if (listener === 'all') {\n        for (let i = typeListeners.length - 1; i >= 0; i--) {\n          remove(eventTarget, type, typeListeners[i], options);\n        }\n\n        return;\n      } else {\n        for (let i = 0; i < typeListeners.length; i++) {\n          if (typeListeners[i] === listener) {\n            eventTarget.removeEventListener(type, listener, eventsMethods.supportsOptions ? options : options.capture);\n            typeListeners.splice(i, 1);\n\n            if (typeListeners.length === 0) {\n              delete target.events[type];\n              typeIsEmpty = true;\n            }\n\n            break;\n          }\n        }\n      }\n    }\n\n    if (typeIsEmpty && !Object.keys(target.events).length) {\n      targets.splice(targetIndex, 1);\n    }\n  }\n\n  function addDelegate(selector, context, type, listener, optionalArg) {\n    const options = getOptions(optionalArg);\n\n    if (!delegatedEvents[type]) {\n      delegatedEvents[type] = []; // add delegate listener functions\n\n      for (const doc of documents) {\n        add(doc, type, delegateListener);\n        add(doc, type, delegateUseCapture, true);\n      }\n    }\n\n    const delegates = delegatedEvents[type];\n    let delegate = arr.find(delegates, d => d.selector === selector && d.context === context);\n\n    if (!delegate) {\n      delegate = {\n        selector,\n        context,\n        listeners: []\n      };\n      delegates.push(delegate);\n    }\n\n    delegate.listeners.push([listener, options]);\n  }\n\n  function removeDelegate(selector, context, type, listener, optionalArg) {\n    const options = getOptions(optionalArg);\n    const delegates = delegatedEvents[type];\n    let matchFound = false;\n    let index;\n\n    if (!delegates) {\n      return;\n    } // count from last index of delegated to 0\n\n\n    for (index = delegates.length - 1; index >= 0; index--) {\n      const cur = delegates[index]; // look for matching selector and context Node\n\n      if (cur.selector === selector && cur.context === context) {\n        const {\n          listeners\n        } = cur; // each item of the listeners array is an array: [function, capture, passive]\n\n        for (let i = listeners.length - 1; i >= 0; i--) {\n          const [fn, {\n            capture,\n            passive\n          }] = listeners[i]; // check if the listener functions and capture and passive flags match\n\n          if (fn === listener && capture === options.capture && passive === options.passive) {\n            // remove the listener from the array of listeners\n            listeners.splice(i, 1); // if all listeners for this target have been removed\n            // remove the target from the delegates array\n\n            if (!listeners.length) {\n              delegates.splice(index, 1); // remove delegate function from context\n\n              remove(context, type, delegateListener);\n              remove(context, type, delegateUseCapture, true);\n            } // only remove one listener\n\n\n            matchFound = true;\n            break;\n          }\n        }\n\n        if (matchFound) {\n          break;\n        }\n      }\n    }\n  } // bound to the interactable context when a DOM event\n  // listener is added to a selector interactable\n\n\n  function delegateListener(event, optionalArg) {\n    const options = getOptions(optionalArg);\n    const fakeEvent = new FakeEvent(event);\n    const delegates = delegatedEvents[event.type];\n    const [eventTarget] = pointerUtils.getEventTargets(event);\n    let element = eventTarget; // climb up document tree looking for selector matches\n\n    while (is.element(element)) {\n      for (let i = 0; i < delegates.length; i++) {\n        const cur = delegates[i];\n        const {\n          selector,\n          context\n        } = cur;\n\n        if (domUtils.matchesSelector(element, selector) && domUtils.nodeContains(context, eventTarget) && domUtils.nodeContains(context, element)) {\n          const {\n            listeners\n          } = cur;\n          fakeEvent.currentTarget = element;\n\n          for (const [fn, {\n            capture,\n            passive\n          }] of listeners) {\n            if (capture === options.capture && passive === options.passive) {\n              fn(fakeEvent);\n            }\n          }\n        }\n      }\n\n      element = domUtils.parentNode(element);\n    }\n  }\n\n  function delegateUseCapture(event) {\n    return delegateListener.call(this, event, true);\n  } // for type inferrence\n\n\n  return eventsMethods;\n}\n\nclass FakeEvent {\n  constructor(originalEvent) {\n    this.currentTarget = void 0;\n    this.originalEvent = void 0;\n    this.type = void 0;\n    this.originalEvent = originalEvent; // duplicate the event so that currentTarget can be changed\n\n    pExtend(this, originalEvent);\n  }\n\n  preventOriginalDefault() {\n    this.originalEvent.preventDefault();\n  }\n\n  stopPropagation() {\n    this.originalEvent.stopPropagation();\n  }\n\n  stopImmediatePropagation() {\n    this.originalEvent.stopImmediatePropagation();\n  }\n\n}\n\nfunction getOptions(param) {\n  if (!is.object(param)) {\n    return {\n      capture: !!param,\n      passive: false\n    };\n  }\n\n  const options = extend({}, param);\n  options.capture = !!param.capture;\n  options.passive = !!param.passive;\n  return options;\n}\n\nexport default {\n  id: 'events',\n  install\n};\n//# sourceMappingURL=events.js.map","import { window } from \"./window.js\";\nexport function warnOnce(method, message) {\n  let warned = false;\n  return function () {\n    if (!warned) {\n      window.console.warn(message);\n      warned = true;\n    }\n\n    return method.apply(this, arguments);\n  };\n}\nexport function copyAction(dest, src) {\n  dest.name = src.name;\n  dest.axis = src.axis;\n  dest.edges = src.edges;\n  return dest;\n}\n//# sourceMappingURL=misc.js.map","/** @module interact */\nimport browser from \"../utils/browser.js\";\nimport * as domUtils from \"../utils/domUtils.js\";\nimport is from \"../utils/is.js\";\nimport * as pointerUtils from \"../utils/pointerUtils.js\";\nimport { warnOnce } from \"../utils/misc.js\";\nimport isNonNativeEvent from \"./isNonNativeEvent.js\";\nexport function createInteractStatic(scope) {\n  /**\n   * ```js\n   * interact('#draggable').draggable(true)\n   *\n   * var rectables = interact('rect')\n   * rectables\n   *   .gesturable(true)\n   *   .on('gesturemove', function (event) {\n   *       // ...\n   *   })\n   * ```\n   *\n   * The methods of this variable can be used to set elements as interactables\n   * and also to change various default settings.\n   *\n   * Calling it as a function and passing an element or a valid CSS selector\n   * string returns an Interactable object which has various methods to configure\n   * it.\n   *\n   * @global\n   *\n   * @param {Element | string} target The HTML or SVG Element to interact with\n   * or CSS selector\n   * @return {Interactable}\n   */\n  const interact = (target, options) => {\n    let interactable = scope.interactables.get(target, options);\n\n    if (!interactable) {\n      interactable = scope.interactables.new(target, options);\n      interactable.events.global = interact.globalEvents;\n    }\n\n    return interactable;\n  }; // expose the functions used to calculate multi-touch properties\n\n\n  interact.getPointerAverage = pointerUtils.pointerAverage;\n  interact.getTouchBBox = pointerUtils.touchBBox;\n  interact.getTouchDistance = pointerUtils.touchDistance;\n  interact.getTouchAngle = pointerUtils.touchAngle;\n  interact.getElementRect = domUtils.getElementRect;\n  interact.getElementClientRect = domUtils.getElementClientRect;\n  interact.matchesSelector = domUtils.matchesSelector;\n  interact.closest = domUtils.closest;\n  interact.globalEvents = {}; // eslint-disable-next-line no-undef\n\n  interact.version = \"1.10.2\";\n  interact.scope = scope;\n  /**\n  * Use a plugin\n  *\n  * @alias module:interact.use\n  *\n   */\n\n  interact.use = function (plugin, options) {\n    this.scope.usePlugin(plugin, options);\n    return this;\n  };\n  /**\n   * Check if an element or selector has been set with the {@link interact}\n   * function\n   *\n   * @alias module:interact.isSet\n   *\n   * @param {Target} target The Element or string being searched for\n   * @param {object} options\n   * @return {boolean} Indicates if the element or CSS selector was previously\n   * passed to interact\n   */\n\n\n  interact.isSet = function (target, options) {\n    return !!this.scope.interactables.get(target, options && options.context);\n  };\n  /**\n   * @deprecated\n   * Add a global listener for an InteractEvent or adds a DOM event to `document`\n   *\n   * @alias module:interact.on\n   *\n   * @param {string | array | object} type The types of events to listen for\n   * @param {function} listener The function event (s)\n   * @param {object | boolean} [options] object or useCapture flag for\n   * addEventListener\n   * @return {object} interact\n   */\n\n\n  interact.on = warnOnce(function on(type, listener, options) {\n    if (is.string(type) && type.search(' ') !== -1) {\n      type = type.trim().split(/ +/);\n    }\n\n    if (is.array(type)) {\n      for (const eventType of type) {\n        this.on(eventType, listener, options);\n      }\n\n      return this;\n    }\n\n    if (is.object(type)) {\n      for (const prop in type) {\n        this.on(prop, type[prop], listener);\n      }\n\n      return this;\n    } // if it is an InteractEvent type, add listener to globalEvents\n\n\n    if (isNonNativeEvent(type, this.scope.actions)) {\n      // if this type of event was never bound\n      if (!this.globalEvents[type]) {\n        this.globalEvents[type] = [listener];\n      } else {\n        this.globalEvents[type].push(listener);\n      }\n    } // If non InteractEvent type, addEventListener to document\n    else {\n        this.scope.events.add(this.scope.document, type, listener, {\n          options\n        });\n      }\n\n    return this;\n  }, 'The interact.on() method is being deprecated');\n  /**\n   * @deprecated\n   * Removes a global InteractEvent listener or DOM event from `document`\n   *\n   * @alias module:interact.off\n   *\n   * @param {string | array | object} type The types of events that were listened\n   * for\n   * @param {function} listener The listener function to be removed\n   * @param {object | boolean} options [options] object or useCapture flag for\n   * removeEventListener\n   * @return {object} interact\n   */\n\n  interact.off = warnOnce(function off(type, listener, options) {\n    if (is.string(type) && type.search(' ') !== -1) {\n      type = type.trim().split(/ +/);\n    }\n\n    if (is.array(type)) {\n      for (const eventType of type) {\n        this.off(eventType, listener, options);\n      }\n\n      return this;\n    }\n\n    if (is.object(type)) {\n      for (const prop in type) {\n        this.off(prop, type[prop], listener);\n      }\n\n      return this;\n    }\n\n    if (isNonNativeEvent(type, this.scope.actions)) {\n      let index;\n\n      if (type in this.globalEvents && (index = this.globalEvents[type].indexOf(listener)) !== -1) {\n        this.globalEvents[type].splice(index, 1);\n      }\n    } else {\n      this.scope.events.remove(this.scope.document, type, listener, options);\n    }\n\n    return this;\n  }, 'The interact.off() method is being deprecated');\n\n  interact.debug = function () {\n    return this.scope;\n  };\n  /**\n   * @alias module:interact.supportsTouch\n   *\n   * @return {boolean} Whether or not the browser supports touch input\n   */\n\n\n  interact.supportsTouch = function () {\n    return browser.supportsTouch;\n  };\n  /**\n   * @alias module:interact.supportsPointerEvent\n   *\n   * @return {boolean} Whether or not the browser supports PointerEvents\n   */\n\n\n  interact.supportsPointerEvent = function () {\n    return browser.supportsPointerEvent;\n  };\n  /**\n   * Cancels all interactions (end events are not fired)\n   *\n   * @alias module:interact.stop\n   *\n   * @return {object} interact\n   */\n\n\n  interact.stop = function () {\n    for (const interaction of this.scope.interactions.list) {\n      interaction.stop();\n    }\n\n    return this;\n  };\n  /**\n   * Returns or sets the distance the pointer must be moved before an action\n   * sequence occurs. This also affects tolerance for tap events.\n   *\n   * @alias module:interact.pointerMoveTolerance\n   *\n   * @param {number} [newValue] The movement from the start position must be greater than this value\n   * @return {interact | number}\n   */\n\n\n  interact.pointerMoveTolerance = function (newValue) {\n    if (is.number(newValue)) {\n      this.scope.interactions.pointerMoveTolerance = newValue;\n      return this;\n    }\n\n    return this.scope.interactions.pointerMoveTolerance;\n  };\n\n  interact.addDocument = function (doc, options) {\n    this.scope.addDocument(doc, options);\n  };\n\n  interact.removeDocument = function (doc) {\n    this.scope.removeDocument(doc);\n  };\n\n  return interact;\n}\n//# sourceMappingURL=interactStatic.js.map","export class PointerInfo {\n  constructor(id, pointer, event, downTime, downTarget) {\n    this.id = void 0;\n    this.pointer = void 0;\n    this.event = void 0;\n    this.downTime = void 0;\n    this.downTarget = void 0;\n    this.id = id;\n    this.pointer = pointer;\n    this.event = event;\n    this.downTime = downTime;\n    this.downTarget = downTarget;\n  }\n\n}\n//# sourceMappingURL=PointerInfo.js.map","import * as arr from \"../utils/arr.js\";\nimport extend from \"../utils/extend.js\";\nimport hypot from \"../utils/hypot.js\";\nimport { warnOnce, copyAction } from \"../utils/misc.js\";\nimport * as pointerUtils from \"../utils/pointerUtils.js\";\nimport * as rectUtils from \"../utils/rect.js\";\nimport { InteractEvent } from \"./InteractEvent.js\";\nimport { PointerInfo } from \"./PointerInfo.js\";\nexport let _ProxyValues;\n\n(function (_ProxyValues) {\n  _ProxyValues[\"interactable\"] = \"\";\n  _ProxyValues[\"element\"] = \"\";\n  _ProxyValues[\"prepared\"] = \"\";\n  _ProxyValues[\"pointerIsDown\"] = \"\";\n  _ProxyValues[\"pointerWasMoved\"] = \"\";\n  _ProxyValues[\"_proxy\"] = \"\";\n})(_ProxyValues || (_ProxyValues = {}));\n\nexport let _ProxyMethods;\n\n(function (_ProxyMethods) {\n  _ProxyMethods[\"start\"] = \"\";\n  _ProxyMethods[\"move\"] = \"\";\n  _ProxyMethods[\"end\"] = \"\";\n  _ProxyMethods[\"stop\"] = \"\";\n  _ProxyMethods[\"interacting\"] = \"\";\n})(_ProxyMethods || (_ProxyMethods = {}));\n\nlet idCounter = 0;\nexport class Interaction {\n  // current interactable being interacted with\n  // the target element of the interactable\n  // action that's ready to be fired on next move event\n  // keep track of added pointers\n  // pointerdown/mousedown/touchstart event\n  // previous action event\n\n  /** @internal */\n  get pointerMoveTolerance() {\n    return 1;\n  }\n  /**\n   * @alias Interaction.prototype.move\n   */\n\n\n  /** */\n  constructor({\n    pointerType,\n    scopeFire\n  }) {\n    this.interactable = null;\n    this.element = null;\n    this.rect = void 0;\n    this._rects = void 0;\n    this.edges = void 0;\n    this._scopeFire = void 0;\n    this.prepared = {\n      name: null,\n      axis: null,\n      edges: null\n    };\n    this.pointerType = void 0;\n    this.pointers = [];\n    this.downEvent = null;\n    this.downPointer = {};\n    this._latestPointer = {\n      pointer: null,\n      event: null,\n      eventTarget: null\n    };\n    this.prevEvent = null;\n    this.pointerIsDown = false;\n    this.pointerWasMoved = false;\n    this._interacting = false;\n    this._ending = false;\n    this._stopped = true;\n    this._proxy = null;\n    this.simulation = null;\n    this.doMove = warnOnce(function (signalArg) {\n      this.move(signalArg);\n    }, 'The interaction.doMove() method has been renamed to interaction.move()');\n    this.coords = {\n      // Starting InteractEvent pointer coordinates\n      start: pointerUtils.newCoords(),\n      // Previous native pointer move event coordinates\n      prev: pointerUtils.newCoords(),\n      // current native pointer move event coordinates\n      cur: pointerUtils.newCoords(),\n      // Change in coordinates and time of the pointer\n      delta: pointerUtils.newCoords(),\n      // pointer velocity\n      velocity: pointerUtils.newCoords()\n    };\n    this._id = idCounter++;\n    this._scopeFire = scopeFire;\n    this.pointerType = pointerType;\n    const that = this;\n    this._proxy = {};\n\n    for (const key in _ProxyValues) {\n      Object.defineProperty(this._proxy, key, {\n        get() {\n          return that[key];\n        }\n\n      });\n    }\n\n    for (const key in _ProxyMethods) {\n      Object.defineProperty(this._proxy, key, {\n        value: (...args) => that[key](...args)\n      });\n    }\n\n    this._scopeFire('interactions:new', {\n      interaction: this\n    });\n  }\n\n  pointerDown(pointer, event, eventTarget) {\n    const pointerIndex = this.updatePointer(pointer, event, eventTarget, true);\n    const pointerInfo = this.pointers[pointerIndex];\n\n    this._scopeFire('interactions:down', {\n      pointer,\n      event,\n      eventTarget,\n      pointerIndex,\n      pointerInfo,\n      type: 'down',\n      interaction: this\n    });\n  }\n  /**\n   * ```js\n   * interact(target)\n   *   .draggable({\n   *     // disable the default drag start by down->move\n   *     manualStart: true\n   *   })\n   *   // start dragging after the user holds the pointer down\n   *   .on('hold', function (event) {\n   *     var interaction = event.interaction\n   *\n   *     if (!interaction.interacting()) {\n   *       interaction.start({ name: 'drag' },\n   *                         event.interactable,\n   *                         event.currentTarget)\n   *     }\n   * })\n   * ```\n   *\n   * Start an action with the given Interactable and Element as tartgets. The\n   * action must be enabled for the target Interactable and an appropriate\n   * number of pointers must be held down - 1 for drag/resize, 2 for gesture.\n   *\n   * Use it with `interactable.<action>able({ manualStart: false })` to always\n   * [start actions manually](https://github.com/taye/interact.js/issues/114)\n   *\n   * @param {object} action   The action to be performed - drag, resize, etc.\n   * @param {Interactable} target  The Interactable to target\n   * @param {Element} element The DOM Element to target\n   * @return {Boolean} Whether the interaction was successfully started\n   */\n\n\n  start(action, interactable, element) {\n    if (this.interacting() || !this.pointerIsDown || this.pointers.length < (action.name === 'gesture' ? 2 : 1) || !interactable.options[action.name].enabled) {\n      return false;\n    }\n\n    copyAction(this.prepared, action);\n    this.interactable = interactable;\n    this.element = element;\n    this.rect = interactable.getRect(element);\n    this.edges = this.prepared.edges ? extend({}, this.prepared.edges) : {\n      left: true,\n      right: true,\n      top: true,\n      bottom: true\n    };\n    this._stopped = false;\n    this._interacting = this._doPhase({\n      interaction: this,\n      event: this.downEvent,\n      phase: 'start'\n    }) && !this._stopped;\n    return this._interacting;\n  }\n\n  pointerMove(pointer, event, eventTarget) {\n    if (!this.simulation && !(this.modification && this.modification.endResult)) {\n      this.updatePointer(pointer, event, eventTarget, false);\n    }\n\n    const duplicateMove = this.coords.cur.page.x === this.coords.prev.page.x && this.coords.cur.page.y === this.coords.prev.page.y && this.coords.cur.client.x === this.coords.prev.client.x && this.coords.cur.client.y === this.coords.prev.client.y;\n    let dx;\n    let dy; // register movement greater than pointerMoveTolerance\n\n    if (this.pointerIsDown && !this.pointerWasMoved) {\n      dx = this.coords.cur.client.x - this.coords.start.client.x;\n      dy = this.coords.cur.client.y - this.coords.start.client.y;\n      this.pointerWasMoved = hypot(dx, dy) > this.pointerMoveTolerance;\n    }\n\n    const pointerIndex = this.getPointerIndex(pointer);\n    const signalArg = {\n      pointer,\n      pointerIndex,\n      pointerInfo: this.pointers[pointerIndex],\n      event,\n      type: 'move',\n      eventTarget,\n      dx,\n      dy,\n      duplicate: duplicateMove,\n      interaction: this\n    };\n\n    if (!duplicateMove) {\n      // set pointer coordinate, time changes and velocity\n      pointerUtils.setCoordVelocity(this.coords.velocity, this.coords.delta);\n    }\n\n    this._scopeFire('interactions:move', signalArg);\n\n    if (!duplicateMove && !this.simulation) {\n      // if interacting, fire an 'action-move' signal etc\n      if (this.interacting()) {\n        signalArg.type = null;\n        this.move(signalArg);\n      }\n\n      if (this.pointerWasMoved) {\n        pointerUtils.copyCoords(this.coords.prev, this.coords.cur);\n      }\n    }\n  }\n  /**\n   * ```js\n   * interact(target)\n   *   .draggable(true)\n   *   .on('dragmove', function (event) {\n   *     if (someCondition) {\n   *       // change the snap settings\n   *       event.interactable.draggable({ snap: { targets: [] }})\n   *       // fire another move event with re-calculated snap\n   *       event.interaction.move()\n   *     }\n   *   })\n   * ```\n   *\n   * Force a move of the current action at the same coordinates. Useful if\n   * snap/restrict has been changed and you want a movement with the new\n   * settings.\n   */\n\n\n  move(signalArg) {\n    if (!signalArg || !signalArg.event) {\n      pointerUtils.setZeroCoords(this.coords.delta);\n    }\n\n    signalArg = extend({\n      pointer: this._latestPointer.pointer,\n      event: this._latestPointer.event,\n      eventTarget: this._latestPointer.eventTarget,\n      interaction: this\n    }, signalArg || {});\n    signalArg.phase = 'move';\n\n    this._doPhase(signalArg);\n  } // End interact move events and stop auto-scroll unless simulation is running\n\n\n  pointerUp(pointer, event, eventTarget, curEventTarget) {\n    let pointerIndex = this.getPointerIndex(pointer);\n\n    if (pointerIndex === -1) {\n      pointerIndex = this.updatePointer(pointer, event, eventTarget, false);\n    }\n\n    const type = /cancel$/i.test(event.type) ? 'cancel' : 'up';\n\n    this._scopeFire(`interactions:${type}`, {\n      pointer,\n      pointerIndex,\n      pointerInfo: this.pointers[pointerIndex],\n      event,\n      eventTarget,\n      type: type,\n      curEventTarget,\n      interaction: this\n    });\n\n    if (!this.simulation) {\n      this.end(event);\n    }\n\n    this.removePointer(pointer, event);\n  }\n\n  documentBlur(event) {\n    this.end(event);\n\n    this._scopeFire('interactions:blur', {\n      event,\n      type: 'blur',\n      interaction: this\n    });\n  }\n  /**\n   * ```js\n   * interact(target)\n   *   .draggable(true)\n   *   .on('move', function (event) {\n   *     if (event.pageX > 1000) {\n   *       // end the current action\n   *       event.interaction.end()\n   *       // stop all further listeners from being called\n   *       event.stopImmediatePropagation()\n   *     }\n   *   })\n   * ```\n   *\n   * @param {PointerEvent} [event]\n   */\n\n\n  end(event) {\n    this._ending = true;\n    event = event || this._latestPointer.event;\n    let endPhaseResult;\n\n    if (this.interacting()) {\n      endPhaseResult = this._doPhase({\n        event,\n        interaction: this,\n        phase: 'end'\n      });\n    }\n\n    this._ending = false;\n\n    if (endPhaseResult === true) {\n      this.stop();\n    }\n  }\n\n  currentAction() {\n    return this._interacting ? this.prepared.name : null;\n  }\n\n  interacting() {\n    return this._interacting;\n  }\n  /** */\n\n\n  stop() {\n    this._scopeFire('interactions:stop', {\n      interaction: this\n    });\n\n    this.interactable = this.element = null;\n    this._interacting = false;\n    this._stopped = true;\n    this.prepared.name = this.prevEvent = null;\n  }\n\n  getPointerIndex(pointer) {\n    const pointerId = pointerUtils.getPointerId(pointer); // mouse and pen interactions may have only one pointer\n\n    return this.pointerType === 'mouse' || this.pointerType === 'pen' ? this.pointers.length - 1 : arr.findIndex(this.pointers, curPointer => curPointer.id === pointerId);\n  }\n\n  getPointerInfo(pointer) {\n    return this.pointers[this.getPointerIndex(pointer)];\n  }\n\n  updatePointer(pointer, event, eventTarget, down) {\n    const id = pointerUtils.getPointerId(pointer);\n    let pointerIndex = this.getPointerIndex(pointer);\n    let pointerInfo = this.pointers[pointerIndex];\n    down = down === false ? false : down || /(down|start)$/i.test(event.type);\n\n    if (!pointerInfo) {\n      pointerInfo = new PointerInfo(id, pointer, event, null, null);\n      pointerIndex = this.pointers.length;\n      this.pointers.push(pointerInfo);\n    } else {\n      pointerInfo.pointer = pointer;\n    }\n\n    pointerUtils.setCoords(this.coords.cur, this.pointers.map(p => p.pointer), this._now());\n    pointerUtils.setCoordDeltas(this.coords.delta, this.coords.prev, this.coords.cur);\n\n    if (down) {\n      this.pointerIsDown = true;\n      pointerInfo.downTime = this.coords.cur.timeStamp;\n      pointerInfo.downTarget = eventTarget;\n      pointerUtils.pointerExtend(this.downPointer, pointer);\n\n      if (!this.interacting()) {\n        pointerUtils.copyCoords(this.coords.start, this.coords.cur);\n        pointerUtils.copyCoords(this.coords.prev, this.coords.cur);\n        this.downEvent = event;\n        this.pointerWasMoved = false;\n      }\n    }\n\n    this._updateLatestPointer(pointer, event, eventTarget);\n\n    this._scopeFire('interactions:update-pointer', {\n      pointer,\n      event,\n      eventTarget,\n      down,\n      pointerInfo,\n      pointerIndex,\n      interaction: this\n    });\n\n    return pointerIndex;\n  }\n\n  removePointer(pointer, event) {\n    const pointerIndex = this.getPointerIndex(pointer);\n\n    if (pointerIndex === -1) {\n      return;\n    }\n\n    const pointerInfo = this.pointers[pointerIndex];\n\n    this._scopeFire('interactions:remove-pointer', {\n      pointer,\n      event,\n      eventTarget: null,\n      pointerIndex,\n      pointerInfo,\n      interaction: this\n    });\n\n    this.pointers.splice(pointerIndex, 1);\n    this.pointerIsDown = false;\n  }\n\n  _updateLatestPointer(pointer, event, eventTarget) {\n    this._latestPointer.pointer = pointer;\n    this._latestPointer.event = event;\n    this._latestPointer.eventTarget = eventTarget;\n  }\n\n  destroy() {\n    this._latestPointer.pointer = null;\n    this._latestPointer.event = null;\n    this._latestPointer.eventTarget = null;\n  }\n\n  _createPreparedEvent(event, phase, preEnd, type) {\n    return new InteractEvent(this, event, this.prepared.name, phase, this.element, preEnd, type);\n  }\n\n  _fireEvent(iEvent) {\n    this.interactable.fire(iEvent);\n\n    if (!this.prevEvent || iEvent.timeStamp >= this.prevEvent.timeStamp) {\n      this.prevEvent = iEvent;\n    }\n  }\n\n  _doPhase(signalArg) {\n    const {\n      event,\n      phase,\n      preEnd,\n      type\n    } = signalArg;\n    const {\n      rect\n    } = this;\n\n    if (rect && phase === 'move') {\n      // update the rect changes due to pointer move\n      rectUtils.addEdges(this.edges, rect, this.coords.delta[this.interactable.options.deltaSource]);\n      rect.width = rect.right - rect.left;\n      rect.height = rect.bottom - rect.top;\n    }\n\n    const beforeResult = this._scopeFire(`interactions:before-action-${phase}`, signalArg);\n\n    if (beforeResult === false) {\n      return false;\n    }\n\n    const iEvent = signalArg.iEvent = this._createPreparedEvent(event, phase, preEnd, type);\n\n    this._scopeFire(`interactions:action-${phase}`, signalArg);\n\n    if (phase === 'start') {\n      this.prevEvent = iEvent;\n    }\n\n    this._fireEvent(iEvent);\n\n    this._scopeFire(`interactions:after-action-${phase}`, signalArg);\n\n    return true;\n  }\n\n  _now() {\n    return Date.now();\n  }\n\n}\nexport default Interaction;\nexport { PointerInfo };\n//# sourceMappingURL=Interaction.js.map","import { Interactable } from \"./Interactable.js\";\nimport { matchesSelector, nodeContains } from \"../utils/domUtils.js\";\nimport is from \"../utils/is.js\";\nimport { getWindow } from \"../utils/window.js\";\n\nfunction preventDefault(newValue) {\n  if (/^(always|never|auto)$/.test(newValue)) {\n    this.options.preventDefault = newValue;\n    return this;\n  }\n\n  if (is.bool(newValue)) {\n    this.options.preventDefault = newValue ? 'always' : 'never';\n    return this;\n  }\n\n  return this.options.preventDefault;\n}\n\nfunction checkAndPreventDefault(interactable, scope, event) {\n  const setting = interactable.options.preventDefault;\n\n  if (setting === 'never') {\n    return;\n  }\n\n  if (setting === 'always') {\n    event.preventDefault();\n    return;\n  } // setting === 'auto'\n  // if the browser supports passive event listeners and isn't running on iOS,\n  // don't preventDefault of touch{start,move} events. CSS touch-action and\n  // user-select should be used instead of calling event.preventDefault().\n\n\n  if (scope.events.supportsPassive && /^touch(start|move)$/.test(event.type)) {\n    const doc = getWindow(event.target).document;\n    const docOptions = scope.getDocOptions(doc);\n\n    if (!(docOptions && docOptions.events) || docOptions.events.passive !== false) {\n      return;\n    }\n  } // don't preventDefault of pointerdown events\n\n\n  if (/^(mouse|pointer|touch)*(down|start)/i.test(event.type)) {\n    return;\n  } // don't preventDefault on editable elements\n\n\n  if (is.element(event.target) && matchesSelector(event.target, 'input,select,textarea,[contenteditable=true],[contenteditable=true] *')) {\n    return;\n  }\n\n  event.preventDefault();\n}\n\nfunction onInteractionEvent({\n  interaction,\n  event\n}) {\n  if (interaction.interactable) {\n    interaction.interactable.checkAndPreventDefault(event);\n  }\n}\n\nexport function install(scope) {\n  /** @lends Interactable */\n  const {\n    Interactable\n  } = scope;\n  /**\n   * Returns or sets whether to prevent the browser's default behaviour in\n   * response to pointer events. Can be set to:\n   *  - `'always'` to always prevent\n   *  - `'never'` to never prevent\n   *  - `'auto'` to let interact.js try to determine what would be best\n   *\n   * @param {string} [newValue] `'always'`, `'never'` or `'auto'`\n   * @return {string | Interactable} The current setting or this Interactable\n   */\n\n  Interactable.prototype.preventDefault = preventDefault;\n\n  Interactable.prototype.checkAndPreventDefault = function (event) {\n    return checkAndPreventDefault(this, scope, event);\n  }; // prevent native HTML5 drag on interact.js target elements\n\n\n  scope.interactions.docEvents.push({\n    type: 'dragstart',\n\n    listener(event) {\n      for (const interaction of scope.interactions.list) {\n        if (interaction.element && (interaction.element === event.target || nodeContains(interaction.element, event.target))) {\n          interaction.interactable.checkAndPreventDefault(event);\n          return;\n        }\n      }\n    }\n\n  });\n}\nexport default {\n  id: 'core/interactablePreventDefault',\n  install,\n  listeners: ['down', 'move', 'up', 'cancel'].reduce((acc, eventType) => {\n    acc[`interactions:${eventType}`] = onInteractionEvent;\n    return acc;\n  }, {})\n};\n//# sourceMappingURL=interactablePreventDefault.js.map","import * as dom from \"../utils/domUtils.js\";\nconst finder = {\n  methodOrder: ['simulationResume', 'mouseOrPen', 'hasPointer', 'idle'],\n\n  search(details) {\n    for (const method of finder.methodOrder) {\n      const interaction = finder[method](details);\n\n      if (interaction) {\n        return interaction;\n      }\n    }\n\n    return null;\n  },\n\n  // try to resume simulation with a new pointer\n  simulationResume({\n    pointerType,\n    eventType,\n    eventTarget,\n    scope\n  }) {\n    if (!/down|start/i.test(eventType)) {\n      return null;\n    }\n\n    for (const interaction of scope.interactions.list) {\n      let element = eventTarget;\n\n      if (interaction.simulation && interaction.simulation.allowResume && interaction.pointerType === pointerType) {\n        while (element) {\n          // if the element is the interaction element\n          if (element === interaction.element) {\n            return interaction;\n          }\n\n          element = dom.parentNode(element);\n        }\n      }\n    }\n\n    return null;\n  },\n\n  // if it's a mouse or pen interaction\n  mouseOrPen({\n    pointerId,\n    pointerType,\n    eventType,\n    scope\n  }) {\n    if (pointerType !== 'mouse' && pointerType !== 'pen') {\n      return null;\n    }\n\n    let firstNonActive;\n\n    for (const interaction of scope.interactions.list) {\n      if (interaction.pointerType === pointerType) {\n        // if it's a down event, skip interactions with running simulations\n        if (interaction.simulation && !hasPointerId(interaction, pointerId)) {\n          continue;\n        } // if the interaction is active, return it immediately\n\n\n        if (interaction.interacting()) {\n          return interaction;\n        } // otherwise save it and look for another active interaction\n        else if (!firstNonActive) {\n            firstNonActive = interaction;\n          }\n      }\n    } // if no active mouse interaction was found use the first inactive mouse\n    // interaction\n\n\n    if (firstNonActive) {\n      return firstNonActive;\n    } // find any mouse or pen interaction.\n    // ignore the interaction if the eventType is a *down, and a simulation\n    // is active\n\n\n    for (const interaction of scope.interactions.list) {\n      if (interaction.pointerType === pointerType && !(/down/i.test(eventType) && interaction.simulation)) {\n        return interaction;\n      }\n    }\n\n    return null;\n  },\n\n  // get interaction that has this pointer\n  hasPointer({\n    pointerId,\n    scope\n  }) {\n    for (const interaction of scope.interactions.list) {\n      if (hasPointerId(interaction, pointerId)) {\n        return interaction;\n      }\n    }\n\n    return null;\n  },\n\n  // get first idle interaction with a matching pointerType\n  idle({\n    pointerType,\n    scope\n  }) {\n    for (const interaction of scope.interactions.list) {\n      // if there's already a pointer held down\n      if (interaction.pointers.length === 1) {\n        const target = interaction.interactable; // don't add this pointer if there is a target interactable and it\n        // isn't gesturable\n\n        if (target && !(target.options.gesture && target.options.gesture.enabled)) {\n          continue;\n        }\n      } // maximum of 2 pointers per interaction\n      else if (interaction.pointers.length >= 2) {\n          continue;\n        }\n\n      if (!interaction.interacting() && pointerType === interaction.pointerType) {\n        return interaction;\n      }\n    }\n\n    return null;\n  }\n\n};\n\nfunction hasPointerId(interaction, pointerId) {\n  return interaction.pointers.some(({\n    id\n  }) => id === pointerId);\n}\n\nexport default finder;\n//# sourceMappingURL=interactionFinder.js.map","import { Scope, SignalArgs } from \"./scope.js\";\nimport browser from \"../utils/browser.js\";\nimport domObjects from \"../utils/domObjects.js\";\nimport { nodeContains } from \"../utils/domUtils.js\";\nimport * as pointerUtils from \"../utils/pointerUtils.js\";\nimport InteractionBase from \"./Interaction.js\";\nimport interactablePreventDefault from \"./interactablePreventDefault.js\";\nimport finder from \"./interactionFinder.js\";\nconst methodNames = ['pointerDown', 'pointerMove', 'pointerUp', 'updatePointer', 'removePointer', 'windowBlur'];\n\nfunction install(scope) {\n  const listeners = {};\n\n  for (const method of methodNames) {\n    listeners[method] = doOnInteractions(method, scope);\n  }\n\n  const pEventTypes = browser.pEventTypes;\n  let docEvents;\n\n  if (domObjects.PointerEvent) {\n    docEvents = [{\n      type: pEventTypes.down,\n      listener: releasePointersOnRemovedEls\n    }, {\n      type: pEventTypes.down,\n      listener: listeners.pointerDown\n    }, {\n      type: pEventTypes.move,\n      listener: listeners.pointerMove\n    }, {\n      type: pEventTypes.up,\n      listener: listeners.pointerUp\n    }, {\n      type: pEventTypes.cancel,\n      listener: listeners.pointerUp\n    }];\n  } else {\n    docEvents = [{\n      type: 'mousedown',\n      listener: listeners.pointerDown\n    }, {\n      type: 'mousemove',\n      listener: listeners.pointerMove\n    }, {\n      type: 'mouseup',\n      listener: listeners.pointerUp\n    }, {\n      type: 'touchstart',\n      listener: releasePointersOnRemovedEls\n    }, {\n      type: 'touchstart',\n      listener: listeners.pointerDown\n    }, {\n      type: 'touchmove',\n      listener: listeners.pointerMove\n    }, {\n      type: 'touchend',\n      listener: listeners.pointerUp\n    }, {\n      type: 'touchcancel',\n      listener: listeners.pointerUp\n    }];\n  }\n\n  docEvents.push({\n    type: 'blur',\n\n    listener(event) {\n      for (const interaction of scope.interactions.list) {\n        interaction.documentBlur(event);\n      }\n    }\n\n  }); // for ignoring browser's simulated mouse events\n\n  scope.prevTouchTime = 0;\n  scope.Interaction = class extends InteractionBase {\n    get pointerMoveTolerance() {\n      return scope.interactions.pointerMoveTolerance;\n    }\n\n    set pointerMoveTolerance(value) {\n      scope.interactions.pointerMoveTolerance = value;\n    }\n\n    _now() {\n      return scope.now();\n    }\n\n  };\n  scope.interactions = {\n    // all active and idle interactions\n    list: [],\n\n    new(options) {\n      options.scopeFire = (name, arg) => scope.fire(name, arg);\n\n      const interaction = new scope.Interaction(options);\n      scope.interactions.list.push(interaction);\n      return interaction;\n    },\n\n    listeners,\n    docEvents,\n    pointerMoveTolerance: 1\n  };\n\n  function releasePointersOnRemovedEls() {\n    // for all inactive touch interactions with pointers down\n    for (const interaction of scope.interactions.list) {\n      if (!interaction.pointerIsDown || interaction.pointerType !== 'touch' || interaction._interacting) {\n        continue;\n      } // if a pointer is down on an element that is no longer in the DOM tree\n\n\n      for (const pointer of interaction.pointers) {\n        if (!scope.documents.some(({\n          doc\n        }) => nodeContains(doc, pointer.downTarget))) {\n          // remove the pointer from the interaction\n          interaction.removePointer(pointer.pointer, pointer.event);\n        }\n      }\n    }\n  }\n\n  scope.usePlugin(interactablePreventDefault);\n}\n\nfunction doOnInteractions(method, scope) {\n  return function (event) {\n    const interactions = scope.interactions.list;\n    const pointerType = pointerUtils.getPointerType(event);\n    const [eventTarget, curEventTarget] = pointerUtils.getEventTargets(event);\n    const matches = []; // [ [pointer, interaction], ...]\n\n    if (/^touch/.test(event.type)) {\n      scope.prevTouchTime = scope.now(); // @ts-expect-error\n\n      for (const changedTouch of event.changedTouches) {\n        const pointer = changedTouch;\n        const pointerId = pointerUtils.getPointerId(pointer);\n        const searchDetails = {\n          pointer,\n          pointerId,\n          pointerType,\n          eventType: event.type,\n          eventTarget,\n          curEventTarget,\n          scope\n        };\n        const interaction = getInteraction(searchDetails);\n        matches.push([searchDetails.pointer, searchDetails.eventTarget, searchDetails.curEventTarget, interaction]);\n      }\n    } else {\n      let invalidPointer = false;\n\n      if (!browser.supportsPointerEvent && /mouse/.test(event.type)) {\n        // ignore mouse events while touch interactions are active\n        for (let i = 0; i < interactions.length && !invalidPointer; i++) {\n          invalidPointer = interactions[i].pointerType !== 'mouse' && interactions[i].pointerIsDown;\n        } // try to ignore mouse events that are simulated by the browser\n        // after a touch event\n\n\n        invalidPointer = invalidPointer || scope.now() - scope.prevTouchTime < 500 || // on iOS and Firefox Mobile, MouseEvent.timeStamp is zero if simulated\n        event.timeStamp === 0;\n      }\n\n      if (!invalidPointer) {\n        const searchDetails = {\n          pointer: event,\n          pointerId: pointerUtils.getPointerId(event),\n          pointerType,\n          eventType: event.type,\n          curEventTarget,\n          eventTarget,\n          scope\n        };\n        const interaction = getInteraction(searchDetails);\n        matches.push([searchDetails.pointer, searchDetails.eventTarget, searchDetails.curEventTarget, interaction]);\n      }\n    } // eslint-disable-next-line no-shadow\n\n\n    for (const [pointer, eventTarget, curEventTarget, interaction] of matches) {\n      interaction[method](pointer, event, eventTarget, curEventTarget);\n    }\n  };\n}\n\nfunction getInteraction(searchDetails) {\n  const {\n    pointerType,\n    scope\n  } = searchDetails;\n  const foundInteraction = finder.search(searchDetails);\n  const signalArg = {\n    interaction: foundInteraction,\n    searchDetails\n  };\n  scope.fire('interactions:find', signalArg);\n  return signalArg.interaction || scope.interactions.new({\n    pointerType\n  });\n}\n\nfunction onDocSignal({\n  doc,\n  scope,\n  options\n}, eventMethodName) {\n  const {\n    interactions: {\n      docEvents\n    },\n    events\n  } = scope;\n  const eventMethod = events[eventMethodName];\n\n  if (scope.browser.isIOS && !options.events) {\n    options.events = {\n      passive: false\n    };\n  } // delegate event listener\n\n\n  for (const eventType in events.delegatedEvents) {\n    eventMethod(doc, eventType, events.delegateListener);\n    eventMethod(doc, eventType, events.delegateUseCapture, true);\n  }\n\n  const eventOptions = options && options.events;\n\n  for (const {\n    type,\n    listener\n  } of docEvents) {\n    eventMethod(doc, type, listener, eventOptions);\n  }\n}\n\nconst interactions = {\n  id: 'core/interactions',\n  install,\n  listeners: {\n    'scope:add-document': arg => onDocSignal(arg, 'add'),\n    'scope:remove-document': arg => onDocSignal(arg, 'remove'),\n    'interactable:unset': ({\n      interactable\n    }, scope) => {\n      // Stop and destroy related interactions when an Interactable is unset\n      for (let i = scope.interactions.list.length - 1; i >= 0; i--) {\n        const interaction = scope.interactions.list[i];\n\n        if (interaction.interactable !== interactable) {\n          continue;\n        }\n\n        interaction.stop();\n        scope.fire('interactions:destroy', {\n          interaction\n        });\n        interaction.destroy();\n\n        if (scope.interactions.list.length > 2) {\n          scope.interactions.list.splice(i, 1);\n        }\n      }\n    }\n  },\n  onDocSignal,\n  doOnInteractions,\n  methodNames\n};\nexport default interactions;\n//# sourceMappingURL=interactions.js.map","import browser from \"../utils/browser.js\";\nimport clone from \"../utils/clone.js\";\nimport domObjects from \"../utils/domObjects.js\";\nimport extend from \"../utils/extend.js\";\nimport raf from \"../utils/raf.js\";\nimport * as win from \"../utils/window.js\";\nimport { Eventable } from \"./Eventable.js\";\nimport { InteractEvent } from \"./InteractEvent.js\";\nimport { Interactable as InteractableBase } from \"./Interactable.js\";\nimport { InteractableSet } from \"./InteractableSet.js\";\nimport { defaults } from \"./defaultOptions.js\";\nimport events from \"./events.js\";\nimport { createInteractStatic } from \"./interactStatic.js\";\nimport interactions from \"./interactions.js\";\nexport class Scope {\n  // main window\n  // main document\n  // main window\n  // all documents being listened to\n  constructor() {\n    this.id = `__interact_scope_${Math.floor(Math.random() * 100)}`;\n    this.isInitialized = false;\n    this.listenerMaps = [];\n    this.browser = browser;\n    this.defaults = clone(defaults);\n    this.Eventable = Eventable;\n    this.actions = {\n      map: {},\n      phases: {\n        start: true,\n        move: true,\n        end: true\n      },\n      methodDict: {},\n      phaselessTypes: {}\n    };\n    this.interactStatic = createInteractStatic(this);\n    this.InteractEvent = InteractEvent;\n    this.Interactable = void 0;\n    this.interactables = new InteractableSet(this);\n    this._win = void 0;\n    this.document = void 0;\n    this.window = void 0;\n    this.documents = [];\n    this._plugins = {\n      list: [],\n      map: {}\n    };\n\n    this.onWindowUnload = event => this.removeDocument(event.target);\n\n    const scope = this;\n    this.Interactable = class extends InteractableBase {\n      get _defaults() {\n        return scope.defaults;\n      }\n\n      set(options) {\n        super.set(options);\n        scope.fire('interactable:set', {\n          options,\n          interactable: this\n        });\n        return this;\n      }\n\n      unset() {\n        super.unset();\n        scope.interactables.list.splice(scope.interactables.list.indexOf(this), 1);\n        scope.fire('interactable:unset', {\n          interactable: this\n        });\n      }\n\n    };\n  }\n\n  addListeners(map, id) {\n    this.listenerMaps.push({\n      id,\n      map\n    });\n  }\n\n  fire(name, arg) {\n    for (const {\n      map: {\n        [name]: listener\n      }\n    } of this.listenerMaps) {\n      if (!!listener && listener(arg, this, name) === false) {\n        return false;\n      }\n    }\n  }\n\n  init(window) {\n    return this.isInitialized ? this : initScope(this, window);\n  }\n\n  pluginIsInstalled(plugin) {\n    return this._plugins.map[plugin.id] || this._plugins.list.indexOf(plugin) !== -1;\n  }\n\n  usePlugin(plugin, options) {\n    if (!this.isInitialized) {\n      return this;\n    }\n\n    if (this.pluginIsInstalled(plugin)) {\n      return this;\n    }\n\n    if (plugin.id) {\n      this._plugins.map[plugin.id] = plugin;\n    }\n\n    this._plugins.list.push(plugin);\n\n    if (plugin.install) {\n      plugin.install(this, options);\n    }\n\n    if (plugin.listeners && plugin.before) {\n      let index = 0;\n      const len = this.listenerMaps.length;\n      const before = plugin.before.reduce((acc, id) => {\n        acc[id] = true;\n        acc[pluginIdRoot(id)] = true;\n        return acc;\n      }, {});\n\n      for (; index < len; index++) {\n        const otherId = this.listenerMaps[index].id;\n\n        if (before[otherId] || before[pluginIdRoot(otherId)]) {\n          break;\n        }\n      }\n\n      this.listenerMaps.splice(index, 0, {\n        id: plugin.id,\n        map: plugin.listeners\n      });\n    } else if (plugin.listeners) {\n      this.listenerMaps.push({\n        id: plugin.id,\n        map: plugin.listeners\n      });\n    }\n\n    return this;\n  }\n\n  addDocument(doc, options) {\n    // do nothing if document is already known\n    if (this.getDocIndex(doc) !== -1) {\n      return false;\n    }\n\n    const window = win.getWindow(doc);\n    options = options ? extend({}, options) : {};\n    this.documents.push({\n      doc,\n      options\n    });\n    this.events.documents.push(doc); // don't add an unload event for the main document\n    // so that the page may be cached in browser history\n\n    if (doc !== this.document) {\n      this.events.add(window, 'unload', this.onWindowUnload);\n    }\n\n    this.fire('scope:add-document', {\n      doc,\n      window,\n      scope: this,\n      options\n    });\n  }\n\n  removeDocument(doc) {\n    const index = this.getDocIndex(doc);\n    const window = win.getWindow(doc);\n    const options = this.documents[index].options;\n    this.events.remove(window, 'unload', this.onWindowUnload);\n    this.documents.splice(index, 1);\n    this.events.documents.splice(index, 1);\n    this.fire('scope:remove-document', {\n      doc,\n      window,\n      scope: this,\n      options\n    });\n  }\n\n  getDocIndex(doc) {\n    for (let i = 0; i < this.documents.length; i++) {\n      if (this.documents[i].doc === doc) {\n        return i;\n      }\n    }\n\n    return -1;\n  }\n\n  getDocOptions(doc) {\n    const docIndex = this.getDocIndex(doc);\n    return docIndex === -1 ? null : this.documents[docIndex].options;\n  }\n\n  now() {\n    return (this.window.Date || Date).now();\n  }\n\n}\nexport function initScope(scope, window) {\n  scope.isInitialized = true;\n  win.init(window);\n  domObjects.init(window);\n  browser.init(window);\n  raf.init(window);\n  scope.window = window;\n  scope.document = window.document;\n  scope.usePlugin(interactions);\n  scope.usePlugin(events);\n  return scope;\n}\n\nfunction pluginIdRoot(id) {\n  return id && id.replace(/\\/.*$/, '');\n}\n//# sourceMappingURL=scope.js.map","import { Scope } from \"../core/scope.js\";\nconst scope = new Scope();\nconst interact = scope.interactStatic;\nexport default interact;\nexport const init = win => scope.init(win);\n\nif (typeof window === 'object' && !!window) {\n  init(window);\n}\n//# sourceMappingURL=index.js.map","import { Interactable } from \"../core/Interactable.js\";\nimport is from \"../utils/is.js\";\nimport { warnOnce } from \"../utils/misc.js\";\n\nfunction install(scope) {\n  const {\n    /** @lends Interactable */\n    Interactable // tslint:disable-line no-shadowed-variable\n\n  } = scope;\n\n  Interactable.prototype.getAction = function getAction(pointer, event, interaction, element) {\n    const action = defaultActionChecker(this, event, interaction, element, scope);\n\n    if (this.options.actionChecker) {\n      return this.options.actionChecker(pointer, event, action, this, element, interaction);\n    }\n\n    return action;\n  };\n  /**\n   * If the target of the `mousedown`, `pointerdown` or `touchstart` event or any\n   * of it's parents match the given CSS selector or Element, no\n   * drag/resize/gesture is started.\n   *\n   * @deprecated\n   * Don't use this method. Instead set the `ignoreFrom` option for each action\n   * or for `pointerEvents`\n   *\n   * ```js\n   * interact(targett)\n   *   .draggable({\n   *     ignoreFrom: 'input, textarea, a[href]'',\n   *   })\n   *   .pointerEvents({\n   *     ignoreFrom: '[no-pointer]',\n   *   })\n   * ```\n   *\n   * @param {string | Element | null} [newValue] a CSS selector string, an\n   * Element or `null` to not ignore any elements\n   * @return {string | Element | object} The current ignoreFrom value or this\n   * Interactable\n   */\n\n\n  Interactable.prototype.ignoreFrom = warnOnce(function (newValue) {\n    return this._backCompatOption('ignoreFrom', newValue);\n  }, 'Interactable.ignoreFrom() has been deprecated. Use Interactble.draggable({ignoreFrom: newValue}).');\n  /**\n   *\n   * A drag/resize/gesture is started only If the target of the `mousedown`,\n   * `pointerdown` or `touchstart` event or any of it's parents match the given\n   * CSS selector or Element.\n   *\n   * @deprecated\n   * Don't use this method. Instead set the `allowFrom` option for each action\n   * or for `pointerEvents`\n   *\n   * ```js\n   * interact(targett)\n   *   .resizable({\n   *     allowFrom: '.resize-handle',\n   *   .pointerEvents({\n   *     allowFrom: '.handle',,\n   *   })\n   * ```\n   *\n   * @param {string | Element | null} [newValue] a CSS selector string, an\n   * Element or `null` to allow from any element\n   * @return {string | Element | object} The current allowFrom value or this\n   * Interactable\n   */\n\n  Interactable.prototype.allowFrom = warnOnce(function (newValue) {\n    return this._backCompatOption('allowFrom', newValue);\n  }, 'Interactable.allowFrom() has been deprecated. Use Interactble.draggable({allowFrom: newValue}).');\n  /**\n   * ```js\n   * interact('.resize-drag')\n   *   .resizable(true)\n   *   .draggable(true)\n   *   .actionChecker(function (pointer, event, action, interactable, element, interaction) {\n   *\n   *     if (interact.matchesSelector(event.target, '.drag-handle')) {\n   *       // force drag with handle target\n   *       action.name = drag\n   *     }\n   *     else {\n   *       // resize from the top and right edges\n   *       action.name  = 'resize'\n   *       action.edges = { top: true, right: true }\n   *     }\n   *\n   *     return action\n   * })\n   * ```\n   *\n   * Returns or sets the function used to check action to be performed on\n   * pointerDown\n   *\n   * @param {function | null} [checker] A function which takes a pointer event,\n   * defaultAction string, interactable, element and interaction as parameters\n   * and returns an object with name property 'drag' 'resize' or 'gesture' and\n   * optionally an `edges` object with boolean 'top', 'left', 'bottom' and right\n   * props.\n   * @return {Function | Interactable} The checker function or this Interactable\n   */\n\n  Interactable.prototype.actionChecker = actionChecker;\n  /**\n   * Returns or sets whether the the cursor should be changed depending on the\n   * action that would be performed if the mouse were pressed and dragged.\n   *\n   * @param {boolean} [newValue]\n   * @return {boolean | Interactable} The current setting or this Interactable\n   */\n\n  Interactable.prototype.styleCursor = styleCursor;\n}\n\nfunction defaultActionChecker(interactable, event, interaction, element, scope) {\n  const rect = interactable.getRect(element);\n  const buttons = event.buttons || {\n    0: 1,\n    1: 4,\n    3: 8,\n    4: 16\n  }[event.button];\n  const arg = {\n    action: null,\n    interactable,\n    interaction,\n    element,\n    rect,\n    buttons\n  };\n  scope.fire('auto-start:check', arg);\n  return arg.action;\n}\n\nfunction styleCursor(newValue) {\n  if (is.bool(newValue)) {\n    this.options.styleCursor = newValue;\n    return this;\n  }\n\n  if (newValue === null) {\n    delete this.options.styleCursor;\n    return this;\n  }\n\n  return this.options.styleCursor;\n}\n\nfunction actionChecker(checker) {\n  if (is.func(checker)) {\n    this.options.actionChecker = checker;\n    return this;\n  }\n\n  if (checker === null) {\n    delete this.options.actionChecker;\n    return this;\n  }\n\n  return this.options.actionChecker;\n}\n\nexport default {\n  id: 'auto-start/interactableMethods',\n  install\n};\n//# sourceMappingURL=InteractableMethods.js.map","import { Scope, SignalArgs } from \"../core/scope.js\";\nimport * as domUtils from \"../utils/domUtils.js\";\nimport extend from \"../utils/extend.js\";\nimport is from \"../utils/is.js\";\nimport { copyAction } from \"../utils/misc.js\";\nimport InteractableMethods from \"./InteractableMethods.js\";\n\nfunction install(scope) {\n  const {\n    interactStatic: interact,\n    defaults\n  } = scope;\n  scope.usePlugin(InteractableMethods);\n  defaults.base.actionChecker = null;\n  defaults.base.styleCursor = true;\n  extend(defaults.perAction, {\n    manualStart: false,\n    max: Infinity,\n    maxPerElement: 1,\n    allowFrom: null,\n    ignoreFrom: null,\n    // only allow left button by default\n    // see https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/buttons#Return_value\n    mouseButtons: 1\n  });\n  /**\n   * Returns or sets the maximum number of concurrent interactions allowed.  By\n   * default only 1 interaction is allowed at a time (for backwards\n   * compatibility). To allow multiple interactions on the same Interactables and\n   * elements, you need to enable it in the draggable, resizable and gesturable\n   * `'max'` and `'maxPerElement'` options.\n   *\n   * @alias module:interact.maxInteractions\n   *\n   * @param {number} [newValue] Any number. newValue <= 0 means no interactions.\n   */\n\n  interact.maxInteractions = newValue => maxInteractions(newValue, scope);\n\n  scope.autoStart = {\n    // Allow this many interactions to happen simultaneously\n    maxInteractions: Infinity,\n    withinInteractionLimit,\n    cursorElement: null\n  };\n}\n\nfunction prepareOnDown({\n  interaction,\n  pointer,\n  event,\n  eventTarget\n}, scope) {\n  if (interaction.interacting()) {\n    return;\n  }\n\n  const actionInfo = getActionInfo(interaction, pointer, event, eventTarget, scope);\n  prepare(interaction, actionInfo, scope);\n}\n\nfunction prepareOnMove({\n  interaction,\n  pointer,\n  event,\n  eventTarget\n}, scope) {\n  if (interaction.pointerType !== 'mouse' || interaction.pointerIsDown || interaction.interacting()) {\n    return;\n  }\n\n  const actionInfo = getActionInfo(interaction, pointer, event, eventTarget, scope);\n  prepare(interaction, actionInfo, scope);\n}\n\nfunction startOnMove(arg, scope) {\n  const {\n    interaction\n  } = arg;\n\n  if (!interaction.pointerIsDown || interaction.interacting() || !interaction.pointerWasMoved || !interaction.prepared.name) {\n    return;\n  }\n\n  scope.fire('autoStart:before-start', arg);\n  const {\n    interactable\n  } = interaction;\n  const actionName = interaction.prepared.name;\n\n  if (actionName && interactable) {\n    // check manualStart and interaction limit\n    if (interactable.options[actionName].manualStart || !withinInteractionLimit(interactable, interaction.element, interaction.prepared, scope)) {\n      interaction.stop();\n    } else {\n      interaction.start(interaction.prepared, interactable, interaction.element);\n      setInteractionCursor(interaction, scope);\n    }\n  }\n}\n\nfunction clearCursorOnStop({\n  interaction\n}, scope) {\n  const {\n    interactable\n  } = interaction;\n\n  if (interactable && interactable.options.styleCursor) {\n    setCursor(interaction.element, '', scope);\n  }\n} // Check if the current interactable supports the action.\n// If so, return the validated action. Otherwise, return null\n\n\nfunction validateAction(action, interactable, element, eventTarget, scope) {\n  if (interactable.testIgnoreAllow(interactable.options[action.name], element, eventTarget) && interactable.options[action.name].enabled && withinInteractionLimit(interactable, element, action, scope)) {\n    return action;\n  }\n\n  return null;\n}\n\nfunction validateMatches(interaction, pointer, event, matches, matchElements, eventTarget, scope) {\n  for (let i = 0, len = matches.length; i < len; i++) {\n    const match = matches[i];\n    const matchElement = matchElements[i];\n    const matchAction = match.getAction(pointer, event, interaction, matchElement);\n\n    if (!matchAction) {\n      continue;\n    }\n\n    const action = validateAction(matchAction, match, matchElement, eventTarget, scope);\n\n    if (action) {\n      return {\n        action,\n        interactable: match,\n        element: matchElement\n      };\n    }\n  }\n\n  return {\n    action: null,\n    interactable: null,\n    element: null\n  };\n}\n\nfunction getActionInfo(interaction, pointer, event, eventTarget, scope) {\n  let matches = [];\n  let matchElements = [];\n  let element = eventTarget;\n\n  function pushMatches(interactable) {\n    matches.push(interactable);\n    matchElements.push(element);\n  }\n\n  while (is.element(element)) {\n    matches = [];\n    matchElements = [];\n    scope.interactables.forEachMatch(element, pushMatches);\n    const actionInfo = validateMatches(interaction, pointer, event, matches, matchElements, eventTarget, scope);\n\n    if (actionInfo.action && !actionInfo.interactable.options[actionInfo.action.name].manualStart) {\n      return actionInfo;\n    }\n\n    element = domUtils.parentNode(element);\n  }\n\n  return {\n    action: null,\n    interactable: null,\n    element: null\n  };\n}\n\nfunction prepare(interaction, {\n  action,\n  interactable,\n  element\n}, scope) {\n  action = action || {\n    name: null\n  };\n  interaction.interactable = interactable;\n  interaction.element = element;\n  copyAction(interaction.prepared, action);\n  interaction.rect = interactable && action.name ? interactable.getRect(element) : null;\n  setInteractionCursor(interaction, scope);\n  scope.fire('autoStart:prepared', {\n    interaction\n  });\n}\n\nfunction withinInteractionLimit(interactable, element, action, scope) {\n  const options = interactable.options;\n  const maxActions = options[action.name].max;\n  const maxPerElement = options[action.name].maxPerElement;\n  const autoStartMax = scope.autoStart.maxInteractions;\n  let activeInteractions = 0;\n  let interactableCount = 0;\n  let elementCount = 0; // no actions if any of these values == 0\n\n  if (!(maxActions && maxPerElement && autoStartMax)) {\n    return false;\n  }\n\n  for (const interaction of scope.interactions.list) {\n    const otherAction = interaction.prepared.name;\n\n    if (!interaction.interacting()) {\n      continue;\n    }\n\n    activeInteractions++;\n\n    if (activeInteractions >= autoStartMax) {\n      return false;\n    }\n\n    if (interaction.interactable !== interactable) {\n      continue;\n    }\n\n    interactableCount += otherAction === action.name ? 1 : 0;\n\n    if (interactableCount >= maxActions) {\n      return false;\n    }\n\n    if (interaction.element === element) {\n      elementCount++;\n\n      if (otherAction === action.name && elementCount >= maxPerElement) {\n        return false;\n      }\n    }\n  }\n\n  return autoStartMax > 0;\n}\n\nfunction maxInteractions(newValue, scope) {\n  if (is.number(newValue)) {\n    scope.autoStart.maxInteractions = newValue;\n    return this;\n  }\n\n  return scope.autoStart.maxInteractions;\n}\n\nfunction setCursor(element, cursor, scope) {\n  const {\n    cursorElement: prevCursorElement\n  } = scope.autoStart;\n\n  if (prevCursorElement && prevCursorElement !== element) {\n    prevCursorElement.style.cursor = '';\n  }\n\n  element.ownerDocument.documentElement.style.cursor = cursor;\n  element.style.cursor = cursor;\n  scope.autoStart.cursorElement = cursor ? element : null;\n}\n\nfunction setInteractionCursor(interaction, scope) {\n  const {\n    interactable,\n    element,\n    prepared\n  } = interaction;\n\n  if (!(interaction.pointerType === 'mouse' && interactable && interactable.options.styleCursor)) {\n    // clear previous target element cursor\n    if (scope.autoStart.cursorElement) {\n      setCursor(scope.autoStart.cursorElement, '', scope);\n    }\n\n    return;\n  }\n\n  let cursor = '';\n\n  if (prepared.name) {\n    const cursorChecker = interactable.options[prepared.name].cursorChecker;\n\n    if (is.func(cursorChecker)) {\n      cursor = cursorChecker(prepared, interactable, element, interaction._interacting);\n    } else {\n      cursor = scope.actions.map[prepared.name].getCursor(prepared);\n    }\n  }\n\n  setCursor(interaction.element, cursor || '', scope);\n}\n\nconst autoStart = {\n  id: 'auto-start/base',\n  before: ['actions'],\n  install,\n  listeners: {\n    'interactions:down': prepareOnDown,\n    'interactions:move': (arg, scope) => {\n      prepareOnMove(arg, scope);\n      startOnMove(arg, scope);\n    },\n    'interactions:stop': clearCursorOnStop\n  },\n  maxInteractions,\n  withinInteractionLimit,\n  validateAction\n};\nexport default autoStart;\n//# sourceMappingURL=base.js.map","import { parentNode } from \"../utils/domUtils.js\";\nimport is from \"../utils/is.js\";\nimport autoStart from \"./base.js\";\n\nfunction beforeStart({\n  interaction,\n  eventTarget,\n  dx,\n  dy\n}, scope) {\n  if (interaction.prepared.name !== 'drag') {\n    return;\n  } // check if a drag is in the correct axis\n\n\n  const absX = Math.abs(dx);\n  const absY = Math.abs(dy);\n  const targetOptions = interaction.interactable.options.drag;\n  const startAxis = targetOptions.startAxis;\n  const currentAxis = absX > absY ? 'x' : absX < absY ? 'y' : 'xy';\n  interaction.prepared.axis = targetOptions.lockAxis === 'start' ? currentAxis[0] // always lock to one axis even if currentAxis === 'xy'\n  : targetOptions.lockAxis; // if the movement isn't in the startAxis of the interactable\n\n  if (currentAxis !== 'xy' && startAxis !== 'xy' && startAxis !== currentAxis) {\n    // cancel the prepared action\n    interaction.prepared.name = null; // then try to get a drag from another ineractable\n\n    let element = eventTarget;\n\n    const getDraggable = function (interactable) {\n      if (interactable === interaction.interactable) {\n        return;\n      }\n\n      const options = interaction.interactable.options.drag;\n\n      if (!options.manualStart && interactable.testIgnoreAllow(options, element, eventTarget)) {\n        const action = interactable.getAction(interaction.downPointer, interaction.downEvent, interaction, element);\n\n        if (action && action.name === 'drag' && checkStartAxis(currentAxis, interactable) && autoStart.validateAction(action, interactable, element, eventTarget, scope)) {\n          return interactable;\n        }\n      }\n    }; // check all interactables\n\n\n    while (is.element(element)) {\n      const interactable = scope.interactables.forEachMatch(element, getDraggable);\n\n      if (interactable) {\n        interaction.prepared.name = 'drag';\n        interaction.interactable = interactable;\n        interaction.element = element;\n        break;\n      }\n\n      element = parentNode(element);\n    }\n  }\n}\n\nfunction checkStartAxis(startAxis, interactable) {\n  if (!interactable) {\n    return false;\n  }\n\n  const thisAxis = interactable.options.drag.startAxis;\n  return startAxis === 'xy' || thisAxis === 'xy' || thisAxis === startAxis;\n}\n\nexport default {\n  id: 'auto-start/dragAxis',\n  listeners: {\n    'autoStart:before-start': beforeStart\n  }\n};\n//# sourceMappingURL=dragAxis.js.map","import Interaction from \"../core/Interaction.js\";\nimport basePlugin from \"./base.js\";\n\nfunction install(scope) {\n  const {\n    defaults\n  } = scope;\n  scope.usePlugin(basePlugin);\n  defaults.perAction.hold = 0;\n  defaults.perAction.delay = 0;\n}\n\nfunction getHoldDuration(interaction) {\n  const actionName = interaction.prepared && interaction.prepared.name;\n\n  if (!actionName) {\n    return null;\n  }\n\n  const options = interaction.interactable.options;\n  return options[actionName].hold || options[actionName].delay;\n}\n\nconst hold = {\n  id: 'auto-start/hold',\n  install,\n  listeners: {\n    'interactions:new': ({\n      interaction\n    }) => {\n      interaction.autoStartHoldTimer = null;\n    },\n    'autoStart:prepared': ({\n      interaction\n    }) => {\n      const hold = getHoldDuration(interaction);\n\n      if (hold > 0) {\n        interaction.autoStartHoldTimer = setTimeout(() => {\n          interaction.start(interaction.prepared, interaction.interactable, interaction.element);\n        }, hold);\n      }\n    },\n    'interactions:move': ({\n      interaction,\n      duplicate\n    }) => {\n      if (interaction.autoStartHoldTimer && interaction.pointerWasMoved && !duplicate) {\n        clearTimeout(interaction.autoStartHoldTimer);\n        interaction.autoStartHoldTimer = null;\n      }\n    },\n    // prevent regular down->move autoStart\n    'autoStart:before-start': ({\n      interaction\n    }) => {\n      const holdDuration = getHoldDuration(interaction);\n\n      if (holdDuration > 0) {\n        interaction.prepared.name = null;\n      }\n    }\n  },\n  getHoldDuration\n};\nexport default hold;\n//# sourceMappingURL=hold.js.map","import autoStart from \"./base.js\";\nimport dragAxis from \"./dragAxis.js\";\nimport hold from \"./hold.js\";\nexport default {\n  id: 'auto-start',\n\n  install(scope) {\n    scope.usePlugin(autoStart);\n    scope.usePlugin(hold);\n    scope.usePlugin(dragAxis);\n  }\n\n};\n//# sourceMappingURL=plugin.js.map","import { Interactable } from \"../../core/Interactable.js\";\nimport is from \"../../utils/is.js\";\n\nfunction install(scope) {\n  const {\n    actions,\n    Interactable,\n    defaults\n  } = scope;\n  Interactable.prototype.draggable = drag.draggable;\n  actions.map.drag = drag;\n  actions.methodDict.drag = 'draggable';\n  defaults.actions.drag = drag.defaults;\n}\n\nfunction beforeMove({\n  interaction\n}) {\n  if (interaction.prepared.name !== 'drag') {\n    return;\n  }\n\n  const axis = interaction.prepared.axis;\n\n  if (axis === 'x') {\n    interaction.coords.cur.page.y = interaction.coords.start.page.y;\n    interaction.coords.cur.client.y = interaction.coords.start.client.y;\n    interaction.coords.velocity.client.y = 0;\n    interaction.coords.velocity.page.y = 0;\n  } else if (axis === 'y') {\n    interaction.coords.cur.page.x = interaction.coords.start.page.x;\n    interaction.coords.cur.client.x = interaction.coords.start.client.x;\n    interaction.coords.velocity.client.x = 0;\n    interaction.coords.velocity.page.x = 0;\n  }\n}\n\nfunction move({\n  iEvent,\n  interaction\n}) {\n  if (interaction.prepared.name !== 'drag') {\n    return;\n  }\n\n  const axis = interaction.prepared.axis;\n\n  if (axis === 'x' || axis === 'y') {\n    const opposite = axis === 'x' ? 'y' : 'x';\n    iEvent.page[opposite] = interaction.coords.start.page[opposite];\n    iEvent.client[opposite] = interaction.coords.start.client[opposite];\n    iEvent.delta[opposite] = 0;\n  }\n}\n/**\n * ```js\n * interact(element).draggable({\n *     onstart: function (event) {},\n *     onmove : function (event) {},\n *     onend  : function (event) {},\n *\n *     // the axis in which the first movement must be\n *     // for the drag sequence to start\n *     // 'xy' by default - any direction\n *     startAxis: 'x' || 'y' || 'xy',\n *\n *     // 'xy' by default - don't restrict to one axis (move in any direction)\n *     // 'x' or 'y' to restrict movement to either axis\n *     // 'start' to restrict movement to the axis the drag started in\n *     lockAxis: 'x' || 'y' || 'xy' || 'start',\n *\n *     // max number of drags that can happen concurrently\n *     // with elements of this Interactable. Infinity by default\n *     max: Infinity,\n *\n *     // max number of drags that can target the same element+Interactable\n *     // 1 by default\n *     maxPerElement: 2\n * })\n *\n * var isDraggable = interact('element').draggable(); // true\n * ```\n *\n * Get or set whether drag actions can be performed on the target\n *\n * @alias Interactable.prototype.draggable\n *\n * @param {boolean | object} [options] true/false or An object with event\n * listeners to be fired on drag events (object makes the Interactable\n * draggable)\n * @return {boolean | Interactable} boolean indicating if this can be the\n * target of drag events, or this Interctable\n */\n\n\nconst draggable = function draggable(options) {\n  if (is.object(options)) {\n    this.options.drag.enabled = options.enabled !== false;\n    this.setPerAction('drag', options);\n    this.setOnEvents('drag', options);\n\n    if (/^(xy|x|y|start)$/.test(options.lockAxis)) {\n      this.options.drag.lockAxis = options.lockAxis;\n    }\n\n    if (/^(xy|x|y)$/.test(options.startAxis)) {\n      this.options.drag.startAxis = options.startAxis;\n    }\n\n    return this;\n  }\n\n  if (is.bool(options)) {\n    this.options.drag.enabled = options;\n    return this;\n  }\n\n  return this.options.drag;\n};\n\nconst drag = {\n  id: 'actions/drag',\n  install,\n  listeners: {\n    'interactions:before-action-move': beforeMove,\n    'interactions:action-resume': beforeMove,\n    // dragmove\n    'interactions:action-move': move,\n    'auto-start:check': arg => {\n      const {\n        interaction,\n        interactable,\n        buttons\n      } = arg;\n      const dragOptions = interactable.options.drag;\n\n      if (!(dragOptions && dragOptions.enabled) || // check mouseButton setting if the pointer is down\n      interaction.pointerIsDown && /mouse|pointer/.test(interaction.pointerType) && (buttons & interactable.options.drag.mouseButtons) === 0) {\n        return undefined;\n      }\n\n      arg.action = {\n        name: 'drag',\n        axis: dragOptions.lockAxis === 'start' ? dragOptions.startAxis : dragOptions.lockAxis\n      };\n      return false;\n    }\n  },\n  draggable,\n  beforeMove,\n  move,\n  defaults: {\n    startAxis: 'xy',\n    lockAxis: 'xy'\n  },\n\n  getCursor() {\n    return 'move';\n  }\n\n};\nexport default drag;\n//# sourceMappingURL=plugin.js.map","/* eslint-disable import/order, no-console, eol-last */\nimport interact, { init } from \"../interact/index.js\";\nimport plugin from \"./plugin.js\";\n\nif (typeof window === 'object' && !!window) {\n  init(window);\n}\n\ninteract.use(plugin);\n//# sourceMappingURL=index.js.map","import { Interactable } from \"../../core/Interactable.js\";\nimport { Interaction } from \"../../core/Interaction.js\";\nimport * as dom from \"../../utils/domUtils.js\";\nimport extend from \"../../utils/extend.js\";\nimport is from \"../../utils/is.js\";\n\nfunction install(scope) {\n  const {\n    actions,\n    browser,\n\n    /** @lends Interactable */\n    Interactable,\n    // tslint:disable-line no-shadowed-variable\n    defaults\n  } = scope; // Less Precision with touch input\n\n  resize.cursors = initCursors(browser);\n  resize.defaultMargin = browser.supportsTouch || browser.supportsPointerEvent ? 20 : 10;\n  /**\n   * ```js\n   * interact(element).resizable({\n   *   onstart: function (event) {},\n   *   onmove : function (event) {},\n   *   onend  : function (event) {},\n   *\n   *   edges: {\n   *     top   : true,       // Use pointer coords to check for resize.\n   *     left  : false,      // Disable resizing from left edge.\n   *     bottom: '.resize-s',// Resize if pointer target matches selector\n   *     right : handleEl    // Resize if pointer target is the given Element\n   *   },\n   *\n   *     // Width and height can be adjusted independently. When `true`, width and\n   *     // height are adjusted at a 1:1 ratio.\n   *     square: false,\n   *\n   *     // Width and height can be adjusted independently. When `true`, width and\n   *     // height maintain the aspect ratio they had when resizing started.\n   *     preserveAspectRatio: false,\n   *\n   *   // a value of 'none' will limit the resize rect to a minimum of 0x0\n   *   // 'negate' will allow the rect to have negative width/height\n   *   // 'reposition' will keep the width/height positive by swapping\n   *   // the top and bottom edges and/or swapping the left and right edges\n   *   invert: 'none' || 'negate' || 'reposition'\n   *\n   *   // limit multiple resizes.\n   *   // See the explanation in the {@link Interactable.draggable} example\n   *   max: Infinity,\n   *   maxPerElement: 1,\n   * })\n   *\n   * var isResizeable = interact(element).resizable()\n   * ```\n   *\n   * Gets or sets whether resize actions can be performed on the target\n   *\n   * @param {boolean | object} [options] true/false or An object with event\n   * listeners to be fired on resize events (object makes the Interactable\n   * resizable)\n   * @return {boolean | Interactable} A boolean indicating if this can be the\n   * target of resize elements, or this Interactable\n   */\n\n  Interactable.prototype.resizable = function (options) {\n    return resizable(this, options, scope);\n  };\n\n  actions.map.resize = resize;\n  actions.methodDict.resize = 'resizable';\n  defaults.actions.resize = resize.defaults;\n}\n\nfunction resizeChecker(arg) {\n  const {\n    interaction,\n    interactable,\n    element,\n    rect,\n    buttons\n  } = arg;\n\n  if (!rect) {\n    return undefined;\n  }\n\n  const page = extend({}, interaction.coords.cur.page);\n  const resizeOptions = interactable.options.resize;\n\n  if (!(resizeOptions && resizeOptions.enabled) || // check mouseButton setting if the pointer is down\n  interaction.pointerIsDown && /mouse|pointer/.test(interaction.pointerType) && (buttons & resizeOptions.mouseButtons) === 0) {\n    return undefined;\n  } // if using resize.edges\n\n\n  if (is.object(resizeOptions.edges)) {\n    const resizeEdges = {\n      left: false,\n      right: false,\n      top: false,\n      bottom: false\n    };\n\n    for (const edge in resizeEdges) {\n      resizeEdges[edge] = checkResizeEdge(edge, resizeOptions.edges[edge], page, interaction._latestPointer.eventTarget, element, rect, resizeOptions.margin || resize.defaultMargin);\n    }\n\n    resizeEdges.left = resizeEdges.left && !resizeEdges.right;\n    resizeEdges.top = resizeEdges.top && !resizeEdges.bottom;\n\n    if (resizeEdges.left || resizeEdges.right || resizeEdges.top || resizeEdges.bottom) {\n      arg.action = {\n        name: 'resize',\n        edges: resizeEdges\n      };\n    }\n  } else {\n    const right = resizeOptions.axis !== 'y' && page.x > rect.right - resize.defaultMargin;\n    const bottom = resizeOptions.axis !== 'x' && page.y > rect.bottom - resize.defaultMargin;\n\n    if (right || bottom) {\n      arg.action = {\n        name: 'resize',\n        axes: (right ? 'x' : '') + (bottom ? 'y' : '')\n      };\n    }\n  }\n\n  return arg.action ? false : undefined;\n}\n\nfunction resizable(interactable, options, scope) {\n  if (is.object(options)) {\n    interactable.options.resize.enabled = options.enabled !== false;\n    interactable.setPerAction('resize', options);\n    interactable.setOnEvents('resize', options);\n\n    if (is.string(options.axis) && /^x$|^y$|^xy$/.test(options.axis)) {\n      interactable.options.resize.axis = options.axis;\n    } else if (options.axis === null) {\n      interactable.options.resize.axis = scope.defaults.actions.resize.axis;\n    }\n\n    if (is.bool(options.preserveAspectRatio)) {\n      interactable.options.resize.preserveAspectRatio = options.preserveAspectRatio;\n    } else if (is.bool(options.square)) {\n      interactable.options.resize.square = options.square;\n    }\n\n    return interactable;\n  }\n\n  if (is.bool(options)) {\n    interactable.options.resize.enabled = options;\n    return interactable;\n  }\n\n  return interactable.options.resize;\n}\n\nfunction checkResizeEdge(name, value, page, element, interactableElement, rect, margin) {\n  // false, '', undefined, null\n  if (!value) {\n    return false;\n  } // true value, use pointer coords and element rect\n\n\n  if (value === true) {\n    // if dimensions are negative, \"switch\" edges\n    const width = is.number(rect.width) ? rect.width : rect.right - rect.left;\n    const height = is.number(rect.height) ? rect.height : rect.bottom - rect.top; // don't use margin greater than half the relevent dimension\n\n    margin = Math.min(margin, Math.abs((name === 'left' || name === 'right' ? width : height) / 2));\n\n    if (width < 0) {\n      if (name === 'left') {\n        name = 'right';\n      } else if (name === 'right') {\n        name = 'left';\n      }\n    }\n\n    if (height < 0) {\n      if (name === 'top') {\n        name = 'bottom';\n      } else if (name === 'bottom') {\n        name = 'top';\n      }\n    }\n\n    if (name === 'left') {\n      return page.x < (width >= 0 ? rect.left : rect.right) + margin;\n    }\n\n    if (name === 'top') {\n      return page.y < (height >= 0 ? rect.top : rect.bottom) + margin;\n    }\n\n    if (name === 'right') {\n      return page.x > (width >= 0 ? rect.right : rect.left) - margin;\n    }\n\n    if (name === 'bottom') {\n      return page.y > (height >= 0 ? rect.bottom : rect.top) - margin;\n    }\n  } // the remaining checks require an element\n\n\n  if (!is.element(element)) {\n    return false;\n  }\n\n  return is.element(value) // the value is an element to use as a resize handle\n  ? value === element // otherwise check if element matches value as selector\n  : dom.matchesUpTo(element, value, interactableElement);\n}\n/* eslint-disable multiline-ternary */\n\n\nfunction initCursors(browser) {\n  return browser.isIe9 ? {\n    x: 'e-resize',\n    y: 's-resize',\n    xy: 'se-resize',\n    top: 'n-resize',\n    left: 'w-resize',\n    bottom: 's-resize',\n    right: 'e-resize',\n    topleft: 'se-resize',\n    bottomright: 'se-resize',\n    topright: 'ne-resize',\n    bottomleft: 'ne-resize'\n  } : {\n    x: 'ew-resize',\n    y: 'ns-resize',\n    xy: 'nwse-resize',\n    top: 'ns-resize',\n    left: 'ew-resize',\n    bottom: 'ns-resize',\n    right: 'ew-resize',\n    topleft: 'nwse-resize',\n    bottomright: 'nwse-resize',\n    topright: 'nesw-resize',\n    bottomleft: 'nesw-resize'\n  };\n}\n/* eslint-enable multiline-ternary */\n\n\nfunction start({\n  iEvent,\n  interaction\n}) {\n  if (interaction.prepared.name !== 'resize' || !interaction.prepared.edges) {\n    return;\n  }\n\n  const resizeEvent = iEvent;\n  const rect = interaction.rect;\n  interaction._rects = {\n    start: extend({}, rect),\n    corrected: extend({}, rect),\n    previous: extend({}, rect),\n    delta: {\n      left: 0,\n      right: 0,\n      width: 0,\n      top: 0,\n      bottom: 0,\n      height: 0\n    }\n  };\n  resizeEvent.edges = interaction.prepared.edges;\n  resizeEvent.rect = interaction._rects.corrected;\n  resizeEvent.deltaRect = interaction._rects.delta;\n}\n\nfunction move({\n  iEvent,\n  interaction\n}) {\n  if (interaction.prepared.name !== 'resize' || !interaction.prepared.edges) {\n    return;\n  }\n\n  const resizeEvent = iEvent;\n  const resizeOptions = interaction.interactable.options.resize;\n  const invert = resizeOptions.invert;\n  const invertible = invert === 'reposition' || invert === 'negate';\n  const current = interaction.rect;\n  const {\n    start: startRect,\n    corrected,\n    delta: deltaRect,\n    previous\n  } = interaction._rects;\n  extend(previous, corrected);\n\n  if (invertible) {\n    // if invertible, copy the current rect\n    extend(corrected, current);\n\n    if (invert === 'reposition') {\n      // swap edge values if necessary to keep width/height positive\n      if (corrected.top > corrected.bottom) {\n        const swap = corrected.top;\n        corrected.top = corrected.bottom;\n        corrected.bottom = swap;\n      }\n\n      if (corrected.left > corrected.right) {\n        const swap = corrected.left;\n        corrected.left = corrected.right;\n        corrected.right = swap;\n      }\n    }\n  } else {\n    // if not invertible, restrict to minimum of 0x0 rect\n    corrected.top = Math.min(current.top, startRect.bottom);\n    corrected.bottom = Math.max(current.bottom, startRect.top);\n    corrected.left = Math.min(current.left, startRect.right);\n    corrected.right = Math.max(current.right, startRect.left);\n  }\n\n  corrected.width = corrected.right - corrected.left;\n  corrected.height = corrected.bottom - corrected.top;\n\n  for (const edge in corrected) {\n    deltaRect[edge] = corrected[edge] - previous[edge];\n  }\n\n  resizeEvent.edges = interaction.prepared.edges;\n  resizeEvent.rect = corrected;\n  resizeEvent.deltaRect = deltaRect;\n}\n\nfunction end({\n  iEvent,\n  interaction\n}) {\n  if (interaction.prepared.name !== 'resize' || !interaction.prepared.edges) {\n    return;\n  }\n\n  const resizeEvent = iEvent;\n  resizeEvent.edges = interaction.prepared.edges;\n  resizeEvent.rect = interaction._rects.corrected;\n  resizeEvent.deltaRect = interaction._rects.delta;\n}\n\nfunction updateEventAxes({\n  iEvent,\n  interaction\n}) {\n  if (interaction.prepared.name !== 'resize' || !interaction.resizeAxes) {\n    return;\n  }\n\n  const options = interaction.interactable.options;\n  const resizeEvent = iEvent;\n\n  if (options.resize.square) {\n    if (interaction.resizeAxes === 'y') {\n      resizeEvent.delta.x = resizeEvent.delta.y;\n    } else {\n      resizeEvent.delta.y = resizeEvent.delta.x;\n    }\n\n    resizeEvent.axes = 'xy';\n  } else {\n    resizeEvent.axes = interaction.resizeAxes;\n\n    if (interaction.resizeAxes === 'x') {\n      resizeEvent.delta.y = 0;\n    } else if (interaction.resizeAxes === 'y') {\n      resizeEvent.delta.x = 0;\n    }\n  }\n}\n\nconst resize = {\n  id: 'actions/resize',\n  before: ['actions/drag'],\n  install,\n  listeners: {\n    'interactions:new': ({\n      interaction\n    }) => {\n      interaction.resizeAxes = 'xy';\n    },\n    'interactions:action-start': arg => {\n      start(arg);\n      updateEventAxes(arg);\n    },\n    'interactions:action-move': arg => {\n      move(arg);\n      updateEventAxes(arg);\n    },\n    'interactions:action-end': end,\n    'auto-start:check': resizeChecker\n  },\n  defaults: {\n    square: false,\n    preserveAspectRatio: false,\n    axis: 'xy',\n    // use default margin\n    margin: NaN,\n    // object with props left, right, top, bottom which are\n    // true/false values to resize when the pointer is over that edge,\n    // CSS selectors to match the handles for each direction\n    // or the Elements for each handle\n    edges: null,\n    // a value of 'none' will limit the resize rect to a minimum of 0x0\n    // 'negate' will alow the rect to have negative width/height\n    // 'reposition' will keep the width/height positive by swapping\n    // the top and bottom edges and/or swapping the left and right edges\n    invert: 'none'\n  },\n  cursors: null,\n\n  getCursor({\n    edges,\n    axis,\n    name\n  }) {\n    const cursors = resize.cursors;\n    let result = null;\n\n    if (axis) {\n      result = cursors[name + axis];\n    } else if (edges) {\n      let cursorKey = '';\n\n      for (const edge of ['top', 'bottom', 'left', 'right']) {\n        if (edges[edge]) {\n          cursorKey += edge;\n        }\n      }\n\n      result = cursors[cursorKey];\n    }\n\n    return result;\n  },\n\n  defaultMargin: null\n};\nexport default resize;\n//# sourceMappingURL=plugin.js.map","/* eslint-disable import/order, no-console, eol-last */\nimport interact, { init } from \"../../interact/index.js\";\nimport plugin from \"./plugin.js\";\n\nif (typeof window === 'object' && !!window) {\n  init(window);\n}\n\ninteract.use(plugin);\n//# sourceMappingURL=index.js.map","/* eslint-disable import/order, no-console, eol-last */\nimport interact, { init } from \"../../interact/index.js\";\nimport plugin from \"./plugin.js\";\n\nif (typeof window === 'object' && !!window) {\n  init(window);\n}\n\ninteract.use(plugin);\n//# sourceMappingURL=index.js.map","export default (() => {});\n//# sourceMappingURL=edgeTarget.js.map","export default (() => {});\n//# sourceMappingURL=elements.js.map","export default (grid => {\n  const coordFields = [['x', 'y'], ['left', 'top'], ['right', 'bottom'], ['width', 'height']].filter(([xField, yField]) => xField in grid || yField in grid);\n\n  const gridFunc = (x, y) => {\n    const {\n      range,\n      limits = {\n        left: -Infinity,\n        right: Infinity,\n        top: -Infinity,\n        bottom: Infinity\n      },\n      offset = {\n        x: 0,\n        y: 0\n      }\n    } = grid;\n    const result = {\n      range,\n      grid,\n      x: null,\n      y: null\n    };\n\n    for (const [xField, yField] of coordFields) {\n      const gridx = Math.round((x - offset.x) / grid[xField]);\n      const gridy = Math.round((y - offset.y) / grid[yField]);\n      result[xField] = Math.max(limits.left, Math.min(limits.right, gridx * grid[xField] + offset.x));\n      result[yField] = Math.max(limits.top, Math.min(limits.bottom, gridy * grid[yField] + offset.y));\n    }\n\n    return result;\n  };\n\n  gridFunc.grid = grid;\n  gridFunc.coordFields = coordFields;\n  return gridFunc;\n});\n//# sourceMappingURL=grid.js.map","import extend from \"../utils/extend.js\";\nimport * as allSnappers from \"./all.js\";\nconst snappersPlugin = {\n  id: 'snappers',\n\n  install(scope) {\n    const {\n      interactStatic: interact\n    } = scope;\n    interact.snappers = extend(interact.snappers || {}, allSnappers);\n    interact.createSnapGrid = interact.snappers.grid;\n  }\n\n};\nexport default snappersPlugin;\n//# sourceMappingURL=plugin.js.map","import clone from \"../utils/clone.js\";\nimport extend from \"../utils/extend.js\";\nimport * as rectUtils from \"../utils/rect.js\";\nexport default class Modification {\n  constructor(interaction) {\n    this.states = [];\n    this.startOffset = {\n      left: 0,\n      right: 0,\n      top: 0,\n      bottom: 0\n    };\n    this.startDelta = null;\n    this.result = null;\n    this.endResult = null;\n    this.edges = void 0;\n    this.interaction = void 0;\n    this.interaction = interaction;\n    this.result = createResult();\n  }\n\n  start({\n    phase\n  }, pageCoords) {\n    const {\n      interaction\n    } = this;\n    const modifierList = getModifierList(interaction);\n    this.prepareStates(modifierList);\n    this.edges = extend({}, interaction.edges);\n    this.startOffset = getRectOffset(interaction.rect, pageCoords);\n    this.startDelta = {\n      x: 0,\n      y: 0\n    };\n    const arg = {\n      phase,\n      pageCoords,\n      preEnd: false\n    };\n    this.result = createResult();\n    this.startAll(arg);\n    const result = this.result = this.setAll(arg);\n    return result;\n  }\n\n  fillArg(arg) {\n    const {\n      interaction\n    } = this;\n    arg.interaction = interaction;\n    arg.interactable = interaction.interactable;\n    arg.element = interaction.element;\n    arg.rect = arg.rect || interaction.rect;\n    arg.edges = this.edges;\n    arg.startOffset = this.startOffset;\n  }\n\n  startAll(arg) {\n    this.fillArg(arg);\n\n    for (const state of this.states) {\n      if (state.methods.start) {\n        arg.state = state;\n        state.methods.start(arg);\n      }\n    }\n  }\n\n  setAll(arg) {\n    this.fillArg(arg);\n    const {\n      phase,\n      preEnd,\n      skipModifiers,\n      rect: unmodifiedRect\n    } = arg;\n    arg.coords = extend({}, arg.pageCoords);\n    arg.rect = extend({}, unmodifiedRect);\n    const states = skipModifiers ? this.states.slice(skipModifiers) : this.states;\n    const newResult = createResult(arg.coords, arg.rect);\n\n    for (const state of states) {\n      const {\n        options\n      } = state;\n      const lastModifierCoords = extend({}, arg.coords);\n      let returnValue = null;\n\n      if (state.methods.set && this.shouldDo(options, preEnd, phase)) {\n        arg.state = state;\n        returnValue = state.methods.set(arg);\n        rectUtils.addEdges(this.interaction.edges, arg.rect, {\n          x: arg.coords.x - lastModifierCoords.x,\n          y: arg.coords.y - lastModifierCoords.y\n        });\n      }\n\n      newResult.eventProps.push(returnValue);\n    }\n\n    newResult.delta.x = arg.coords.x - arg.pageCoords.x;\n    newResult.delta.y = arg.coords.y - arg.pageCoords.y;\n    newResult.rectDelta.left = arg.rect.left - unmodifiedRect.left;\n    newResult.rectDelta.right = arg.rect.right - unmodifiedRect.right;\n    newResult.rectDelta.top = arg.rect.top - unmodifiedRect.top;\n    newResult.rectDelta.bottom = arg.rect.bottom - unmodifiedRect.bottom;\n    const prevCoords = this.result.coords;\n    const prevRect = this.result.rect;\n\n    if (prevCoords && prevRect) {\n      const rectChanged = newResult.rect.left !== prevRect.left || newResult.rect.right !== prevRect.right || newResult.rect.top !== prevRect.top || newResult.rect.bottom !== prevRect.bottom;\n      newResult.changed = rectChanged || prevCoords.x !== newResult.coords.x || prevCoords.y !== newResult.coords.y;\n    }\n\n    return newResult;\n  }\n\n  applyToInteraction(arg) {\n    const {\n      interaction\n    } = this;\n    const {\n      phase\n    } = arg;\n    const curCoords = interaction.coords.cur;\n    const startCoords = interaction.coords.start;\n    const {\n      result,\n      startDelta\n    } = this;\n    const curDelta = result.delta;\n\n    if (phase === 'start') {\n      extend(this.startDelta, result.delta);\n    }\n\n    for (const [coordsSet, delta] of [[startCoords, startDelta], [curCoords, curDelta]]) {\n      coordsSet.page.x += delta.x;\n      coordsSet.page.y += delta.y;\n      coordsSet.client.x += delta.x;\n      coordsSet.client.y += delta.y;\n    }\n\n    const {\n      rectDelta\n    } = this.result;\n    const rect = arg.rect || interaction.rect;\n    rect.left += rectDelta.left;\n    rect.right += rectDelta.right;\n    rect.top += rectDelta.top;\n    rect.bottom += rectDelta.bottom;\n    rect.width = rect.right - rect.left;\n    rect.height = rect.bottom - rect.top;\n  }\n\n  setAndApply(arg) {\n    const {\n      interaction\n    } = this;\n    const {\n      phase,\n      preEnd,\n      skipModifiers\n    } = arg;\n    const result = this.setAll({\n      preEnd,\n      phase,\n      pageCoords: arg.modifiedCoords || interaction.coords.cur.page\n    });\n    this.result = result; // don't fire an action move if a modifier would keep the event in the same\n    // cordinates as before\n\n    if (!result.changed && (!skipModifiers || skipModifiers < this.states.length) && interaction.interacting()) {\n      return false;\n    }\n\n    if (arg.modifiedCoords) {\n      const {\n        page\n      } = interaction.coords.cur;\n      const adjustment = {\n        x: arg.modifiedCoords.x - page.x,\n        y: arg.modifiedCoords.y - page.y\n      };\n      result.coords.x += adjustment.x;\n      result.coords.y += adjustment.y;\n      result.delta.x += adjustment.x;\n      result.delta.y += adjustment.y;\n    }\n\n    this.applyToInteraction(arg);\n  }\n\n  beforeEnd(arg) {\n    const {\n      interaction,\n      event\n    } = arg;\n    const states = this.states;\n\n    if (!states || !states.length) {\n      return;\n    }\n\n    let doPreend = false;\n\n    for (const state of states) {\n      arg.state = state;\n      const {\n        options,\n        methods\n      } = state;\n      const endPosition = methods.beforeEnd && methods.beforeEnd(arg);\n\n      if (endPosition) {\n        this.endResult = endPosition;\n        return false;\n      }\n\n      doPreend = doPreend || !doPreend && this.shouldDo(options, true, arg.phase, true);\n    }\n\n    if (doPreend) {\n      // trigger a final modified move before ending\n      interaction.move({\n        event,\n        preEnd: true\n      });\n    }\n  }\n\n  stop(arg) {\n    const {\n      interaction\n    } = arg;\n\n    if (!this.states || !this.states.length) {\n      return;\n    }\n\n    const modifierArg = extend({\n      states: this.states,\n      interactable: interaction.interactable,\n      element: interaction.element,\n      rect: null\n    }, arg);\n    this.fillArg(modifierArg);\n\n    for (const state of this.states) {\n      modifierArg.state = state;\n\n      if (state.methods.stop) {\n        state.methods.stop(modifierArg);\n      }\n    }\n\n    this.states = null;\n    this.endResult = null;\n  }\n\n  prepareStates(modifierList) {\n    this.states = [];\n\n    for (let index = 0; index < modifierList.length; index++) {\n      const {\n        options,\n        methods,\n        name\n      } = modifierList[index];\n      this.states.push({\n        options,\n        methods,\n        index,\n        name\n      });\n    }\n\n    return this.states;\n  }\n\n  restoreInteractionCoords({\n    interaction: {\n      coords,\n      rect,\n      modification\n    }\n  }) {\n    if (!modification.result) {\n      return;\n    }\n\n    const {\n      startDelta\n    } = modification;\n    const {\n      delta: curDelta,\n      rectDelta\n    } = modification.result;\n    const coordsAndDeltas = [[coords.start, startDelta], [coords.cur, curDelta]];\n\n    for (const [coordsSet, delta] of coordsAndDeltas) {\n      coordsSet.page.x -= delta.x;\n      coordsSet.page.y -= delta.y;\n      coordsSet.client.x -= delta.x;\n      coordsSet.client.y -= delta.y;\n    }\n\n    rect.left -= rectDelta.left;\n    rect.right -= rectDelta.right;\n    rect.top -= rectDelta.top;\n    rect.bottom -= rectDelta.bottom;\n  }\n\n  shouldDo(options, preEnd, phase, requireEndOnly) {\n    if ( // ignore disabled modifiers\n    !options || options.enabled === false || // check if we require endOnly option to fire move before end\n    requireEndOnly && !options.endOnly || // don't apply endOnly modifiers when not ending\n    options.endOnly && !preEnd || // check if modifier should run be applied on start\n    phase === 'start' && !options.setStart) {\n      return false;\n    }\n\n    return true;\n  }\n\n  copyFrom(other) {\n    this.startOffset = other.startOffset;\n    this.startDelta = other.startDelta;\n    this.edges = other.edges;\n    this.states = other.states.map(s => clone(s));\n    this.result = createResult(extend({}, other.result.coords), extend({}, other.result.rect));\n  }\n\n  destroy() {\n    for (const prop in this) {\n      this[prop] = null;\n    }\n  }\n\n}\n\nfunction createResult(coords, rect) {\n  return {\n    rect,\n    coords,\n    delta: {\n      x: 0,\n      y: 0\n    },\n    rectDelta: {\n      left: 0,\n      right: 0,\n      top: 0,\n      bottom: 0\n    },\n    eventProps: [],\n    changed: true\n  };\n}\n\nfunction getModifierList(interaction) {\n  const actionOptions = interaction.interactable.options[interaction.prepared.name];\n  const actionModifiers = actionOptions.modifiers;\n\n  if (actionModifiers && actionModifiers.length) {\n    return actionModifiers;\n  }\n\n  return ['snap', 'snapSize', 'snapEdges', 'restrict', 'restrictEdges', 'restrictSize'].map(type => {\n    const options = actionOptions[type];\n    return options && options.enabled && {\n      options,\n      methods: options._methods\n    };\n  }).filter(m => !!m);\n}\n\nexport function getRectOffset(rect, coords) {\n  return rect ? {\n    left: coords.x - rect.left,\n    top: coords.y - rect.top,\n    right: rect.right - coords.x,\n    bottom: rect.bottom - coords.y\n  } : {\n    left: 0,\n    top: 0,\n    right: 0,\n    bottom: 0\n  };\n}\n//# sourceMappingURL=Modification.js.map","import { InteractEvent } from \"../core/InteractEvent.js\";\nimport Interaction from \"../core/Interaction.js\";\nimport Modification from \"./Modification.js\";\nexport function makeModifier(module, name) {\n  const {\n    defaults\n  } = module;\n  const methods = {\n    start: module.start,\n    set: module.set,\n    beforeEnd: module.beforeEnd,\n    stop: module.stop\n  };\n\n  const modifier = _options => {\n    const options = _options || {};\n    options.enabled = options.enabled !== false; // add missing defaults to options\n\n    for (const prop in defaults) {\n      if (!(prop in options)) {\n        options[prop] = defaults[prop];\n      }\n    }\n\n    const m = {\n      options,\n      methods,\n      name,\n      enable: () => {\n        options.enabled = true;\n        return m;\n      },\n      disable: () => {\n        options.enabled = false;\n        return m;\n      }\n    };\n    return m;\n  };\n\n  if (name && typeof name === 'string') {\n    // for backwrads compatibility\n    modifier._defaults = defaults;\n    modifier._methods = methods;\n  }\n\n  return modifier;\n}\nexport function addEventModifiers({\n  iEvent,\n  interaction: {\n    modification: {\n      result\n    }\n  }\n}) {\n  if (result) {\n    iEvent.modifiers = result.eventProps;\n  }\n}\nconst modifiersBase = {\n  id: 'modifiers/base',\n  before: ['actions'],\n  install: scope => {\n    scope.defaults.perAction.modifiers = [];\n  },\n  listeners: {\n    'interactions:new': ({\n      interaction\n    }) => {\n      interaction.modification = new Modification(interaction);\n    },\n    'interactions:before-action-start': arg => {\n      const {\n        modification\n      } = arg.interaction;\n      modification.start(arg, arg.interaction.coords.start.page);\n      arg.interaction.edges = modification.edges;\n      modification.applyToInteraction(arg);\n    },\n    'interactions:before-action-move': arg => arg.interaction.modification.setAndApply(arg),\n    'interactions:before-action-end': arg => arg.interaction.modification.beforeEnd(arg),\n    'interactions:action-start': addEventModifiers,\n    'interactions:action-move': addEventModifiers,\n    'interactions:action-end': addEventModifiers,\n    'interactions:after-action-start': arg => arg.interaction.modification.restoreInteractionCoords(arg),\n    'interactions:after-action-move': arg => arg.interaction.modification.restoreInteractionCoords(arg),\n    'interactions:stop': arg => arg.interaction.modification.stop(arg)\n  }\n};\nexport default modifiersBase;\n//# sourceMappingURL=base.js.map","/**\n * @module modifiers/aspectRatio\n *\n * @description\n * This module forces elements to be resized with a specified dx/dy ratio.\n *\n * ```js\n * interact(target).resizable({\n *   modifiers: [\n *     interact.modifiers.snapSize({\n *       targets: [ interact.snappers.grid({ x: 20, y: 20 }) ],\n *     }),\n *     interact.aspectRatio({ ratio: 'preserve' }),\n *   ],\n * });\n * ```\n */\nimport extend from \"../utils/extend.js\";\nimport { addEdges } from \"../utils/rect.js\";\nimport Modification from \"./Modification.js\";\nimport { makeModifier } from \"./base.js\";\nconst aspectRatio = {\n  start(arg) {\n    const {\n      state,\n      rect,\n      edges: originalEdges,\n      pageCoords: coords\n    } = arg;\n    let {\n      ratio\n    } = state.options;\n    const {\n      equalDelta,\n      modifiers\n    } = state.options;\n\n    if (ratio === 'preserve') {\n      ratio = rect.width / rect.height;\n    }\n\n    state.startCoords = extend({}, coords);\n    state.startRect = extend({}, rect);\n    state.ratio = ratio;\n    state.equalDelta = equalDelta;\n    const linkedEdges = state.linkedEdges = {\n      top: originalEdges.top || originalEdges.left && !originalEdges.bottom,\n      left: originalEdges.left || originalEdges.top && !originalEdges.right,\n      bottom: originalEdges.bottom || originalEdges.right && !originalEdges.top,\n      right: originalEdges.right || originalEdges.bottom && !originalEdges.left\n    };\n    state.xIsPrimaryAxis = !!(originalEdges.left || originalEdges.right);\n\n    if (state.equalDelta) {\n      state.edgeSign = (linkedEdges.left ? 1 : -1) * (linkedEdges.top ? 1 : -1);\n    } else {\n      const negativeSecondaryEdge = state.xIsPrimaryAxis ? linkedEdges.top : linkedEdges.left;\n      state.edgeSign = negativeSecondaryEdge ? -1 : 1;\n    }\n\n    extend(arg.edges, linkedEdges);\n\n    if (!modifiers || !modifiers.length) {\n      return;\n    }\n\n    const subModification = new Modification(arg.interaction);\n    subModification.copyFrom(arg.interaction.modification);\n    subModification.prepareStates(modifiers);\n    state.subModification = subModification;\n    subModification.startAll({ ...arg\n    });\n  },\n\n  set(arg) {\n    const {\n      state,\n      rect,\n      coords\n    } = arg;\n    const initialCoords = extend({}, coords);\n    const aspectMethod = state.equalDelta ? setEqualDelta : setRatio;\n    aspectMethod(state, state.xIsPrimaryAxis, coords, rect);\n\n    if (!state.subModification) {\n      return null;\n    }\n\n    const correctedRect = extend({}, rect);\n    addEdges(state.linkedEdges, correctedRect, {\n      x: coords.x - initialCoords.x,\n      y: coords.y - initialCoords.y\n    });\n    const result = state.subModification.setAll({ ...arg,\n      rect: correctedRect,\n      edges: state.linkedEdges,\n      pageCoords: coords,\n      prevCoords: coords,\n      prevRect: correctedRect\n    });\n    const {\n      delta\n    } = result;\n\n    if (result.changed) {\n      const xIsCriticalAxis = Math.abs(delta.x) > Math.abs(delta.y); // do aspect modification again with critical edge axis as primary\n\n      aspectMethod(state, xIsCriticalAxis, result.coords, result.rect);\n      extend(coords, result.coords);\n    }\n\n    return result.eventProps;\n  },\n\n  defaults: {\n    ratio: 'preserve',\n    equalDelta: false,\n    modifiers: [],\n    enabled: false\n  }\n};\n\nfunction setEqualDelta({\n  startCoords,\n  edgeSign\n}, xIsPrimaryAxis, coords) {\n  if (xIsPrimaryAxis) {\n    coords.y = startCoords.y + (coords.x - startCoords.x) * edgeSign;\n  } else {\n    coords.x = startCoords.x + (coords.y - startCoords.y) * edgeSign;\n  }\n}\n\nfunction setRatio({\n  startRect,\n  startCoords,\n  ratio,\n  edgeSign\n}, xIsPrimaryAxis, coords, rect) {\n  if (xIsPrimaryAxis) {\n    const newHeight = rect.width / ratio;\n    coords.y = startCoords.y + (newHeight - startRect.height) * edgeSign;\n  } else {\n    const newWidth = rect.height * ratio;\n    coords.x = startCoords.x + (newWidth - startRect.width) * edgeSign;\n  }\n}\n\nexport default makeModifier(aspectRatio, 'aspectRatio');\nexport { aspectRatio };\n//# sourceMappingURL=aspectRatio.js.map","const noop = () => {};\n\nnoop._defaults = {};\nexport default noop;\n//# sourceMappingURL=noop.js.map","import extend from \"../../utils/extend.js\";\nimport is from \"../../utils/is.js\";\nimport * as rectUtils from \"../../utils/rect.js\";\nimport { makeModifier } from \"../base.js\";\n\nfunction start({\n  rect,\n  startOffset,\n  state,\n  interaction,\n  pageCoords\n}) {\n  const {\n    options\n  } = state;\n  const {\n    elementRect\n  } = options;\n  const offset = extend({\n    left: 0,\n    top: 0,\n    right: 0,\n    bottom: 0\n  }, options.offset || {});\n\n  if (rect && elementRect) {\n    const restriction = getRestrictionRect(options.restriction, interaction, pageCoords);\n\n    if (restriction) {\n      const widthDiff = restriction.right - restriction.left - rect.width;\n      const heightDiff = restriction.bottom - restriction.top - rect.height;\n\n      if (widthDiff < 0) {\n        offset.left += widthDiff;\n        offset.right += widthDiff;\n      }\n\n      if (heightDiff < 0) {\n        offset.top += heightDiff;\n        offset.bottom += heightDiff;\n      }\n    }\n\n    offset.left += startOffset.left - rect.width * elementRect.left;\n    offset.top += startOffset.top - rect.height * elementRect.top;\n    offset.right += startOffset.right - rect.width * (1 - elementRect.right);\n    offset.bottom += startOffset.bottom - rect.height * (1 - elementRect.bottom);\n  }\n\n  state.offset = offset;\n}\n\nfunction set({\n  coords,\n  interaction,\n  state\n}) {\n  const {\n    options,\n    offset\n  } = state;\n  const restriction = getRestrictionRect(options.restriction, interaction, coords);\n\n  if (!restriction) {\n    return;\n  }\n\n  const rect = rectUtils.xywhToTlbr(restriction);\n  coords.x = Math.max(Math.min(rect.right - offset.right, coords.x), rect.left + offset.left);\n  coords.y = Math.max(Math.min(rect.bottom - offset.bottom, coords.y), rect.top + offset.top);\n}\n\nexport function getRestrictionRect(value, interaction, coords) {\n  if (is.func(value)) {\n    return rectUtils.resolveRectLike(value, interaction.interactable, interaction.element, [coords.x, coords.y, interaction]);\n  } else {\n    return rectUtils.resolveRectLike(value, interaction.interactable, interaction.element);\n  }\n}\nconst defaults = {\n  restriction: null,\n  elementRect: null,\n  offset: null,\n  endOnly: false,\n  enabled: false\n};\nconst restrict = {\n  start,\n  set,\n  defaults\n};\nexport default makeModifier(restrict, 'restrict');\nexport { restrict };\n//# sourceMappingURL=pointer.js.map","// This module adds the options.resize.restrictEdges setting which sets min and\n// max for the top, left, bottom and right edges of the target being resized.\n//\n// interact(target).resize({\n//   edges: { top: true, left: true },\n//   restrictEdges: {\n//     inner: { top: 200, left: 200, right: 400, bottom: 400 },\n//     outer: { top:   0, left:   0, right: 600, bottom: 600 },\n//   },\n// })\nimport extend from \"../../utils/extend.js\";\nimport * as rectUtils from \"../../utils/rect.js\";\nimport { makeModifier } from \"../base.js\";\nimport { getRestrictionRect } from \"./pointer.js\";\nconst noInner = {\n  top: +Infinity,\n  left: +Infinity,\n  bottom: -Infinity,\n  right: -Infinity\n};\nconst noOuter = {\n  top: -Infinity,\n  left: -Infinity,\n  bottom: +Infinity,\n  right: +Infinity\n};\n\nfunction start({\n  interaction,\n  startOffset,\n  state\n}) {\n  const {\n    options\n  } = state;\n  let offset;\n\n  if (options) {\n    const offsetRect = getRestrictionRect(options.offset, interaction, interaction.coords.start.page);\n    offset = rectUtils.rectToXY(offsetRect);\n  }\n\n  offset = offset || {\n    x: 0,\n    y: 0\n  };\n  state.offset = {\n    top: offset.y + startOffset.top,\n    left: offset.x + startOffset.left,\n    bottom: offset.y - startOffset.bottom,\n    right: offset.x - startOffset.right\n  };\n}\n\nfunction set({\n  coords,\n  edges,\n  interaction,\n  state\n}) {\n  const {\n    offset,\n    options\n  } = state;\n\n  if (!edges) {\n    return;\n  }\n\n  const page = extend({}, coords);\n  const inner = getRestrictionRect(options.inner, interaction, page) || {};\n  const outer = getRestrictionRect(options.outer, interaction, page) || {};\n  fixRect(inner, noInner);\n  fixRect(outer, noOuter);\n\n  if (edges.top) {\n    coords.y = Math.min(Math.max(outer.top + offset.top, page.y), inner.top + offset.top);\n  } else if (edges.bottom) {\n    coords.y = Math.max(Math.min(outer.bottom + offset.bottom, page.y), inner.bottom + offset.bottom);\n  }\n\n  if (edges.left) {\n    coords.x = Math.min(Math.max(outer.left + offset.left, page.x), inner.left + offset.left);\n  } else if (edges.right) {\n    coords.x = Math.max(Math.min(outer.right + offset.right, page.x), inner.right + offset.right);\n  }\n}\n\nfunction fixRect(rect, defaults) {\n  for (const edge of ['top', 'left', 'bottom', 'right']) {\n    if (!(edge in rect)) {\n      rect[edge] = defaults[edge];\n    }\n  }\n\n  return rect;\n}\n\nconst defaults = {\n  inner: null,\n  outer: null,\n  offset: null,\n  endOnly: false,\n  enabled: false\n};\nconst restrictEdges = {\n  noInner,\n  noOuter,\n  start,\n  set,\n  defaults\n};\nexport default makeModifier(restrictEdges, 'restrictEdges');\nexport { restrictEdges };\n//# sourceMappingURL=edges.js.map","import extend from \"../../utils/extend.js\";\nimport { makeModifier } from \"../base.js\";\nimport { restrict } from \"./pointer.js\";\nconst defaults = extend({\n  get elementRect() {\n    return {\n      top: 0,\n      left: 0,\n      bottom: 1,\n      right: 1\n    };\n  },\n\n  set elementRect(_) {}\n\n}, restrict.defaults);\nconst restrictRect = {\n  start: restrict.start,\n  set: restrict.set,\n  defaults\n};\nexport default makeModifier(restrictRect, 'restrictRect');\nexport { restrictRect };\n//# sourceMappingURL=rect.js.map","import extend from \"../../utils/extend.js\";\nimport * as rectUtils from \"../../utils/rect.js\";\nimport { makeModifier } from \"../base.js\";\nimport { restrictEdges } from \"./edges.js\";\nimport { getRestrictionRect } from \"./pointer.js\";\nconst noMin = {\n  width: -Infinity,\n  height: -Infinity\n};\nconst noMax = {\n  width: +Infinity,\n  height: +Infinity\n};\n\nfunction start(arg) {\n  return restrictEdges.start(arg);\n}\n\nfunction set(arg) {\n  const {\n    interaction,\n    state,\n    rect,\n    edges\n  } = arg;\n  const {\n    options\n  } = state;\n\n  if (!edges) {\n    return;\n  }\n\n  const minSize = rectUtils.tlbrToXywh(getRestrictionRect(options.min, interaction, arg.coords)) || noMin;\n  const maxSize = rectUtils.tlbrToXywh(getRestrictionRect(options.max, interaction, arg.coords)) || noMax;\n  state.options = {\n    endOnly: options.endOnly,\n    inner: extend({}, restrictEdges.noInner),\n    outer: extend({}, restrictEdges.noOuter)\n  };\n\n  if (edges.top) {\n    state.options.inner.top = rect.bottom - minSize.height;\n    state.options.outer.top = rect.bottom - maxSize.height;\n  } else if (edges.bottom) {\n    state.options.inner.bottom = rect.top + minSize.height;\n    state.options.outer.bottom = rect.top + maxSize.height;\n  }\n\n  if (edges.left) {\n    state.options.inner.left = rect.right - minSize.width;\n    state.options.outer.left = rect.right - maxSize.width;\n  } else if (edges.right) {\n    state.options.inner.right = rect.left + minSize.width;\n    state.options.outer.right = rect.left + maxSize.width;\n  }\n\n  restrictEdges.set(arg);\n  state.options = options;\n}\n\nconst defaults = {\n  min: null,\n  max: null,\n  endOnly: false,\n  enabled: false\n};\nconst restrictSize = {\n  start,\n  set,\n  defaults\n};\nexport default makeModifier(restrictSize, 'restrictSize');\nexport { restrictSize };\n//# sourceMappingURL=size.js.map","import extend from \"../../utils/extend.js\";\nimport getOriginXY from \"../../utils/getOriginXY.js\";\nimport hypot from \"../../utils/hypot.js\";\nimport is from \"../../utils/is.js\";\nimport { resolveRectLike, rectToXY } from \"../../utils/rect.js\";\nimport { makeModifier } from \"../base.js\";\n\nfunction start(arg) {\n  const {\n    interaction,\n    interactable,\n    element,\n    rect,\n    state,\n    startOffset\n  } = arg;\n  const {\n    options\n  } = state;\n  const origin = options.offsetWithOrigin ? getOrigin(arg) : {\n    x: 0,\n    y: 0\n  };\n  let snapOffset;\n\n  if (options.offset === 'startCoords') {\n    snapOffset = {\n      x: interaction.coords.start.page.x,\n      y: interaction.coords.start.page.y\n    };\n  } else {\n    const offsetRect = resolveRectLike(options.offset, interactable, element, [interaction]);\n    snapOffset = rectToXY(offsetRect) || {\n      x: 0,\n      y: 0\n    };\n    snapOffset.x += origin.x;\n    snapOffset.y += origin.y;\n  }\n\n  const {\n    relativePoints\n  } = options;\n  state.offsets = rect && relativePoints && relativePoints.length ? relativePoints.map((relativePoint, index) => ({\n    index,\n    relativePoint,\n    x: startOffset.left - rect.width * relativePoint.x + snapOffset.x,\n    y: startOffset.top - rect.height * relativePoint.y + snapOffset.y\n  })) : [extend({\n    index: 0,\n    relativePoint: null\n  }, snapOffset)];\n}\n\nfunction set(arg) {\n  const {\n    interaction,\n    coords,\n    state\n  } = arg;\n  const {\n    options,\n    offsets\n  } = state;\n  const origin = getOriginXY(interaction.interactable, interaction.element, interaction.prepared.name);\n  const page = extend({}, coords);\n  const targets = [];\n\n  if (!options.offsetWithOrigin) {\n    page.x -= origin.x;\n    page.y -= origin.y;\n  }\n\n  for (const offset of offsets) {\n    const relativeX = page.x - offset.x;\n    const relativeY = page.y - offset.y;\n\n    for (let index = 0, len = options.targets.length; index < len; index++) {\n      const snapTarget = options.targets[index];\n      let target;\n\n      if (is.func(snapTarget)) {\n        target = snapTarget(relativeX, relativeY, interaction._proxy, offset, index);\n      } else {\n        target = snapTarget;\n      }\n\n      if (!target) {\n        continue;\n      }\n\n      targets.push({\n        x: (is.number(target.x) ? target.x : relativeX) + offset.x,\n        y: (is.number(target.y) ? target.y : relativeY) + offset.y,\n        range: is.number(target.range) ? target.range : options.range,\n        source: snapTarget,\n        index,\n        offset\n      });\n    }\n  }\n\n  const closest = {\n    target: null,\n    inRange: false,\n    distance: 0,\n    range: 0,\n    delta: {\n      x: 0,\n      y: 0\n    }\n  };\n\n  for (const target of targets) {\n    const range = target.range;\n    const dx = target.x - page.x;\n    const dy = target.y - page.y;\n    const distance = hypot(dx, dy);\n    let inRange = distance <= range; // Infinite targets count as being out of range\n    // compared to non infinite ones that are in range\n\n    if (range === Infinity && closest.inRange && closest.range !== Infinity) {\n      inRange = false;\n    }\n\n    if (!closest.target || (inRange // is the closest target in range?\n    ? closest.inRange && range !== Infinity // the pointer is relatively deeper in this target\n    ? distance / range < closest.distance / closest.range // this target has Infinite range and the closest doesn't\n    : range === Infinity && closest.range !== Infinity || // OR this target is closer that the previous closest\n    distance < closest.distance : // The other is not in range and the pointer is closer to this target\n    !closest.inRange && distance < closest.distance)) {\n      closest.target = target;\n      closest.distance = distance;\n      closest.range = range;\n      closest.inRange = inRange;\n      closest.delta.x = dx;\n      closest.delta.y = dy;\n    }\n  }\n\n  if (closest.inRange) {\n    coords.x = closest.target.x;\n    coords.y = closest.target.y;\n  }\n\n  state.closest = closest;\n  return closest;\n}\n\nfunction getOrigin(arg) {\n  const {\n    element\n  } = arg.interaction;\n  const optionsOrigin = rectToXY(resolveRectLike(arg.state.options.origin, null, null, [element]));\n  const origin = optionsOrigin || getOriginXY(arg.interactable, element, arg.interaction.prepared.name);\n  return origin;\n}\n\nconst defaults = {\n  range: Infinity,\n  targets: null,\n  offset: null,\n  offsetWithOrigin: true,\n  origin: null,\n  relativePoints: null,\n  endOnly: false,\n  enabled: false\n};\nconst snap = {\n  start,\n  set,\n  defaults\n};\nexport default makeModifier(snap, 'snap');\nexport { snap };\n//# sourceMappingURL=pointer.js.map","// This module allows snapping of the size of targets during resize\n// interactions.\nimport extend from \"../../utils/extend.js\";\nimport is from \"../../utils/is.js\";\nimport { makeModifier } from \"../base.js\";\nimport { snap } from \"./pointer.js\";\n\nfunction start(arg) {\n  const {\n    state,\n    edges\n  } = arg;\n  const {\n    options\n  } = state;\n\n  if (!edges) {\n    return null;\n  }\n\n  arg.state = {\n    options: {\n      targets: null,\n      relativePoints: [{\n        x: edges.left ? 0 : 1,\n        y: edges.top ? 0 : 1\n      }],\n      offset: options.offset || 'self',\n      origin: {\n        x: 0,\n        y: 0\n      },\n      range: options.range\n    }\n  };\n  state.targetFields = state.targetFields || [['width', 'height'], ['x', 'y']];\n  snap.start(arg);\n  state.offsets = arg.state.offsets;\n  arg.state = state;\n}\n\nfunction set(arg) {\n  const {\n    interaction,\n    state,\n    coords\n  } = arg;\n  const {\n    options,\n    offsets\n  } = state;\n  const relative = {\n    x: coords.x - offsets[0].x,\n    y: coords.y - offsets[0].y\n  };\n  state.options = extend({}, options);\n  state.options.targets = [];\n\n  for (const snapTarget of options.targets || []) {\n    let target;\n\n    if (is.func(snapTarget)) {\n      target = snapTarget(relative.x, relative.y, interaction);\n    } else {\n      target = snapTarget;\n    }\n\n    if (!target) {\n      continue;\n    }\n\n    for (const [xField, yField] of state.targetFields) {\n      if (xField in target || yField in target) {\n        target.x = target[xField];\n        target.y = target[yField];\n        break;\n      }\n    }\n\n    state.options.targets.push(target);\n  }\n\n  const returnValue = snap.set(arg);\n  state.options = options;\n  return returnValue;\n}\n\nconst defaults = {\n  range: Infinity,\n  targets: null,\n  offset: null,\n  endOnly: false,\n  enabled: false\n};\nconst snapSize = {\n  start,\n  set,\n  defaults\n};\nexport default makeModifier(snapSize, 'snapSize');\nexport { snapSize };\n//# sourceMappingURL=size.js.map","/**\n * @module modifiers/snapEdges\n *\n * @description\n * WOW> This module allows snapping of the edges of targets during resize\n * interactions.\n *\n * ```js\n * interact(target).resizable({\n *   snapEdges: {\n *     targets: [interact.snappers.grid({ x: 100, y: 50 })],\n *   },\n * })\n *\n * interact(target).resizable({\n *   snapEdges: {\n *     targets: [\n *       interact.snappers.grid({\n *        top: 50,\n *        left: 50,\n *        bottom: 100,\n *        right: 100,\n *       }),\n *     ],\n *   },\n * })\n * ```\n */\nimport clone from \"../../utils/clone.js\";\nimport extend from \"../../utils/extend.js\";\nimport { makeModifier } from \"../base.js\";\nimport { snapSize } from \"./size.js\";\n\nfunction start(arg) {\n  const {\n    edges\n  } = arg;\n\n  if (!edges) {\n    return null;\n  }\n\n  arg.state.targetFields = arg.state.targetFields || [[edges.left ? 'left' : 'right', edges.top ? 'top' : 'bottom']];\n  return snapSize.start(arg);\n}\n\nconst snapEdges = {\n  start,\n  set: snapSize.set,\n  defaults: extend(clone(snapSize.defaults), {\n    targets: null,\n    range: null,\n    offset: {\n      x: 0,\n      y: 0\n    }\n  })\n};\nexport default makeModifier(snapEdges, 'snapEdges');\nexport { snapEdges };\n//# sourceMappingURL=edges.js.map","/* eslint-disable node/no-extraneous-import */\nimport aspectRatio from \"./aspectRatio.js\";\nimport avoid from \"./avoid.js\";\nimport restrictEdges from \"./restrict/edges.js\";\nimport restrict from \"./restrict/pointer.js\";\nimport restrictRect from \"./restrict/rect.js\";\nimport restrictSize from \"./restrict/size.js\";\nimport rubberband from \"./rubberband.js\";\nimport snapEdges from \"./snap/edges.js\";\nimport snap from \"./snap/pointer.js\";\nimport snapSize from \"./snap/size.js\";\nimport spring from \"./spring.js\";\nimport transform from \"./transform.js\";\nexport default {\n  aspectRatio,\n  restrictEdges,\n  restrict,\n  restrictRect,\n  restrictSize,\n  snapEdges,\n  snap,\n  snapSize,\n  spring,\n  avoid,\n  transform,\n  rubberband\n};\n//# sourceMappingURL=all.js.map","import snappers from \"../snappers/plugin.js\";\nimport all from \"./all.js\";\nimport base from \"./base.js\";\nconst modifiers = {\n  id: 'modifiers',\n\n  install(scope) {\n    const {\n      interactStatic: interact\n    } = scope;\n    scope.usePlugin(base);\n    scope.usePlugin(snappers);\n    interact.modifiers = all; // for backwrads compatibility\n\n    for (const type in all) {\n      const {\n        _defaults,\n        _methods\n      } = all[type];\n      _defaults._methods = _methods;\n      scope.defaults.perAction[type] = _defaults;\n    }\n  }\n\n};\nexport default modifiers;\n//# sourceMappingURL=plugin.js.map","/* eslint-disable no-console */\nimport { Scope } from \"../core/scope.js\";\nimport domObjects from \"../utils/domObjects.js\";\nimport { parentNode } from \"../utils/domUtils.js\";\nimport extend from \"../utils/extend.js\";\nimport is from \"../utils/is.js\";\nimport * as win from \"../utils/window.js\";\nvar CheckName;\n\n(function (CheckName) {\n  CheckName[\"touchAction\"] = \"touchAction\";\n  CheckName[\"boxSizing\"] = \"boxSizing\";\n  CheckName[\"noListeners\"] = \"noListeners\";\n})(CheckName || (CheckName = {}));\n\nconst prefix = '[interact.js] ';\nconst links = {\n  touchAction: 'https://developer.mozilla.org/en-US/docs/Web/CSS/touch-action',\n  boxSizing: 'https://developer.mozilla.org/en-US/docs/Web/CSS/box-sizing'\n}; // eslint-disable-next-line no-undef\n\nconst isProduction = \"development\" === 'production'; // eslint-disable-next-line no-restricted-syntax\n\nfunction install(scope, {\n  logger\n} = {}) {\n  const {\n    Interactable,\n    defaults\n  } = scope;\n  scope.logger = logger || console;\n  defaults.base.devTools = {\n    ignore: {}\n  };\n\n  Interactable.prototype.devTools = function (options) {\n    if (options) {\n      extend(this.options.devTools, options);\n      return this;\n    }\n\n    return this.options.devTools;\n  };\n}\n\nconst checks = [{\n  name: CheckName.touchAction,\n\n  perform({\n    element\n  }) {\n    return !parentHasStyle(element, 'touchAction', /pan-|pinch|none/);\n  },\n\n  getInfo({\n    element\n  }) {\n    return [element, links.touchAction];\n  },\n\n  text: 'Consider adding CSS \"touch-action: none\" to this element\\n'\n}, {\n  name: CheckName.boxSizing,\n\n  perform(interaction) {\n    const {\n      element\n    } = interaction;\n    return interaction.prepared.name === 'resize' && element instanceof domObjects.HTMLElement && !hasStyle(element, 'boxSizing', /border-box/);\n  },\n\n  text: 'Consider adding CSS \"box-sizing: border-box\" to this resizable element',\n\n  getInfo({\n    element\n  }) {\n    return [element, links.boxSizing];\n  }\n\n}, {\n  name: CheckName.noListeners,\n\n  perform(interaction) {\n    const actionName = interaction.prepared.name;\n    const moveListeners = interaction.interactable.events.types[`${actionName}move`] || [];\n    return !moveListeners.length;\n  },\n\n  getInfo(interaction) {\n    return [interaction.prepared.name, interaction.interactable];\n  },\n\n  text: 'There are no listeners set for this action'\n}];\n\nfunction hasStyle(element, prop, styleRe) {\n  const value = element.style[prop] || win.window.getComputedStyle(element)[prop];\n  return styleRe.test((value || '').toString());\n}\n\nfunction parentHasStyle(element, prop, styleRe) {\n  let parent = element;\n\n  while (is.element(parent)) {\n    if (hasStyle(parent, prop, styleRe)) {\n      return true;\n    }\n\n    parent = parentNode(parent);\n  }\n\n  return false;\n}\n\nconst id = 'dev-tools';\nconst defaultExport = isProduction ? {\n  id,\n  install: () => {}\n} : {\n  id,\n  install,\n  listeners: {\n    'interactions:action-start': ({\n      interaction\n    }, scope) => {\n      for (const check of checks) {\n        const options = interaction.interactable && interaction.interactable.options;\n\n        if (!(options && options.devTools && options.devTools.ignore[check.name]) && check.perform(interaction)) {\n          scope.logger.warn(prefix + check.text, ...check.getInfo(interaction));\n        }\n      }\n    }\n  },\n  checks,\n  CheckName,\n  links,\n  prefix\n};\nexport default defaultExport;\n//# sourceMappingURL=plugin.js.map","/* eslint-disable import/order, no-console, eol-last */\nimport interact, { init } from \"../interact/index.js\";\nimport plugin from \"./plugin.js\";\n\nif (typeof window === 'object' && !!window) {\n  init(window);\n}\n\ninteract.use(plugin);\n//# sourceMappingURL=index.js.map","/* eslint-disable import/order, no-console, eol-last */\nimport interact, { init } from \"../interact/index.js\";\nimport plugin from \"./plugin.js\";\n\nif (typeof window === 'object' && !!window) {\n  init(window);\n}\n\ninteract.use(plugin);\n//# sourceMappingURL=index.js.map","import { render } from \"./GridItem.vue?vue&type=template&id=46ff2fc8\"\nimport script from \"./GridItem.vue?vue&type=script&lang=js\"\nexport * from \"./GridItem.vue?vue&type=script&lang=js\"\n\nimport \"./GridItem.vue?vue&type=style&index=0&id=46ff2fc8&lang=css\"\nscript.render = render\n\nexport default script","<template>\r\n    <div ref=\"item\" class=\"vue-grid-layout\" :style=\"mergedStyle\">\r\n        <slot></slot>\r\n        <grid-item class=\"vue-grid-placeholder\"\r\n                   v-show=\"isDragging\"\r\n                   :x=\"placeholder.x\"\r\n                   :y=\"placeholder.y\"\r\n                   :w=\"placeholder.w\"\r\n                   :h=\"placeholder.h\"\r\n                   :i=\"placeholder.i\"></grid-item>\r\n    </div>\r\n</template>\r\n<style>\r\n    .vue-grid-layout {\r\n        position: relative;\r\n        transition: height 200ms ease;\r\n    }\r\n</style>\r\n<script>\r\n    import mitt from 'mitt';\r\n    const elementResizeDetectorMaker = require(\"element-resize-detector\");\r\n\r\n    import {bottom, compact, getLayoutItem, moveElement, validateLayout, cloneLayout, getAllCollisions} from '@/helpers/utils';\r\n    import {getBreakpointFromWidth, getColsFromBreakpoint, findOrGenerateResponsiveLayout} from \"@/helpers/responsiveUtils\";\r\n    //var eventBus = require('./eventBus');\r\n\r\n    import GridItem from './GridItem.vue'\r\n    import {addWindowEventListener, removeWindowEventListener} from \"@/helpers/DOM\";\r\n\r\n    export default {\r\n        name: \"GridLayout\",\r\n        provide() {\r\n            return {\r\n                eventBus: this.eventBus,\r\n                layout: this\r\n            }\r\n        },\r\n        components: {\r\n            GridItem,\r\n        },\r\n        props: {\r\n            // If true, the container height swells and contracts to fit contents\r\n            autoSize: {\r\n                type: Boolean,\r\n                default: true\r\n            },\r\n            colNum: {\r\n                type: Number,\r\n                default: 12\r\n            },\r\n            rowHeight: {\r\n                type: Number,\r\n                default: 150\r\n            },\r\n            maxRows: {\r\n                type: Number,\r\n                default: Infinity\r\n            },\r\n            margin: {\r\n                type: Array,\r\n                default: function () {\r\n                    return [10, 10];\r\n                }\r\n            },\r\n            isDraggable: {\r\n                type: Boolean,\r\n                default: true\r\n            },\r\n            isResizable: {\r\n                type: Boolean,\r\n                default: true\r\n            },\r\n            isMirrored: {\r\n                type: Boolean,\r\n                default: false\r\n            },\r\n            useCssTransforms: {\r\n                type: Boolean,\r\n                default: true\r\n            },\r\n            verticalCompact: {\r\n                type: Boolean,\r\n                default: true\r\n            },\r\n            layout: {\r\n                type: Array,\r\n                required: true\r\n            },\r\n            responsive: {\r\n                type: Boolean,\r\n                default: false\r\n            },\r\n            responsiveLayouts: {\r\n                type: Object,\r\n                default: function() {\r\n                    return {};\r\n                }\r\n            },\r\n            breakpoints:{\r\n                type: Object,\r\n                default: function(){return{ lg: 1200, md: 996, sm: 768, xs: 480, xxs: 0 }}\r\n            },\r\n            cols:{\r\n                type: Object,\r\n                default: function(){return{ lg: 12, md: 10, sm: 6, xs: 4, xxs: 2 }},\r\n            },\r\n            preventCollision: {\r\n                type: Boolean,\r\n                default: false\r\n            },\r\n            useStyleCursor: {\r\n                type: Boolean,\r\n                default: true\r\n            }\r\n        },\r\n        data: function () {\r\n            return {\r\n                eventBus: mitt(),\r\n                width: null,\r\n                mergedStyle: {},\r\n                lastLayoutLength: 0,\r\n                isDragging: false,\r\n                placeholder: {\r\n                    x: 0,\r\n                    y: 0,\r\n                    w: 0,\r\n                    h: 0,\r\n                    i: -1\r\n                },\r\n                layouts: {}, // array to store all layouts from different breakpoints\r\n                lastBreakpoint: null, // store last active breakpoint\r\n                originalLayout: null, // store original Layout\r\n                // layout: JSON.parse(JSON.stringify(this.value)),\r\n            };\r\n        },\r\n        created () {\r\n            const self = this;\r\n\r\n            // Accessible refernces of functions for removing in beforeUnmount\r\n            self.resizeEventHandler = function({eventType, i, x, y, h, w}) {\r\n                self.resizeEvent(eventType, i, x, y, h, w);\r\n            };\r\n\r\n            self.dragEventHandler = function({eventType, i, x, y, h, w}) {\r\n                self.dragEvent(eventType, i, x, y, h, w);\r\n            };\r\n\r\n            self.eventBus.on('resizeEvent', self.resizeEventHandler);\r\n            self.eventBus.on('dragEvent', self.dragEventHandler);\r\n            self.$emit('layout-created', self.layout);\r\n        },\r\n        beforeUnmount: function(){\r\n            //Remove listeners\r\n            this.eventBus.off('resizeEvent', this.resizeEventHandler);\r\n            this.eventBus.off('dragEvent', this.dragEventHandler);\r\n            removeWindowEventListener(\"resize\", this.onWindowResize);\r\n            if (this.erd) {\r\n                this.erd.uninstall(this.$refs.item);\r\n            }\r\n        },\r\n        beforeMount: function() {\r\n            this.$emit('layout-before-mount', this.layout);\r\n        },\r\n        mounted: function() {\r\n            this.$emit('layout-mounted', this.layout);\r\n            this.$nextTick(function () {\r\n                validateLayout(this.layout);\r\n\r\n                this.originalLayout = this.layout;\r\n                const self = this;\r\n                this.$nextTick(function() {\r\n                    self.onWindowResize();\r\n\r\n                    self.initResponsiveFeatures();\r\n\r\n                    //self.width = self.$el.offsetWidth;\r\n                    addWindowEventListener('resize', self.onWindowResize);\r\n\r\n                    compact(self.layout, self.verticalCompact);\r\n\r\n                    self.$emit('layout-updated',self.layout)\r\n\r\n                    self.updateHeight();\r\n                    self.$nextTick(function () {\r\n                        this.erd = elementResizeDetectorMaker({\r\n                            strategy: \"scroll\", //<- For ultra performance.\r\n                            // See https://github.com/wnr/element-resize-detector/issues/110 about callOnAdd.\r\n                            callOnAdd: false,\r\n                        });\r\n                        this.erd.listenTo(self.$refs.item, function () {\r\n                            self.onWindowResize();\r\n                        });\r\n                    });\r\n                });\r\n            });\r\n        },\r\n        watch: {\r\n            width: function (newval, oldval) {\r\n                const self = this;\r\n                this.$nextTick(function () {\r\n                    //this.$broadcast(\"updateWidth\", this.width);\r\n                    this.eventBus.emit(\"updateWidth\", this.width);\r\n                    if (oldval === null) {\r\n                        /*\r\n                            If oldval == null is when the width has never been\r\n                            set before. That only occurs when mouting is\r\n                            finished, and onWindowResize has been called and\r\n                            this.width has been changed the first time after it\r\n                            got set to null in the constructor. It is now time\r\n                            to issue layout-ready events as the GridItems have\r\n                            their sizes configured properly.\r\n\r\n                            The reason for emitting the layout-ready events on\r\n                            the next tick is to allow for the newly-emitted\r\n                            updateWidth event (above) to have reached the\r\n                            children GridItem-s and had their effect, so we're\r\n                            sure that they have the final size before we emit\r\n                            layout-ready (for this GridLayout) and\r\n                            item-layout-ready (for the GridItem-s).\r\n\r\n                            This way any client event handlers can reliably\r\n                            invistigate stable sizes of GridItem-s.\r\n                        */\r\n                        this.$nextTick(() => {\r\n                            this.$emit('layout-ready', self.layout);\r\n                        });\r\n                    }\r\n                    this.updateHeight();\r\n                });\r\n            },\r\n            layout() {\r\n                this.layoutUpdate();\r\n            },\r\n            colNum: function (val) {\r\n                this.eventBus.emit(\"setColNum\", val);\r\n            },\r\n            rowHeight: function() {\r\n                this.eventBus.emit(\"setRowHeight\", this.rowHeight);\r\n            },\r\n            isDraggable: function() {\r\n                this.eventBus.emit(\"setDraggable\", this.isDraggable);\r\n            },\r\n            isResizable: function() {\r\n                this.eventBus.emit(\"setResizable\", this.isResizable);\r\n            },\r\n            responsive() {\r\n                if (!this.responsive) {\r\n                    this.$emit('update:layout', this.originalLayout);\r\n                    this.eventBus.emit(\"setColNum\", this.colNum);\r\n                }\r\n                this.onWindowResize();\r\n            },\r\n            maxRows: function() {\r\n                this.eventBus.emit(\"setMaxRows\", this.maxRows);\r\n            },\r\n            margin() {\r\n                this.updateHeight();\r\n            }\r\n        },\r\n        methods: {\r\n            layoutUpdate() {\r\n                if (this.layout !== undefined && this.originalLayout !== null) {\r\n                    if (this.layout.length !== this.originalLayout.length) {\r\n                        // console.log(\"### LAYOUT UPDATE!\", this.layout.length, this.originalLayout.length);\r\n\r\n                        let diff = this.findDifference(this.layout, this.originalLayout);\r\n                        if (diff.length > 0){\r\n                            // console.log(diff);\r\n                            if (this.layout.length > this.originalLayout.length) {\r\n                                this.originalLayout = this.originalLayout.concat(diff);\r\n                            } else {\r\n                                this.originalLayout = this.originalLayout.filter(obj => {\r\n                                    return !diff.some(obj2 => {\r\n                                        return obj.i === obj2.i;\r\n                                    });\r\n                                });\r\n                            }\r\n                        }\r\n\r\n                        this.lastLayoutLength = this.layout.length;\r\n                        this.initResponsiveFeatures();\r\n                    }\r\n\r\n                    compact(this.layout, this.verticalCompact);\r\n                    this.eventBus.emit(\"updateWidth\", this.width);\r\n                    this.updateHeight();\r\n\r\n                    this.$emit('layout-updated',this.layout)\r\n                }\r\n            },\r\n            updateHeight: function () {\r\n                this.mergedStyle = {\r\n                    height: this.containerHeight()\r\n                };\r\n            },\r\n            onWindowResize: function () {\r\n                if (this.$refs !== null && this.$refs.item !== null && this.$refs.item !== undefined) {\r\n                    this.width = this.$refs.item.offsetWidth;\r\n                }\r\n                this.eventBus.emit(\"resizeEvent\", {});\r\n            },\r\n            containerHeight: function () {\r\n                if (!this.autoSize) return;\r\n                // console.log(\"bottom: \" + bottom(this.layout))\r\n                // console.log(\"rowHeight + margins: \" + (this.rowHeight + this.margin[1]) + this.margin[1])\r\n                const containerHeight =  bottom(this.layout) * (this.rowHeight + this.margin[1]) + this.margin[1] + 'px';\r\n                return containerHeight;\r\n            },\r\n            dragEvent: function (eventName, id, x, y, h, w) {\r\n                //console.log(eventName + \" id=\" + id + \", x=\" + x + \", y=\" + y);\r\n                let l = getLayoutItem(this.layout, id);\r\n                //GetLayoutItem sometimes returns null object\r\n                if (l === undefined || l === null){\r\n                    l = {x:0, y:0}\r\n                }\r\n\r\n                if (eventName === \"dragmove\" || eventName === \"dragstart\") {\r\n                    this.placeholder.i = id;\r\n                    this.placeholder.x = l.x;\r\n                    this.placeholder.y = l.y;\r\n                    this.placeholder.w = w;\r\n                    this.placeholder.h = h;\r\n                    this.$nextTick(function() {\r\n                        this.isDragging = true;\r\n                    });\r\n                    //this.$broadcast(\"updateWidth\", this.width);\r\n                    this.eventBus.emit(\"updateWidth\", this.width);\r\n                } else {\r\n                    this.$nextTick(function() {\r\n                        this.isDragging = false;\r\n                    });\r\n                }\r\n\r\n                // Move the element to the dragged location.\r\n                this.$emit(\"update:layout\", moveElement(this.layout, l, x, y, true, this.preventCollision));\r\n                compact(this.layout, this.verticalCompact);\r\n                // needed because vue can't detect changes on array element properties\r\n                this.eventBus.emit(\"compact\");\r\n                this.updateHeight();\r\n                if (eventName === 'dragend') this.$emit('layout-updated', this.layout);\r\n            },\r\n            resizeEvent: function (eventName, id, x, y, h, w) {\r\n                let l = getLayoutItem(this.layout, id);\r\n                //GetLayoutItem sometimes return null object\r\n                if (l === undefined || l === null){\r\n                    l = {h:0, w:0}\r\n                }\r\n\r\n                let hasCollisions;\r\n                if (this.preventCollision) {\r\n                    const collisions = getAllCollisions(this.layout, { ...l, w, h }).filter(\r\n                        layoutItem => layoutItem.i !== l.i\r\n                    );\r\n                    hasCollisions = collisions.length > 0;\r\n\r\n                    // If we're colliding, we need adjust the placeholder.\r\n                    if (hasCollisions) {\r\n                        // adjust w && h to maximum allowed space\r\n                        let leastX = Infinity,\r\n                        leastY = Infinity;\r\n                        collisions.forEach(layoutItem => {\r\n                        if (layoutItem.x > l.x) leastX = Math.min(leastX, layoutItem.x);\r\n                        if (layoutItem.y > l.y) leastY = Math.min(leastY, layoutItem.y);\r\n                        });\r\n\r\n                        if (Number.isFinite(leastX)) l.w = leastX - l.x;\r\n                        if (Number.isFinite(leastY)) l.h = leastY - l.y;\r\n                    }\r\n                }\r\n\r\n                if (!hasCollisions) {\r\n                    // Set new width and height.\r\n                    l.w = w;\r\n                    l.h = h;\r\n                }\r\n\r\n                if (eventName === \"resizestart\" || eventName === \"resizemove\") {\r\n                    this.placeholder.i = id;\r\n                    this.placeholder.x = x;\r\n                    this.placeholder.y = y;\r\n                    this.placeholder.w = l.w;\r\n                    this.placeholder.h = l.h;\r\n                    this.$nextTick(function() {\r\n                        this.isDragging = true;\r\n                    });\r\n                    //this.$broadcast(\"updateWidth\", this.width);\r\n                    this.eventBus.emit(\"updateWidth\", this.width);\r\n\r\n                } else {\r\n                    this.$nextTick(function() {\r\n                        this.isDragging = false;\r\n                    });\r\n                }\r\n\r\n                if (this.responsive) this.responsiveGridLayout();\r\n\r\n                compact(this.layout, this.verticalCompact);\r\n                this.eventBus.emit(\"compact\");\r\n                this.updateHeight();\r\n\r\n                if (eventName === 'resizeend') this.$emit('layout-updated', this.layout);\r\n            },\r\n\r\n            // finds or generates new layouts for set breakpoints\r\n            responsiveGridLayout(){\r\n                let newBreakpoint = getBreakpointFromWidth(this.breakpoints, this.width);\r\n                let newCols = getColsFromBreakpoint(newBreakpoint, this.cols);\r\n\r\n                // save actual layout in layouts\r\n                if(this.lastBreakpoint != null && !this.layouts[this.lastBreakpoint])\r\n                    this.layouts[this.lastBreakpoint] = cloneLayout(this.layout);\r\n\r\n                // Find or generate a new layout.\r\n                let layout = findOrGenerateResponsiveLayout(\r\n                    this.originalLayout,\r\n                    this.layouts,\r\n                    this.breakpoints,\r\n                    newBreakpoint,\r\n                    this.lastBreakpoint,\r\n                    newCols,\r\n                    this.verticalCompact\r\n                );\r\n\r\n                // Store the new layout.\r\n                this.layouts[newBreakpoint] = layout;\r\n\r\n                if (this.lastBreakpoint !== newBreakpoint) {\r\n                    this.$emit('breakpoint-changed', newBreakpoint, layout);\r\n                }\r\n\r\n                // new prop sync\r\n                this.$emit('update:layout', layout);\r\n\r\n                this.lastBreakpoint = newBreakpoint;\r\n                this.eventBus.emit(\"setColNum\", getColsFromBreakpoint(newBreakpoint, this.cols));\r\n            },\r\n\r\n            // clear all responsive layouts\r\n            initResponsiveFeatures(){\r\n                // clear layouts\r\n                this.layouts = Object.assign({}, this.responsiveLayouts);\r\n            },\r\n\r\n            // find difference in layouts\r\n            findDifference(layout, originalLayout){\r\n\r\n                //Find values that are in result1 but not in result2\r\n                let uniqueResultOne = layout.filter(function(obj) {\r\n                    return !originalLayout.some(function(obj2) {\r\n                        return obj.i === obj2.i;\r\n                    });\r\n                });\r\n\r\n                //Find values that are in result2 but not in result1\r\n                let uniqueResultTwo = originalLayout.filter(function(obj) {\r\n                    return !layout.some(function(obj2) {\r\n                        return obj.i === obj2.i;\r\n                    });\r\n                });\r\n\r\n                //Combine the two arrays of unique entries#\r\n                return uniqueResultOne.concat(uniqueResultTwo);\r\n            }\r\n        },\r\n    }\r\n</script>\r\n","export default function _defineProperty(obj, key, value) {\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n\n  return obj;\n}","export default function(n){return{all:n=n||new Map,on:function(t,e){var i=n.get(t);i&&i.push(e)||n.set(t,[e])},off:function(t,e){var i=n.get(t);i&&i.splice(i.indexOf(e)>>>0,1)},emit:function(t,e){(n.get(t)||[]).slice().map(function(n){n(e)}),(n.get(\"*\")||[]).slice().map(function(n){n(t,e)})}}}\n//# sourceMappingURL=mitt.es.js.map\n","import { render } from \"./GridLayout.vue?vue&type=template&id=fc5948f6\"\nimport script from \"./GridLayout.vue?vue&type=script&lang=js\"\nexport * from \"./GridLayout.vue?vue&type=script&lang=js\"\n\nimport \"./GridLayout.vue?vue&type=style&index=0&id=fc5948f6&lang=css\"\nscript.render = render\n\nexport default script","import { App } from 'vue';\r\n\r\nimport GridItem from './GridItem.vue';\r\nimport GridLayout from './GridLayout.vue';\r\n\r\nexport { GridLayout, GridItem };\r\n\r\nconst install = (app: App) => {\r\n    app.component('grid-layout', GridLayout)\r\n    app.component('grid-item', GridItem)\r\n}\r\n\r\nexport default install;","import './setPublicPath'\nimport mod from '~entry'\nexport default mod\nexport * from '~entry'\n","// 20.1.2.2 Number.isFinite(number)\nvar $export = require('./_export');\nvar _isFinite = require('./_global').isFinite;\n\n$export($export.S, 'Number', {\n  isFinite: function isFinite(it) {\n    return typeof it == 'number' && _isFinite(it);\n  }\n});\n","module.exports = '\\x09\\x0A\\x0B\\x0C\\x0D\\x20\\xA0\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003' +\n  '\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n"],"sourceRoot":""}
\ No newline at end of file
+{"version":3,"sources":["webpack://VueGridLayout/webpack/universalModuleDefinition","webpack://VueGridLayout/webpack/bootstrap","webpack://VueGridLayout/./node_modules/core-js/modules/_iter-define.js","webpack://VueGridLayout/./node_modules/core-js/modules/_string-at.js","webpack://VueGridLayout/./node_modules/core-js/modules/_advance-string-index.js","webpack://VueGridLayout/./node_modules/core-js/library/modules/_has.js","webpack://VueGridLayout/./src/components/GridItem.vue?d411","webpack://VueGridLayout/./node_modules/core-js/modules/_flags.js","webpack://VueGridLayout/./node_modules/core-js/modules/_object-keys.js","webpack://VueGridLayout/./node_modules/core-js/modules/_object-gopd.js","webpack://VueGridLayout/./node_modules/core-js/modules/_object-dps.js","webpack://VueGridLayout/./node_modules/element-resize-detector/src/detection-strategy/object.js","webpack://VueGridLayout/./node_modules/element-resize-detector/src/browser-detector.js","webpack://VueGridLayout/./node_modules/core-js/library/modules/_to-primitive.js","webpack://VueGridLayout/./node_modules/core-js/library/modules/_dom-create.js","webpack://VueGridLayout/./node_modules/core-js/modules/_fix-re-wks.js","webpack://VueGridLayout/./node_modules/core-js/modules/_dom-create.js","webpack://VueGridLayout/./node_modules/core-js/modules/_classof.js","webpack://VueGridLayout/./node_modules/css-loader/dist/runtime/api.js","webpack://VueGridLayout/./node_modules/core-js/modules/_object-gops.js","webpack://VueGridLayout/./node_modules/core-js/library/modules/_fails.js","webpack://VueGridLayout/./node_modules/core-js/modules/_redefine.js","webpack://VueGridLayout/./node_modules/core-js/modules/_object-create.js","webpack://VueGridLayout/./node_modules/core-js/modules/_wks.js","webpack://VueGridLayout/./node_modules/element-resize-detector/src/id-generator.js","webpack://VueGridLayout/./node_modules/core-js/modules/_library.js","webpack://VueGridLayout/./node_modules/core-js/modules/_cof.js","webpack://VueGridLayout/./node_modules/core-js/modules/_strict-method.js","webpack://VueGridLayout/./node_modules/core-js/modules/_hide.js","webpack://VueGridLayout/./node_modules/core-js/library/modules/_hide.js","webpack://VueGridLayout/./node_modules/core-js/modules/_object-gpo.js","webpack://VueGridLayout/./node_modules/core-js/modules/_iter-create.js","webpack://VueGridLayout/./node_modules/core-js/library/fn/object/define-property.js","webpack://VueGridLayout/./node_modules/core-js/modules/es6.object.keys.js","webpack://VueGridLayout/./node_modules/core-js/modules/_to-integer.js","webpack://VueGridLayout/./node_modules/core-js/modules/_property-desc.js","webpack://VueGridLayout/./node_modules/core-js/library/modules/es6.object.define-property.js","webpack://VueGridLayout/./node_modules/core-js/modules/es6.regexp.match.js","webpack://VueGridLayout/./src/components/GridItem.vue?3b34","webpack://VueGridLayout/./node_modules/vue-style-loader/lib/listToStyles.js","webpack://VueGridLayout/./node_modules/vue-style-loader/lib/addStylesClient.js","webpack://VueGridLayout/./node_modules/element-resize-detector/src/listener-handler.js","webpack://VueGridLayout/./node_modules/core-js/modules/_to-object.js","webpack://VueGridLayout/./node_modules/element-resize-detector/src/id-handler.js","webpack://VueGridLayout/./node_modules/batch-processor/src/utils.js","webpack://VueGridLayout/./node_modules/core-js/modules/_regexp-exec.js","webpack://VueGridLayout/./node_modules/core-js/modules/_object-pie.js","webpack://VueGridLayout/./node_modules/core-js/modules/_shared.js","webpack://VueGridLayout/./node_modules/core-js/modules/es6.array.sort.js","webpack://VueGridLayout/./node_modules/core-js/library/modules/_core.js","webpack://VueGridLayout/./node_modules/element-resize-detector/src/element-utils.js","webpack://VueGridLayout/./node_modules/core-js/modules/_export.js","webpack://VueGridLayout/./node_modules/core-js/modules/_inherit-if-required.js","webpack://VueGridLayout/./node_modules/core-js/modules/_object-sap.js","webpack://VueGridLayout/./node_modules/core-js/modules/_regexp-exec-abstract.js","webpack://VueGridLayout/./node_modules/core-js/modules/_shared-key.js","webpack://VueGridLayout/./node_modules/core-js/modules/_iobject.js","webpack://VueGridLayout/./node_modules/core-js/library/modules/_export.js","webpack://VueGridLayout/./src/components/GridLayout.vue?845a","webpack://VueGridLayout/./node_modules/core-js/modules/_to-iobject.js","webpack://VueGridLayout/./node_modules/core-js/modules/_has.js","webpack://VueGridLayout/./node_modules/core-js/modules/_to-primitive.js","webpack://VueGridLayout/./node_modules/vue-loader-v16/dist/exportHelper.js","webpack://VueGridLayout/./node_modules/core-js/modules/_global.js","webpack://VueGridLayout/./node_modules/core-js/modules/_to-absolute-index.js","webpack://VueGridLayout/./node_modules/core-js/library/modules/_ie8-dom-define.js","webpack://VueGridLayout/./node_modules/core-js/library/modules/_a-function.js","webpack://VueGridLayout/./node_modules/core-js/modules/_fails.js","webpack://VueGridLayout/./node_modules/core-js/modules/_set-to-string-tag.js","webpack://VueGridLayout/./node_modules/core-js/modules/_core.js","webpack://VueGridLayout/./src/components/GridLayout.vue?2bad","webpack://VueGridLayout/./node_modules/core-js/modules/_iterators.js","webpack://VueGridLayout/./node_modules/@babel/runtime-corejs2/core-js/object/define-property.js","webpack://VueGridLayout/./node_modules/core-js/modules/_object-dp.js","webpack://VueGridLayout/./node_modules/@soda/get-current-script/index.js","webpack://VueGridLayout/./node_modules/core-js/modules/_set-proto.js","webpack://VueGridLayout/external {\"commonjs\":\"vue\",\"commonjs2\":\"vue\",\"root\":\"Vue\"}","webpack://VueGridLayout/./node_modules/core-js/library/modules/_descriptors.js","webpack://VueGridLayout/./node_modules/core-js/modules/es7.object.get-own-property-descriptors.js","webpack://VueGridLayout/./node_modules/core-js/modules/_object-gopn.js","webpack://VueGridLayout/./src/components/GridLayout.vue?c712","webpack://VueGridLayout/./node_modules/core-js/modules/_own-keys.js","webpack://VueGridLayout/./node_modules/core-js/modules/_ctx.js","webpack://VueGridLayout/./node_modules/core-js/modules/_add-to-unscopables.js","webpack://VueGridLayout/./node_modules/core-js/modules/_to-length.js","webpack://VueGridLayout/./node_modules/core-js/modules/_descriptors.js","webpack://VueGridLayout/./node_modules/core-js/modules/es6.regexp.replace.js","webpack://VueGridLayout/./node_modules/core-js/modules/_string-trim.js","webpack://VueGridLayout/./node_modules/element-resize-detector/src/reporter.js","webpack://VueGridLayout/./node_modules/core-js/modules/web.dom.iterable.js","webpack://VueGridLayout/./node_modules/core-js/library/modules/_property-desc.js","webpack://VueGridLayout/./node_modules/core-js/modules/es6.regexp.exec.js","webpack://VueGridLayout/./node_modules/element-resize-detector/src/collection-utils.js","webpack://VueGridLayout/./node_modules/core-js/modules/_defined.js","webpack://VueGridLayout/./node_modules/batch-processor/src/batch-processor.js","webpack://VueGridLayout/./node_modules/core-js/modules/_array-includes.js","webpack://VueGridLayout/./src/components/GridItem.vue?1d19","webpack://VueGridLayout/./node_modules/core-js/modules/es6.number.constructor.js","webpack://VueGridLayout/./node_modules/core-js/modules/_ie8-dom-define.js","webpack://VueGridLayout/./node_modules/element-resize-detector/src/detection-strategy/scroll.js","webpack://VueGridLayout/./node_modules/core-js/modules/_uid.js","webpack://VueGridLayout/./node_modules/core-js/modules/es6.array.iterator.js","webpack://VueGridLayout/./node_modules/core-js/modules/_an-object.js","webpack://VueGridLayout/./node_modules/core-js/modules/_object-keys-internal.js","webpack://VueGridLayout/./node_modules/core-js/modules/_is-object.js","webpack://VueGridLayout/./node_modules/core-js/modules/_iter-step.js","webpack://VueGridLayout/./node_modules/element-resize-detector/src/state-handler.js","webpack://VueGridLayout/./node_modules/core-js/library/modules/_ctx.js","webpack://VueGridLayout/./node_modules/core-js/modules/_a-function.js","webpack://VueGridLayout/./node_modules/core-js/library/modules/_object-dp.js","webpack://VueGridLayout/./node_modules/core-js/modules/_enum-bug-keys.js","webpack://VueGridLayout/./node_modules/core-js/library/modules/_an-object.js","webpack://VueGridLayout/./node_modules/core-js/library/modules/_global.js","webpack://VueGridLayout/./node_modules/element-resize-detector/src/element-resize-detector.js","webpack://VueGridLayout/./node_modules/core-js/modules/_create-property.js","webpack://VueGridLayout/./node_modules/core-js/library/modules/_is-object.js","webpack://VueGridLayout/./node_modules/core-js/modules/_function-to-string.js","webpack://VueGridLayout/./node_modules/core-js/modules/_html.js","webpack://VueGridLayout/./node_modules/@vue/cli-service/lib/commands/build/setPublicPath.js","webpack://VueGridLayout/./src/components/GridItem.vue","webpack://VueGridLayout/./src/helpers/utils.js","webpack://VueGridLayout/./src/helpers/draggableUtils.js","webpack://VueGridLayout/./src/helpers/responsiveUtils.js","webpack://VueGridLayout/./src/helpers/DOM.js","webpack://VueGridLayout/./node_modules/@interactjs/utils/domObjects.js","webpack://VueGridLayout/./node_modules/@interactjs/utils/isWindow.js","webpack://VueGridLayout/./node_modules/@interactjs/utils/window.js","webpack://VueGridLayout/./node_modules/@interactjs/utils/is.js","webpack://VueGridLayout/./node_modules/@interactjs/utils/browser.js","webpack://VueGridLayout/./node_modules/@interactjs/utils/arr.js","webpack://VueGridLayout/./node_modules/@interactjs/utils/clone.js","webpack://VueGridLayout/./node_modules/@interactjs/utils/extend.js","webpack://VueGridLayout/./node_modules/@interactjs/utils/raf.js","webpack://VueGridLayout/./node_modules/@interactjs/utils/normalizeListeners.js","webpack://VueGridLayout/./node_modules/@interactjs/core/Eventable.js","webpack://VueGridLayout/./node_modules/@interactjs/utils/domUtils.js","webpack://VueGridLayout/./node_modules/@interactjs/utils/rect.js","webpack://VueGridLayout/./node_modules/@interactjs/utils/getOriginXY.js","webpack://VueGridLayout/./node_modules/@interactjs/utils/hypot.js","webpack://VueGridLayout/./node_modules/@interactjs/core/BaseEvent.js","webpack://VueGridLayout/./node_modules/@interactjs/core/defaultOptions.js","webpack://VueGridLayout/./node_modules/@interactjs/core/InteractEvent.js","webpack://VueGridLayout/./node_modules/@interactjs/core/isNonNativeEvent.js","webpack://VueGridLayout/./node_modules/@interactjs/core/Interactable.js","webpack://VueGridLayout/./node_modules/@interactjs/core/InteractableSet.js","webpack://VueGridLayout/./node_modules/@interactjs/utils/pointerExtend.js","webpack://VueGridLayout/./node_modules/@interactjs/utils/pointerUtils.js","webpack://VueGridLayout/./node_modules/@interactjs/core/events.js","webpack://VueGridLayout/./node_modules/@interactjs/utils/misc.js","webpack://VueGridLayout/./node_modules/@interactjs/core/interactStatic.js","webpack://VueGridLayout/./node_modules/@interactjs/core/PointerInfo.js","webpack://VueGridLayout/./node_modules/@interactjs/core/Interaction.js","webpack://VueGridLayout/./node_modules/@interactjs/core/interactablePreventDefault.js","webpack://VueGridLayout/./node_modules/@interactjs/core/interactionFinder.js","webpack://VueGridLayout/./node_modules/@interactjs/core/interactions.js","webpack://VueGridLayout/./node_modules/@interactjs/core/scope.js","webpack://VueGridLayout/./node_modules/@interactjs/interact/index.js","webpack://VueGridLayout/./node_modules/@interactjs/auto-start/InteractableMethods.js","webpack://VueGridLayout/./node_modules/@interactjs/auto-start/base.js","webpack://VueGridLayout/./node_modules/@interactjs/auto-start/dragAxis.js","webpack://VueGridLayout/./node_modules/@interactjs/auto-start/hold.js","webpack://VueGridLayout/./node_modules/@interactjs/auto-start/plugin.js","webpack://VueGridLayout/./node_modules/@interactjs/actions/drag/plugin.js","webpack://VueGridLayout/./node_modules/@interactjs/auto-start/index.js","webpack://VueGridLayout/./node_modules/@interactjs/actions/resize/plugin.js","webpack://VueGridLayout/./node_modules/@interactjs/actions/drag/index.js","webpack://VueGridLayout/./node_modules/@interactjs/actions/resize/index.js","webpack://VueGridLayout/./node_modules/@interactjs/snappers/edgeTarget.js","webpack://VueGridLayout/./node_modules/@interactjs/snappers/elements.js","webpack://VueGridLayout/./node_modules/@interactjs/snappers/grid.js","webpack://VueGridLayout/./node_modules/@interactjs/snappers/plugin.js","webpack://VueGridLayout/./node_modules/@interactjs/modifiers/Modification.js","webpack://VueGridLayout/./node_modules/@interactjs/modifiers/base.js","webpack://VueGridLayout/./node_modules/@interactjs/modifiers/aspectRatio.js","webpack://VueGridLayout/./node_modules/@interactjs/modifiers/noop.js","webpack://VueGridLayout/./node_modules/@interactjs/modifiers/restrict/pointer.js","webpack://VueGridLayout/./node_modules/@interactjs/modifiers/restrict/edges.js","webpack://VueGridLayout/./node_modules/@interactjs/modifiers/restrict/rect.js","webpack://VueGridLayout/./node_modules/@interactjs/modifiers/restrict/size.js","webpack://VueGridLayout/./node_modules/@interactjs/modifiers/snap/pointer.js","webpack://VueGridLayout/./node_modules/@interactjs/modifiers/snap/size.js","webpack://VueGridLayout/./node_modules/@interactjs/modifiers/snap/edges.js","webpack://VueGridLayout/./node_modules/@interactjs/modifiers/all.js","webpack://VueGridLayout/./node_modules/@interactjs/modifiers/plugin.js","webpack://VueGridLayout/./node_modules/@interactjs/dev-tools/plugin.js","webpack://VueGridLayout/./node_modules/@interactjs/modifiers/index.js","webpack://VueGridLayout/./node_modules/@interactjs/dev-tools/index.js","webpack://VueGridLayout/./src/components/GridItem.vue?0590","webpack://VueGridLayout/./src/components/GridLayout.vue","webpack://VueGridLayout/./node_modules/@babel/runtime-corejs2/helpers/esm/defineProperty.js","webpack://VueGridLayout/./node_modules/mitt/dist/mitt.es.js","webpack://VueGridLayout/./src/components/GridLayout.vue?19aa","webpack://VueGridLayout/./src/components/index.js","webpack://VueGridLayout/./node_modules/@vue/cli-service/lib/commands/build/entry-lib.js","webpack://VueGridLayout/./node_modules/core-js/modules/es6.number.is-finite.js","webpack://VueGridLayout/./node_modules/core-js/modules/_string-ws.js"],"names":["root","factory","exports","module","require","define","amd","self","this","__WEBPACK_EXTERNAL_MODULE__8bbf__","installedModules","__webpack_require__","moduleId","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","LIBRARY","$export","redefine","hide","Iterators","$iterCreate","setToStringTag","getPrototypeOf","ITERATOR","BUGGY","keys","FF_ITERATOR","KEYS","VALUES","returnThis","Base","NAME","Constructor","next","DEFAULT","IS_SET","FORCED","methods","IteratorPrototype","getMethod","kind","proto","TAG","DEF_VALUES","VALUES_BUG","$native","$default","$entries","undefined","$anyNative","entries","values","P","F","toInteger","defined","TO_STRING","that","pos","a","b","String","length","charCodeAt","charAt","slice","at","S","index","unicode","it","anObject","result","global","ignoreCase","multiline","sticky","$keys","enumBugKeys","O","pIE","createDesc","toIObject","toPrimitive","has","IE8_DOM_DEFINE","gOPD","getOwnPropertyDescriptor","f","e","dP","getKeys","defineProperties","Properties","browserDetector","options","reporter","batchProcessor","getState","stateHandler","Error","addListener","element","listener","listenerProxy","isIE","proxy","attachEvent","getObject","contentDocument","defaultView","addEventListener","buildCssTextString","rules","seperator","important","join","trim","makeDetectable","callback","debug","injectObject","OBJECT_STYLE","positionCheckPerformed","style","window","getComputedStyle","width","offsetWidth","height","offsetHeight","mutateDom","alterPositionStyles","position","setProperty","removeRelativeStyles","getNumericalValue","replace","warn","onObjectLoad","getDocument","state","checkForObjectDocumentTimeoutId","clearTimeout","setTimeout","objectElement","objectDocument","document","createElement","cssText","tabIndex","type","setAttribute","onload","data","appendChild","startSize","add","uninstall","detachEvent","removeChild","detector","version","isAnyIeVersion","agent","navigator","userAgent","toLowerCase","indexOf","ieVersion","undef","v","div","all","getElementsByTagName","innerHTML","isLegacyOpera","opera","isObject","fn","val","toString","valueOf","TypeError","is","fails","wks","regexpExec","SPECIES","REPLACE_SUPPORTS_NAMED_GROUPS","re","exec","groups","SPLIT_WORKS_WITH_OVERWRITTEN_EXEC","originalExec","apply","arguments","split","KEY","SYMBOL","DELEGATES_TO_SYMBOL","DELEGATES_TO_EXEC","execCalled","constructor","nativeRegExpMethod","fns","nativeMethod","regexp","str","arg2","forceStringMethod","done","strfn","rxfn","RegExp","string","arg","cof","ARG","tryGet","T","B","callee","cssWithMappingToString","item","useSourceMap","content","cssMapping","btoa","sourceMapping","toComment","sourceURLs","sources","map","source","concat","sourceRoot","sourceMap","base64","unescape","encodeURIComponent","JSON","stringify","list","mediaQuery","dedupe","alreadyImportedModules","id","_i","push","getOwnPropertySymbols","SRC","$toString","TPL","inspectSource","safe","isFunction","Function","dPs","IE_PROTO","Empty","PROTOTYPE","createDict","iframeDocument","iframe","lt","gt","display","src","contentWindow","open","write","close","store","uid","USE_SYMBOL","$exports","idCount","generate","method","toObject","ObjectProto","descriptor","$Object","desc","ceil","Math","floor","isNaN","bitmap","configurable","writable","toLength","advanceStringIndex","regExpExec","MATCH","$match","maybeCallNative","res","rx","fullUnicode","lastIndex","A","matchStr","___CSS_LOADER_API_IMPORT___","listToStyles","parentId","styles","newStyles","css","media","part","parts","hasDocument","DEBUG","stylesInDom","head","singletonElement","singletonCounter","isProduction","noop","ssrIdKey","isOldIE","test","addStylesClient","_isProduction","_options","addStylesToDom","newList","mayRemove","domStyle","refs","j","addStyle","createStyleElement","styleElement","obj","update","remove","querySelector","parentNode","styleIndex","applyToSingletonTag","applyToTag","newObj","replaceText","textStore","replacement","filter","Boolean","styleSheet","cssNode","createTextNode","childNodes","insertBefore","ssrId","firstChild","idHandler","eventListeners","getListeners","removeListener","listeners","len","splice","removeAllListeners","idGenerator","getId","setId","set","utils","getOption","defaultValue","regexpFlags","nativeExec","nativeReplace","patchedExec","LAST_INDEX","UPDATES_LAST_INDEX_WRONG","re1","re2","NPCG_INCLUDED","PATCH","reCopy","match","propertyIsEnumerable","core","SHARED","copyright","aFunction","$sort","sort","comparefn","__e","isDetectable","markAsDetectable","isBusy","busy","markBusy","ctx","own","out","exp","IS_FORCED","IS_GLOBAL","G","IS_STATIC","IS_PROTO","IS_BIND","target","expProto","U","W","R","setPrototypeOf","C","classof","builtinExec","shared","IS_WRAP","virtual","IObject","default","sfc","props","__vccOpts","__g","max","min","def","tag","stat","Attributes","getCurrentScript","currentScript","err","pageSource","inlineScriptSourceRegExp","inlineScriptSource","ieStackRegExp","ffStackRegExp","stackDetails","stack","scriptLocation","line","currentLocation","location","href","hash","scripts","documentElement","outerHTML","readyState","check","buggy","Array","__proto__","ownKeys","createProperty","getOwnPropertyDescriptors","getDesc","hiddenKeys","getOwnPropertyNames","locals","gOPN","gOPS","Reflect","getSymbols","UNSCOPABLES","ArrayProto","SUBSTITUTION_SYMBOLS","SUBSTITUTION_SYMBOLS_NO_NAMED","maybeToString","REPLACE","$replace","searchValue","replaceValue","functionalReplace","results","accumulatedResult","nextSourcePosition","matched","captures","namedCaptures","replacerArgs","getSubstitution","tailPos","symbols","ch","capture","spaces","space","non","ltrim","rtrim","exporter","ALIAS","FORCE","TYPE","quiet","log","error","console","attachFunction","$iterators","TO_STRING_TAG","ArrayValues","DOMIterables","CSSRuleList","CSSStyleDeclaration","CSSValueList","ClientRectList","DOMRectList","DOMStringList","DOMTokenList","DataTransferItemList","FileList","HTMLAllCollection","HTMLCollection","HTMLFormElement","HTMLSelectElement","MediaList","MimeTypeArray","NamedNodeMap","NodeList","PaintRequestList","Plugin","PluginArray","SVGLengthList","SVGNumberList","SVGPathSegList","SVGPointList","SVGStringList","SVGTransformList","SourceBufferList","StyleSheetList","TextTrackCueList","TextTrackList","TouchList","collections","explicit","Collection","forced","forEach","collection","Batch","batch","size","topLevel","bottomLevel","level","process","getSize","asyncProcess","autoProcess","asyncFrameHandler","isProcessing","addFunction","processBatchAsync","processBatch","processingBatch","forceProcessBatch","localAsyncProcess","cancelFrame","requestFrame","cancel","raf","force","toAbsoluteIndex","IS_INCLUDES","$this","el","fromIndex","inheritIfRequired","$trim","NUMBER","$Number","BROKEN_COF","TRIM","toNumber","argument","third","radix","maxCode","first","NaN","code","digits","parseInt","hasState","scrollbarSizes","getScrollbarSizes","styleId","detectionContainerClass","initDocument","targetDocument","injectScrollStyle","child","container","body","widthSize","clientWidth","heightSize","clientHeight","containerClass","injectStyle","getElementById","containerAnimationClass","containerAnimationActiveClass","addAnimationClass","className","addEvent","cb","removeEvent","removeEventListener","getExpandElement","getShrinkElement","args","unshift","isDetached","isInDocument","ownerDocument","contains","isUnrendered","getStyle","elementStyle","top","right","bottom","left","widthCSS","heightCSS","storeStartSize","initListeners","storeStyle","storeCurrentSize","lastWidth","lastHeight","getExpandChildElement","getWidthOffset","getHeightOffset","getExpandWidth","getExpandHeight","getShrinkWidth","getShrinkHeight","positionScrollbars","expand","shrink","expandWidth","expandHeight","shrinkWidth","shrinkHeight","scrollLeft","scrollTop","injectContainerElement","onAnimationStart","onRendered","injectScrollElements","getLeftTopBottomRightCssText","rootContainer","scrollbarWidth","scrollbarHeight","containerContainerStyle","containerStyle","expandStyle","shrinkStyle","expandChildStyle","shrinkChildStyle","containerContainer","expandChild","shrinkChild","dir","onExpandScroll","onShrinkScroll","onExpand","onShrink","registerListenersAndPositionElements","updateChildSizes","updateDetectorElements","sizeChanged","areElementsInjected","w","h","notifyListenersIfNeeded","isFirstNotify","lastNotifiedWidth","lastNotifiedHeight","handleRender","handleScroll","finalizeDomMutation","ready","install","px","random","addToUnscopables","step","iterated","_t","_k","Arguments","arrayIndexOf","names","prop","initState","cleanState","elementUtilsMaker","listenerHandlerMaker","idGeneratorMaker","idHandlerMaker","reporterMaker","batchProcessorMaker","objectStrategyMaker","scrollStrategyMaker","isCollection","isArray","toArray","array","isElement","nodeType","defaultIdHandler","globalOptions","callOnAdd","detectionStrategy","eventListenerHandler","elementUtils","desiredStrategy","importantCssRules","strategyOptions","onReadyCallbacks","listenTo","elements","onResizeCallback","elementsReady","onReadyCallback","$defineProperty","ref","class","classObj","resizableAndNotStatic","resizableHandleClass","layout","bottomY","y","cloneLayout","newLayout","cloneLayoutItem","layoutItem","parse","collides","l1","l2","x","compact","verticalCompact","compareWith","getStatics","sorted","sortLayoutItemsByRowCol","static","compactItem","moved","getFirstCollision","correctBounds","bounds","collidesWith","cols","getLayoutItem","getAllCollisions","moveElement","isUserAction","preventCollision","oldX","oldY","movingUp","reverse","collisions","collision","moveElementAwayFromCollision","itemToMove","fakeItem","setTransform","translate","transform","WebkitTransform","MozTransform","msTransform","OTransform","setTransformRtl","setTopLeft","setTopRight","validateLayout","contextName","subProps","keyArr","getControlPosition","offsetXYFromParentOf","evt","offsetParent","offsetParentRect","getBoundingClientRect","clientX","clientY","createCoreData","lastX","lastY","isStart","isNum","deltaX","deltaY","num","getBreakpointFromWidth","breakpoints","sortBreakpoints","matching","breakpointName","getColsFromBreakpoint","breakpoint","findOrGenerateResponsiveLayout","orgLayout","layouts","lastBreakpoint","breakpointsSorted","breakpointsAbove","currentDir","hasWindow","getDocumentDir","direction","getAttribute","addWindowEventListener","event","removeWindowEventListener","domObjects","init","DocumentFragment","SVGElement","SVGSVGElement","SVGElementInstance","Element","HTMLElement","Event","Touch","PointerEvent","blank","win","MSPointerEvent","thing","realWindow","wrap","getWindow","node","isWindow","rootNode","docFrag","func","number","bool","_window","nodeName","plainObject","browser","supportsTouch","supportsPointerEvent","isIOS7","isIOS","isIe9","isOperaMobile","prefixedMatchesSelector","pEventTypes","wheelEvent","DocumentTouch","pointerEnabled","platform","appVersion","appName","up","down","over","move","merge","from","findIndex","find","clone","dest","extend","ret","request","lastTime","requestAnimationFrame","cancelAnimationFrame","vendors","vendor","currTime","Date","now","timeToCall","token","normalize","search","reduce","acc","prefix","combinedTypes","fireUntilImmediateStopped","immediatePropagationStopped","types","propagationStopped","eventList","subListener","_element","nodeContains","parent","selector","matchesSelector","host","matchesUpTo","limit","getActualElement","correspondingUseElement","getScrollXY","relevantWindow","scrollX","scrollY","getElementClientRect","clientRect","getClientRects","getElementRect","scroll","trySelector","getStringOptionResult","getRect","resolveRectLike","functionArgs","returnValue","rectToXY","rect","xywhToTlbr","tlbrToXywh","addEdges","edges","delta","actionOptions","actionName","actionOrigin","origin","originRect","BaseEvent","interaction","currentTarget","interactable","_interaction","timeStamp","_proxy","base","preventDefault","deltaSource","perAction","enabled","actions","phase","preEnd","super","relatedTarget","screenX","screenY","button","buttons","ctrlKey","shiftKey","altKey","metaKey","page","client","x0","y0","t0","dt","duration","clientX0","clientY0","velocity","speed","swipe","axes","getOriginXY","starting","ending","prevEvent","coords","start","cur","pointers","downTime","hypot","getSwipe","angle","atan2","velocityY","velocityX","PI","overlap","isNonNativeEvent","phaselessTypes","substr","phases","pageX","pageY","dx","dy","defaultContext","scopeEvents","_actions","events","_context","_win","_doc","_scopeEvents","_rectChecker","context","onstart","on","onmove","onend","oninertiastart","prev","off","defaults","_defaults","optionName_","optionName","optionValue","updatePerActionListeners","checker","newValue","action","_backCompatOption","targetNode","eventTarget","testIgnore","ignoreFrom","testAllow","allowFrom","iEvent","fire","typeArg","listenerArg","addRemove","_onOff","actionName_","methodDict","methodName","setPerAction","setting","delegatedEvents","delegated","removeDelegate","scope","selectorMap","addListeners","targetMappings","targetIndex","Interactable","mappingInfo","addDocument","isSelector","found","inContext","pointerExtend","prefixedPropREs","deprecated","webkit","moz","copyCoords","setCoordDeltas","targetObj","setCoordVelocity","setZeroCoords","isNativePointer","pointer","getXY","xy","getPageXY","getClientXY","getPointerId","pointerId","identifier","setCoords","pointerAverage","getTouchPair","touches","changedTouches","average","touchBBox","minX","minY","maxX","maxY","touchDistance","sourceX","sourceY","touchAngle","getPointerType","pointerType","getEventTargets","path","composedPath","newCoords","targets","documents","eventsMethods","addDelegate","delegateListener","delegateUseCapture","supportsOptions","supportsPassive","optionalArg","getOptions","typeIsEmpty","typeListeners","doc","delegates","delegate","matchFound","passive","fakeEvent","originalEvent","stopPropagation","stopImmediatePropagation","param","warnOnce","message","warned","copyAction","axis","createInteractStatic","interact","interactables","new","globalEvents","getPointerAverage","getTouchBBox","getTouchDistance","getTouchAngle","closest","use","plugin","usePlugin","isSet","eventType","stop","interactions","pointerMoveTolerance","removeDocument","PointerInfo","downTarget","_ProxyValues","_ProxyMethods","idCounter","scopeFire","_rects","_scopeFire","prepared","downEvent","downPointer","_latestPointer","pointerIsDown","pointerWasMoved","_interacting","_ending","_stopped","simulation","doMove","signalArg","_id","pointerIndex","updatePointer","pointerInfo","interacting","_doPhase","modification","endResult","duplicateMove","getPointerIndex","duplicate","curEventTarget","end","removePointer","endPhaseResult","curPointer","_now","_updateLatestPointer","beforeResult","_createPreparedEvent","_fireEvent","checkAndPreventDefault","docOptions","getDocOptions","onInteractionEvent","docEvents","finder","methodOrder","details","allowResume","firstNonActive","hasPointerId","gesture","some","methodNames","doOnInteractions","releasePointersOnRemovedEls","pointerDown","pointerMove","pointerUp","documentBlur","prevTouchTime","Interaction","interactablePreventDefault","matches","changedTouch","searchDetails","getInteraction","invalidPointer","foundInteraction","onDocSignal","eventMethodName","eventMethod","eventOptions","destroy","isInitialized","listenerMaps","Eventable","interactStatic","InteractEvent","_plugins","onWindowUnload","unset","initScope","pluginIsInstalled","before","pluginIdRoot","otherId","getDocIndex","docIndex","getAction","defaultActionChecker","actionChecker","styleCursor","0","1","3","4","InteractableMethods","manualStart","Infinity","maxPerElement","mouseButtons","maxInteractions","autoStart","withinInteractionLimit","cursorElement","prepareOnDown","actionInfo","getActionInfo","prepare","prepareOnMove","startOnMove","setInteractionCursor","clearCursorOnStop","setCursor","validateAction","testIgnoreAllow","validateMatches","matchElements","matchElement","matchAction","pushMatches","forEachMatch","maxActions","autoStartMax","activeInteractions","interactableCount","elementCount","otherAction","cursor","prevCursorElement","cursorChecker","getCursor","beforeStart","absX","abs","absY","targetOptions","drag","startAxis","currentAxis","lockAxis","getDraggable","checkStartAxis","thisAxis","hold","delay","getHoldDuration","autoStartHoldTimer","holdDuration","dragAxis","draggable","beforeMove","opposite","setOnEvents","dragOptions","resize","cursors","initCursors","defaultMargin","resizable","resizeChecker","resizeOptions","resizeEdges","edge","checkResizeEdge","margin","preserveAspectRatio","square","interactableElement","topleft","bottomright","topright","bottomleft","resizeEvent","corrected","previous","deltaRect","invert","invertible","current","startRect","swap","updateEventAxes","resizeAxes","cursorKey","grid","coordFields","xField","yField","gridFunc","range","limits","offset","gridx","round","gridy","snappersPlugin","snappers","createSnapGrid","states","startOffset","startDelta","createResult","pageCoords","modifierList","getModifierList","prepareStates","getRectOffset","startAll","setAll","fillArg","skipModifiers","unmodifiedRect","newResult","lastModifierCoords","shouldDo","eventProps","rectDelta","prevCoords","prevRect","rectChanged","changed","curCoords","startCoords","curDelta","coordsSet","modifiedCoords","adjustment","applyToInteraction","doPreend","endPosition","beforeEnd","modifierArg","coordsAndDeltas","requireEndOnly","endOnly","setStart","other","actionModifiers","modifiers","_methods","makeModifier","modifier","enable","disable","addEventModifiers","modifiersBase","setAndApply","restoreInteractionCoords","aspectRatio","originalEdges","ratio","equalDelta","linkedEdges","xIsPrimaryAxis","edgeSign","negativeSecondaryEdge","subModification","copyFrom","initialCoords","aspectMethod","setEqualDelta","setRatio","correctedRect","xIsCriticalAxis","newHeight","newWidth","elementRect","restriction","getRestrictionRect","widthDiff","heightDiff","restrict","noInner","noOuter","offsetRect","inner","outer","fixRect","restrictEdges","_","restrictRect","noMin","noMax","minSize","maxSize","restrictSize","offsetWithOrigin","getOrigin","snapOffset","relativePoints","offsets","relativePoint","relativeX","relativeY","snapTarget","inRange","distance","optionsOrigin","snap","targetFields","relative","snapSize","snapEdges","spring","avoid","rubberband","CheckName","links","touchAction","boxSizing","logger","devTools","ignore","checks","parentHasStyle","text","hasStyle","noListeners","moveListeners","styleRe","defaultExport","perform","getInfo","isDraggable","required","isResizable","minH","Number","minW","maxH","maxW","dragIgnoreFrom","dragAllowFrom","resizeIgnoreFrom","inject","containerWidth","rowHeight","maxRows","useCssTransforms","useStyleCursor","isDragging","dragging","isResizing","resizing","lastW","lastH","rtl","dragEventSet","resizeEventSet","previousW","previousH","previousX","previousY","innerX","innerY","innerW","innerH","created","updateWidthHandler","updateWidth","compactHandler","setDraggableHandler","setResizableHandler","setRowHeightHandler","setMaxRowsHandler","directionchangeHandler","setColNum","colNum","eventBus","beforeUnmount","interactObj","mounted","responsive","createStyle","watch","tryMakeDraggable","tryMakeResizable","emitContainerResized","newVal","renderRtl","computed","isAndroid","draggableOrResizableAndNotStatic","isMirrored","calcPosition","styleProps","$emit","handleResize","newSize","coreEvent","calcWH","emit","handleDrag","newPosition","parentRect","calcXY","colWidth","calcColWidth","autoSizeFlag","$refs","opts","maximum","minimum","autoSize","$slots","elm","__exports__","render","mergedStyle","placeholder","_defineProperty","Map","elementResizeDetectorMaker","provide","components","GridItem","responsiveLayouts","lg","md","sm","xs","xxs","lastLayoutLength","originalLayout","resizeEventHandler","dragEventHandler","dragEvent","onWindowResize","erd","beforeMount","$nextTick","initResponsiveFeatures","updateHeight","strategy","newval","oldval","layoutUpdate","diff","findDifference","obj2","containerHeight","eventName","hasCollisions","leastX","leastY","isFinite","responsiveGridLayout","newBreakpoint","newCols","assign","uniqueResultOne","uniqueResultTwo","app","component","GridLayout","_isFinite"],"mappings":"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","file":"vue-grid-layout.umd.min.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"vue\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"VueGridLayout\"] = factory(require(\"vue\"));\n\telse\n\t\troot[\"VueGridLayout\"] = factory(root[\"Vue\"]);\n})((typeof self !== 'undefined' ? self : this), function(__WEBPACK_EXTERNAL_MODULE__8bbf__) {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"fb15\");\n","'use strict';\nvar LIBRARY = require('./_library');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar $iterCreate = require('./_iter-create');\nvar setToStringTag = require('./_set-to-string-tag');\nvar getPrototypeOf = require('./_object-gpo');\nvar ITERATOR = require('./_wks')('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n  $iterCreate(Constructor, NAME, next);\n  var getMethod = function (kind) {\n    if (!BUGGY && kind in proto) return proto[kind];\n    switch (kind) {\n      case KEYS: return function keys() { return new Constructor(this, kind); };\n      case VALUES: return function values() { return new Constructor(this, kind); };\n    } return function entries() { return new Constructor(this, kind); };\n  };\n  var TAG = NAME + ' Iterator';\n  var DEF_VALUES = DEFAULT == VALUES;\n  var VALUES_BUG = false;\n  var proto = Base.prototype;\n  var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n  var $default = $native || getMethod(DEFAULT);\n  var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n  var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n  var methods, key, IteratorPrototype;\n  // Fix native\n  if ($anyNative) {\n    IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n    if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n      // Set @@toStringTag to native iterators\n      setToStringTag(IteratorPrototype, TAG, true);\n      // fix for some old engines\n      if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);\n    }\n  }\n  // fix Array#{values, @@iterator}.name in V8 / FF\n  if (DEF_VALUES && $native && $native.name !== VALUES) {\n    VALUES_BUG = true;\n    $default = function values() { return $native.call(this); };\n  }\n  // Define iterator\n  if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n    hide(proto, ITERATOR, $default);\n  }\n  // Plug for library\n  Iterators[NAME] = $default;\n  Iterators[TAG] = returnThis;\n  if (DEFAULT) {\n    methods = {\n      values: DEF_VALUES ? $default : getMethod(VALUES),\n      keys: IS_SET ? $default : getMethod(KEYS),\n      entries: $entries\n    };\n    if (FORCED) for (key in methods) {\n      if (!(key in proto)) redefine(proto, key, methods[key]);\n    } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n  }\n  return methods;\n};\n","var toInteger = require('./_to-integer');\nvar defined = require('./_defined');\n// true  -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n  return function (that, pos) {\n    var s = String(defined(that));\n    var i = toInteger(pos);\n    var l = s.length;\n    var a, b;\n    if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n    a = s.charCodeAt(i);\n    return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n      ? TO_STRING ? s.charAt(i) : a\n      : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n  };\n};\n","'use strict';\nvar at = require('./_string-at')(true);\n\n // `AdvanceStringIndex` abstract operation\n// https://tc39.github.io/ecma262/#sec-advancestringindex\nmodule.exports = function (S, index, unicode) {\n  return index + (unicode ? at(S, index).length : 1);\n};\n","var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n  return hasOwnProperty.call(it, key);\n};\n","export * from \"-!../../node_modules/vue-style-loader/index.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./GridItem.vue?vue&type=style&index=0&id=46ff2fc8&lang=css\"","'use strict';\n// 21.2.5.3 get RegExp.prototype.flags\nvar anObject = require('./_an-object');\nmodule.exports = function () {\n  var that = anObject(this);\n  var result = '';\n  if (that.global) result += 'g';\n  if (that.ignoreCase) result += 'i';\n  if (that.multiline) result += 'm';\n  if (that.unicode) result += 'u';\n  if (that.sticky) result += 'y';\n  return result;\n};\n","// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = require('./_object-keys-internal');\nvar enumBugKeys = require('./_enum-bug-keys');\n\nmodule.exports = Object.keys || function keys(O) {\n  return $keys(O, enumBugKeys);\n};\n","var pIE = require('./_object-pie');\nvar createDesc = require('./_property-desc');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar has = require('./_has');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nexports.f = require('./_descriptors') ? gOPD : function getOwnPropertyDescriptor(O, P) {\n  O = toIObject(O);\n  P = toPrimitive(P, true);\n  if (IE8_DOM_DEFINE) try {\n    return gOPD(O, P);\n  } catch (e) { /* empty */ }\n  if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);\n};\n","var dP = require('./_object-dp');\nvar anObject = require('./_an-object');\nvar getKeys = require('./_object-keys');\n\nmodule.exports = require('./_descriptors') ? Object.defineProperties : function defineProperties(O, Properties) {\n  anObject(O);\n  var keys = getKeys(Properties);\n  var length = keys.length;\n  var i = 0;\n  var P;\n  while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n  return O;\n};\n","/**\n * Resize detection strategy that injects objects to elements in order to detect resize events.\n * Heavily inspired by: http://www.backalleycoder.com/2013/03/18/cross-browser-event-based-element-resize-detection/\n */\n\n\"use strict\";\n\nvar browserDetector = require(\"../browser-detector\");\n\nmodule.exports = function(options) {\n    options             = options || {};\n    var reporter        = options.reporter;\n    var batchProcessor  = options.batchProcessor;\n    var getState        = options.stateHandler.getState;\n\n    if(!reporter) {\n        throw new Error(\"Missing required dependency: reporter.\");\n    }\n\n    /**\n     * Adds a resize event listener to the element.\n     * @public\n     * @param {element} element The element that should have the listener added.\n     * @param {function} listener The listener callback to be called for each resize event of the element. The element will be given as a parameter to the listener callback.\n     */\n    function addListener(element, listener) {\n        function listenerProxy() {\n            listener(element);\n        }\n\n        if(browserDetector.isIE(8)) {\n            //IE 8 does not support object, but supports the resize event directly on elements.\n            getState(element).object = {\n                proxy: listenerProxy\n            };\n            element.attachEvent(\"onresize\", listenerProxy);\n        } else {\n            var object = getObject(element);\n\n            if(!object) {\n                throw new Error(\"Element is not detectable by this strategy.\");\n            }\n\n            object.contentDocument.defaultView.addEventListener(\"resize\", listenerProxy);\n        }\n    }\n\n    function buildCssTextString(rules) {\n        var seperator = options.important ? \" !important; \" : \"; \";\n\n        return (rules.join(seperator) + seperator).trim();\n    }\n\n    /**\n     * Makes an element detectable and ready to be listened for resize events. Will call the callback when the element is ready to be listened for resize changes.\n     * @private\n     * @param {object} options Optional options object.\n     * @param {element} element The element to make detectable\n     * @param {function} callback The callback to be called when the element is ready to be listened for resize changes. Will be called with the element as first parameter.\n     */\n    function makeDetectable(options, element, callback) {\n        if (!callback) {\n            callback = element;\n            element = options;\n            options = null;\n        }\n\n        options = options || {};\n        var debug = options.debug;\n\n        function injectObject(element, callback) {\n            var OBJECT_STYLE = buildCssTextString([\"display: block\", \"position: absolute\", \"top: 0\", \"left: 0\", \"width: 100%\", \"height: 100%\", \"border: none\", \"padding: 0\", \"margin: 0\", \"opacity: 0\", \"z-index: -1000\", \"pointer-events: none\"]);\n\n            //The target element needs to be positioned (everything except static) so the absolute positioned object will be positioned relative to the target element.\n\n            // Position altering may be performed directly or on object load, depending on if style resolution is possible directly or not.\n            var positionCheckPerformed = false;\n\n            // The element may not yet be attached to the DOM, and therefore the style object may be empty in some browsers.\n            // Since the style object is a reference, it will be updated as soon as the element is attached to the DOM.\n            var style = window.getComputedStyle(element);\n            var width = element.offsetWidth;\n            var height = element.offsetHeight;\n\n            getState(element).startSize = {\n                width: width,\n                height: height\n            };\n\n            function mutateDom() {\n                function alterPositionStyles() {\n                    if(style.position === \"static\") {\n                        element.style.setProperty(\"position\", \"relative\", options.important ? \"important\" : \"\");\n\n                        var removeRelativeStyles = function(reporter, element, style, property) {\n                            function getNumericalValue(value) {\n                                return value.replace(/[^-\\d\\.]/g, \"\");\n                            }\n\n                            var value = style[property];\n\n                            if(value !== \"auto\" && getNumericalValue(value) !== \"0\") {\n                                reporter.warn(\"An element that is positioned static has style.\" + property + \"=\" + value + \" which is ignored due to the static positioning. The element will need to be positioned relative, so the style.\" + property + \" will be set to 0. Element: \", element);\n                                element.style.setProperty(property, \"0\", options.important ? \"important\" : \"\");\n                            }\n                        };\n\n                        //Check so that there are no accidental styles that will make the element styled differently now that is is relative.\n                        //If there are any, set them to 0 (this should be okay with the user since the style properties did nothing before [since the element was positioned static] anyway).\n                        removeRelativeStyles(reporter, element, style, \"top\");\n                        removeRelativeStyles(reporter, element, style, \"right\");\n                        removeRelativeStyles(reporter, element, style, \"bottom\");\n                        removeRelativeStyles(reporter, element, style, \"left\");\n                    }\n                }\n\n                function onObjectLoad() {\n                    // The object has been loaded, which means that the element now is guaranteed to be attached to the DOM.\n                    if (!positionCheckPerformed) {\n                        alterPositionStyles();\n                    }\n\n                    /*jshint validthis: true */\n\n                    function getDocument(element, callback) {\n                        //Opera 12 seem to call the object.onload before the actual document has been created.\n                        //So if it is not present, poll it with an timeout until it is present.\n                        //TODO: Could maybe be handled better with object.onreadystatechange or similar.\n                        if(!element.contentDocument) {\n                            var state = getState(element);\n                            if (state.checkForObjectDocumentTimeoutId) {\n                                window.clearTimeout(state.checkForObjectDocumentTimeoutId);\n                            }\n                            state.checkForObjectDocumentTimeoutId = setTimeout(function checkForObjectDocument() {\n                                state.checkForObjectDocumentTimeoutId = 0;\n                                getDocument(element, callback);\n                            }, 100);\n\n                            return;\n                        }\n\n                        callback(element.contentDocument);\n                    }\n\n                    //Mutating the object element here seems to fire another load event.\n                    //Mutating the inner document of the object element is fine though.\n                    var objectElement = this;\n\n                    //Create the style element to be added to the object.\n                    getDocument(objectElement, function onObjectDocumentReady(objectDocument) {\n                        //Notify that the element is ready to be listened to.\n                        callback(element);\n                    });\n                }\n\n                // The element may be detached from the DOM, and some browsers does not support style resolving of detached elements.\n                // The alterPositionStyles needs to be delayed until we know the element has been attached to the DOM (which we are sure of when the onObjectLoad has been fired), if style resolution is not possible.\n                if (style.position !== \"\") {\n                    alterPositionStyles(style);\n                    positionCheckPerformed = true;\n                }\n\n                //Add an object element as a child to the target element that will be listened to for resize events.\n                var object = document.createElement(\"object\");\n                object.style.cssText = OBJECT_STYLE;\n                object.tabIndex = -1;\n                object.type = \"text/html\";\n                object.setAttribute(\"aria-hidden\", \"true\");\n                object.onload = onObjectLoad;\n\n                //Safari: This must occur before adding the object to the DOM.\n                //IE: Does not like that this happens before, even if it is also added after.\n                if(!browserDetector.isIE()) {\n                    object.data = \"about:blank\";\n                }\n\n                if (!getState(element)) {\n                    // The element has been uninstalled before the actual loading happened.\n                    return;\n                }\n\n                element.appendChild(object);\n                getState(element).object = object;\n\n                //IE: This must occur after adding the object to the DOM.\n                if(browserDetector.isIE()) {\n                    object.data = \"about:blank\";\n                }\n            }\n\n            if(batchProcessor) {\n                batchProcessor.add(mutateDom);\n            } else {\n                mutateDom();\n            }\n        }\n\n        if(browserDetector.isIE(8)) {\n            //IE 8 does not support objects properly. Luckily they do support the resize event.\n            //So do not inject the object and notify that the element is already ready to be listened to.\n            //The event handler for the resize event is attached in the utils.addListener instead.\n            callback(element);\n        } else {\n            injectObject(element, callback);\n        }\n    }\n\n    /**\n     * Returns the child object of the target element.\n     * @private\n     * @param {element} element The target element.\n     * @returns The object element of the target.\n     */\n    function getObject(element) {\n        return getState(element).object;\n    }\n\n    function uninstall(element) {\n        if (!getState(element)) {\n            return;\n        }\n\n        var object = getObject(element);\n\n        if (!object) {\n            return;\n        }\n\n        if (browserDetector.isIE(8)) {\n            element.detachEvent(\"onresize\", object.proxy);\n        } else {\n            element.removeChild(object);\n        }\n\n        if (getState(element).checkForObjectDocumentTimeoutId) {\n            window.clearTimeout(getState(element).checkForObjectDocumentTimeoutId);\n        }\n\n        delete getState(element).object;\n    }\n\n    return {\n        makeDetectable: makeDetectable,\n        addListener: addListener,\n        uninstall: uninstall\n    };\n};\n","\"use strict\";\n\nvar detector = module.exports = {};\n\ndetector.isIE = function(version) {\n    function isAnyIeVersion() {\n        var agent = navigator.userAgent.toLowerCase();\n        return agent.indexOf(\"msie\") !== -1 || agent.indexOf(\"trident\") !== -1 || agent.indexOf(\" edge/\") !== -1;\n    }\n\n    if(!isAnyIeVersion()) {\n        return false;\n    }\n\n    if(!version) {\n        return true;\n    }\n\n    //Shamelessly stolen from https://gist.github.com/padolsey/527683\n    var ieVersion = (function(){\n        var undef,\n            v = 3,\n            div = document.createElement(\"div\"),\n            all = div.getElementsByTagName(\"i\");\n\n        do {\n            div.innerHTML = \"<!--[if gt IE \" + (++v) + \"]><i></i><![endif]-->\";\n        }\n        while (all[0]);\n\n        return v > 4 ? v : undef;\n    }());\n\n    return version === ieVersion;\n};\n\ndetector.isLegacyOpera = function() {\n    return !!window.opera;\n};\n","// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n  if (!isObject(it)) return it;\n  var fn, val;\n  if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n  if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n  if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n  throw TypeError(\"Can't convert object to primitive value\");\n};\n","var isObject = require('./_is-object');\nvar document = require('./_global').document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n  return is ? document.createElement(it) : {};\n};\n","'use strict';\nrequire('./es6.regexp.exec');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar fails = require('./_fails');\nvar defined = require('./_defined');\nvar wks = require('./_wks');\nvar regexpExec = require('./_regexp-exec');\n\nvar SPECIES = wks('species');\n\nvar REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {\n  // #replace needs built-in support for named groups.\n  // #match works fine because it just return the exec results, even if it has\n  // a \"grops\" property.\n  var re = /./;\n  re.exec = function () {\n    var result = [];\n    result.groups = { a: '7' };\n    return result;\n  };\n  return ''.replace(re, '$<a>') !== '7';\n});\n\nvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = (function () {\n  // Chrome 51 has a buggy \"split\" implementation when RegExp#exec !== nativeExec\n  var re = /(?:)/;\n  var originalExec = re.exec;\n  re.exec = function () { return originalExec.apply(this, arguments); };\n  var result = 'ab'.split(re);\n  return result.length === 2 && result[0] === 'a' && result[1] === 'b';\n})();\n\nmodule.exports = function (KEY, length, exec) {\n  var SYMBOL = wks(KEY);\n\n  var DELEGATES_TO_SYMBOL = !fails(function () {\n    // String methods call symbol-named RegEp methods\n    var O = {};\n    O[SYMBOL] = function () { return 7; };\n    return ''[KEY](O) != 7;\n  });\n\n  var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL ? !fails(function () {\n    // Symbol-named RegExp methods call .exec\n    var execCalled = false;\n    var re = /a/;\n    re.exec = function () { execCalled = true; return null; };\n    if (KEY === 'split') {\n      // RegExp[@@split] doesn't call the regex's exec method, but first creates\n      // a new one. We need to return the patched regex when creating the new one.\n      re.constructor = {};\n      re.constructor[SPECIES] = function () { return re; };\n    }\n    re[SYMBOL]('');\n    return !execCalled;\n  }) : undefined;\n\n  if (\n    !DELEGATES_TO_SYMBOL ||\n    !DELEGATES_TO_EXEC ||\n    (KEY === 'replace' && !REPLACE_SUPPORTS_NAMED_GROUPS) ||\n    (KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC)\n  ) {\n    var nativeRegExpMethod = /./[SYMBOL];\n    var fns = exec(\n      defined,\n      SYMBOL,\n      ''[KEY],\n      function maybeCallNative(nativeMethod, regexp, str, arg2, forceStringMethod) {\n        if (regexp.exec === regexpExec) {\n          if (DELEGATES_TO_SYMBOL && !forceStringMethod) {\n            // The native String method already delegates to @@method (this\n            // polyfilled function), leasing to infinite recursion.\n            // We avoid it by directly calling the native @@method method.\n            return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) };\n          }\n          return { done: true, value: nativeMethod.call(str, regexp, arg2) };\n        }\n        return { done: false };\n      }\n    );\n    var strfn = fns[0];\n    var rxfn = fns[1];\n\n    redefine(String.prototype, KEY, strfn);\n    hide(RegExp.prototype, SYMBOL, length == 2\n      // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)\n      // 21.2.5.11 RegExp.prototype[@@split](string, limit)\n      ? function (string, arg) { return rxfn.call(string, this, arg); }\n      // 21.2.5.6 RegExp.prototype[@@match](string)\n      // 21.2.5.9 RegExp.prototype[@@search](string)\n      : function (string) { return rxfn.call(string, this); }\n    );\n  }\n};\n","var isObject = require('./_is-object');\nvar document = require('./_global').document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n  return is ? document.createElement(it) : {};\n};\n","// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = require('./_cof');\nvar TAG = require('./_wks')('toStringTag');\n// ES3 wrong here\nvar ARG = cof(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n  try {\n    return it[key];\n  } catch (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n  var O, T, B;\n  return it === undefined ? 'Undefined' : it === null ? 'Null'\n    // @@toStringTag case\n    : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n    // builtinTag case\n    : ARG ? cof(O)\n    // ES3 arguments fallback\n    : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n","\"use strict\";\n\n/*\n  MIT License http://www.opensource.org/licenses/mit-license.php\n  Author Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\n// eslint-disable-next-line func-names\nmodule.exports = function (useSourceMap) {\n  var list = []; // return the list of modules as css string\n\n  list.toString = function toString() {\n    return this.map(function (item) {\n      var content = cssWithMappingToString(item, useSourceMap);\n\n      if (item[2]) {\n        return \"@media \".concat(item[2], \" {\").concat(content, \"}\");\n      }\n\n      return content;\n    }).join('');\n  }; // import a list of modules into the list\n  // eslint-disable-next-line func-names\n\n\n  list.i = function (modules, mediaQuery, dedupe) {\n    if (typeof modules === 'string') {\n      // eslint-disable-next-line no-param-reassign\n      modules = [[null, modules, '']];\n    }\n\n    var alreadyImportedModules = {};\n\n    if (dedupe) {\n      for (var i = 0; i < this.length; i++) {\n        // eslint-disable-next-line prefer-destructuring\n        var id = this[i][0];\n\n        if (id != null) {\n          alreadyImportedModules[id] = true;\n        }\n      }\n    }\n\n    for (var _i = 0; _i < modules.length; _i++) {\n      var item = [].concat(modules[_i]);\n\n      if (dedupe && alreadyImportedModules[item[0]]) {\n        // eslint-disable-next-line no-continue\n        continue;\n      }\n\n      if (mediaQuery) {\n        if (!item[2]) {\n          item[2] = mediaQuery;\n        } else {\n          item[2] = \"\".concat(mediaQuery, \" and \").concat(item[2]);\n        }\n      }\n\n      list.push(item);\n    }\n  };\n\n  return list;\n};\n\nfunction cssWithMappingToString(item, useSourceMap) {\n  var content = item[1] || ''; // eslint-disable-next-line prefer-destructuring\n\n  var cssMapping = item[3];\n\n  if (!cssMapping) {\n    return content;\n  }\n\n  if (useSourceMap && typeof btoa === 'function') {\n    var sourceMapping = toComment(cssMapping);\n    var sourceURLs = cssMapping.sources.map(function (source) {\n      return \"/*# sourceURL=\".concat(cssMapping.sourceRoot || '').concat(source, \" */\");\n    });\n    return [content].concat(sourceURLs).concat([sourceMapping]).join('\\n');\n  }\n\n  return [content].join('\\n');\n} // Adapted from convert-source-map (MIT)\n\n\nfunction toComment(sourceMap) {\n  // eslint-disable-next-line no-undef\n  var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));\n  var data = \"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(base64);\n  return \"/*# \".concat(data, \" */\");\n}","exports.f = Object.getOwnPropertySymbols;\n","module.exports = function (exec) {\n  try {\n    return !!exec();\n  } catch (e) {\n    return true;\n  }\n};\n","var global = require('./_global');\nvar hide = require('./_hide');\nvar has = require('./_has');\nvar SRC = require('./_uid')('src');\nvar $toString = require('./_function-to-string');\nvar TO_STRING = 'toString';\nvar TPL = ('' + $toString).split(TO_STRING);\n\nrequire('./_core').inspectSource = function (it) {\n  return $toString.call(it);\n};\n\n(module.exports = function (O, key, val, safe) {\n  var isFunction = typeof val == 'function';\n  if (isFunction) has(val, 'name') || hide(val, 'name', key);\n  if (O[key] === val) return;\n  if (isFunction) has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key)));\n  if (O === global) {\n    O[key] = val;\n  } else if (!safe) {\n    delete O[key];\n    hide(O, key, val);\n  } else if (O[key]) {\n    O[key] = val;\n  } else {\n    hide(O, key, val);\n  }\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, TO_STRING, function toString() {\n  return typeof this == 'function' && this[SRC] || $toString.call(this);\n});\n","// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = require('./_an-object');\nvar dPs = require('./_object-dps');\nvar enumBugKeys = require('./_enum-bug-keys');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n  // Thrash, waste and sodomy: IE GC bug\n  var iframe = require('./_dom-create')('iframe');\n  var i = enumBugKeys.length;\n  var lt = '<';\n  var gt = '>';\n  var iframeDocument;\n  iframe.style.display = 'none';\n  require('./_html').appendChild(iframe);\n  iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n  // createDict = iframe.contentWindow.Object;\n  // html.removeChild(iframe);\n  iframeDocument = iframe.contentWindow.document;\n  iframeDocument.open();\n  iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n  iframeDocument.close();\n  createDict = iframeDocument.F;\n  while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n  return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n  var result;\n  if (O !== null) {\n    Empty[PROTOTYPE] = anObject(O);\n    result = new Empty();\n    Empty[PROTOTYPE] = null;\n    // add \"__proto__\" for Object.getPrototypeOf polyfill\n    result[IE_PROTO] = O;\n  } else result = createDict();\n  return Properties === undefined ? result : dPs(result, Properties);\n};\n","var store = require('./_shared')('wks');\nvar uid = require('./_uid');\nvar Symbol = require('./_global').Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n  return store[name] || (store[name] =\n    USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n","\"use strict\";\n\nmodule.exports = function() {\n    var idCount = 1;\n\n    /**\n     * Generates a new unique id in the context.\n     * @public\n     * @returns {number} A unique id in the context.\n     */\n    function generate() {\n        return idCount++;\n    }\n\n    return {\n        generate: generate\n    };\n};\n","module.exports = false;\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n  return toString.call(it).slice(8, -1);\n};\n","'use strict';\nvar fails = require('./_fails');\n\nmodule.exports = function (method, arg) {\n  return !!method && fails(function () {\n    // eslint-disable-next-line no-useless-call\n    arg ? method.call(null, function () { /* empty */ }, 1) : method.call(null);\n  });\n};\n","var dP = require('./_object-dp');\nvar createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function (object, key, value) {\n  return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n  object[key] = value;\n  return object;\n};\n","var dP = require('./_object-dp');\nvar createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function (object, key, value) {\n  return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n  object[key] = value;\n  return object;\n};\n","// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = require('./_has');\nvar toObject = require('./_to-object');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n  O = toObject(O);\n  if (has(O, IE_PROTO)) return O[IE_PROTO];\n  if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n    return O.constructor.prototype;\n  } return O instanceof Object ? ObjectProto : null;\n};\n","'use strict';\nvar create = require('./_object-create');\nvar descriptor = require('./_property-desc');\nvar setToStringTag = require('./_set-to-string-tag');\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nrequire('./_hide')(IteratorPrototype, require('./_wks')('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n  Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n  setToStringTag(Constructor, NAME + ' Iterator');\n};\n","require('../../modules/es6.object.define-property');\nvar $Object = require('../../modules/_core').Object;\nmodule.exports = function defineProperty(it, key, desc) {\n  return $Object.defineProperty(it, key, desc);\n};\n","// 19.1.2.14 Object.keys(O)\nvar toObject = require('./_to-object');\nvar $keys = require('./_object-keys');\n\nrequire('./_object-sap')('keys', function () {\n  return function keys(it) {\n    return $keys(toObject(it));\n  };\n});\n","// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n  return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n","module.exports = function (bitmap, value) {\n  return {\n    enumerable: !(bitmap & 1),\n    configurable: !(bitmap & 2),\n    writable: !(bitmap & 4),\n    value: value\n  };\n};\n","var $export = require('./_export');\n// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)\n$export($export.S + $export.F * !require('./_descriptors'), 'Object', { defineProperty: require('./_object-dp').f });\n","'use strict';\n\nvar anObject = require('./_an-object');\nvar toLength = require('./_to-length');\nvar advanceStringIndex = require('./_advance-string-index');\nvar regExpExec = require('./_regexp-exec-abstract');\n\n// @@match logic\nrequire('./_fix-re-wks')('match', 1, function (defined, MATCH, $match, maybeCallNative) {\n  return [\n    // `String.prototype.match` method\n    // https://tc39.github.io/ecma262/#sec-string.prototype.match\n    function match(regexp) {\n      var O = defined(this);\n      var fn = regexp == undefined ? undefined : regexp[MATCH];\n      return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[MATCH](String(O));\n    },\n    // `RegExp.prototype[@@match]` method\n    // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@match\n    function (regexp) {\n      var res = maybeCallNative($match, regexp, this);\n      if (res.done) return res.value;\n      var rx = anObject(regexp);\n      var S = String(this);\n      if (!rx.global) return regExpExec(rx, S);\n      var fullUnicode = rx.unicode;\n      rx.lastIndex = 0;\n      var A = [];\n      var n = 0;\n      var result;\n      while ((result = regExpExec(rx, S)) !== null) {\n        var matchStr = String(result[0]);\n        A[n] = matchStr;\n        if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n        n++;\n      }\n      return n === 0 ? null : A;\n    }\n  ];\n});\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".vue-grid-item{-webkit-transition:all .2s ease;transition:all .2s ease;-webkit-transition-property:left,top,right;transition-property:left,top,right}.vue-grid-item,.vue-grid-item.no-touch{-ms-touch-action:none;touch-action:none}.vue-grid-item.cssTransforms{-webkit-transition-property:-webkit-transform;transition-property:-webkit-transform;transition-property:transform;transition-property:transform,-webkit-transform;left:0;right:auto}.vue-grid-item.cssTransforms.render-rtl{left:auto;right:0}.vue-grid-item.resizing{opacity:.6;z-index:3}.vue-grid-item.vue-draggable-dragging{-webkit-transition:none;transition:none;z-index:3}.vue-grid-item.vue-grid-placeholder{background:red;opacity:.2;-webkit-transition-duration:.1s;transition-duration:.1s;z-index:2;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none}.vue-grid-item>.vue-resizable-handle{position:absolute;width:20px;height:20px;bottom:0;right:0;background:url(\\\"data:image/svg+xml;base64,PHN2ZyBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjojZmZmZmZmMDAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjYiIGhlaWdodD0iNiI+PHBhdGggZD0iTTYgNkgwVjQuMmg0LjJWMEg2djZ6IiBvcGFjaXR5PSIuMzAyIi8+PC9zdmc+\\\");background-position:100% 100%;padding:0 3px 3px 0;background-repeat:no-repeat;background-origin:content-box;-webkit-box-sizing:border-box;box-sizing:border-box;cursor:se-resize}.vue-grid-item>.vue-rtl-resizable-handle{bottom:0;left:0;background:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTAiIGhlaWdodD0iMTAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbD0ibm9uZSIgZD0iTS0xLTFoMTJ2MTJILTF6Ii8+PGc+PHBhdGggc3Ryb2tlLWxpbmVjYXA9InVuZGVmaW5lZCIgc3Ryb2tlLWxpbmVqb2luPSJ1bmRlZmluZWQiIHN0cm9rZS13aWR0aD0iMS41IiBzdHJva2U9IiMwMDAiIGZpbGw9Im5vbmUiIGQ9Ik0xNDQuODIxLTM4LjM5M2wtMjAuMzU3LTMxLjc4NSIvPjxwYXRoIHN0cm9rZT0iIzY2NiIgc3Ryb2tlLWxpbmVjYXA9InVuZGVmaW5lZCIgc3Ryb2tlLWxpbmVqb2luPSJ1bmRlZmluZWQiIHN0cm9rZS13aWR0aD0iMiIgZmlsbD0ibm9uZSIgZD0iTS45NDctLjAxOHY5LjEyNU0tLjY1NiA5aDEwLjczIi8+PC9nPjwvc3ZnPg==);background-position:0 100%;padding-left:3px;background-repeat:no-repeat;background-origin:content-box;cursor:sw-resize;right:auto}.vue-grid-item.disable-userselect{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}\", \"\"]);\n// Exports\nmodule.exports = exports;\n","/**\n * Translates the list format produced by css-loader into something\n * easier to manipulate.\n */\nexport default function listToStyles (parentId, list) {\n  var styles = []\n  var newStyles = {}\n  for (var i = 0; i < list.length; i++) {\n    var item = list[i]\n    var id = item[0]\n    var css = item[1]\n    var media = item[2]\n    var sourceMap = item[3]\n    var part = {\n      id: parentId + ':' + i,\n      css: css,\n      media: media,\n      sourceMap: sourceMap\n    }\n    if (!newStyles[id]) {\n      styles.push(newStyles[id] = { id: id, parts: [part] })\n    } else {\n      newStyles[id].parts.push(part)\n    }\n  }\n  return styles\n}\n","/*\n  MIT License http://www.opensource.org/licenses/mit-license.php\n  Author Tobias Koppers @sokra\n  Modified by Evan You @yyx990803\n*/\n\nimport listToStyles from './listToStyles'\n\nvar hasDocument = typeof document !== 'undefined'\n\nif (typeof DEBUG !== 'undefined' && DEBUG) {\n  if (!hasDocument) {\n    throw new Error(\n    'vue-style-loader cannot be used in a non-browser environment. ' +\n    \"Use { target: 'node' } in your Webpack config to indicate a server-rendering environment.\"\n  ) }\n}\n\n/*\ntype StyleObject = {\n  id: number;\n  parts: Array<StyleObjectPart>\n}\n\ntype StyleObjectPart = {\n  css: string;\n  media: string;\n  sourceMap: ?string\n}\n*/\n\nvar stylesInDom = {/*\n  [id: number]: {\n    id: number,\n    refs: number,\n    parts: Array<(obj?: StyleObjectPart) => void>\n  }\n*/}\n\nvar head = hasDocument && (document.head || document.getElementsByTagName('head')[0])\nvar singletonElement = null\nvar singletonCounter = 0\nvar isProduction = false\nvar noop = function () {}\nvar options = null\nvar ssrIdKey = 'data-vue-ssr-id'\n\n// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>\n// tags it will allow on a page\nvar isOldIE = typeof navigator !== 'undefined' && /msie [6-9]\\b/.test(navigator.userAgent.toLowerCase())\n\nexport default function addStylesClient (parentId, list, _isProduction, _options) {\n  isProduction = _isProduction\n\n  options = _options || {}\n\n  var styles = listToStyles(parentId, list)\n  addStylesToDom(styles)\n\n  return function update (newList) {\n    var mayRemove = []\n    for (var i = 0; i < styles.length; i++) {\n      var item = styles[i]\n      var domStyle = stylesInDom[item.id]\n      domStyle.refs--\n      mayRemove.push(domStyle)\n    }\n    if (newList) {\n      styles = listToStyles(parentId, newList)\n      addStylesToDom(styles)\n    } else {\n      styles = []\n    }\n    for (var i = 0; i < mayRemove.length; i++) {\n      var domStyle = mayRemove[i]\n      if (domStyle.refs === 0) {\n        for (var j = 0; j < domStyle.parts.length; j++) {\n          domStyle.parts[j]()\n        }\n        delete stylesInDom[domStyle.id]\n      }\n    }\n  }\n}\n\nfunction addStylesToDom (styles /* Array<StyleObject> */) {\n  for (var i = 0; i < styles.length; i++) {\n    var item = styles[i]\n    var domStyle = stylesInDom[item.id]\n    if (domStyle) {\n      domStyle.refs++\n      for (var j = 0; j < domStyle.parts.length; j++) {\n        domStyle.parts[j](item.parts[j])\n      }\n      for (; j < item.parts.length; j++) {\n        domStyle.parts.push(addStyle(item.parts[j]))\n      }\n      if (domStyle.parts.length > item.parts.length) {\n        domStyle.parts.length = item.parts.length\n      }\n    } else {\n      var parts = []\n      for (var j = 0; j < item.parts.length; j++) {\n        parts.push(addStyle(item.parts[j]))\n      }\n      stylesInDom[item.id] = { id: item.id, refs: 1, parts: parts }\n    }\n  }\n}\n\nfunction createStyleElement () {\n  var styleElement = document.createElement('style')\n  styleElement.type = 'text/css'\n  head.appendChild(styleElement)\n  return styleElement\n}\n\nfunction addStyle (obj /* StyleObjectPart */) {\n  var update, remove\n  var styleElement = document.querySelector('style[' + ssrIdKey + '~=\"' + obj.id + '\"]')\n\n  if (styleElement) {\n    if (isProduction) {\n      // has SSR styles and in production mode.\n      // simply do nothing.\n      return noop\n    } else {\n      // has SSR styles but in dev mode.\n      // for some reason Chrome can't handle source map in server-rendered\n      // style tags - source maps in <style> only works if the style tag is\n      // created and inserted dynamically. So we remove the server rendered\n      // styles and inject new ones.\n      styleElement.parentNode.removeChild(styleElement)\n    }\n  }\n\n  if (isOldIE) {\n    // use singleton mode for IE9.\n    var styleIndex = singletonCounter++\n    styleElement = singletonElement || (singletonElement = createStyleElement())\n    update = applyToSingletonTag.bind(null, styleElement, styleIndex, false)\n    remove = applyToSingletonTag.bind(null, styleElement, styleIndex, true)\n  } else {\n    // use multi-style-tag mode in all other cases\n    styleElement = createStyleElement()\n    update = applyToTag.bind(null, styleElement)\n    remove = function () {\n      styleElement.parentNode.removeChild(styleElement)\n    }\n  }\n\n  update(obj)\n\n  return function updateStyle (newObj /* StyleObjectPart */) {\n    if (newObj) {\n      if (newObj.css === obj.css &&\n          newObj.media === obj.media &&\n          newObj.sourceMap === obj.sourceMap) {\n        return\n      }\n      update(obj = newObj)\n    } else {\n      remove()\n    }\n  }\n}\n\nvar replaceText = (function () {\n  var textStore = []\n\n  return function (index, replacement) {\n    textStore[index] = replacement\n    return textStore.filter(Boolean).join('\\n')\n  }\n})()\n\nfunction applyToSingletonTag (styleElement, index, remove, obj) {\n  var css = remove ? '' : obj.css\n\n  if (styleElement.styleSheet) {\n    styleElement.styleSheet.cssText = replaceText(index, css)\n  } else {\n    var cssNode = document.createTextNode(css)\n    var childNodes = styleElement.childNodes\n    if (childNodes[index]) styleElement.removeChild(childNodes[index])\n    if (childNodes.length) {\n      styleElement.insertBefore(cssNode, childNodes[index])\n    } else {\n      styleElement.appendChild(cssNode)\n    }\n  }\n}\n\nfunction applyToTag (styleElement, obj) {\n  var css = obj.css\n  var media = obj.media\n  var sourceMap = obj.sourceMap\n\n  if (media) {\n    styleElement.setAttribute('media', media)\n  }\n  if (options.ssrId) {\n    styleElement.setAttribute(ssrIdKey, obj.id)\n  }\n\n  if (sourceMap) {\n    // https://developer.chrome.com/devtools/docs/javascript-debugging\n    // this makes source maps inside style tags work properly in Chrome\n    css += '\\n/*# sourceURL=' + sourceMap.sources[0] + ' */'\n    // http://stackoverflow.com/a/26603875\n    css += '\\n/*# sourceMappingURL=data:application/json;base64,' + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + ' */'\n  }\n\n  if (styleElement.styleSheet) {\n    styleElement.styleSheet.cssText = css\n  } else {\n    while (styleElement.firstChild) {\n      styleElement.removeChild(styleElement.firstChild)\n    }\n    styleElement.appendChild(document.createTextNode(css))\n  }\n}\n","\"use strict\";\n\nmodule.exports = function(idHandler) {\n    var eventListeners = {};\n\n    /**\n     * Gets all listeners for the given element.\n     * @public\n     * @param {element} element The element to get all listeners for.\n     * @returns All listeners for the given element.\n     */\n    function getListeners(element) {\n        var id = idHandler.get(element);\n\n        if (id === undefined) {\n            return [];\n        }\n\n        return eventListeners[id] || [];\n    }\n\n    /**\n     * Stores the given listener for the given element. Will not actually add the listener to the element.\n     * @public\n     * @param {element} element The element that should have the listener added.\n     * @param {function} listener The callback that the element has added.\n     */\n    function addListener(element, listener) {\n        var id = idHandler.get(element);\n\n        if(!eventListeners[id]) {\n            eventListeners[id] = [];\n        }\n\n        eventListeners[id].push(listener);\n    }\n\n    function removeListener(element, listener) {\n        var listeners = getListeners(element);\n        for (var i = 0, len = listeners.length; i < len; ++i) {\n            if (listeners[i] === listener) {\n              listeners.splice(i, 1);\n              break;\n            }\n        }\n    }\n\n    function removeAllListeners(element) {\n      var listeners = getListeners(element);\n      if (!listeners) { return; }\n      listeners.length = 0;\n    }\n\n    return {\n        get: getListeners,\n        add: addListener,\n        removeListener: removeListener,\n        removeAllListeners: removeAllListeners\n    };\n};\n","// 7.1.13 ToObject(argument)\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n  return Object(defined(it));\n};\n","\"use strict\";\n\nmodule.exports = function(options) {\n    var idGenerator     = options.idGenerator;\n    var getState        = options.stateHandler.getState;\n\n    /**\n     * Gets the resize detector id of the element.\n     * @public\n     * @param {element} element The target element to get the id of.\n     * @returns {string|number|null} The id of the element. Null if it has no id.\n     */\n    function getId(element) {\n        var state = getState(element);\n\n        if (state && state.id !== undefined) {\n            return state.id;\n        }\n\n        return null;\n    }\n\n    /**\n     * Sets the resize detector id of the element. Requires the element to have a resize detector state initialized.\n     * @public\n     * @param {element} element The target element to set the id of.\n     * @returns {string|number|null} The id of the element.\n     */\n    function setId(element) {\n        var state = getState(element);\n\n        if (!state) {\n            throw new Error(\"setId required the element to have a resize detection state.\");\n        }\n\n        var id = idGenerator.generate();\n\n        state.id = id;\n\n        return id;\n    }\n\n    return {\n        get: getId,\n        set: setId\n    };\n};\n","\"use strict\";\n\nvar utils = module.exports = {};\n\nutils.getOption = getOption;\n\nfunction getOption(options, name, defaultValue) {\n    var value = options[name];\n\n    if((value === undefined || value === null) && defaultValue !== undefined) {\n        return defaultValue;\n    }\n\n    return value;\n}\n","'use strict';\n\nvar regexpFlags = require('./_flags');\n\nvar nativeExec = RegExp.prototype.exec;\n// This always refers to the native implementation, because the\n// String#replace polyfill uses ./fix-regexp-well-known-symbol-logic.js,\n// which loads this file before patching the method.\nvar nativeReplace = String.prototype.replace;\n\nvar patchedExec = nativeExec;\n\nvar LAST_INDEX = 'lastIndex';\n\nvar UPDATES_LAST_INDEX_WRONG = (function () {\n  var re1 = /a/,\n      re2 = /b*/g;\n  nativeExec.call(re1, 'a');\n  nativeExec.call(re2, 'a');\n  return re1[LAST_INDEX] !== 0 || re2[LAST_INDEX] !== 0;\n})();\n\n// nonparticipating capturing group, copied from es5-shim's String#split patch.\nvar NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;\n\nvar PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED;\n\nif (PATCH) {\n  patchedExec = function exec(str) {\n    var re = this;\n    var lastIndex, reCopy, match, i;\n\n    if (NPCG_INCLUDED) {\n      reCopy = new RegExp('^' + re.source + '$(?!\\\\s)', regexpFlags.call(re));\n    }\n    if (UPDATES_LAST_INDEX_WRONG) lastIndex = re[LAST_INDEX];\n\n    match = nativeExec.call(re, str);\n\n    if (UPDATES_LAST_INDEX_WRONG && match) {\n      re[LAST_INDEX] = re.global ? match.index + match[0].length : lastIndex;\n    }\n    if (NPCG_INCLUDED && match && match.length > 1) {\n      // Fix browsers whose `exec` methods don't consistently return `undefined`\n      // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/\n      // eslint-disable-next-line no-loop-func\n      nativeReplace.call(match[0], reCopy, function () {\n        for (i = 1; i < arguments.length - 2; i++) {\n          if (arguments[i] === undefined) match[i] = undefined;\n        }\n      });\n    }\n\n    return match;\n  };\n}\n\nmodule.exports = patchedExec;\n","exports.f = {}.propertyIsEnumerable;\n","var core = require('./_core');\nvar global = require('./_global');\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n  return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n  version: core.version,\n  mode: require('./_library') ? 'pure' : 'global',\n  copyright: '© 2020 Denis Pushkarev (zloirock.ru)'\n});\n","'use strict';\nvar $export = require('./_export');\nvar aFunction = require('./_a-function');\nvar toObject = require('./_to-object');\nvar fails = require('./_fails');\nvar $sort = [].sort;\nvar test = [1, 2, 3];\n\n$export($export.P + $export.F * (fails(function () {\n  // IE8-\n  test.sort(undefined);\n}) || !fails(function () {\n  // V8 bug\n  test.sort(null);\n  // Old WebKit\n}) || !require('./_strict-method')($sort)), 'Array', {\n  // 22.1.3.25 Array.prototype.sort(comparefn)\n  sort: function sort(comparefn) {\n    return comparefn === undefined\n      ? $sort.call(toObject(this))\n      : $sort.call(toObject(this), aFunction(comparefn));\n  }\n});\n","var core = module.exports = { version: '2.6.12' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n","\"use strict\";\n\nmodule.exports = function(options) {\n    var getState = options.stateHandler.getState;\n\n    /**\n     * Tells if the element has been made detectable and ready to be listened for resize events.\n     * @public\n     * @param {element} The element to check.\n     * @returns {boolean} True or false depending on if the element is detectable or not.\n     */\n    function isDetectable(element) {\n        var state = getState(element);\n        return state && !!state.isDetectable;\n    }\n\n    /**\n     * Marks the element that it has been made detectable and ready to be listened for resize events.\n     * @public\n     * @param {element} The element to mark.\n     */\n    function markAsDetectable(element) {\n        getState(element).isDetectable = true;\n    }\n\n    /**\n     * Tells if the element is busy or not.\n     * @public\n     * @param {element} The element to check.\n     * @returns {boolean} True or false depending on if the element is busy or not.\n     */\n    function isBusy(element) {\n        return !!getState(element).busy;\n    }\n\n    /**\n     * Marks the object is busy and should not be made detectable.\n     * @public\n     * @param {element} element The element to mark.\n     * @param {boolean} busy If the element is busy or not.\n     */\n    function markBusy(element, busy) {\n        getState(element).busy = !!busy;\n    }\n\n    return {\n        isDetectable: isDetectable,\n        markAsDetectable: markAsDetectable,\n        isBusy: isBusy,\n        markBusy: markBusy\n    };\n};\n","var global = require('./_global');\nvar core = require('./_core');\nvar hide = require('./_hide');\nvar redefine = require('./_redefine');\nvar ctx = require('./_ctx');\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n  var IS_FORCED = type & $export.F;\n  var IS_GLOBAL = type & $export.G;\n  var IS_STATIC = type & $export.S;\n  var IS_PROTO = type & $export.P;\n  var IS_BIND = type & $export.B;\n  var target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE];\n  var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n  var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {});\n  var key, own, out, exp;\n  if (IS_GLOBAL) source = name;\n  for (key in source) {\n    // contains in native\n    own = !IS_FORCED && target && target[key] !== undefined;\n    // export native or passed\n    out = (own ? target : source)[key];\n    // bind timers to global for call from export context\n    exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n    // extend global\n    if (target) redefine(target, key, out, type & $export.U);\n    // export\n    if (exports[key] != out) hide(exports, key, exp);\n    if (IS_PROTO && expProto[key] != out) expProto[key] = out;\n  }\n};\nglobal.core = core;\n// type bitmap\n$export.F = 1;   // forced\n$export.G = 2;   // global\n$export.S = 4;   // static\n$export.P = 8;   // proto\n$export.B = 16;  // bind\n$export.W = 32;  // wrap\n$export.U = 64;  // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n","var isObject = require('./_is-object');\nvar setPrototypeOf = require('./_set-proto').set;\nmodule.exports = function (that, target, C) {\n  var S = target.constructor;\n  var P;\n  if (S !== C && typeof S == 'function' && (P = S.prototype) !== C.prototype && isObject(P) && setPrototypeOf) {\n    setPrototypeOf(that, P);\n  } return that;\n};\n","// most Object methods by ES6 should accept primitives\nvar $export = require('./_export');\nvar core = require('./_core');\nvar fails = require('./_fails');\nmodule.exports = function (KEY, exec) {\n  var fn = (core.Object || {})[KEY] || Object[KEY];\n  var exp = {};\n  exp[KEY] = exec(fn);\n  $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);\n};\n","'use strict';\n\nvar classof = require('./_classof');\nvar builtinExec = RegExp.prototype.exec;\n\n // `RegExpExec` abstract operation\n// https://tc39.github.io/ecma262/#sec-regexpexec\nmodule.exports = function (R, S) {\n  var exec = R.exec;\n  if (typeof exec === 'function') {\n    var result = exec.call(R, S);\n    if (typeof result !== 'object') {\n      throw new TypeError('RegExp exec method returned something other than an Object or null');\n    }\n    return result;\n  }\n  if (classof(R) !== 'RegExp') {\n    throw new TypeError('RegExp#exec called on incompatible receiver');\n  }\n  return builtinExec.call(R, S);\n};\n","var shared = require('./_shared')('keys');\nvar uid = require('./_uid');\nmodule.exports = function (key) {\n  return shared[key] || (shared[key] = uid(key));\n};\n","// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = require('./_cof');\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n  return cof(it) == 'String' ? it.split('') : Object(it);\n};\n","var global = require('./_global');\nvar core = require('./_core');\nvar ctx = require('./_ctx');\nvar hide = require('./_hide');\nvar has = require('./_has');\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n  var IS_FORCED = type & $export.F;\n  var IS_GLOBAL = type & $export.G;\n  var IS_STATIC = type & $export.S;\n  var IS_PROTO = type & $export.P;\n  var IS_BIND = type & $export.B;\n  var IS_WRAP = type & $export.W;\n  var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n  var expProto = exports[PROTOTYPE];\n  var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE];\n  var key, own, out;\n  if (IS_GLOBAL) source = name;\n  for (key in source) {\n    // contains in native\n    own = !IS_FORCED && target && target[key] !== undefined;\n    if (own && has(exports, key)) continue;\n    // export native or passed\n    out = own ? target[key] : source[key];\n    // prevent global pollution for namespaces\n    exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]\n    // bind timers to global for call from export context\n    : IS_BIND && own ? ctx(out, global)\n    // wrap global constructors for prevent change them in library\n    : IS_WRAP && target[key] == out ? (function (C) {\n      var F = function (a, b, c) {\n        if (this instanceof C) {\n          switch (arguments.length) {\n            case 0: return new C();\n            case 1: return new C(a);\n            case 2: return new C(a, b);\n          } return new C(a, b, c);\n        } return C.apply(this, arguments);\n      };\n      F[PROTOTYPE] = C[PROTOTYPE];\n      return F;\n    // make static versions for prototype methods\n    })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n    // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%\n    if (IS_PROTO) {\n      (exports.virtual || (exports.virtual = {}))[key] = out;\n      // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%\n      if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out);\n    }\n  }\n};\n// type bitmap\n$export.F = 1;   // forced\n$export.G = 2;   // global\n$export.S = 4;   // static\n$export.P = 8;   // proto\n$export.B = 16;  // bind\n$export.W = 32;  // wrap\n$export.U = 64;  // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n","export * from \"-!../../node_modules/vue-style-loader/index.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./GridLayout.vue?vue&type=style&index=0&id=fc5948f6&lang=css\"","// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = require('./_iobject');\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n  return IObject(defined(it));\n};\n","var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n  return hasOwnProperty.call(it, key);\n};\n","// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n  if (!isObject(it)) return it;\n  var fn, val;\n  if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n  if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n  if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n  throw TypeError(\"Can't convert object to primitive value\");\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n// runtime helper for setting properties on components\n// in a tree-shakable way\nexports.default = (sfc, props) => {\n    const target = sfc.__vccOpts || sfc;\n    for (const [key, val] of props) {\n        target[key] = val;\n    }\n    return target;\n};\n","// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n  ? window : typeof self != 'undefined' && self.Math == Math ? self\n  // eslint-disable-next-line no-new-func\n  : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n","var toInteger = require('./_to-integer');\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n  index = toInteger(index);\n  return index < 0 ? max(index + length, 0) : min(index, length);\n};\n","module.exports = !require('./_descriptors') && !require('./_fails')(function () {\n  return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n","module.exports = function (it) {\n  if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n  return it;\n};\n","module.exports = function (exec) {\n  try {\n    return !!exec();\n  } catch (e) {\n    return true;\n  }\n};\n","var def = require('./_object-dp').f;\nvar has = require('./_has');\nvar TAG = require('./_wks')('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n  if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n","var core = module.exports = { version: '2.6.12' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".vue-grid-layout{position:relative;-webkit-transition:height .2s ease;transition:height .2s ease}\", \"\"]);\n// Exports\nmodule.exports = exports;\n","module.exports = {};\n","module.exports = require(\"core-js/library/fn/object/define-property\");","var anObject = require('./_an-object');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar toPrimitive = require('./_to-primitive');\nvar dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n  anObject(O);\n  P = toPrimitive(P, true);\n  anObject(Attributes);\n  if (IE8_DOM_DEFINE) try {\n    return dP(O, P, Attributes);\n  } catch (e) { /* empty */ }\n  if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n  if ('value' in Attributes) O[P] = Attributes.value;\n  return O;\n};\n","// addapted from the document.currentScript polyfill by Adam Miller\n// MIT license\n// source: https://github.com/amiller-gh/currentScript-polyfill\n\n// added support for Firefox https://bugzilla.mozilla.org/show_bug.cgi?id=1620505\n\n(function (root, factory) {\n  if (typeof define === 'function' && define.amd) {\n    define([], factory);\n  } else if (typeof module === 'object' && module.exports) {\n    module.exports = factory();\n  } else {\n    root.getCurrentScript = factory();\n  }\n}(typeof self !== 'undefined' ? self : this, function () {\n  function getCurrentScript () {\n    var descriptor = Object.getOwnPropertyDescriptor(document, 'currentScript')\n    // for chrome\n    if (!descriptor && 'currentScript' in document && document.currentScript) {\n      return document.currentScript\n    }\n\n    // for other browsers with native support for currentScript\n    if (descriptor && descriptor.get !== getCurrentScript && document.currentScript) {\n      return document.currentScript\n    }\n  \n    // IE 8-10 support script readyState\n    // IE 11+ & Firefox support stack trace\n    try {\n      throw new Error();\n    }\n    catch (err) {\n      // Find the second match for the \"at\" string to get file src url from stack.\n      var ieStackRegExp = /.*at [^(]*\\((.*):(.+):(.+)\\)$/ig,\n        ffStackRegExp = /@([^@]*):(\\d+):(\\d+)\\s*$/ig,\n        stackDetails = ieStackRegExp.exec(err.stack) || ffStackRegExp.exec(err.stack),\n        scriptLocation = (stackDetails && stackDetails[1]) || false,\n        line = (stackDetails && stackDetails[2]) || false,\n        currentLocation = document.location.href.replace(document.location.hash, ''),\n        pageSource,\n        inlineScriptSourceRegExp,\n        inlineScriptSource,\n        scripts = document.getElementsByTagName('script'); // Live NodeList collection\n  \n      if (scriptLocation === currentLocation) {\n        pageSource = document.documentElement.outerHTML;\n        inlineScriptSourceRegExp = new RegExp('(?:[^\\\\n]+?\\\\n){0,' + (line - 2) + '}[^<]*<script>([\\\\d\\\\D]*?)<\\\\/script>[\\\\d\\\\D]*', 'i');\n        inlineScriptSource = pageSource.replace(inlineScriptSourceRegExp, '$1').trim();\n      }\n  \n      for (var i = 0; i < scripts.length; i++) {\n        // If ready state is interactive, return the script tag\n        if (scripts[i].readyState === 'interactive') {\n          return scripts[i];\n        }\n  \n        // If src matches, return the script tag\n        if (scripts[i].src === scriptLocation) {\n          return scripts[i];\n        }\n  \n        // If inline source matches, return the script tag\n        if (\n          scriptLocation === currentLocation &&\n          scripts[i].innerHTML &&\n          scripts[i].innerHTML.trim() === inlineScriptSource\n        ) {\n          return scripts[i];\n        }\n      }\n  \n      // If no match, return null\n      return null;\n    }\n  };\n\n  return getCurrentScript\n}));\n","// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nvar isObject = require('./_is-object');\nvar anObject = require('./_an-object');\nvar check = function (O, proto) {\n  anObject(O);\n  if (!isObject(proto) && proto !== null) throw TypeError(proto + \": can't set as prototype!\");\n};\nmodule.exports = {\n  set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line\n    function (test, buggy, set) {\n      try {\n        set = require('./_ctx')(Function.call, require('./_object-gopd').f(Object.prototype, '__proto__').set, 2);\n        set(test, []);\n        buggy = !(test instanceof Array);\n      } catch (e) { buggy = true; }\n      return function setPrototypeOf(O, proto) {\n        check(O, proto);\n        if (buggy) O.__proto__ = proto;\n        else set(O, proto);\n        return O;\n      };\n    }({}, false) : undefined),\n  check: check\n};\n","module.exports = __WEBPACK_EXTERNAL_MODULE__8bbf__;","// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function () {\n  return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n","// https://github.com/tc39/proposal-object-getownpropertydescriptors\nvar $export = require('./_export');\nvar ownKeys = require('./_own-keys');\nvar toIObject = require('./_to-iobject');\nvar gOPD = require('./_object-gopd');\nvar createProperty = require('./_create-property');\n\n$export($export.S, 'Object', {\n  getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object) {\n    var O = toIObject(object);\n    var getDesc = gOPD.f;\n    var keys = ownKeys(O);\n    var result = {};\n    var i = 0;\n    var key, desc;\n    while (keys.length > i) {\n      desc = getDesc(O, key = keys[i++]);\n      if (desc !== undefined) createProperty(result, key, desc);\n    }\n    return result;\n  }\n});\n","// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)\nvar $keys = require('./_object-keys-internal');\nvar hiddenKeys = require('./_enum-bug-keys').concat('length', 'prototype');\n\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n  return $keys(O, hiddenKeys);\n};\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./GridLayout.vue?vue&type=style&index=0&id=fc5948f6&lang=css\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"ff1827d0\", content, true, {\"sourceMap\":false,\"shadowMode\":false});","// all object keys, includes non-enumerable and symbols\nvar gOPN = require('./_object-gopn');\nvar gOPS = require('./_object-gops');\nvar anObject = require('./_an-object');\nvar Reflect = require('./_global').Reflect;\nmodule.exports = Reflect && Reflect.ownKeys || function ownKeys(it) {\n  var keys = gOPN.f(anObject(it));\n  var getSymbols = gOPS.f;\n  return getSymbols ? keys.concat(getSymbols(it)) : keys;\n};\n","// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function (fn, that, length) {\n  aFunction(fn);\n  if (that === undefined) return fn;\n  switch (length) {\n    case 1: return function (a) {\n      return fn.call(that, a);\n    };\n    case 2: return function (a, b) {\n      return fn.call(that, a, b);\n    };\n    case 3: return function (a, b, c) {\n      return fn.call(that, a, b, c);\n    };\n  }\n  return function (/* ...args */) {\n    return fn.apply(that, arguments);\n  };\n};\n","// 22.1.3.31 Array.prototype[@@unscopables]\nvar UNSCOPABLES = require('./_wks')('unscopables');\nvar ArrayProto = Array.prototype;\nif (ArrayProto[UNSCOPABLES] == undefined) require('./_hide')(ArrayProto, UNSCOPABLES, {});\nmodule.exports = function (key) {\n  ArrayProto[UNSCOPABLES][key] = true;\n};\n","// 7.1.15 ToLength\nvar toInteger = require('./_to-integer');\nvar min = Math.min;\nmodule.exports = function (it) {\n  return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n","// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function () {\n  return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n","'use strict';\n\nvar anObject = require('./_an-object');\nvar toObject = require('./_to-object');\nvar toLength = require('./_to-length');\nvar toInteger = require('./_to-integer');\nvar advanceStringIndex = require('./_advance-string-index');\nvar regExpExec = require('./_regexp-exec-abstract');\nvar max = Math.max;\nvar min = Math.min;\nvar floor = Math.floor;\nvar SUBSTITUTION_SYMBOLS = /\\$([$&`']|\\d\\d?|<[^>]*>)/g;\nvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\$([$&`']|\\d\\d?)/g;\n\nvar maybeToString = function (it) {\n  return it === undefined ? it : String(it);\n};\n\n// @@replace logic\nrequire('./_fix-re-wks')('replace', 2, function (defined, REPLACE, $replace, maybeCallNative) {\n  return [\n    // `String.prototype.replace` method\n    // https://tc39.github.io/ecma262/#sec-string.prototype.replace\n    function replace(searchValue, replaceValue) {\n      var O = defined(this);\n      var fn = searchValue == undefined ? undefined : searchValue[REPLACE];\n      return fn !== undefined\n        ? fn.call(searchValue, O, replaceValue)\n        : $replace.call(String(O), searchValue, replaceValue);\n    },\n    // `RegExp.prototype[@@replace]` method\n    // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@replace\n    function (regexp, replaceValue) {\n      var res = maybeCallNative($replace, regexp, this, replaceValue);\n      if (res.done) return res.value;\n\n      var rx = anObject(regexp);\n      var S = String(this);\n      var functionalReplace = typeof replaceValue === 'function';\n      if (!functionalReplace) replaceValue = String(replaceValue);\n      var global = rx.global;\n      if (global) {\n        var fullUnicode = rx.unicode;\n        rx.lastIndex = 0;\n      }\n      var results = [];\n      while (true) {\n        var result = regExpExec(rx, S);\n        if (result === null) break;\n        results.push(result);\n        if (!global) break;\n        var matchStr = String(result[0]);\n        if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n      }\n      var accumulatedResult = '';\n      var nextSourcePosition = 0;\n      for (var i = 0; i < results.length; i++) {\n        result = results[i];\n        var matched = String(result[0]);\n        var position = max(min(toInteger(result.index), S.length), 0);\n        var captures = [];\n        // NOTE: This is equivalent to\n        //   captures = result.slice(1).map(maybeToString)\n        // but for some reason `nativeSlice.call(result, 1, result.length)` (called in\n        // the slice polyfill when slicing native arrays) \"doesn't work\" in safari 9 and\n        // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.\n        for (var j = 1; j < result.length; j++) captures.push(maybeToString(result[j]));\n        var namedCaptures = result.groups;\n        if (functionalReplace) {\n          var replacerArgs = [matched].concat(captures, position, S);\n          if (namedCaptures !== undefined) replacerArgs.push(namedCaptures);\n          var replacement = String(replaceValue.apply(undefined, replacerArgs));\n        } else {\n          replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);\n        }\n        if (position >= nextSourcePosition) {\n          accumulatedResult += S.slice(nextSourcePosition, position) + replacement;\n          nextSourcePosition = position + matched.length;\n        }\n      }\n      return accumulatedResult + S.slice(nextSourcePosition);\n    }\n  ];\n\n    // https://tc39.github.io/ecma262/#sec-getsubstitution\n  function getSubstitution(matched, str, position, captures, namedCaptures, replacement) {\n    var tailPos = position + matched.length;\n    var m = captures.length;\n    var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;\n    if (namedCaptures !== undefined) {\n      namedCaptures = toObject(namedCaptures);\n      symbols = SUBSTITUTION_SYMBOLS;\n    }\n    return $replace.call(replacement, symbols, function (match, ch) {\n      var capture;\n      switch (ch.charAt(0)) {\n        case '$': return '$';\n        case '&': return matched;\n        case '`': return str.slice(0, position);\n        case \"'\": return str.slice(tailPos);\n        case '<':\n          capture = namedCaptures[ch.slice(1, -1)];\n          break;\n        default: // \\d\\d?\n          var n = +ch;\n          if (n === 0) return match;\n          if (n > m) {\n            var f = floor(n / 10);\n            if (f === 0) return match;\n            if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1);\n            return match;\n          }\n          capture = captures[n - 1];\n      }\n      return capture === undefined ? '' : capture;\n    });\n  }\n});\n","var $export = require('./_export');\nvar defined = require('./_defined');\nvar fails = require('./_fails');\nvar spaces = require('./_string-ws');\nvar space = '[' + spaces + ']';\nvar non = '\\u200b\\u0085';\nvar ltrim = RegExp('^' + space + space + '*');\nvar rtrim = RegExp(space + space + '*$');\n\nvar exporter = function (KEY, exec, ALIAS) {\n  var exp = {};\n  var FORCE = fails(function () {\n    return !!spaces[KEY]() || non[KEY]() != non;\n  });\n  var fn = exp[KEY] = FORCE ? exec(trim) : spaces[KEY];\n  if (ALIAS) exp[ALIAS] = fn;\n  $export($export.P + $export.F * FORCE, 'String', exp);\n};\n\n// 1 -> String#trimLeft\n// 2 -> String#trimRight\n// 3 -> String#trim\nvar trim = exporter.trim = function (string, TYPE) {\n  string = String(defined(string));\n  if (TYPE & 1) string = string.replace(ltrim, '');\n  if (TYPE & 2) string = string.replace(rtrim, '');\n  return string;\n};\n\nmodule.exports = exporter;\n","\"use strict\";\n\n/* global console: false */\n\n/**\n * Reporter that handles the reporting of logs, warnings and errors.\n * @public\n * @param {boolean} quiet Tells if the reporter should be quiet or not.\n */\nmodule.exports = function(quiet) {\n    function noop() {\n        //Does nothing.\n    }\n\n    var reporter = {\n        log: noop,\n        warn: noop,\n        error: noop\n    };\n\n    if(!quiet && window.console) {\n        var attachFunction = function(reporter, name) {\n            //The proxy is needed to be able to call the method with the console context,\n            //since we cannot use bind.\n            reporter[name] = function reporterProxy() {\n                var f = console[name];\n                if (f.apply) { //IE9 does not support console.log.apply :)\n                    f.apply(console, arguments);\n                } else {\n                    for (var i = 0; i < arguments.length; i++) {\n                        f(arguments[i]);\n                    }\n                }\n            };\n        };\n\n        attachFunction(reporter, \"log\");\n        attachFunction(reporter, \"warn\");\n        attachFunction(reporter, \"error\");\n    }\n\n    return reporter;\n};","var $iterators = require('./es6.array.iterator');\nvar getKeys = require('./_object-keys');\nvar redefine = require('./_redefine');\nvar global = require('./_global');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar wks = require('./_wks');\nvar ITERATOR = wks('iterator');\nvar TO_STRING_TAG = wks('toStringTag');\nvar ArrayValues = Iterators.Array;\n\nvar DOMIterables = {\n  CSSRuleList: true, // TODO: Not spec compliant, should be false.\n  CSSStyleDeclaration: false,\n  CSSValueList: false,\n  ClientRectList: false,\n  DOMRectList: false,\n  DOMStringList: false,\n  DOMTokenList: true,\n  DataTransferItemList: false,\n  FileList: false,\n  HTMLAllCollection: false,\n  HTMLCollection: false,\n  HTMLFormElement: false,\n  HTMLSelectElement: false,\n  MediaList: true, // TODO: Not spec compliant, should be false.\n  MimeTypeArray: false,\n  NamedNodeMap: false,\n  NodeList: true,\n  PaintRequestList: false,\n  Plugin: false,\n  PluginArray: false,\n  SVGLengthList: false,\n  SVGNumberList: false,\n  SVGPathSegList: false,\n  SVGPointList: false,\n  SVGStringList: false,\n  SVGTransformList: false,\n  SourceBufferList: false,\n  StyleSheetList: true, // TODO: Not spec compliant, should be false.\n  TextTrackCueList: false,\n  TextTrackList: false,\n  TouchList: false\n};\n\nfor (var collections = getKeys(DOMIterables), i = 0; i < collections.length; i++) {\n  var NAME = collections[i];\n  var explicit = DOMIterables[NAME];\n  var Collection = global[NAME];\n  var proto = Collection && Collection.prototype;\n  var key;\n  if (proto) {\n    if (!proto[ITERATOR]) hide(proto, ITERATOR, ArrayValues);\n    if (!proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n    Iterators[NAME] = ArrayValues;\n    if (explicit) for (key in $iterators) if (!proto[key]) redefine(proto, key, $iterators[key], true);\n  }\n}\n","module.exports = function (bitmap, value) {\n  return {\n    enumerable: !(bitmap & 1),\n    configurable: !(bitmap & 2),\n    writable: !(bitmap & 4),\n    value: value\n  };\n};\n","'use strict';\nvar regexpExec = require('./_regexp-exec');\nrequire('./_export')({\n  target: 'RegExp',\n  proto: true,\n  forced: regexpExec !== /./.exec\n}, {\n  exec: regexpExec\n});\n","\"use strict\";\n\nvar utils = module.exports = {};\n\n/**\n * Loops through the collection and calls the callback for each element. if the callback returns truthy, the loop is broken and returns the same value.\n * @public\n * @param {*} collection The collection to loop through. Needs to have a length property set and have indices set from 0 to length - 1.\n * @param {function} callback The callback to be called for each element. The element will be given as a parameter to the callback. If this callback returns truthy, the loop is broken and the same value is returned.\n * @returns {*} The value that a callback has returned (if truthy). Otherwise nothing.\n */\nutils.forEach = function(collection, callback) {\n    for(var i = 0; i < collection.length; i++) {\n        var result = callback(collection[i]);\n        if(result) {\n            return result;\n        }\n    }\n};\n","// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n  if (it == undefined) throw TypeError(\"Can't call method on  \" + it);\n  return it;\n};\n","\"use strict\";\n\nvar utils = require(\"./utils\");\n\nmodule.exports = function batchProcessorMaker(options) {\n    options             = options || {};\n    var reporter        = options.reporter;\n    var asyncProcess    = utils.getOption(options, \"async\", true);\n    var autoProcess     = utils.getOption(options, \"auto\", true);\n\n    if(autoProcess && !asyncProcess) {\n        reporter && reporter.warn(\"Invalid options combination. auto=true and async=false is invalid. Setting async=true.\");\n        asyncProcess = true;\n    }\n\n    var batch = Batch();\n    var asyncFrameHandler;\n    var isProcessing = false;\n\n    function addFunction(level, fn) {\n        if(!isProcessing && autoProcess && asyncProcess && batch.size() === 0) {\n            // Since this is async, it is guaranteed to be executed after that the fn is added to the batch.\n            // This needs to be done before, since we're checking the size of the batch to be 0.\n            processBatchAsync();\n        }\n\n        batch.add(level, fn);\n    }\n\n    function processBatch() {\n        // Save the current batch, and create a new batch so that incoming functions are not added into the currently processing batch.\n        // Continue processing until the top-level batch is empty (functions may be added to the new batch while processing, and so on).\n        isProcessing = true;\n        while (batch.size()) {\n            var processingBatch = batch;\n            batch = Batch();\n            processingBatch.process();\n        }\n        isProcessing = false;\n    }\n\n    function forceProcessBatch(localAsyncProcess) {\n        if (isProcessing) {\n            return;\n        }\n\n        if(localAsyncProcess === undefined) {\n            localAsyncProcess = asyncProcess;\n        }\n\n        if(asyncFrameHandler) {\n            cancelFrame(asyncFrameHandler);\n            asyncFrameHandler = null;\n        }\n\n        if(localAsyncProcess) {\n            processBatchAsync();\n        } else {\n            processBatch();\n        }\n    }\n\n    function processBatchAsync() {\n        asyncFrameHandler = requestFrame(processBatch);\n    }\n\n    function clearBatch() {\n        batch           = {};\n        batchSize       = 0;\n        topLevel        = 0;\n        bottomLevel     = 0;\n    }\n\n    function cancelFrame(listener) {\n        // var cancel = window.cancelAnimationFrame || window.mozCancelAnimationFrame || window.webkitCancelAnimationFrame || window.clearTimeout;\n        var cancel = clearTimeout;\n        return cancel(listener);\n    }\n\n    function requestFrame(callback) {\n        // var raf = window.requestAnimationFrame || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame || function(fn) { return window.setTimeout(fn, 20); };\n        var raf = function(fn) { return setTimeout(fn, 0); };\n        return raf(callback);\n    }\n\n    return {\n        add: addFunction,\n        force: forceProcessBatch\n    };\n};\n\nfunction Batch() {\n    var batch       = {};\n    var size        = 0;\n    var topLevel    = 0;\n    var bottomLevel = 0;\n\n    function add(level, fn) {\n        if(!fn) {\n            fn = level;\n            level = 0;\n        }\n\n        if(level > topLevel) {\n            topLevel = level;\n        } else if(level < bottomLevel) {\n            bottomLevel = level;\n        }\n\n        if(!batch[level]) {\n            batch[level] = [];\n        }\n\n        batch[level].push(fn);\n        size++;\n    }\n\n    function process() {\n        for(var level = bottomLevel; level <= topLevel; level++) {\n            var fns = batch[level];\n\n            for(var i = 0; i < fns.length; i++) {\n                var fn = fns[i];\n                fn();\n            }\n        }\n    }\n\n    function getSize() {\n        return size;\n    }\n\n    return {\n        add: add,\n        process: process,\n        size: getSize\n    };\n}\n","// false -> Array#indexOf\n// true  -> Array#includes\nvar toIObject = require('./_to-iobject');\nvar toLength = require('./_to-length');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nmodule.exports = function (IS_INCLUDES) {\n  return function ($this, el, fromIndex) {\n    var O = toIObject($this);\n    var length = toLength(O.length);\n    var index = toAbsoluteIndex(fromIndex, length);\n    var value;\n    // Array#includes uses SameValueZero equality algorithm\n    // eslint-disable-next-line no-self-compare\n    if (IS_INCLUDES && el != el) while (length > index) {\n      value = O[index++];\n      // eslint-disable-next-line no-self-compare\n      if (value != value) return true;\n    // Array#indexOf ignores holes, Array#includes - not\n    } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n      if (O[index] === el) return IS_INCLUDES || index || 0;\n    } return !IS_INCLUDES && -1;\n  };\n};\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./GridItem.vue?vue&type=style&index=0&id=46ff2fc8&lang=css\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"40158674\", content, true, {\"sourceMap\":false,\"shadowMode\":false});","'use strict';\nvar global = require('./_global');\nvar has = require('./_has');\nvar cof = require('./_cof');\nvar inheritIfRequired = require('./_inherit-if-required');\nvar toPrimitive = require('./_to-primitive');\nvar fails = require('./_fails');\nvar gOPN = require('./_object-gopn').f;\nvar gOPD = require('./_object-gopd').f;\nvar dP = require('./_object-dp').f;\nvar $trim = require('./_string-trim').trim;\nvar NUMBER = 'Number';\nvar $Number = global[NUMBER];\nvar Base = $Number;\nvar proto = $Number.prototype;\n// Opera ~12 has broken Object#toString\nvar BROKEN_COF = cof(require('./_object-create')(proto)) == NUMBER;\nvar TRIM = 'trim' in String.prototype;\n\n// 7.1.3 ToNumber(argument)\nvar toNumber = function (argument) {\n  var it = toPrimitive(argument, false);\n  if (typeof it == 'string' && it.length > 2) {\n    it = TRIM ? it.trim() : $trim(it, 3);\n    var first = it.charCodeAt(0);\n    var third, radix, maxCode;\n    if (first === 43 || first === 45) {\n      third = it.charCodeAt(2);\n      if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix\n    } else if (first === 48) {\n      switch (it.charCodeAt(1)) {\n        case 66: case 98: radix = 2; maxCode = 49; break; // fast equal /^0b[01]+$/i\n        case 79: case 111: radix = 8; maxCode = 55; break; // fast equal /^0o[0-7]+$/i\n        default: return +it;\n      }\n      for (var digits = it.slice(2), i = 0, l = digits.length, code; i < l; i++) {\n        code = digits.charCodeAt(i);\n        // parseInt parses a string to a first unavailable symbol\n        // but ToNumber should return NaN if a string contains unavailable symbols\n        if (code < 48 || code > maxCode) return NaN;\n      } return parseInt(digits, radix);\n    }\n  } return +it;\n};\n\nif (!$Number(' 0o1') || !$Number('0b1') || $Number('+0x1')) {\n  $Number = function Number(value) {\n    var it = arguments.length < 1 ? 0 : value;\n    var that = this;\n    return that instanceof $Number\n      // check on 1..constructor(foo) case\n      && (BROKEN_COF ? fails(function () { proto.valueOf.call(that); }) : cof(that) != NUMBER)\n        ? inheritIfRequired(new Base(toNumber(it)), that, $Number) : toNumber(it);\n  };\n  for (var keys = require('./_descriptors') ? gOPN(Base) : (\n    // ES3:\n    'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' +\n    // ES6 (in case, if modules with ES6 Number statics required before):\n    'EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,' +\n    'MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger'\n  ).split(','), j = 0, key; keys.length > j; j++) {\n    if (has(Base, key = keys[j]) && !has($Number, key)) {\n      dP($Number, key, gOPD(Base, key));\n    }\n  }\n  $Number.prototype = proto;\n  proto.constructor = $Number;\n  require('./_redefine')(global, NUMBER, $Number);\n}\n","module.exports = !require('./_descriptors') && !require('./_fails')(function () {\n  return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n","/**\n * Resize detection strategy that injects divs to elements in order to detect resize events on scroll events.\n * Heavily inspired by: https://github.com/marcj/css-element-queries/blob/master/src/ResizeSensor.js\n */\n\n\"use strict\";\n\nvar forEach = require(\"../collection-utils\").forEach;\n\nmodule.exports = function(options) {\n    options             = options || {};\n    var reporter        = options.reporter;\n    var batchProcessor  = options.batchProcessor;\n    var getState        = options.stateHandler.getState;\n    var hasState        = options.stateHandler.hasState;\n    var idHandler       = options.idHandler;\n\n    if (!batchProcessor) {\n        throw new Error(\"Missing required dependency: batchProcessor\");\n    }\n\n    if (!reporter) {\n        throw new Error(\"Missing required dependency: reporter.\");\n    }\n\n    //TODO: Could this perhaps be done at installation time?\n    var scrollbarSizes = getScrollbarSizes();\n\n    var styleId = \"erd_scroll_detection_scrollbar_style\";\n    var detectionContainerClass = \"erd_scroll_detection_container\";\n\n    function initDocument(targetDocument) {\n        // Inject the scrollbar styling that prevents them from appearing sometimes in Chrome.\n        // The injected container needs to have a class, so that it may be styled with CSS (pseudo elements).\n        injectScrollStyle(targetDocument, styleId, detectionContainerClass);\n    }\n\n    initDocument(window.document);\n\n    function buildCssTextString(rules) {\n        var seperator = options.important ? \" !important; \" : \"; \";\n\n        return (rules.join(seperator) + seperator).trim();\n    }\n\n    function getScrollbarSizes() {\n        var width = 500;\n        var height = 500;\n\n        var child = document.createElement(\"div\");\n        child.style.cssText = buildCssTextString([\"position: absolute\", \"width: \" + width*2 + \"px\", \"height: \" + height*2 + \"px\", \"visibility: hidden\", \"margin: 0\", \"padding: 0\"]);\n\n        var container = document.createElement(\"div\");\n        container.style.cssText = buildCssTextString([\"position: absolute\", \"width: \" + width + \"px\", \"height: \" + height + \"px\", \"overflow: scroll\", \"visibility: none\", \"top: \" + -width*3 + \"px\", \"left: \" + -height*3 + \"px\", \"visibility: hidden\", \"margin: 0\", \"padding: 0\"]);\n\n        container.appendChild(child);\n\n        document.body.insertBefore(container, document.body.firstChild);\n\n        var widthSize = width - container.clientWidth;\n        var heightSize = height - container.clientHeight;\n\n        document.body.removeChild(container);\n\n        return {\n            width: widthSize,\n            height: heightSize\n        };\n    }\n\n    function injectScrollStyle(targetDocument, styleId, containerClass) {\n        function injectStyle(style, method) {\n            method = method || function (element) {\n                targetDocument.head.appendChild(element);\n            };\n\n            var styleElement = targetDocument.createElement(\"style\");\n            styleElement.innerHTML = style;\n            styleElement.id = styleId;\n            method(styleElement);\n            return styleElement;\n        }\n\n        if (!targetDocument.getElementById(styleId)) {\n            var containerAnimationClass = containerClass + \"_animation\";\n            var containerAnimationActiveClass = containerClass + \"_animation_active\";\n            var style = \"/* Created by the element-resize-detector library. */\\n\";\n            style += \".\" + containerClass + \" > div::-webkit-scrollbar { \" + buildCssTextString([\"display: none\"]) + \" }\\n\\n\";\n            style += \".\" + containerAnimationActiveClass + \" { \" + buildCssTextString([\"-webkit-animation-duration: 0.1s\", \"animation-duration: 0.1s\", \"-webkit-animation-name: \" + containerAnimationClass, \"animation-name: \" + containerAnimationClass]) + \" }\\n\";\n            style += \"@-webkit-keyframes \" + containerAnimationClass +  \" { 0% { opacity: 1; } 50% { opacity: 0; } 100% { opacity: 1; } }\\n\";\n            style += \"@keyframes \" + containerAnimationClass +          \" { 0% { opacity: 1; } 50% { opacity: 0; } 100% { opacity: 1; } }\";\n            injectStyle(style);\n        }\n    }\n\n    function addAnimationClass(element) {\n        element.className += \" \" + detectionContainerClass + \"_animation_active\";\n    }\n\n    function addEvent(el, name, cb) {\n        if (el.addEventListener) {\n            el.addEventListener(name, cb);\n        } else if(el.attachEvent) {\n            el.attachEvent(\"on\" + name, cb);\n        } else {\n            return reporter.error(\"[scroll] Don't know how to add event listeners.\");\n        }\n    }\n\n    function removeEvent(el, name, cb) {\n        if (el.removeEventListener) {\n            el.removeEventListener(name, cb);\n        } else if(el.detachEvent) {\n            el.detachEvent(\"on\" + name, cb);\n        } else {\n            return reporter.error(\"[scroll] Don't know how to remove event listeners.\");\n        }\n    }\n\n    function getExpandElement(element) {\n        return getState(element).container.childNodes[0].childNodes[0].childNodes[0];\n    }\n\n    function getShrinkElement(element) {\n        return getState(element).container.childNodes[0].childNodes[0].childNodes[1];\n    }\n\n    /**\n     * Adds a resize event listener to the element.\n     * @public\n     * @param {element} element The element that should have the listener added.\n     * @param {function} listener The listener callback to be called for each resize event of the element. The element will be given as a parameter to the listener callback.\n     */\n    function addListener(element, listener) {\n        var listeners = getState(element).listeners;\n\n        if (!listeners.push) {\n            throw new Error(\"Cannot add listener to an element that is not detectable.\");\n        }\n\n        getState(element).listeners.push(listener);\n    }\n\n    /**\n     * Makes an element detectable and ready to be listened for resize events. Will call the callback when the element is ready to be listened for resize changes.\n     * @private\n     * @param {object} options Optional options object.\n     * @param {element} element The element to make detectable\n     * @param {function} callback The callback to be called when the element is ready to be listened for resize changes. Will be called with the element as first parameter.\n     */\n    function makeDetectable(options, element, callback) {\n        if (!callback) {\n            callback = element;\n            element = options;\n            options = null;\n        }\n\n        options = options || {};\n\n        function debug() {\n            if (options.debug) {\n                var args = Array.prototype.slice.call(arguments);\n                args.unshift(idHandler.get(element), \"Scroll: \");\n                if (reporter.log.apply) {\n                    reporter.log.apply(null, args);\n                } else {\n                    for (var i = 0; i < args.length; i++) {\n                        reporter.log(args[i]);\n                    }\n                }\n            }\n        }\n\n        function isDetached(element) {\n            function isInDocument(element) {\n                return element === element.ownerDocument.body || element.ownerDocument.body.contains(element);\n            }\n\n            if (!isInDocument(element)) {\n                return true;\n            }\n\n            // FireFox returns null style in hidden iframes. See https://github.com/wnr/element-resize-detector/issues/68 and https://bugzilla.mozilla.org/show_bug.cgi?id=795520\n            if (window.getComputedStyle(element) === null) {\n                return true;\n            }\n\n            return false;\n        }\n\n        function isUnrendered(element) {\n            // Check the absolute positioned container since the top level container is display: inline.\n            var container = getState(element).container.childNodes[0];\n            var style = window.getComputedStyle(container);\n            return !style.width || style.width.indexOf(\"px\") === -1; //Can only compute pixel value when rendered.\n        }\n\n        function getStyle() {\n            // Some browsers only force layouts when actually reading the style properties of the style object, so make sure that they are all read here,\n            // so that the user of the function can be sure that it will perform the layout here, instead of later (important for batching).\n            var elementStyle            = window.getComputedStyle(element);\n            var style                   = {};\n            style.position              = elementStyle.position;\n            style.width                 = element.offsetWidth;\n            style.height                = element.offsetHeight;\n            style.top                   = elementStyle.top;\n            style.right                 = elementStyle.right;\n            style.bottom                = elementStyle.bottom;\n            style.left                  = elementStyle.left;\n            style.widthCSS              = elementStyle.width;\n            style.heightCSS             = elementStyle.height;\n            return style;\n        }\n\n        function storeStartSize() {\n            var style = getStyle();\n            getState(element).startSize = {\n                width: style.width,\n                height: style.height\n            };\n            debug(\"Element start size\", getState(element).startSize);\n        }\n\n        function initListeners() {\n            getState(element).listeners = [];\n        }\n\n        function storeStyle() {\n            debug(\"storeStyle invoked.\");\n            if (!getState(element)) {\n                debug(\"Aborting because element has been uninstalled\");\n                return;\n            }\n\n            var style = getStyle();\n            getState(element).style = style;\n        }\n\n        function storeCurrentSize(element, width, height) {\n            getState(element).lastWidth = width;\n            getState(element).lastHeight  = height;\n        }\n\n        function getExpandChildElement(element) {\n            return getExpandElement(element).childNodes[0];\n        }\n\n        function getWidthOffset() {\n            return 2 * scrollbarSizes.width + 1;\n        }\n\n        function getHeightOffset() {\n            return 2 * scrollbarSizes.height + 1;\n        }\n\n        function getExpandWidth(width) {\n            return width + 10 + getWidthOffset();\n        }\n\n        function getExpandHeight(height) {\n            return height + 10 + getHeightOffset();\n        }\n\n        function getShrinkWidth(width) {\n            return width * 2 + getWidthOffset();\n        }\n\n        function getShrinkHeight(height) {\n            return height * 2 + getHeightOffset();\n        }\n\n        function positionScrollbars(element, width, height) {\n            var expand          = getExpandElement(element);\n            var shrink          = getShrinkElement(element);\n            var expandWidth     = getExpandWidth(width);\n            var expandHeight    = getExpandHeight(height);\n            var shrinkWidth     = getShrinkWidth(width);\n            var shrinkHeight    = getShrinkHeight(height);\n            expand.scrollLeft   = expandWidth;\n            expand.scrollTop    = expandHeight;\n            shrink.scrollLeft   = shrinkWidth;\n            shrink.scrollTop    = shrinkHeight;\n        }\n\n        function injectContainerElement() {\n            var container = getState(element).container;\n\n            if (!container) {\n                container                   = document.createElement(\"div\");\n                container.className         = detectionContainerClass;\n                container.style.cssText     = buildCssTextString([\"visibility: hidden\", \"display: inline\", \"width: 0px\", \"height: 0px\", \"z-index: -1\", \"overflow: hidden\", \"margin: 0\", \"padding: 0\"]);\n                getState(element).container = container;\n                addAnimationClass(container);\n                element.appendChild(container);\n\n                var onAnimationStart = function () {\n                    getState(element).onRendered && getState(element).onRendered();\n                };\n\n                addEvent(container, \"animationstart\", onAnimationStart);\n\n                // Store the event handler here so that they may be removed when uninstall is called.\n                // See uninstall function for an explanation why it is needed.\n                getState(element).onAnimationStart = onAnimationStart;\n            }\n\n            return container;\n        }\n\n        function injectScrollElements() {\n            function alterPositionStyles() {\n                var style = getState(element).style;\n\n                if(style.position === \"static\") {\n                    element.style.setProperty(\"position\", \"relative\",options.important ? \"important\" : \"\");\n\n                    var removeRelativeStyles = function(reporter, element, style, property) {\n                        function getNumericalValue(value) {\n                            return value.replace(/[^-\\d\\.]/g, \"\");\n                        }\n\n                        var value = style[property];\n\n                        if(value !== \"auto\" && getNumericalValue(value) !== \"0\") {\n                            reporter.warn(\"An element that is positioned static has style.\" + property + \"=\" + value + \" which is ignored due to the static positioning. The element will need to be positioned relative, so the style.\" + property + \" will be set to 0. Element: \", element);\n                            element.style[property] = 0;\n                        }\n                    };\n\n                    //Check so that there are no accidental styles that will make the element styled differently now that is is relative.\n                    //If there are any, set them to 0 (this should be okay with the user since the style properties did nothing before [since the element was positioned static] anyway).\n                    removeRelativeStyles(reporter, element, style, \"top\");\n                    removeRelativeStyles(reporter, element, style, \"right\");\n                    removeRelativeStyles(reporter, element, style, \"bottom\");\n                    removeRelativeStyles(reporter, element, style, \"left\");\n                }\n            }\n\n            function getLeftTopBottomRightCssText(left, top, bottom, right) {\n                left = (!left ? \"0\" : (left + \"px\"));\n                top = (!top ? \"0\" : (top + \"px\"));\n                bottom = (!bottom ? \"0\" : (bottom + \"px\"));\n                right = (!right ? \"0\" : (right + \"px\"));\n\n                return [\"left: \" + left, \"top: \" + top, \"right: \" + right, \"bottom: \" + bottom];\n            }\n\n            debug(\"Injecting elements\");\n\n            if (!getState(element)) {\n                debug(\"Aborting because element has been uninstalled\");\n                return;\n            }\n\n            alterPositionStyles();\n\n            var rootContainer = getState(element).container;\n\n            if (!rootContainer) {\n                rootContainer = injectContainerElement();\n            }\n\n            // Due to this WebKit bug https://bugs.webkit.org/show_bug.cgi?id=80808 (currently fixed in Blink, but still present in WebKit browsers such as Safari),\n            // we need to inject two containers, one that is width/height 100% and another that is left/top -1px so that the final container always is 1x1 pixels bigger than\n            // the targeted element.\n            // When the bug is resolved, \"containerContainer\" may be removed.\n\n            // The outer container can occasionally be less wide than the targeted when inside inline elements element in WebKit (see https://bugs.webkit.org/show_bug.cgi?id=152980).\n            // This should be no problem since the inner container either way makes sure the injected scroll elements are at least 1x1 px.\n\n            var scrollbarWidth          = scrollbarSizes.width;\n            var scrollbarHeight         = scrollbarSizes.height;\n            var containerContainerStyle = buildCssTextString([\"position: absolute\", \"flex: none\", \"overflow: hidden\", \"z-index: -1\", \"visibility: hidden\", \"width: 100%\", \"height: 100%\", \"left: 0px\", \"top: 0px\"]);\n            var containerStyle          = buildCssTextString([\"position: absolute\", \"flex: none\", \"overflow: hidden\", \"z-index: -1\", \"visibility: hidden\"].concat(getLeftTopBottomRightCssText(-(1 + scrollbarWidth), -(1 + scrollbarHeight), -scrollbarHeight, -scrollbarWidth)));\n            var expandStyle             = buildCssTextString([\"position: absolute\", \"flex: none\", \"overflow: scroll\", \"z-index: -1\", \"visibility: hidden\", \"width: 100%\", \"height: 100%\"]);\n            var shrinkStyle             = buildCssTextString([\"position: absolute\", \"flex: none\", \"overflow: scroll\", \"z-index: -1\", \"visibility: hidden\", \"width: 100%\", \"height: 100%\"]);\n            var expandChildStyle        = buildCssTextString([\"position: absolute\", \"left: 0\", \"top: 0\"]);\n            var shrinkChildStyle        = buildCssTextString([\"position: absolute\", \"width: 200%\", \"height: 200%\"]);\n\n            var containerContainer      = document.createElement(\"div\");\n            var container               = document.createElement(\"div\");\n            var expand                  = document.createElement(\"div\");\n            var expandChild             = document.createElement(\"div\");\n            var shrink                  = document.createElement(\"div\");\n            var shrinkChild             = document.createElement(\"div\");\n\n            // Some browsers choke on the resize system being rtl, so force it to ltr. https://github.com/wnr/element-resize-detector/issues/56\n            // However, dir should not be set on the top level container as it alters the dimensions of the target element in some browsers.\n            containerContainer.dir              = \"ltr\";\n\n            containerContainer.style.cssText    = containerContainerStyle;\n            containerContainer.className        = detectionContainerClass;\n            container.className                 = detectionContainerClass;\n            container.style.cssText             = containerStyle;\n            expand.style.cssText                = expandStyle;\n            expandChild.style.cssText           = expandChildStyle;\n            shrink.style.cssText                = shrinkStyle;\n            shrinkChild.style.cssText           = shrinkChildStyle;\n\n            expand.appendChild(expandChild);\n            shrink.appendChild(shrinkChild);\n            container.appendChild(expand);\n            container.appendChild(shrink);\n            containerContainer.appendChild(container);\n            rootContainer.appendChild(containerContainer);\n\n            function onExpandScroll() {\n                getState(element).onExpand && getState(element).onExpand();\n            }\n\n            function onShrinkScroll() {\n                getState(element).onShrink && getState(element).onShrink();\n            }\n\n            addEvent(expand, \"scroll\", onExpandScroll);\n            addEvent(shrink, \"scroll\", onShrinkScroll);\n\n            // Store the event handlers here so that they may be removed when uninstall is called.\n            // See uninstall function for an explanation why it is needed.\n            getState(element).onExpandScroll = onExpandScroll;\n            getState(element).onShrinkScroll = onShrinkScroll;\n        }\n\n        function registerListenersAndPositionElements() {\n            function updateChildSizes(element, width, height) {\n                var expandChild             = getExpandChildElement(element);\n                var expandWidth             = getExpandWidth(width);\n                var expandHeight            = getExpandHeight(height);\n                expandChild.style.setProperty(\"width\", expandWidth + \"px\", options.important ? \"important\" : \"\");\n                expandChild.style.setProperty(\"height\", expandHeight + \"px\", options.important ? \"important\" : \"\");\n            }\n\n            function updateDetectorElements(done) {\n                var width           = element.offsetWidth;\n                var height          = element.offsetHeight;\n\n                // Check whether the size has actually changed since last time the algorithm ran. If not, some steps may be skipped.\n                var sizeChanged = width !== getState(element).lastWidth || height !== getState(element).lastHeight;\n\n                debug(\"Storing current size\", width, height);\n\n                // Store the size of the element sync here, so that multiple scroll events may be ignored in the event listeners.\n                // Otherwise the if-check in handleScroll is useless.\n                storeCurrentSize(element, width, height);\n\n                // Since we delay the processing of the batch, there is a risk that uninstall has been called before the batch gets to execute.\n                // Since there is no way to cancel the fn executions, we need to add an uninstall guard to all fns of the batch.\n\n                batchProcessor.add(0, function performUpdateChildSizes() {\n                    if (!sizeChanged) {\n                        return;\n                    }\n\n                    if (!getState(element)) {\n                        debug(\"Aborting because element has been uninstalled\");\n                        return;\n                    }\n\n                    if (!areElementsInjected()) {\n                        debug(\"Aborting because element container has not been initialized\");\n                        return;\n                    }\n\n                    if (options.debug) {\n                        var w = element.offsetWidth;\n                        var h = element.offsetHeight;\n\n                        if (w !== width || h !== height) {\n                            reporter.warn(idHandler.get(element), \"Scroll: Size changed before updating detector elements.\");\n                        }\n                    }\n\n                    updateChildSizes(element, width, height);\n                });\n\n                batchProcessor.add(1, function updateScrollbars() {\n                    // This function needs to be invoked event though the size is unchanged. The element could have been resized very quickly and then\n                    // been restored to the original size, which will have changed the scrollbar positions.\n\n                    if (!getState(element)) {\n                        debug(\"Aborting because element has been uninstalled\");\n                        return;\n                    }\n\n                    if (!areElementsInjected()) {\n                        debug(\"Aborting because element container has not been initialized\");\n                        return;\n                    }\n\n                    positionScrollbars(element, width, height);\n                });\n\n                if (sizeChanged && done) {\n                    batchProcessor.add(2, function () {\n                        if (!getState(element)) {\n                            debug(\"Aborting because element has been uninstalled\");\n                            return;\n                        }\n\n                        if (!areElementsInjected()) {\n                          debug(\"Aborting because element container has not been initialized\");\n                          return;\n                        }\n\n                        done();\n                    });\n                }\n            }\n\n            function areElementsInjected() {\n                return !!getState(element).container;\n            }\n\n            function notifyListenersIfNeeded() {\n                function isFirstNotify() {\n                    return getState(element).lastNotifiedWidth === undefined;\n                }\n\n                debug(\"notifyListenersIfNeeded invoked\");\n\n                var state = getState(element);\n\n                // Don't notify if the current size is the start size, and this is the first notification.\n                if (isFirstNotify() && state.lastWidth === state.startSize.width && state.lastHeight === state.startSize.height) {\n                    return debug(\"Not notifying: Size is the same as the start size, and there has been no notification yet.\");\n                }\n\n                // Don't notify if the size already has been notified.\n                if (state.lastWidth === state.lastNotifiedWidth && state.lastHeight === state.lastNotifiedHeight) {\n                    return debug(\"Not notifying: Size already notified\");\n                }\n\n\n                debug(\"Current size not notified, notifying...\");\n                state.lastNotifiedWidth = state.lastWidth;\n                state.lastNotifiedHeight = state.lastHeight;\n                forEach(getState(element).listeners, function (listener) {\n                    listener(element);\n                });\n            }\n\n            function handleRender() {\n                debug(\"startanimation triggered.\");\n\n                if (isUnrendered(element)) {\n                    debug(\"Ignoring since element is still unrendered...\");\n                    return;\n                }\n\n                debug(\"Element rendered.\");\n                var expand = getExpandElement(element);\n                var shrink = getShrinkElement(element);\n                if (expand.scrollLeft === 0 || expand.scrollTop === 0 || shrink.scrollLeft === 0 || shrink.scrollTop === 0) {\n                    debug(\"Scrollbars out of sync. Updating detector elements...\");\n                    updateDetectorElements(notifyListenersIfNeeded);\n                }\n            }\n\n            function handleScroll() {\n                debug(\"Scroll detected.\");\n\n                if (isUnrendered(element)) {\n                    // Element is still unrendered. Skip this scroll event.\n                    debug(\"Scroll event fired while unrendered. Ignoring...\");\n                    return;\n                }\n\n                updateDetectorElements(notifyListenersIfNeeded);\n            }\n\n            debug(\"registerListenersAndPositionElements invoked.\");\n\n            if (!getState(element)) {\n                debug(\"Aborting because element has been uninstalled\");\n                return;\n            }\n\n            getState(element).onRendered = handleRender;\n            getState(element).onExpand = handleScroll;\n            getState(element).onShrink = handleScroll;\n\n            var style = getState(element).style;\n            updateChildSizes(element, style.width, style.height);\n        }\n\n        function finalizeDomMutation() {\n            debug(\"finalizeDomMutation invoked.\");\n\n            if (!getState(element)) {\n                debug(\"Aborting because element has been uninstalled\");\n                return;\n            }\n\n            var style = getState(element).style;\n            storeCurrentSize(element, style.width, style.height);\n            positionScrollbars(element, style.width, style.height);\n        }\n\n        function ready() {\n            callback(element);\n        }\n\n        function install() {\n            debug(\"Installing...\");\n            initListeners();\n            storeStartSize();\n\n            batchProcessor.add(0, storeStyle);\n            batchProcessor.add(1, injectScrollElements);\n            batchProcessor.add(2, registerListenersAndPositionElements);\n            batchProcessor.add(3, finalizeDomMutation);\n            batchProcessor.add(4, ready);\n        }\n\n        debug(\"Making detectable...\");\n\n        if (isDetached(element)) {\n            debug(\"Element is detached\");\n\n            injectContainerElement();\n\n            debug(\"Waiting until element is attached...\");\n\n            getState(element).onRendered = function () {\n                debug(\"Element is now attached\");\n                install();\n            };\n        } else {\n            install();\n        }\n    }\n\n    function uninstall(element) {\n        var state = getState(element);\n\n        if (!state) {\n            // Uninstall has been called on a non-erd element.\n            return;\n        }\n\n        // Uninstall may have been called in the following scenarios:\n        // (1) Right between the sync code and async batch (here state.busy = true, but nothing have been registered or injected).\n        // (2) In the ready callback of the last level of the batch by another element (here, state.busy = true, but all the stuff has been injected).\n        // (3) After the installation process (here, state.busy = false and all the stuff has been injected).\n        // So to be on the safe side, let's check for each thing before removing.\n\n        // We need to remove the event listeners, because otherwise the event might fire on an uninstall element which results in an error when trying to get the state of the element.\n        state.onExpandScroll && removeEvent(getExpandElement(element), \"scroll\", state.onExpandScroll);\n        state.onShrinkScroll && removeEvent(getShrinkElement(element), \"scroll\", state.onShrinkScroll);\n        state.onAnimationStart && removeEvent(state.container, \"animationstart\", state.onAnimationStart);\n\n        state.container && element.removeChild(state.container);\n    }\n\n    return {\n        makeDetectable: makeDetectable,\n        addListener: addListener,\n        uninstall: uninstall,\n        initDocument: initDocument\n    };\n};\n","var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n  return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n","'use strict';\nvar addToUnscopables = require('./_add-to-unscopables');\nvar step = require('./_iter-step');\nvar Iterators = require('./_iterators');\nvar toIObject = require('./_to-iobject');\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = require('./_iter-define')(Array, 'Array', function (iterated, kind) {\n  this._t = toIObject(iterated); // target\n  this._i = 0;                   // next index\n  this._k = kind;                // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n  var O = this._t;\n  var kind = this._k;\n  var index = this._i++;\n  if (!O || index >= O.length) {\n    this._t = undefined;\n    return step(1);\n  }\n  if (kind == 'keys') return step(0, index);\n  if (kind == 'values') return step(0, O[index]);\n  return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n","var isObject = require('./_is-object');\nmodule.exports = function (it) {\n  if (!isObject(it)) throw TypeError(it + ' is not an object!');\n  return it;\n};\n","var has = require('./_has');\nvar toIObject = require('./_to-iobject');\nvar arrayIndexOf = require('./_array-includes')(false);\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\n\nmodule.exports = function (object, names) {\n  var O = toIObject(object);\n  var i = 0;\n  var result = [];\n  var key;\n  for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n  // Don't enum bug & hidden keys\n  while (names.length > i) if (has(O, key = names[i++])) {\n    ~arrayIndexOf(result, key) || result.push(key);\n  }\n  return result;\n};\n","module.exports = function (it) {\n  return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","module.exports = function (done, value) {\n  return { value: value, done: !!done };\n};\n","\"use strict\";\n\nvar prop = \"_erd\";\n\nfunction initState(element) {\n    element[prop] = {};\n    return getState(element);\n}\n\nfunction getState(element) {\n    return element[prop];\n}\n\nfunction cleanState(element) {\n    delete element[prop];\n}\n\nmodule.exports = {\n    initState: initState,\n    getState: getState,\n    cleanState: cleanState\n};\n","// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function (fn, that, length) {\n  aFunction(fn);\n  if (that === undefined) return fn;\n  switch (length) {\n    case 1: return function (a) {\n      return fn.call(that, a);\n    };\n    case 2: return function (a, b) {\n      return fn.call(that, a, b);\n    };\n    case 3: return function (a, b, c) {\n      return fn.call(that, a, b, c);\n    };\n  }\n  return function (/* ...args */) {\n    return fn.apply(that, arguments);\n  };\n};\n","module.exports = function (it) {\n  if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n  return it;\n};\n","var anObject = require('./_an-object');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar toPrimitive = require('./_to-primitive');\nvar dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n  anObject(O);\n  P = toPrimitive(P, true);\n  anObject(Attributes);\n  if (IE8_DOM_DEFINE) try {\n    return dP(O, P, Attributes);\n  } catch (e) { /* empty */ }\n  if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n  if ('value' in Attributes) O[P] = Attributes.value;\n  return O;\n};\n","// IE 8- don't enum bug keys\nmodule.exports = (\n  'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n","var isObject = require('./_is-object');\nmodule.exports = function (it) {\n  if (!isObject(it)) throw TypeError(it + ' is not an object!');\n  return it;\n};\n","// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n  ? window : typeof self != 'undefined' && self.Math == Math ? self\n  // eslint-disable-next-line no-new-func\n  : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n","\"use strict\";\n\nvar forEach                 = require(\"./collection-utils\").forEach;\nvar elementUtilsMaker       = require(\"./element-utils\");\nvar listenerHandlerMaker    = require(\"./listener-handler\");\nvar idGeneratorMaker        = require(\"./id-generator\");\nvar idHandlerMaker          = require(\"./id-handler\");\nvar reporterMaker           = require(\"./reporter\");\nvar browserDetector         = require(\"./browser-detector\");\nvar batchProcessorMaker     = require(\"batch-processor\");\nvar stateHandler            = require(\"./state-handler\");\n\n//Detection strategies.\nvar objectStrategyMaker     = require(\"./detection-strategy/object.js\");\nvar scrollStrategyMaker     = require(\"./detection-strategy/scroll.js\");\n\nfunction isCollection(obj) {\n    return Array.isArray(obj) || obj.length !== undefined;\n}\n\nfunction toArray(collection) {\n    if (!Array.isArray(collection)) {\n        var array = [];\n        forEach(collection, function (obj) {\n            array.push(obj);\n        });\n        return array;\n    } else {\n        return collection;\n    }\n}\n\nfunction isElement(obj) {\n    return obj && obj.nodeType === 1;\n}\n\n/**\n * @typedef idHandler\n * @type {object}\n * @property {function} get Gets the resize detector id of the element.\n * @property {function} set Generate and sets the resize detector id of the element.\n */\n\n/**\n * @typedef Options\n * @type {object}\n * @property {boolean} callOnAdd    Determines if listeners should be called when they are getting added.\n                                    Default is true. If true, the listener is guaranteed to be called when it has been added.\n                                    If false, the listener will not be guarenteed to be called when it has been added (does not prevent it from being called).\n * @property {idHandler} idHandler  A custom id handler that is responsible for generating, setting and retrieving id's for elements.\n                                    If not provided, a default id handler will be used.\n * @property {reporter} reporter    A custom reporter that handles reporting logs, warnings and errors.\n                                    If not provided, a default id handler will be used.\n                                    If set to false, then nothing will be reported.\n * @property {boolean} debug        If set to true, the the system will report debug messages as default for the listenTo method.\n */\n\n/**\n * Creates an element resize detector instance.\n * @public\n * @param {Options?} options Optional global options object that will decide how this instance will work.\n */\nmodule.exports = function(options) {\n    options = options || {};\n\n    //idHandler is currently not an option to the listenTo function, so it should not be added to globalOptions.\n    var idHandler;\n\n    if (options.idHandler) {\n        // To maintain compatability with idHandler.get(element, readonly), make sure to wrap the given idHandler\n        // so that readonly flag always is true when it's used here. This may be removed next major version bump.\n        idHandler = {\n            get: function (element) { return options.idHandler.get(element, true); },\n            set: options.idHandler.set\n        };\n    } else {\n        var idGenerator = idGeneratorMaker();\n        var defaultIdHandler = idHandlerMaker({\n            idGenerator: idGenerator,\n            stateHandler: stateHandler\n        });\n        idHandler = defaultIdHandler;\n    }\n\n    //reporter is currently not an option to the listenTo function, so it should not be added to globalOptions.\n    var reporter = options.reporter;\n\n    if(!reporter) {\n        //If options.reporter is false, then the reporter should be quiet.\n        var quiet = reporter === false;\n        reporter = reporterMaker(quiet);\n    }\n\n    //batchProcessor is currently not an option to the listenTo function, so it should not be added to globalOptions.\n    var batchProcessor = getOption(options, \"batchProcessor\", batchProcessorMaker({ reporter: reporter }));\n\n    //Options to be used as default for the listenTo function.\n    var globalOptions = {};\n    globalOptions.callOnAdd     = !!getOption(options, \"callOnAdd\", true);\n    globalOptions.debug         = !!getOption(options, \"debug\", false);\n\n    var eventListenerHandler    = listenerHandlerMaker(idHandler);\n    var elementUtils            = elementUtilsMaker({\n        stateHandler: stateHandler\n    });\n\n    //The detection strategy to be used.\n    var detectionStrategy;\n    var desiredStrategy = getOption(options, \"strategy\", \"object\");\n    var importantCssRules = getOption(options, \"important\", false);\n    var strategyOptions = {\n        reporter: reporter,\n        batchProcessor: batchProcessor,\n        stateHandler: stateHandler,\n        idHandler: idHandler,\n        important: importantCssRules\n    };\n\n    if(desiredStrategy === \"scroll\") {\n        if (browserDetector.isLegacyOpera()) {\n            reporter.warn(\"Scroll strategy is not supported on legacy Opera. Changing to object strategy.\");\n            desiredStrategy = \"object\";\n        } else if (browserDetector.isIE(9)) {\n            reporter.warn(\"Scroll strategy is not supported on IE9. Changing to object strategy.\");\n            desiredStrategy = \"object\";\n        }\n    }\n\n    if(desiredStrategy === \"scroll\") {\n        detectionStrategy = scrollStrategyMaker(strategyOptions);\n    } else if(desiredStrategy === \"object\") {\n        detectionStrategy = objectStrategyMaker(strategyOptions);\n    } else {\n        throw new Error(\"Invalid strategy name: \" + desiredStrategy);\n    }\n\n    //Calls can be made to listenTo with elements that are still being installed.\n    //Also, same elements can occur in the elements list in the listenTo function.\n    //With this map, the ready callbacks can be synchronized between the calls\n    //so that the ready callback can always be called when an element is ready - even if\n    //it wasn't installed from the function itself.\n    var onReadyCallbacks = {};\n\n    /**\n     * Makes the given elements resize-detectable and starts listening to resize events on the elements. Calls the event callback for each event for each element.\n     * @public\n     * @param {Options?} options Optional options object. These options will override the global options. Some options may not be overriden, such as idHandler.\n     * @param {element[]|element} elements The given array of elements to detect resize events of. Single element is also valid.\n     * @param {function} listener The callback to be executed for each resize event for each element.\n     */\n    function listenTo(options, elements, listener) {\n        function onResizeCallback(element) {\n            var listeners = eventListenerHandler.get(element);\n            forEach(listeners, function callListenerProxy(listener) {\n                listener(element);\n            });\n        }\n\n        function addListener(callOnAdd, element, listener) {\n            eventListenerHandler.add(element, listener);\n\n            if(callOnAdd) {\n                listener(element);\n            }\n        }\n\n        //Options object may be omitted.\n        if(!listener) {\n            listener = elements;\n            elements = options;\n            options = {};\n        }\n\n        if(!elements) {\n            throw new Error(\"At least one element required.\");\n        }\n\n        if(!listener) {\n            throw new Error(\"Listener required.\");\n        }\n\n        if (isElement(elements)) {\n            // A single element has been passed in.\n            elements = [elements];\n        } else if (isCollection(elements)) {\n            // Convert collection to array for plugins.\n            // TODO: May want to check so that all the elements in the collection are valid elements.\n            elements = toArray(elements);\n        } else {\n            return reporter.error(\"Invalid arguments. Must be a DOM element or a collection of DOM elements.\");\n        }\n\n        var elementsReady = 0;\n\n        var callOnAdd = getOption(options, \"callOnAdd\", globalOptions.callOnAdd);\n        var onReadyCallback = getOption(options, \"onReady\", function noop() {});\n        var debug = getOption(options, \"debug\", globalOptions.debug);\n\n        forEach(elements, function attachListenerToElement(element) {\n            if (!stateHandler.getState(element)) {\n                stateHandler.initState(element);\n                idHandler.set(element);\n            }\n\n            var id = idHandler.get(element);\n\n            debug && reporter.log(\"Attaching listener to element\", id, element);\n\n            if(!elementUtils.isDetectable(element)) {\n                debug && reporter.log(id, \"Not detectable.\");\n                if(elementUtils.isBusy(element)) {\n                    debug && reporter.log(id, \"System busy making it detectable\");\n\n                    //The element is being prepared to be detectable. Do not make it detectable.\n                    //Just add the listener, because the element will soon be detectable.\n                    addListener(callOnAdd, element, listener);\n                    onReadyCallbacks[id] = onReadyCallbacks[id] || [];\n                    onReadyCallbacks[id].push(function onReady() {\n                        elementsReady++;\n\n                        if(elementsReady === elements.length) {\n                            onReadyCallback();\n                        }\n                    });\n                    return;\n                }\n\n                debug && reporter.log(id, \"Making detectable...\");\n                //The element is not prepared to be detectable, so do prepare it and add a listener to it.\n                elementUtils.markBusy(element, true);\n                return detectionStrategy.makeDetectable({ debug: debug, important: importantCssRules }, element, function onElementDetectable(element) {\n                    debug && reporter.log(id, \"onElementDetectable\");\n\n                    if (stateHandler.getState(element)) {\n                        elementUtils.markAsDetectable(element);\n                        elementUtils.markBusy(element, false);\n                        detectionStrategy.addListener(element, onResizeCallback);\n                        addListener(callOnAdd, element, listener);\n\n                        // Since the element size might have changed since the call to \"listenTo\", we need to check for this change,\n                        // so that a resize event may be emitted.\n                        // Having the startSize object is optional (since it does not make sense in some cases such as unrendered elements), so check for its existance before.\n                        // Also, check the state existance before since the element may have been uninstalled in the installation process.\n                        var state = stateHandler.getState(element);\n                        if (state && state.startSize) {\n                            var width = element.offsetWidth;\n                            var height = element.offsetHeight;\n                            if (state.startSize.width !== width || state.startSize.height !== height) {\n                                onResizeCallback(element);\n                            }\n                        }\n\n                        if(onReadyCallbacks[id]) {\n                            forEach(onReadyCallbacks[id], function(callback) {\n                                callback();\n                            });\n                        }\n                    } else {\n                        // The element has been unisntalled before being detectable.\n                        debug && reporter.log(id, \"Element uninstalled before being detectable.\");\n                    }\n\n                    delete onReadyCallbacks[id];\n\n                    elementsReady++;\n                    if(elementsReady === elements.length) {\n                        onReadyCallback();\n                    }\n                });\n            }\n\n            debug && reporter.log(id, \"Already detecable, adding listener.\");\n\n            //The element has been prepared to be detectable and is ready to be listened to.\n            addListener(callOnAdd, element, listener);\n            elementsReady++;\n        });\n\n        if(elementsReady === elements.length) {\n            onReadyCallback();\n        }\n    }\n\n    function uninstall(elements) {\n        if(!elements) {\n            return reporter.error(\"At least one element is required.\");\n        }\n\n        if (isElement(elements)) {\n            // A single element has been passed in.\n            elements = [elements];\n        } else if (isCollection(elements)) {\n            // Convert collection to array for plugins.\n            // TODO: May want to check so that all the elements in the collection are valid elements.\n            elements = toArray(elements);\n        } else {\n            return reporter.error(\"Invalid arguments. Must be a DOM element or a collection of DOM elements.\");\n        }\n\n        forEach(elements, function (element) {\n            eventListenerHandler.removeAllListeners(element);\n            detectionStrategy.uninstall(element);\n            stateHandler.cleanState(element);\n        });\n    }\n\n    function initDocument(targetDocument) {\n        detectionStrategy.initDocument && detectionStrategy.initDocument(targetDocument);\n    }\n\n    return {\n        listenTo: listenTo,\n        removeListener: eventListenerHandler.removeListener,\n        removeAllListeners: eventListenerHandler.removeAllListeners,\n        uninstall: uninstall,\n        initDocument: initDocument\n    };\n};\n\nfunction getOption(options, name, defaultValue) {\n    var value = options[name];\n\n    if((value === undefined || value === null) && defaultValue !== undefined) {\n        return defaultValue;\n    }\n\n    return value;\n}\n","'use strict';\nvar $defineProperty = require('./_object-dp');\nvar createDesc = require('./_property-desc');\n\nmodule.exports = function (object, index, value) {\n  if (index in object) $defineProperty.f(object, index, createDesc(0, value));\n  else object[index] = value;\n};\n","module.exports = function (it) {\n  return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","module.exports = require('./_shared')('native-function-to-string', Function.toString);\n","var document = require('./_global').document;\nmodule.exports = document && document.documentElement;\n","// This file is imported into lib/wc client bundles.\n\nif (typeof window !== 'undefined') {\n  var currentScript = window.document.currentScript\n  if (process.env.NEED_CURRENTSCRIPT_POLYFILL) {\n    var getCurrentScript = require('@soda/get-current-script')\n    currentScript = getCurrentScript()\n\n    // for backward compatibility, because previously we directly included the polyfill\n    if (!('currentScript' in document)) {\n      Object.defineProperty(document, 'currentScript', { get: getCurrentScript })\n    }\n  }\n\n  var src = currentScript && currentScript.src.match(/(.+\\/)[^/]+\\.js(\\?.*)?$/)\n  if (src) {\n    __webpack_public_path__ = src[1] // eslint-disable-line\n  }\n}\n\n// Indicate to webpack that this file can be concatenated\nexport default null\n","<template>\n    <div ref=\"item\"\n         class=\"vue-grid-item\"\n         :class=\"classObj\"\n         :style=\"style\"\n    >\n        <slot></slot>\n        <span v-if=\"resizableAndNotStatic\" ref=\"handle\" :class=\"resizableHandleClass\"></span>\n        <!--<span v-if=\"draggable\" ref=\"dragHandle\" class=\"vue-draggable-handle\"></span>-->\n    </div>\n</template>\n<style>\n    .vue-grid-item {\n        touch-action: none;\n        transition: all 200ms ease;\n        transition-property: left, top, right;\n        /* add right for rtl */\n    }\n\n    .vue-grid-item.no-touch {\n        -ms-touch-action: none;\n        touch-action: none;\n    }\n\n    .vue-grid-item.cssTransforms {\n        transition-property: transform;\n        left: 0;\n        right: auto;\n    }\n\n    .vue-grid-item.cssTransforms.render-rtl {\n        left: auto;\n        right: 0;\n    }\n\n    .vue-grid-item.resizing {\n        opacity: 0.6;\n        z-index: 3;\n    }\n\n    .vue-grid-item.vue-draggable-dragging {\n        transition:none;\n        z-index: 3;\n    }\n\n    .vue-grid-item.vue-grid-placeholder {\n        background: red;\n        opacity: 0.2;\n        transition-duration: 100ms;\n        z-index: 2;\n        -webkit-user-select: none;\n        -moz-user-select: none;\n        -ms-user-select: none;\n        -o-user-select: none;\n        user-select: none;\n    }\n\n    .vue-grid-item > .vue-resizable-handle {\n        position: absolute;\n        width: 20px;\n        height: 20px;\n        bottom: 0;\n        right: 0;\n        background: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/Pg08IS0tIEdlbmVyYXRvcjogQWRvYmUgRmlyZXdvcmtzIENTNiwgRXhwb3J0IFNWRyBFeHRlbnNpb24gYnkgQWFyb24gQmVhbGwgKGh0dHA6Ly9maXJld29ya3MuYWJlYWxsLmNvbSkgLiBWZXJzaW9uOiAwLjYuMSAgLS0+DTwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+DTxzdmcgaWQ9IlVudGl0bGVkLVBhZ2UlMjAxIiB2aWV3Qm94PSIwIDAgNiA2IiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjojZmZmZmZmMDAiIHZlcnNpb249IjEuMSINCXhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhtbDpzcGFjZT0icHJlc2VydmUiDQl4PSIwcHgiIHk9IjBweCIgd2lkdGg9IjZweCIgaGVpZ2h0PSI2cHgiDT4NCTxnIG9wYWNpdHk9IjAuMzAyIj4NCQk8cGF0aCBkPSJNIDYgNiBMIDAgNiBMIDAgNC4yIEwgNCA0LjIgTCA0LjIgNC4yIEwgNC4yIDAgTCA2IDAgTCA2IDYgTCA2IDYgWiIgZmlsbD0iIzAwMDAwMCIvPg0JPC9nPg08L3N2Zz4=');\n        background-position: bottom right;\n        padding: 0 3px 3px 0;\n        background-repeat: no-repeat;\n        background-origin: content-box;\n        box-sizing: border-box;\n        cursor: se-resize;\n    }\n\n    .vue-grid-item > .vue-rtl-resizable-handle {\n        bottom: 0;\n        left: 0;\n        background: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTAuMDAwMDAwMDAwMDAwMDAyIiBoZWlnaHQ9IjEwLjAwMDAwMDAwMDAwMDAwMiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KIDwhLS0gQ3JlYXRlZCB3aXRoIE1ldGhvZCBEcmF3IC0gaHR0cDovL2dpdGh1Yi5jb20vZHVvcGl4ZWwvTWV0aG9kLURyYXcvIC0tPgogPGc+CiAgPHRpdGxlPmJhY2tncm91bmQ8L3RpdGxlPgogIDxyZWN0IGZpbGw9Im5vbmUiIGlkPSJjYW52YXNfYmFja2dyb3VuZCIgaGVpZ2h0PSIxMiIgd2lkdGg9IjEyIiB5PSItMSIgeD0iLTEiLz4KICA8ZyBkaXNwbGF5PSJub25lIiBvdmVyZmxvdz0idmlzaWJsZSIgeT0iMCIgeD0iMCIgaGVpZ2h0PSIxMDAlIiB3aWR0aD0iMTAwJSIgaWQ9ImNhbnZhc0dyaWQiPgogICA8cmVjdCBmaWxsPSJ1cmwoI2dyaWRwYXR0ZXJuKSIgc3Ryb2tlLXdpZHRoPSIwIiB5PSIwIiB4PSIwIiBoZWlnaHQ9IjEwMCUiIHdpZHRoPSIxMDAlIi8+CiAgPC9nPgogPC9nPgogPGc+CiAgPHRpdGxlPkxheWVyIDE8L3RpdGxlPgogIDxsaW5lIGNhbnZhcz0iI2ZmZmZmZiIgY2FudmFzLW9wYWNpdHk9IjEiIHN0cm9rZS1saW5lY2FwPSJ1bmRlZmluZWQiIHN0cm9rZS1saW5lam9pbj0idW5kZWZpbmVkIiBpZD0ic3ZnXzEiIHkyPSItNzAuMTc4NDA3IiB4Mj0iMTI0LjQ2NDE3NSIgeTE9Ii0zOC4zOTI3MzciIHgxPSIxNDQuODIxMjg5IiBzdHJva2Utd2lkdGg9IjEuNSIgc3Ryb2tlPSIjMDAwIiBmaWxsPSJub25lIi8+CiAgPGxpbmUgc3Ryb2tlPSIjNjY2NjY2IiBzdHJva2UtbGluZWNhcD0idW5kZWZpbmVkIiBzdHJva2UtbGluZWpvaW49InVuZGVmaW5lZCIgaWQ9InN2Z181IiB5Mj0iOS4xMDY5NTciIHgyPSIwLjk0NzI0NyIgeTE9Ii0wLjAxODEyOCIgeDE9IjAuOTQ3MjQ3IiBzdHJva2Utd2lkdGg9IjIiIGZpbGw9Im5vbmUiLz4KICA8bGluZSBzdHJva2UtbGluZWNhcD0idW5kZWZpbmVkIiBzdHJva2UtbGluZWpvaW49InVuZGVmaW5lZCIgaWQ9InN2Z183IiB5Mj0iOSIgeDI9IjEwLjA3MzUyOSIgeTE9IjkiIHgxPSItMC42NTU2NCIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2U9IiM2NjY2NjYiIGZpbGw9Im5vbmUiLz4KIDwvZz4KPC9zdmc+);\n        background-position: bottom left;\n        padding-left: 3px;\n        background-repeat: no-repeat;\n        background-origin: content-box;\n        cursor: sw-resize;\n        right: auto;\n    }\n\n    .vue-grid-item.disable-userselect {\n        user-select: none;\n    }\n</style>\n<script>\n    import {setTopLeft, setTopRight, setTransformRtl, setTransform} from '@/helpers/utils';\n    import {getControlPosition, createCoreData} from '@/helpers/draggableUtils';\n    import {getColsFromBreakpoint} from '@/helpers/responsiveUtils';\n    import {getDocumentDir} from \"@/helpers/DOM\";\n    //    var eventBus = require('./eventBus');\n\n    import '@interactjs/auto-start'\n    import '@interactjs/actions/drag'\n    import '@interactjs/actions/resize'\n    import '@interactjs/modifiers'\n    import '@interactjs/dev-tools'\n    import interact from '@interactjs/interact'\n\n    export default {\n        name: \"GridItem\",\n        props: {\n            /*cols: {\n             type: Number,\n             required: true\n             },*/\n            /*containerWidth: {\n             type: Number,\n             required: true\n\n             },\n             rowHeight: {\n             type: Number,\n             required: true\n             },\n             margin: {\n             type: Array,\n             required: true\n             },\n             maxRows: {\n             type: Number,\n             required: true\n             },*/\n            isDraggable: {\n                type: Boolean,\n                required: false,\n                default: null\n            },\n            isResizable: {\n                type: Boolean,\n                required: false,\n                default: null\n            },\n            /*useCssTransforms: {\n             type: Boolean,\n             required: true\n             },\n             */\n            static: {\n                type: Boolean,\n                required: false,\n                default: false\n            },\n            minH: {\n                type: Number,\n                required: false,\n                default: 1\n            },\n            minW: {\n                type: Number,\n                required: false,\n                default: 1\n            },\n            maxH: {\n                type: Number,\n                required: false,\n                default: Infinity\n            },\n            maxW: {\n                type: Number,\n                required: false,\n                default: Infinity\n            },\n            x: {\n                type: Number,\n                required: true\n            },\n            y: {\n                type: Number,\n                required: true\n            },\n            w: {\n                type: Number,\n                required: true\n            },\n            h: {\n                type: Number,\n                required: true\n            },\n            i: {\n                required: true\n            },\n            dragIgnoreFrom: {\n                type: String,\n                required: false,\n                default: 'a, button'\n            },\n            dragAllowFrom: {\n                type: String,\n                required: false,\n                default: null\n            },\n            resizeIgnoreFrom: {\n                type: String,\n                required: false,\n                default: 'a, button'\n            },\n            preserveAspectRatio: {\n                type: Boolean,\n                required: false,\n                default: false,\n            }\n        },\n        inject: [\"eventBus\", \"layout\"],\n        data: function () {\n            return {\n                cols: 1,\n                containerWidth: 100,\n                rowHeight: 30,\n                margin: [10, 10],\n                maxRows: Infinity,\n                draggable: null,\n                resizable: null,\n                useCssTransforms: true,\n                useStyleCursor: true,\n\n                isDragging: false,\n                dragging: null,\n                isResizing: false,\n                resizing: null,\n                lastX: NaN,\n                lastY: NaN,\n                lastW: NaN,\n                lastH: NaN,\n                style: {},\n                rtl: false,\n\n                dragEventSet: false,\n                resizeEventSet: false,\n\n                previousW: null,\n                previousH: null,\n                previousX: null,\n                previousY: null,\n                innerX: this.x,\n                innerY: this.y,\n                innerW: this.w,\n                innerH: this.h\n            }\n        },\n        created () {\n            let self = this;\n\n            // Accessible refernces of functions for removing in beforeUnmount\n            self.updateWidthHandler = function (width) {\n                self.updateWidth(width);\n            };\n\n            self.compactHandler = function (layout) {\n                self.compact(layout);\n            };\n\n            self.setDraggableHandler = function (isDraggable) {\n                if (self.isDraggable === null) {\n                    self.draggable = isDraggable;\n                }\n            };\n\n            self.setResizableHandler = function (isResizable) {\n                if (self.isResizable === null) {\n                    self.resizable = isResizable;\n                }\n            };\n\n            self.setRowHeightHandler = function (rowHeight) {\n                self.rowHeight = rowHeight;\n            };\n\n            self.setMaxRowsHandler = function (maxRows) {\n                self.maxRows = maxRows;\n            };\n\n            self.directionchangeHandler = () => {\n                this.rtl = getDocumentDir() === 'rtl';\n                this.compact();\n            };\n\n            self.setColNum = (colNum) => {\n               self.cols = parseInt(colNum);\n            }\n\n            this.eventBus.on('updateWidth', self.updateWidthHandler);\n            this.eventBus.on('compact', self.compactHandler);\n            this.eventBus.on('setDraggable', self.setDraggableHandler);\n            this.eventBus.on('setResizable', self.setResizableHandler);\n            this.eventBus.on('setRowHeight', self.setRowHeightHandler);\n            this.eventBus.on('setMaxRows', self.setMaxRowsHandler);\n            this.eventBus.on('directionchange', self.directionchangeHandler);\n            this.eventBus.on('setColNum', self.setColNum)\n\n            this.rtl = getDocumentDir() === 'rtl';\n        },\n        beforeUnmount: function(){\n            let self = this;\n            //Remove listeners\n            this.eventBus.off('updateWidth', self.updateWidthHandler);\n            this.eventBus.off('compact', self.compactHandler);\n            this.eventBus.off('setDraggable', self.setDraggableHandler);\n            this.eventBus.off('setResizable', self.setResizableHandler);\n            this.eventBus.off('setRowHeight', self.setRowHeightHandler);\n            this.eventBus.off('setMaxRows', self.setMaxRowsHandler);\n            this.eventBus.off('directionchange', self.directionchangeHandler);\n            this.eventBus.off('setColNum', self.setColNum);\n            if (this.interactObj) {\n                this.interactObj.unset() // destroy interact intance\n            }\n        },\n        mounted: function () {\n            if (this.layout.responsive && this.layout.lastBreakpoint) {\n                this.cols = getColsFromBreakpoint(this.layout.lastBreakpoint, this.layout.cols);\n            } else {\n                this.cols = this.layout.colNum;\n            }\n            this.rowHeight = this.layout.rowHeight;\n            this.containerWidth = this.layout.width !== null ? this.layout.width : 100;\n            this.margin = this.layout.margin !== undefined ? this.layout.margin : [10, 10];\n            this.maxRows = this.layout.maxRows;\n\n            if (this.isDraggable === null) {\n                this.draggable = this.layout.isDraggable;\n            } else {\n                this.draggable = this.isDraggable;\n            }\n            if (this.isResizable === null) {\n                this.resizable = this.layout.isResizable;\n            } else {\n                this.resizable = this.isResizable;\n            }\n            this.useCssTransforms = this.layout.useCssTransforms;\n            this.useStyleCursor = this.layout.useStyleCursor;\n            this.createStyle();\n        },\n        watch: {\n            isDraggable: function () {\n                this.draggable = this.isDraggable;\n            },\n            static: function () {\n                this.tryMakeDraggable();\n                this.tryMakeResizable();\n            },\n            draggable: function () {\n                this.tryMakeDraggable();\n            },\n            isResizable: function () {\n                this.resizable = this.isResizable;\n            },\n            resizable: function () {\n                this.tryMakeResizable();\n            },\n            rowHeight: function () {\n                this.createStyle();\n                this.emitContainerResized();\n            },\n            cols: function () {\n                this.tryMakeResizable();\n                this.createStyle();\n                this.emitContainerResized();\n            },\n            containerWidth: function () {\n                this.tryMakeResizable();\n                this.createStyle();\n                this.emitContainerResized();\n            },\n            x: function (newVal) {\n                this.innerX = newVal;\n                this.createStyle();\n            },\n            y: function (newVal) {\n                this.innerY = newVal;\n                this.createStyle();\n            },\n            h: function (newVal) {\n                this.innerH = newVal\n                this.createStyle();\n                // this.emitContainerResized();\n            },\n            w: function (newVal) {\n                this.innerW = newVal;\n                this.createStyle();\n                // this.emitContainerResized();\n            },\n            renderRtl: function () {\n                // console.log(\"### renderRtl\");\n                this.tryMakeResizable();\n                this.createStyle();\n            },\n            minH: function () {\n                this.tryMakeResizable();\n            },\n            maxH: function () {\n                this.tryMakeResizable();\n            },\n            minW: function () {\n                this.tryMakeResizable();\n            },\n            maxW: function () {\n                this.tryMakeResizable();\n            },\n            \"$parent.margin\": function (margin) {\n                if (!margin || (margin[0] == this.margin[0] && margin[1] == this.margin[1])) {\n                    return;\n                }\n                this.margin = margin.map(m => Number(m));\n                this.createStyle();\n                this.emitContainerResized();\n            },\n        },\n        computed: {\n            classObj() {\n                return {\n                    'vue-resizable' : this.resizableAndNotStatic,\n                    'static': this.static,\n                    'resizing' : this.isResizing,\n                    'vue-draggable-dragging' : this.isDragging,\n                    'cssTransforms' : this.useCssTransforms,\n                    'render-rtl' : this.renderRtl,\n                    'disable-userselect': this.isDragging,\n                    'no-touch': this.isAndroid && this.draggableOrResizableAndNotStatic\n                }\n            },\n            resizableAndNotStatic(){\n                return this.resizable && !this.static;\n            },\n            draggableOrResizableAndNotStatic(){\n                return (this.draggable || this.resizable) && !this.static;\n            },\n            isAndroid() {\n                return navigator.userAgent.toLowerCase().indexOf(\"android\") !== -1;\n            },\n            renderRtl() {\n                return (this.layout.isMirrored) ? !this.rtl : this.rtl;\n            },\n            resizableHandleClass() {\n                if (this.renderRtl) {\n                    return 'vue-resizable-handle vue-rtl-resizable-handle';\n                } else {\n                    return 'vue-resizable-handle';\n                }\n            }\n        },\n        methods: {\n            createStyle: function () {\n                if (this.x + this.w > this.cols) {\n                    this.innerX = 0;\n                    this.innerW = (this.w > this.cols) ? this.cols : this.w\n                } else {\n                  this.innerX = this.x;\n                  this.innerW = this.w;\n                }\n                let pos = this.calcPosition(this.innerX, this.innerY, this.innerW, this.innerH);\n\n\n                if (this.isDragging) {\n                    pos.top = this.dragging.top;\n//                    Add rtl support\n                    if (this.renderRtl) {\n                        pos.right = this.dragging.left;\n                    } else {\n                        pos.left = this.dragging.left;\n                    }\n                }\n                if (this.isResizing) {\n                    pos.width = this.resizing.width;\n                    pos.height = this.resizing.height;\n                }\n\n                let style;\n                // CSS Transforms support (default)\n                if (this.useCssTransforms) {\n//                    Add rtl support\n                    if (this.renderRtl) {\n                        style = setTransformRtl(pos.top, pos.right, pos.width, pos.height);\n                    } else {\n                        style = setTransform(pos.top, pos.left, pos.width, pos.height);\n                    }\n\n                } else { // top,left (slow)\n//                    Add rtl support\n                    if (this.renderRtl) {\n                        style = setTopRight(pos.top, pos.right, pos.width, pos.height);\n                    } else {\n                        style = setTopLeft(pos.top, pos.left, pos.width, pos.height);\n                    }\n                }\n                this.style = style;\n            },\n            emitContainerResized() {\n                // this.style has width and height with trailing 'px'. The\n                // resized event is without them\n                let styleProps = {};\n                for (let prop of ['width', 'height']) {\n                    let val = this.style[prop];\n                    let matches = val.match(/^(\\d+)px$/);\n                    if (! matches)\n                        return;\n                    styleProps[prop] = matches[1];\n                }\n                this.$emit(\"container-resized\", this.i, this.h, this.w, styleProps.height, styleProps.width);\n            },\n            handleResize: function (event) {\n                if (this.static) return;\n                const position = getControlPosition(event);\n                // Get the current drag point from the event. This is used as the offset.\n                if (position == null) return; // not possible but satisfies flow\n                const {x, y} = position;\n\n                const newSize = {width: 0, height: 0};\n                let pos;\n                switch (event.type) {\n                    case \"resizestart\": {\n                        this.previousW = this.innerW;\n                        this.previousH = this.innerH;\n                        pos = this.calcPosition(this.innerX, this.innerY, this.innerW, this.innerH);\n                        newSize.width = pos.width;\n                        newSize.height = pos.height;\n                        this.resizing = newSize;\n                        this.isResizing = true;\n                        break;\n                    }\n                    case \"resizemove\": {\n//                        console.log(\"### resize => \" + event.type + \", lastW=\" + this.lastW + \", lastH=\" + this.lastH);\n                        const coreEvent = createCoreData(this.lastW, this.lastH, x, y);\n                        if (this.renderRtl) {\n                            newSize.width = this.resizing.width - coreEvent.deltaX;\n                        } else {\n                            newSize.width = this.resizing.width + coreEvent.deltaX;\n                        }\n                        newSize.height = this.resizing.height + coreEvent.deltaY;\n\n                        ///console.log(\"### resize => \" + event.type + \", deltaX=\" + coreEvent.deltaX + \", deltaY=\" + coreEvent.deltaY);\n                        this.resizing = newSize;\n                        break;\n                    }\n                    case \"resizeend\": {\n                        //console.log(\"### resize end => x=\" +this.innerX + \" y=\" + this.innerY + \" w=\" + this.innerW + \" h=\" + this.innerH);\n                        pos = this.calcPosition(this.innerX, this.innerY, this.innerW, this.innerH);\n                        newSize.width = pos.width;\n                        newSize.height = pos.height;\n//                        console.log(\"### resize end => \" + JSON.stringify(newSize));\n                        this.resizing = null;\n                        this.isResizing = false;\n                        break;\n                    }\n                }\n\n                // Get new WH\n                pos = this.calcWH(newSize.height, newSize.width);\n                if (pos.w < this.minW) {\n                    pos.w = this.minW;\n                }\n                if (pos.w > this.maxW) {\n                    pos.w = this.maxW;\n                }\n                if (pos.h < this.minH) {\n                    pos.h = this.minH;\n                }\n                if (pos.h > this.maxH) {\n                    pos.h = this.maxH;\n                }\n\n                if (pos.h < 1) {\n                    pos.h = 1;\n                }\n                if (pos.w < 1) {\n                    pos.w = 1;\n                }\n\n                this.lastW = x;\n                this.lastH = y;\n\n                if (this.innerW !== pos.w || this.innerH !== pos.h) {\n                    this.$emit(\"resize\", this.i, pos.h, pos.w, newSize.height, newSize.width);\n                }\n                if (event.type === \"resizeend\" && (this.previousW !== this.innerW || this.previousH !== this.innerH)) {\n                    this.$emit(\"resized\", this.i, pos.h, pos.w, newSize.height, newSize.width);\n                }\n                this.eventBus.emit(\"resizeEvent\", {eventType: event.type, i: this.i, x: this.innerX, y: this.innerY, h: pos.h, w: pos.w});\n            },\n            handleDrag(event) {\n                if (this.static) return;\n                if (this.isResizing) return;\n\n                const position = getControlPosition(event);\n\n                // Get the current drag point from the event. This is used as the offset.\n                if (position === null) return; // not possible but satisfies flow\n                const {x, y} = position;\n\n                // let shouldUpdate = false;\n                let newPosition = {top: 0, left: 0};\n                switch (event.type) {\n                    case \"dragstart\": {\n                        this.previousX = this.innerX;\n                        this.previousY = this.innerY;\n\n                        let parentRect = event.target.offsetParent.getBoundingClientRect();\n                        let clientRect = event.target.getBoundingClientRect();\n                        if (this.renderRtl) {\n                            newPosition.left = (clientRect.right - parentRect.right) * -1;\n                        } else {\n                            newPosition.left = clientRect.left - parentRect.left;\n                        }\n                        newPosition.top = clientRect.top - parentRect.top;\n                        this.dragging = newPosition;\n                        this.isDragging = true;\n                        break;\n                    }\n                    case \"dragend\": {\n                        if (!this.isDragging) return;\n                        let parentRect = event.target.offsetParent.getBoundingClientRect();\n                        let clientRect = event.target.getBoundingClientRect();\n//                        Add rtl support\n                        if (this.renderRtl) {\n                            newPosition.left = (clientRect.right - parentRect.right) * -1;\n                        } else {\n                            newPosition.left = clientRect.left - parentRect.left;\n                        }\n                        newPosition.top = clientRect.top - parentRect.top;\n//                        console.log(\"### drag end => \" + JSON.stringify(newPosition));\n//                        console.log(\"### DROP: \" + JSON.stringify(newPosition));\n                        this.dragging = null;\n                        this.isDragging = false;\n                        // shouldUpdate = true;\n                        break;\n                    }\n                    case \"dragmove\": {\n                        const coreEvent = createCoreData(this.lastX, this.lastY, x, y);\n//                        Add rtl support\n                        if (this.renderRtl) {\n                            newPosition.left = this.dragging.left - coreEvent.deltaX;\n                        } else {\n                            newPosition.left = this.dragging.left + coreEvent.deltaX;\n                        }\n                        newPosition.top = this.dragging.top + coreEvent.deltaY;\n//                        console.log(\"### drag => \" + event.type + \", x=\" + x + \", y=\" + y);\n//                        console.log(\"### drag => \" + event.type + \", deltaX=\" + coreEvent.deltaX + \", deltaY=\" + coreEvent.deltaY);\n//                        console.log(\"### drag end => \" + JSON.stringify(newPosition));\n                        this.dragging = newPosition;\n                        break;\n                    }\n                }\n\n                // Get new XY\n                let pos;\n                if (this.renderRtl) {\n                    pos = this.calcXY(newPosition.top, newPosition.left);\n                } else {\n                    pos = this.calcXY(newPosition.top, newPosition.left);\n                }\n\n                this.lastX = x;\n                this.lastY = y;\n\n                if (this.innerX !== pos.x || this.innerY !== pos.y) {\n                    this.$emit(\"move\", this.i, pos.x, pos.y);\n                }\n                if (event.type === \"dragend\" && (this.previousX !== this.innerX || this.previousY !== this.innerY)) {\n                    this.$emit(\"moved\", this.i, pos.x, pos.y);\n                }\n                this.eventBus.emit(\"dragEvent\", {eventType: event.type, i: this.i, x: pos.x, y: pos.y, h: this.innerH, w: this.innerW});\n            },\n            calcPosition: function (x, y, w, h) {\n                const colWidth = this.calcColWidth();\n                // add rtl support\n                let out;\n                if (this.renderRtl) {\n                    out = {\n                        right: Math.round(colWidth * x + (x + 1) * this.margin[0]),\n                        top: Math.round(this.rowHeight * y + (y + 1) * this.margin[1]),\n                        // 0 * Infinity === NaN, which causes problems with resize constriants;\n                        // Fix this if it occurs.\n                        // Note we do it here rather than later because Math.round(Infinity) causes deopt\n                        width: w === Infinity ? w : Math.round(colWidth * w + Math.max(0, w - 1) * this.margin[0]),\n                        height: h === Infinity ? h : Math.round(this.rowHeight * h + Math.max(0, h - 1) * this.margin[1])\n                    };\n                } else {\n                    out = {\n                        left: Math.round(colWidth * x + (x + 1) * this.margin[0]),\n                        top: Math.round(this.rowHeight * y + (y + 1) * this.margin[1]),\n                        // 0 * Infinity === NaN, which causes problems with resize constriants;\n                        // Fix this if it occurs.\n                        // Note we do it here rather than later because Math.round(Infinity) causes deopt\n                        width: w === Infinity ? w : Math.round(colWidth * w + Math.max(0, w - 1) * this.margin[0]),\n                        height: h === Infinity ? h : Math.round(this.rowHeight * h + Math.max(0, h - 1) * this.margin[1])\n                    };\n                }\n\n\n                return out;\n            },\n            /**\n             * Translate x and y coordinates from pixels to grid units.\n             * @param  {Number} top  Top position (relative to parent) in pixels.\n             * @param  {Number} left Left position (relative to parent) in pixels.\n             * @return {Object} x and y in grid units.\n             */\n            // TODO check if this function needs change in order to support rtl.\n            calcXY(top, left) {\n                const colWidth = this.calcColWidth();\n\n                // left = colWidth * x + margin * (x + 1)\n                // l = cx + m(x+1)\n                // l = cx + mx + m\n                // l - m = cx + mx\n                // l - m = x(c + m)\n                // (l - m) / (c + m) = x\n                // x = (left - margin) / (coldWidth + margin)\n                let x = Math.round((left - this.margin[0]) / (colWidth + this.margin[0]));\n                let y = Math.round((top - this.margin[1]) / (this.rowHeight + this.margin[1]));\n\n                // Capping\n                x = Math.max(Math.min(x, this.cols - this.innerW), 0);\n                y = Math.max(Math.min(y, this.maxRows - this.innerH), 0);\n\n                return {x, y};\n            },\n            // Helper for generating column width\n            calcColWidth() {\n                const colWidth = (this.containerWidth - (this.margin[0] * (this.cols + 1))) / this.cols;\n               // console.log(\"### COLS=\" + this.cols + \" COL WIDTH=\" + colWidth + \" MARGIN \" + this.margin[0]);\n                return colWidth;\n            },\n\n            /**\n             * Given a height and width in pixel values, calculate grid units.\n             * @param  {Number} height Height in pixels.\n             * @param  {Number} width  Width in pixels.\n             * @param  {Boolean} autoSizeFlag  function autoSize identifier.\n             * @return {Object} w, h as grid units.\n             */\n            calcWH(height, width, autoSizeFlag = false) {\n                const colWidth = this.calcColWidth();\n\n                // width = colWidth * w - (margin * (w - 1))\n                // ...\n                // w = (width + margin) / (colWidth + margin)\n                let w = Math.round((width + this.margin[0]) / (colWidth + this.margin[0]));\n                let h = 0;\n                if (!autoSizeFlag) {\n                    h = Math.round((height + this.margin[1]) / (this.rowHeight + this.margin[1]));\n                } else {\n                    h = Math.ceil((height + this.margin[1]) / (this.rowHeight + this.margin[1]));\n                }\n\n                // Capping\n                w = Math.max(Math.min(w, this.cols - this.innerX), 0);\n                h = Math.max(Math.min(h, this.maxRows - this.innerY), 0);\n                return {w, h};\n            },\n            updateWidth: function (width, colNum) {\n                this.containerWidth = width;\n                if (colNum !== undefined && colNum !== null) {\n                    this.cols = colNum;\n                }\n            },\n            compact: function () {\n                this.createStyle();\n            },\n            tryMakeDraggable: function(){\n                const self = this;\n                if (this.interactObj === null || this.interactObj === undefined) {\n                    this.interactObj = interact(this.$refs.item);\n                    if (!this.useStyleCursor) {\n                        this.interactObj.styleCursor(false);\n                    }\n                }\n                if (this.draggable && !this.static) {\n                    const opts = {\n                        ignoreFrom: this.dragIgnoreFrom,\n                        allowFrom: this.dragAllowFrom\n                    };\n                    this.interactObj.draggable(opts);\n                    /*this.interactObj.draggable({allowFrom: '.vue-draggable-handle'});*/\n                    if (!this.dragEventSet) {\n                        this.dragEventSet = true;\n                        this.interactObj.on('dragstart dragmove dragend', function (event) {\n                            self.handleDrag(event);\n                        });\n                    }\n                } else {\n                    this.interactObj.draggable({\n                        enabled: false\n                    });\n                }\n            },\n            tryMakeResizable: function(){\n                const self = this;\n                if (this.interactObj === null || this.interactObj === undefined) {\n                    this.interactObj = interact(this.$refs.item);\n                    if (!this.useStyleCursor) {\n                        this.interactObj.styleCursor(false);\n                    }\n                }\n                if (this.resizable && !this.static) {\n                    let maximum = this.calcPosition(0,0,this.maxW, this.maxH);\n                    let minimum = this.calcPosition(0,0, this.minW, this.minH);\n\n                    // console.log(\"### MAX \" + JSON.stringify(maximum));\n                    // console.log(\"### MIN \" + JSON.stringify(minimum));\n\n                    const opts = {\n                        // allowFrom: \".\" + this.resizableHandleClass.trim().replace(\" \", \".\"),\n                        edges: {\n                            left: false,\n                            right: \".\" + this.resizableHandleClass.trim().replace(\" \", \".\"),\n                            bottom: \".\" + this.resizableHandleClass.trim().replace(\" \", \".\"),\n                            top: false\n                        },\n                        ignoreFrom: this.resizeIgnoreFrom,\n                        restrictSize: {\n                            min: {\n                                height: minimum.height,\n                                width: minimum.width\n                            },\n                            max: {\n                                height: maximum.height,\n                                width: maximum.width\n                            }\n                        }\n                    };\n\n                    if (this.preserveAspectRatio) {\n                        opts.modifiers = [\n                            interact.modifiers.aspectRatio({\n                                ratio: 'preserve'\n                            }),\n                        ]\n                    }\n\n                    this.interactObj.resizable(opts);\n                    if (!this.resizeEventSet) {\n                        this.resizeEventSet = true;\n                        this.interactObj\n                            .on('resizestart resizemove resizeend', function (event) {\n                                self.handleResize(event);\n                            });\n                    }\n                } else {\n                    this.interactObj.resizable({\n                        enabled: false\n                    });\n                }\n            },\n            autoSize: function() {\n                // ok here we want to calculate if a resize is needed\n                this.previousW = this.innerW;\n                this.previousH = this.innerH;\n\n                let newSize=this.$slots().default[0].elm.getBoundingClientRect();\n                let pos = this.calcWH(newSize.height, newSize.width, true);\n                if (pos.w < this.minW) {\n                    pos.w = this.minW;\n                }\n                if (pos.w > this.maxW) {\n                    pos.w = this.maxW;\n                }\n                if (pos.h < this.minH) {\n                    pos.h = this.minH;\n                }\n                if (pos.h > this.maxH) {\n                    pos.h = this.maxH;\n                }\n\n                if (pos.h < 1) {\n                    pos.h = 1;\n                }\n                if (pos.w < 1) {\n                    pos.w = 1;\n                }\n\n                // this.lastW = x; // basically, this is copied from resizehandler, but shouldn't be needed\n                // this.lastH = y;\n\n                if (this.innerW !== pos.w || this.innerH !== pos.h) {\n                    this.$emit(\"resize\", this.i, pos.h, pos.w, newSize.height, newSize.width);\n                }\n                if (this.previousW !== pos.w || this.previousH !== pos.h) {\n                    this.$emit(\"resized\", this.i, pos.h, pos.w, newSize.height, newSize.width);\n                    this.eventBus.emit(\"resizeEvent\", {eventType: \"resizeend\", i: this.i, x: this.innerX, y: this.innerY, h: pos.h, w: pos.w});\n                }\n            }\n        },\n    }\n</script>\n","// @flow\nexport type LayoutItemRequired = {w: number, h: number, x: number, y: number, i: string};\nexport type LayoutItem = LayoutItemRequired &\n                         {minW?: number, minH?: number, maxW?: number, maxH?: number,\n                          moved?: boolean, static?: boolean,\n                          isDraggable?: ?boolean, isResizable?: ?boolean};\nexport type Layout = Array<LayoutItem>;\n// export type Position = {left: number, top: number, width: number, height: number};\n/*\nexport type DragCallbackData = {\n  node: HTMLElement,\n  x: number, y: number,\n  deltaX: number, deltaY: number,\n  lastX: number, lastY: number\n};\n*/\n// export type DragEvent = {e: Event} & DragCallbackData;\nexport type Size = {width: number, height: number};\n// export type ResizeEvent = {e: Event, node: HTMLElement, size: Size};\n\n// const isProduction = process.env.NODE_ENV === 'production';\n/**\n * Return the bottom coordinate of the layout.\n *\n * @param  {Array} layout Layout array.\n * @return {Number}       Bottom coordinate.\n */\nexport function bottom(layout: Layout): number {\n  let max = 0, bottomY;\n  for (let i = 0, len = layout.length; i < len; i++) {\n    bottomY = layout[i]. y + layout[i].h;\n    if (bottomY > max) max = bottomY;\n  }\n  return max;\n}\n\nexport function cloneLayout(layout: Layout): Layout {\n  const newLayout = Array(layout.length);\n  for (let i = 0, len = layout.length; i < len; i++) {\n    newLayout[i] = cloneLayoutItem(layout[i]);\n  }\n  return newLayout;\n}\n\n// Fast path to cloning, since this is monomorphic\nexport function cloneLayoutItem(layoutItem: LayoutItem): LayoutItem {\n  /*return {\n    w: layoutItem.w, h: layoutItem.h, x: layoutItem.x, y: layoutItem.y, i: layoutItem.i,\n    minW: layoutItem.minW, maxW: layoutItem.maxW, minH: layoutItem.minH, maxH: layoutItem.maxH,\n    moved: Boolean(layoutItem.moved), static: Boolean(layoutItem.static),\n    // These can be null\n    isDraggable: layoutItem.isDraggable, isResizable: layoutItem.isResizable\n  };*/\n    return JSON.parse(JSON.stringify(layoutItem));\n}\n\n/**\n * Given two layoutitems, check if they collide.\n *\n * @return {Boolean}   True if colliding.\n */\nexport function collides(l1: LayoutItem, l2: LayoutItem): boolean {\n  if (l1 === l2) return false; // same element\n  if (l1.x + l1.w <= l2.x) return false; // l1 is left of l2\n  if (l1.x >= l2.x + l2.w) return false; // l1 is right of l2\n  if (l1.y + l1.h <= l2.y) return false; // l1 is above l2\n  if (l1.y >= l2.y + l2.h) return false; // l1 is below l2\n  return true; // boxes overlap\n}\n\n/**\n * Given a layout, compact it. This involves going down each y coordinate and removing gaps\n * between items.\n *\n * @param  {Array} layout Layout.\n * @param  {Boolean} verticalCompact Whether or not to compact the layout\n *   vertically.\n * @return {Array}       Compacted Layout.\n */\nexport function compact(layout: Layout, verticalCompact: Boolean): Layout {\n    // Statics go in the compareWith array right away so items flow around them.\n  const compareWith = getStatics(layout);\n  // We go through the items by row and column.\n  const sorted = sortLayoutItemsByRowCol(layout);\n  // Holding for new items.\n  const out = Array(layout.length);\n\n  for (let i = 0, len = sorted.length; i < len; i++) {\n    let l = sorted[i];\n\n    // Don't move static elements\n    if (!l.static) {\n      l = compactItem(compareWith, l, verticalCompact);\n\n      // Add to comparison array. We only collide with items before this one.\n      // Statics are already in this array.\n      compareWith.push(l);\n    }\n\n    // Add to output array to make sure they still come out in the right order.\n    out[layout.indexOf(l)] = l;\n\n    // Clear moved flag, if it exists.\n    l.moved = false;\n  }\n\n  return out;\n}\n\n/**\n * Compact an item in the layout.\n */\nexport function compactItem(compareWith: Layout, l: LayoutItem, verticalCompact: boolean): LayoutItem {\n  if (verticalCompact) {\n    // Move the element up as far as it can go without colliding.\n    while (l.y > 0 && !getFirstCollision(compareWith, l)) {\n      l.y--;\n    }\n  }\n\n  // Move it down, and keep moving it down if it's colliding.\n  let collides;\n  while((collides = getFirstCollision(compareWith, l))) {\n    l.y = collides.y + collides.h;\n  }\n  return l;\n}\n\n/**\n * Given a layout, make sure all elements fit within its bounds.\n *\n * @param  {Array} layout Layout array.\n * @param  {Number} bounds Number of columns.\n */\nexport function correctBounds(layout: Layout, bounds: {cols: number}): Layout {\n  const collidesWith = getStatics(layout);\n  for (let i = 0, len = layout.length; i < len; i++) {\n    const l = layout[i];\n    // Overflows right\n    if (l.x + l.w > bounds.cols) l.x = bounds.cols - l.w;\n    // Overflows left\n    if (l.x < 0) {\n      l.x = 0;\n      l.w = bounds.cols;\n    }\n    if (!l.static) collidesWith.push(l);\n    else {\n      // If this is static and collides with other statics, we must move it down.\n      // We have to do something nicer than just letting them overlap.\n      while(getFirstCollision(collidesWith, l)) {\n        l.y++;\n      }\n    }\n  }\n  return layout;\n}\n\n/**\n * Get a layout item by ID. Used so we can override later on if necessary.\n *\n * @param  {Array}  layout Layout array.\n * @param  {String} id     ID\n * @return {LayoutItem}    Item at ID.\n */\nexport function getLayoutItem(layout: Layout, id: string): ?LayoutItem {\n  for (let i = 0, len = layout.length; i < len; i++) {\n    if (layout[i].i === id) return layout[i];\n  }\n}\n\n/**\n * Returns the first item this layout collides with.\n * It doesn't appear to matter which order we approach this from, although\n * perhaps that is the wrong thing to do.\n *\n * @param  {Object} layoutItem Layout item.\n * @return {Object|undefined}  A colliding layout item, or undefined.\n */\nexport function getFirstCollision(layout: Layout, layoutItem: LayoutItem): ?LayoutItem {\n  for (let i = 0, len = layout.length; i < len; i++) {\n    if (collides(layout[i], layoutItem)) return layout[i];\n  }\n}\n\nexport function getAllCollisions(layout: Layout, layoutItem: LayoutItem): Array<LayoutItem> {\n  return layout.filter((l) => collides(l, layoutItem));\n}\n\n/**\n * Get all static elements.\n * @param  {Array} layout Array of layout objects.\n * @return {Array}        Array of static layout items..\n */\nexport function getStatics(layout: Layout): Array<LayoutItem> {\n    //return [];\n    return layout.filter((l) => l.static);\n}\n\n/**\n * Move an element. Responsible for doing cascading movements of other elements.\n *\n * @param  {Array}      layout Full layout to modify.\n * @param  {LayoutItem} l      element to move.\n * @param  {Number}     [x]    X position in grid units.\n * @param  {Number}     [y]    Y position in grid units.\n * @param  {Boolean}    [isUserAction] If true, designates that the item we're moving is\n *                                     being dragged/resized by th euser.\n */\nexport function moveElement(layout: Layout, l: LayoutItem, x: Number, y: Number, isUserAction: Boolean, preventCollision: Boolean): Layout {\n  if (l.static) return layout;\n\n  // Short-circuit if nothing to do.\n  //if (l.y === y && l.x === x) return layout;\n\n  const oldX = l.x;\n  const oldY = l.y;\n\n  const movingUp = y && l.y > y;\n  // This is quite a bit faster than extending the object\n  if (typeof x === 'number') l.x = x;\n  if (typeof y === 'number') l.y = y;\n  l.moved = true;\n\n  // If this collides with anything, move it.\n  // When doing this comparison, we have to sort the items we compare with\n  // to ensure, in the case of multiple collisions, that we're getting the\n  // nearest collision.\n  let sorted = sortLayoutItemsByRowCol(layout);\n  if (movingUp) sorted = sorted.reverse();\n  const collisions = getAllCollisions(sorted, l);\n\n  if (preventCollision && collisions.length) {\n    l.x = oldX;\n    l.y = oldY;\n    l.moved = false;\n    return layout;\n  }\n\n  // Move each item that collides away from this element.\n  for (let i = 0, len = collisions.length; i < len; i++) {\n    const collision = collisions[i];\n    // console.log('resolving collision between', l.i, 'at', l.y, 'and', collision.i, 'at', collision.y);\n\n    // Short circuit so we can't infinite loop\n    if (collision.moved) continue;\n\n    // This makes it feel a bit more precise by waiting to swap for just a bit when moving up.\n    if (l.y > collision.y && l.y - collision.y > collision.h / 4) continue;\n\n    // Don't move static items - we have to move *this* element away\n    if (collision.static) {\n      layout = moveElementAwayFromCollision(layout, collision, l, isUserAction);\n    } else {\n      layout = moveElementAwayFromCollision(layout, l, collision, isUserAction);\n    }\n  }\n\n  return layout;\n}\n\n/**\n * This is where the magic needs to happen - given a collision, move an element away from the collision.\n * We attempt to move it up if there's room, otherwise it goes below.\n *\n * @param  {Array} layout            Full layout to modify.\n * @param  {LayoutItem} collidesWith Layout item we're colliding with.\n * @param  {LayoutItem} itemToMove   Layout item we're moving.\n * @param  {Boolean} [isUserAction]  If true, designates that the item we're moving is being dragged/resized\n *                                   by the user.\n */\nexport function moveElementAwayFromCollision(layout: Layout, collidesWith: LayoutItem,\n                                             itemToMove: LayoutItem, isUserAction: ?boolean): Layout {\n\n  const preventCollision = false // we're already colliding\n  // If there is enough space above the collision to put this element, move it there.\n  // We only do this on the main collision as this can get funky in cascades and cause\n  // unwanted swapping behavior.\n  if (isUserAction) {\n    // Make a mock item so we don't modify the item here, only modify in moveElement.\n    const fakeItem: LayoutItem = {\n      x: itemToMove.x,\n      y: itemToMove.y,\n      w: itemToMove.w,\n      h: itemToMove.h,\n      i: '-1'\n    };\n    fakeItem.y = Math.max(collidesWith.y - itemToMove.h, 0);\n    if (!getFirstCollision(layout, fakeItem)) {\n      return moveElement(layout, itemToMove, undefined, fakeItem.y, preventCollision);\n    }\n  }\n\n  // Previously this was optimized to move below the collision directly, but this can cause problems\n  // with cascading moves, as an item may actually leapflog a collision and cause a reversal in order.\n  return moveElement(layout, itemToMove, undefined, itemToMove.y + 1, preventCollision);\n}\n\n/**\n * Helper to convert a number to a percentage string.\n *\n * @param  {Number} num Any number\n * @return {String}     That number as a percentage.\n */\nexport function perc(num: number): string {\n  return num * 100 + '%';\n}\n\nexport function setTransform(top, left, width, height): Object {\n  // Replace unitless items with px\n  const translate = \"translate3d(\" + left + \"px,\" + top + \"px, 0)\";\n  return {\n    transform: translate,\n    WebkitTransform: translate,\n    MozTransform: translate,\n    msTransform: translate,\n    OTransform: translate,\n    width: width + \"px\",\n    height: height + \"px\",\n    position: 'absolute'\n  };\n}\n/**\n * Just like the setTransform method, but instead it will return a negative value of right.\n *\n * @param top\n * @param right\n * @param width\n * @param height\n * @returns {{transform: string, WebkitTransform: string, MozTransform: string, msTransform: string, OTransform: string, width: string, height: string, position: string}}\n */\nexport function setTransformRtl(top, right, width, height): Object {\n    // Replace unitless items with px\n    const translate = \"translate3d(\" + right * -1 + \"px,\" + top + \"px, 0)\";\n    return {\n        transform: translate,\n        WebkitTransform: translate,\n        MozTransform: translate,\n        msTransform: translate,\n        OTransform: translate,\n        width: width + \"px\",\n        height: height + \"px\",\n        position: 'absolute'\n    };\n}\n\nexport function setTopLeft(top, left, width, height): Object {\n    return {\n        top: top + \"px\",\n        left: left + \"px\",\n        width: width + \"px\",\n        height: height + \"px\",\n        position: 'absolute'\n    };\n}\n/**\n * Just like the setTopLeft method, but instead, it will return a right property instead of left.\n *\n * @param top\n * @param right\n * @param width\n * @param height\n * @returns {{top: string, right: string, width: string, height: string, position: string}}\n */\nexport function setTopRight(top, right, width, height): Object {\n    return {\n        top: top + \"px\",\n        right: right+ \"px\",\n        width: width + \"px\",\n        height: height + \"px\",\n        position: 'absolute'\n    };\n}\n\n\n/**\n * Get layout items sorted from top left to right and down.\n *\n * @return {Array} Array of layout objects.\n * @return {Array}        Layout, sorted static items first.\n */\nexport function sortLayoutItemsByRowCol(layout: Layout): Layout {\n  return [].concat(layout).sort(function(a, b) {\n    if (a.y === b.y && a.x === b.x) {\n      return 0;\n    }\n\n    if (a.y > b.y || (a.y === b.y && a.x > b.x)) {\n      return 1;\n    }\n\n    return -1;\n  });\n}\n\n/**\n * Generate a layout using the initialLayout and children as a template.\n * Missing entries will be added, extraneous ones will be truncated.\n *\n * @param  {Array}  initialLayout Layout passed in through props.\n * @param  {String} breakpoint    Current responsive breakpoint.\n * @param  {Boolean} verticalCompact Whether or not to compact the layout vertically.\n * @return {Array}                Working layout.\n */\n/*\nexport function synchronizeLayoutWithChildren(initialLayout: Layout, children: Array<React.Element>|React.Element,\n                                              cols: number, verticalCompact: boolean): Layout {\n  // ensure 'children' is always an array\n  if (!Array.isArray(children)) {\n    children = [children];\n  }\n  initialLayout = initialLayout || [];\n\n  // Generate one layout item per child.\n  let layout: Layout = [];\n  for (let i = 0, len = children.length; i < len; i++) {\n    let newItem;\n    const child = children[i];\n\n    // Don't overwrite if it already exists.\n    const exists = getLayoutItem(initialLayout, child.key || \"1\" /!* FIXME satisfies Flow *!/);\n    if (exists) {\n      newItem = exists;\n    } else {\n      const g = child.props._grid;\n\n      // Hey, this item has a _grid property, use it.\n      if (g) {\n        if (!isProduction) {\n          validateLayout([g], 'ReactGridLayout.children');\n        }\n        // Validated; add it to the layout. Bottom 'y' possible is the bottom of the layout.\n        // This allows you to do nice stuff like specify {y: Infinity}\n        if (verticalCompact) {\n          newItem = cloneLayoutItem({...g, y: Math.min(bottom(layout), g.y), i: child.key});\n        } else {\n          newItem = cloneLayoutItem({...g, y: g.y, i: child.key});\n        }\n      }\n      // Nothing provided: ensure this is added to the bottom\n      else {\n        newItem = cloneLayoutItem({w: 1, h: 1, x: 0, y: bottom(layout), i: child.key || \"1\"});\n      }\n    }\n    layout[i] = newItem;\n  }\n\n  // Correct the layout.\n  layout = correctBounds(layout, {cols: cols});\n  layout = compact(layout, verticalCompact);\n\n  return layout;\n}\n*/\n\n/**\n * Validate a layout. Throws errors.\n *\n * @param  {Array}  layout        Array of layout items.\n * @param  {String} [contextName] Context name for errors.\n * @throw  {Error}                Validation error.\n */\nexport function validateLayout(layout: Layout, contextName: string): void {\n  contextName = contextName || \"Layout\";\n  const subProps = ['x', 'y', 'w', 'h'];\n  let keyArr = [];\n  if (!Array.isArray(layout)) throw new Error(contextName + \" must be an array!\");\n  for (let i = 0, len = layout.length; i < len; i++) {\n    const item = layout[i];\n    for (let j = 0; j < subProps.length; j++) {\n      if (typeof item[subProps[j]] !== 'number') {\n        throw new Error('VueGridLayout: ' + contextName + '[' + i + '].' + subProps[j] + ' must be a number!');\n      }\n    }\n\n    if (item.i === undefined || item.i === null) {\n      throw new Error('VueGridLayout: ' + contextName + '[' + i + '].i cannot be null!');\n    }\n\n    if (typeof item.i !== 'number' && typeof item.i !== 'string') {\n      throw new Error('VueGridLayout: ' + contextName + '[' + i + '].i must be a string or number!');\n    }\n\n    if (keyArr.indexOf(item.i) >= 0) {\n      throw new Error('VueGridLayout: ' + contextName + '[' + i + '].i must be unique!');\n    }\n    keyArr.push(item.i);\n\n    if (item.static !== undefined && typeof item.static !== 'boolean') {\n      throw new Error('VueGridLayout: ' + contextName + '[' + i + '].static must be a boolean!');\n    }\n  }\n}\n\n// Flow can't really figure this out, so we just use Object\nexport function autoBindHandlers(el: Object, fns: Array<string>): void {\n  fns.forEach((key) => el[key] = el[key].bind(el));\n}\n\n\n\n/**\n * Convert a JS object to CSS string. Similar to React's output of CSS.\n * @param obj\n * @returns {string}\n */\nexport function createMarkup(obj) {\n    var keys = Object.keys(obj);\n    if (!keys.length) return '';\n    var i, len = keys.length;\n    var result = '';\n\n    for (i = 0; i < len; i++) {\n        var key = keys[i];\n        var val = obj[key];\n        result += hyphenate(key) + ':' + addPx(key, val) + ';';\n    }\n\n    return result;\n}\n\n\n/* The following list is defined in React's core */\nexport var IS_UNITLESS = {\n    animationIterationCount: true,\n    boxFlex: true,\n    boxFlexGroup: true,\n    boxOrdinalGroup: true,\n    columnCount: true,\n    flex: true,\n    flexGrow: true,\n    flexPositive: true,\n    flexShrink: true,\n    flexNegative: true,\n    flexOrder: true,\n    gridRow: true,\n    gridColumn: true,\n    fontWeight: true,\n    lineClamp: true,\n    lineHeight: true,\n    opacity: true,\n    order: true,\n    orphans: true,\n    tabSize: true,\n    widows: true,\n    zIndex: true,\n    zoom: true,\n\n    // SVG-related properties\n    fillOpacity: true,\n    stopOpacity: true,\n    strokeDashoffset: true,\n    strokeOpacity: true,\n    strokeWidth: true\n};\n\n\n/**\n * Will add px to the end of style values which are Numbers.\n * @param name\n * @param value\n * @returns {*}\n */\nexport function addPx(name, value) {\n    if(typeof value === 'number' && !IS_UNITLESS[ name ]) {\n        return value + 'px';\n    } else {\n        return value;\n    }\n}\n\n\n/**\n * Hyphenate a camelCase string.\n *\n * @param {String} str\n * @return {String}\n */\n\nexport var hyphenateRE = /([a-z\\d])([A-Z])/g;\n\nexport function hyphenate(str) {\n    return str.replace(hyphenateRE, '$1-$2').toLowerCase();\n}\n\n\nexport function findItemInArray(array, property, value) {\n    for (var i=0; i < array.length; i++)\n        if (array[i][property] == value)\n            return true;\n\n    return false;\n}\n\nexport function findAndRemove(array, property, value) {\n    array.forEach(function (result, index) {\n        if (result[property] === value) {\n            //Remove from array\n            array.splice(index, 1);\n        }\n    });\n}\n","// Get {x, y} positions from event.\nexport function getControlPosition(e) {\n    return offsetXYFromParentOf(e);\n}\n\n\n// Get from offsetParent\nexport function offsetXYFromParentOf(evt) {\n    const offsetParent = evt.target.offsetParent || document.body;\n    const offsetParentRect = evt.offsetParent === document.body ? {left: 0, top: 0} : offsetParent.getBoundingClientRect();\n\n    const x = evt.clientX + offsetParent.scrollLeft - offsetParentRect.left;\n    const y = evt.clientY + offsetParent.scrollTop - offsetParentRect.top;\n\n    /*const x = Math.round(evt.clientX + offsetParent.scrollLeft - offsetParentRect.left);\n    const y = Math.round(evt.clientY + offsetParent.scrollTop - offsetParentRect.top);*/\n\n\n    return {x, y};\n}\n\n\n// Create an data object exposed by <DraggableCore>'s events\nexport function createCoreData(lastX, lastY, x, y) {\n    // State changes are often (but not always!) async. We want the latest value.\n    const isStart = !isNum(lastX);\n\n    if (isStart) {\n        // If this is our first move, use the x and y as last coords.\n        return {\n            deltaX: 0, deltaY: 0,\n            lastX: x, lastY: y,\n            x: x, y: y\n        };\n    } else {\n        // Otherwise calculate proper values.\n        return {\n            deltaX: x - lastX, deltaY: y - lastY,\n            lastX: lastX, lastY: lastY,\n            x: x, y: y\n        };\n    }\n}\n\n\nfunction isNum(num)  {\n    return typeof num === 'number' && !isNaN(num);\n}\n\n","// @flow\n\nimport {cloneLayout, compact, correctBounds} from './utils';\n\nimport type {Layout} from './utils';\nexport type ResponsiveLayout = {lg?: Layout, md?: Layout, sm?: Layout, xs?: Layout, xxs?: Layout};\ntype Breakpoint = string;\ntype Breakpoints = {lg?: number, md?: number, sm?: number, xs?: number, xxs?: number};\n\n/**\n * Given a width, find the highest breakpoint that matches is valid for it (width > breakpoint).\n *\n * @param  {Object} breakpoints Breakpoints object (e.g. {lg: 1200, md: 960, ...})\n * @param  {Number} width Screen width.\n * @return {String}       Highest breakpoint that is less than width.\n */\nexport function getBreakpointFromWidth(breakpoints: Breakpoints, width: number): Breakpoint {\n  const sorted = sortBreakpoints(breakpoints);\n  let matching = sorted[0];\n  for (let i = 1, len = sorted.length; i < len; i++) {\n    const breakpointName = sorted[i];\n    if (width > breakpoints[breakpointName]) matching = breakpointName;\n  }\n  return matching;\n}\n\n\n/**\n * Given a breakpoint, get the # of cols set for it.\n * @param  {String} breakpoint Breakpoint name.\n * @param  {Object} cols       Map of breakpoints to cols.\n * @return {Number}            Number of cols.\n */\nexport function getColsFromBreakpoint(breakpoint: Breakpoint, cols: Breakpoints): number {\n  if (!cols[breakpoint]) {\n    throw new Error(\"ResponsiveGridLayout: `cols` entry for breakpoint \" + breakpoint + \" is missing!\");\n  }\n  return cols[breakpoint];\n}\n\n/**\n * Given existing layouts and a new breakpoint, find or generate a new layout.\n *\n * This finds the layout above the new one and generates from it, if it exists.\n *\n * @param  {Array} orgLayout     Original layout.\n * @param  {Object} layouts     Existing layouts.\n * @param  {Array} breakpoints All breakpoints.\n * @param  {String} breakpoint New breakpoint.\n * @param  {String} breakpoint Last breakpoint (for fallback).\n * @param  {Number} cols       Column count at new breakpoint.\n * @param  {Boolean} verticalCompact Whether or not to compact the layout\n *   vertically.\n * @return {Array}             New layout.\n */\nexport function findOrGenerateResponsiveLayout(orgLayout: Layout, layouts: ResponsiveLayout, breakpoints: Breakpoints,\n                                               breakpoint: Breakpoint, lastBreakpoint: Breakpoint,\n                                               cols: number, verticalCompact: boolean): Layout {\n  // If it already exists, just return it.\n  if (layouts[breakpoint]) return cloneLayout(layouts[breakpoint]);\n  // Find or generate the next layout\n  let layout = orgLayout;\n\n  const breakpointsSorted = sortBreakpoints(breakpoints);\n  const breakpointsAbove = breakpointsSorted.slice(breakpointsSorted.indexOf(breakpoint));\n  for (let i = 0, len = breakpointsAbove.length; i < len; i++) {\n    const b = breakpointsAbove[i];\n    if (layouts[b]) {\n      layout = layouts[b];\n      break;\n    }\n  }\n  layout = cloneLayout(layout || []); // clone layout so we don't modify existing items\n  return compact(correctBounds(layout, {cols: cols}), verticalCompact);\n}\n\nexport function generateResponsiveLayout(layout: Layout, breakpoints: Breakpoints,\n                                               breakpoint: Breakpoint, lastBreakpoint: Breakpoint,\n                                               cols: number, verticalCompact: boolean): Layout {\n  // If it already exists, just return it.\n  /*if (layouts[breakpoint]) return cloneLayout(layouts[breakpoint]);\n  // Find or generate the next layout\n  let layout = layouts[lastBreakpoint];*/\n    /*const breakpointsSorted = sortBreakpoints(breakpoints);\n  const breakpointsAbove = breakpointsSorted.slice(breakpointsSorted.indexOf(breakpoint));\n  for (let i = 0, len = breakpointsAbove.length; i < len; i++) {\n    const b = breakpointsAbove[i];\n    if (layouts[b]) {\n      layout = layouts[b];\n      break;\n    }\n  }*/\n  layout = cloneLayout(layout || []); // clone layout so we don't modify existing items\n  return compact(correctBounds(layout, {cols: cols}), verticalCompact);\n}\n\n/**\n * Given breakpoints, return an array of breakpoints sorted by width. This is usually\n * e.g. ['xxs', 'xs', 'sm', ...]\n *\n * @param  {Object} breakpoints Key/value pair of breakpoint names to widths.\n * @return {Array}              Sorted breakpoints.\n */\nexport function sortBreakpoints(breakpoints: Breakpoints): Array<Breakpoint> {\n  const keys: Array<string> = Object.keys(breakpoints);\n  return keys.sort(function(a, b) {\n    return breakpoints[a] - breakpoints[b];\n  });\n}\n","let currentDir: \"ltr\" | \"rtl\" | \"auto\"  = \"auto\";\n// let currentDir = \"auto\";\n\nfunction hasDocument(){\n    return (typeof document !== \"undefined\");\n}\n\nfunction hasWindow(){\n    return (typeof window !== \"undefined\");\n}\n\nexport function getDocumentDir(){\n    if(!hasDocument()){\n        return currentDir;\n    }\n    const direction = (typeof document.dir !== \"undefined\") ?\n        document.dir :\n        document.getElementsByTagName(\"html\")[0].getAttribute(\"dir\");\n    return direction;\n}\n\nexport function setDocumentDir(dir: \"ltr\" | \"rtl\" | \"auto\"){\n// export function setDocumentDir(dir){\n    if(!hasDocument){\n        currentDir = dir;\n        return;\n    }\n\n    const html = document.getElementsByTagName(\"html\")[0];\n    html.setAttribute(\"dir\", dir);\n}\n\nexport function addWindowEventListener(event:string, callback: () => mixed){\n    if(!hasWindow){\n\n        callback();\n        return;\n    }\n    window.addEventListener(event, callback);\n}\n\nexport function removeWindowEventListener(event:string, callback: () => mixed){\n    if(!hasWindow){\n        return;\n    }\n    window.removeEventListener(event, callback);\n}\n\n\n\n","const domObjects = {\n  init,\n  document: null,\n  DocumentFragment: null,\n  SVGElement: null,\n  SVGSVGElement: null,\n  SVGElementInstance: null,\n  Element: null,\n  HTMLElement: null,\n  Event: null,\n  Touch: null,\n  PointerEvent: null\n};\n\nfunction blank() {}\n\nexport default domObjects;\n\nfunction init(window) {\n  const win = window;\n  domObjects.document = win.document;\n  domObjects.DocumentFragment = win.DocumentFragment || blank;\n  domObjects.SVGElement = win.SVGElement || blank;\n  domObjects.SVGSVGElement = win.SVGSVGElement || blank;\n  domObjects.SVGElementInstance = win.SVGElementInstance || blank;\n  domObjects.Element = win.Element || blank;\n  domObjects.HTMLElement = win.HTMLElement || domObjects.Element;\n  domObjects.Event = win.Event;\n  domObjects.Touch = win.Touch || blank;\n  domObjects.PointerEvent = win.PointerEvent || win.MSPointerEvent;\n}\n//# sourceMappingURL=domObjects.js.map","export default (thing => !!(thing && thing.Window) && thing instanceof thing.Window);\n//# sourceMappingURL=isWindow.js.map","import isWindow from \"./isWindow.js\";\nexport let realWindow = undefined;\nlet win = undefined;\nexport { win as window };\nexport function init(window) {\n  // get wrapped window if using Shadow DOM polyfill\n  realWindow = window; // create a TextNode\n\n  const el = window.document.createTextNode(''); // check if it's wrapped by a polyfill\n\n  if (el.ownerDocument !== window.document && typeof window.wrap === 'function' && window.wrap(el) === el) {\n    // use wrapped window\n    window = window.wrap(window);\n  }\n\n  win = window;\n}\n\nif (typeof window !== 'undefined' && !!window) {\n  init(window);\n}\n\nexport function getWindow(node) {\n  if (isWindow(node)) {\n    return node;\n  }\n\n  const rootNode = node.ownerDocument || node;\n  return rootNode.defaultView || win.window;\n}\n//# sourceMappingURL=window.js.map","import isWindow from \"./isWindow.js\";\nimport * as win from \"./window.js\";\n\nconst window = thing => thing === win.window || isWindow(thing);\n\nconst docFrag = thing => object(thing) && thing.nodeType === 11;\n\nconst object = thing => !!thing && typeof thing === 'object';\n\nconst func = thing => typeof thing === 'function';\n\nconst number = thing => typeof thing === 'number';\n\nconst bool = thing => typeof thing === 'boolean';\n\nconst string = thing => typeof thing === 'string';\n\nconst element = thing => {\n  if (!thing || typeof thing !== 'object') {\n    return false;\n  } // eslint-disable-next-line import/no-named-as-default-member\n\n\n  const _window = win.getWindow(thing) || win.window;\n\n  return /object|function/.test(typeof _window.Element) ? thing instanceof _window.Element // DOM2\n  : thing.nodeType === 1 && typeof thing.nodeName === 'string';\n};\n\nconst plainObject = thing => object(thing) && !!thing.constructor && /function Object\\b/.test(thing.constructor.toString());\n\nconst array = thing => object(thing) && typeof thing.length !== 'undefined' && func(thing.splice);\n\nexport default {\n  window,\n  docFrag,\n  object,\n  func,\n  number,\n  bool,\n  string,\n  element,\n  plainObject,\n  array\n};\n//# sourceMappingURL=is.js.map","import domObjects from \"./domObjects.js\";\nimport is from \"./is.js\";\nimport * as win from \"./window.js\";\nconst browser = {\n  init,\n  supportsTouch: null,\n  supportsPointerEvent: null,\n  isIOS7: null,\n  isIOS: null,\n  isIe9: null,\n  isOperaMobile: null,\n  prefixedMatchesSelector: null,\n  pEventTypes: null,\n  wheelEvent: null\n};\n\nfunction init(window) {\n  const Element = domObjects.Element;\n  const navigator = win.window.navigator; // Does the browser support touch input?\n\n  browser.supportsTouch = 'ontouchstart' in window || is.func(window.DocumentTouch) && domObjects.document instanceof window.DocumentTouch; // Does the browser support PointerEvents\n\n  browser.supportsPointerEvent = navigator.pointerEnabled !== false && !!domObjects.PointerEvent;\n  browser.isIOS = /iP(hone|od|ad)/.test(navigator.platform); // scrolling doesn't change the result of getClientRects on iOS 7\n\n  browser.isIOS7 = /iP(hone|od|ad)/.test(navigator.platform) && /OS 7[^\\d]/.test(navigator.appVersion);\n  browser.isIe9 = /MSIE 9/.test(navigator.userAgent); // Opera Mobile must be handled differently\n\n  browser.isOperaMobile = navigator.appName === 'Opera' && browser.supportsTouch && /Presto/.test(navigator.userAgent); // prefix matchesSelector\n\n  browser.prefixedMatchesSelector = 'matches' in Element.prototype ? 'matches' : 'webkitMatchesSelector' in Element.prototype ? 'webkitMatchesSelector' : 'mozMatchesSelector' in Element.prototype ? 'mozMatchesSelector' : 'oMatchesSelector' in Element.prototype ? 'oMatchesSelector' : 'msMatchesSelector';\n  browser.pEventTypes = browser.supportsPointerEvent ? domObjects.PointerEvent === window.MSPointerEvent ? {\n    up: 'MSPointerUp',\n    down: 'MSPointerDown',\n    over: 'mouseover',\n    out: 'mouseout',\n    move: 'MSPointerMove',\n    cancel: 'MSPointerCancel'\n  } : {\n    up: 'pointerup',\n    down: 'pointerdown',\n    over: 'pointerover',\n    out: 'pointerout',\n    move: 'pointermove',\n    cancel: 'pointercancel'\n  } : null; // because Webkit and Opera still use 'mousewheel' event type\n\n  browser.wheelEvent = 'onmousewheel' in domObjects.document ? 'mousewheel' : 'wheel';\n}\n\nexport default browser;\n//# sourceMappingURL=browser.js.map","export const contains = (array, target) => array.indexOf(target) !== -1;\nexport const remove = (array, target) => array.splice(array.indexOf(target), 1);\nexport const merge = (target, source) => {\n  for (const item of source) {\n    target.push(item);\n  }\n\n  return target;\n};\nexport const from = source => merge([], source);\nexport const findIndex = (array, func) => {\n  for (let i = 0; i < array.length; i++) {\n    if (func(array[i], i, array)) {\n      return i;\n    }\n  }\n\n  return -1;\n};\nexport const find = (array, func) => array[findIndex(array, func)];\n//# sourceMappingURL=arr.js.map","import * as arr from \"./arr.js\";\nimport is from \"./is.js\"; // tslint:disable-next-line ban-types\n\nexport default function clone(source) {\n  const dest = {};\n\n  for (const prop in source) {\n    const value = source[prop];\n\n    if (is.plainObject(value)) {\n      dest[prop] = clone(value);\n    } else if (is.array(value)) {\n      dest[prop] = arr.from(value);\n    } else {\n      dest[prop] = value;\n    }\n  }\n\n  return dest;\n}\n//# sourceMappingURL=clone.js.map","export default function extend(dest, source) {\n  for (const prop in source) {\n    dest[prop] = source[prop];\n  }\n\n  const ret = dest;\n  return ret;\n}\n//# sourceMappingURL=extend.js.map","let lastTime = 0;\nlet request;\nlet cancel;\n\nfunction init(window) {\n  request = window.requestAnimationFrame;\n  cancel = window.cancelAnimationFrame;\n\n  if (!request) {\n    const vendors = ['ms', 'moz', 'webkit', 'o'];\n\n    for (const vendor of vendors) {\n      request = window[`${vendor}RequestAnimationFrame`];\n      cancel = window[`${vendor}CancelAnimationFrame`] || window[`${vendor}CancelRequestAnimationFrame`];\n    }\n  }\n\n  request = request && request.bind(window);\n  cancel = cancel && cancel.bind(window);\n\n  if (!request) {\n    request = callback => {\n      const currTime = Date.now();\n      const timeToCall = Math.max(0, 16 - (currTime - lastTime)); // eslint-disable-next-line node/no-callback-literal\n\n      const token = window.setTimeout(() => {\n        callback(currTime + timeToCall);\n      }, timeToCall);\n      lastTime = currTime + timeToCall;\n      return token;\n    };\n\n    cancel = token => clearTimeout(token);\n  }\n}\n\nexport default {\n  request: callback => request(callback),\n  cancel: token => cancel(token),\n  init\n};\n//# sourceMappingURL=raf.js.map","import extend from \"./extend.js\";\nimport is from \"./is.js\";\nexport default function normalize(type, listeners, result) {\n  result = result || {};\n\n  if (is.string(type) && type.search(' ') !== -1) {\n    type = split(type);\n  }\n\n  if (is.array(type)) {\n    return type.reduce((acc, t) => extend(acc, normalize(t, listeners, result)), result);\n  } // ({ type: fn }) -> ('', { type: fn })\n\n\n  if (is.object(type)) {\n    listeners = type;\n    type = '';\n  }\n\n  if (is.func(listeners)) {\n    result[type] = result[type] || [];\n    result[type].push(listeners);\n  } else if (is.array(listeners)) {\n    for (const l of listeners) {\n      normalize(type, l, result);\n    }\n  } else if (is.object(listeners)) {\n    for (const prefix in listeners) {\n      const combinedTypes = split(prefix).map(p => `${type}${p}`);\n      normalize(combinedTypes, listeners[prefix], result);\n    }\n  }\n\n  return result;\n}\n\nfunction split(type) {\n  return type.trim().split(/ +/);\n}\n//# sourceMappingURL=normalizeListeners.js.map","import * as arr from \"../utils/arr.js\";\nimport extend from \"../utils/extend.js\";\nimport normalize from \"../utils/normalizeListeners.js\";\n\nfunction fireUntilImmediateStopped(event, listeners) {\n  for (const listener of listeners) {\n    if (event.immediatePropagationStopped) {\n      break;\n    }\n\n    listener(event);\n  }\n}\n\nexport class Eventable {\n  constructor(options) {\n    this.options = void 0;\n    this.types = {};\n    this.propagationStopped = false;\n    this.immediatePropagationStopped = false;\n    this.global = void 0;\n    this.options = extend({}, options || {});\n  }\n\n  fire(event) {\n    let listeners;\n    const global = this.global; // Interactable#on() listeners\n    // tslint:disable no-conditional-assignment\n\n    if (listeners = this.types[event.type]) {\n      fireUntilImmediateStopped(event, listeners);\n    } // interact.on() listeners\n\n\n    if (!event.propagationStopped && global && (listeners = global[event.type])) {\n      fireUntilImmediateStopped(event, listeners);\n    }\n  }\n\n  on(type, listener) {\n    const listeners = normalize(type, listener);\n\n    for (type in listeners) {\n      this.types[type] = arr.merge(this.types[type] || [], listeners[type]);\n    }\n  }\n\n  off(type, listener) {\n    const listeners = normalize(type, listener);\n\n    for (type in listeners) {\n      const eventList = this.types[type];\n\n      if (!eventList || !eventList.length) {\n        continue;\n      }\n\n      for (const subListener of listeners[type]) {\n        const index = eventList.indexOf(subListener);\n\n        if (index !== -1) {\n          eventList.splice(index, 1);\n        }\n      }\n    }\n  }\n\n  getRect(_element) {\n    return null;\n  }\n\n}\n//# sourceMappingURL=Eventable.js.map","import browser from \"./browser.js\";\nimport domObjects from \"./domObjects.js\";\nimport is from \"./is.js\";\nimport * as win from \"./window.js\";\nexport function nodeContains(parent, child) {\n  if (parent.contains) {\n    return parent.contains(child);\n  }\n\n  while (child) {\n    if (child === parent) {\n      return true;\n    }\n\n    child = child.parentNode;\n  }\n\n  return false;\n}\nexport function closest(element, selector) {\n  while (is.element(element)) {\n    if (matchesSelector(element, selector)) {\n      return element;\n    }\n\n    element = parentNode(element);\n  }\n\n  return null;\n}\nexport function parentNode(node) {\n  let parent = node.parentNode;\n\n  if (is.docFrag(parent)) {\n    // skip past #shado-root fragments\n    // tslint:disable-next-line\n    while ((parent = parent.host) && is.docFrag(parent)) {\n      continue;\n    }\n\n    return parent;\n  }\n\n  return parent;\n}\nexport function matchesSelector(element, selector) {\n  // remove /deep/ from selectors if shadowDOM polyfill is used\n  if (win.window !== win.realWindow) {\n    selector = selector.replace(/\\/deep\\//g, ' ');\n  }\n\n  return element[browser.prefixedMatchesSelector](selector);\n}\n\nconst getParent = el => el.parentNode || el.host; // Test for the element that's \"above\" all other qualifiers\n\n\nexport function indexOfDeepestElement(elements) {\n  let deepestNodeParents = [];\n  let deepestNodeIndex;\n\n  for (let i = 0; i < elements.length; i++) {\n    const currentNode = elements[i];\n    const deepestNode = elements[deepestNodeIndex]; // node may appear in elements array multiple times\n\n    if (!currentNode || i === deepestNodeIndex) {\n      continue;\n    }\n\n    if (!deepestNode) {\n      deepestNodeIndex = i;\n      continue;\n    }\n\n    const currentNodeParent = getParent(currentNode);\n    const deepestNodeParent = getParent(deepestNode); // check if the deepest or current are document.documentElement/rootElement\n    // - if the current node is, do nothing and continue\n\n    if (currentNodeParent === currentNode.ownerDocument) {\n      continue;\n    } // - if deepest is, update with the current node and continue to next\n    else if (deepestNodeParent === currentNode.ownerDocument) {\n        deepestNodeIndex = i;\n        continue;\n      } // compare zIndex of siblings\n\n\n    if (currentNodeParent === deepestNodeParent) {\n      if (zIndexIsHigherThan(currentNode, deepestNode)) {\n        deepestNodeIndex = i;\n      }\n\n      continue;\n    } // populate the ancestry array for the latest deepest node\n\n\n    deepestNodeParents = deepestNodeParents.length ? deepestNodeParents : getNodeParents(deepestNode);\n    let ancestryStart; // if the deepest node is an HTMLElement and the current node is a non root svg element\n\n    if (deepestNode instanceof domObjects.HTMLElement && currentNode instanceof domObjects.SVGElement && !(currentNode instanceof domObjects.SVGSVGElement)) {\n      // TODO: is this check necessary? Was this for HTML elements embedded in SVG?\n      if (currentNode === deepestNodeParent) {\n        continue;\n      }\n\n      ancestryStart = currentNode.ownerSVGElement;\n    } else {\n      ancestryStart = currentNode;\n    }\n\n    const currentNodeParents = getNodeParents(ancestryStart, deepestNode.ownerDocument);\n    let commonIndex = 0; // get (position of closest common ancestor) + 1\n\n    while (currentNodeParents[commonIndex] && currentNodeParents[commonIndex] === deepestNodeParents[commonIndex]) {\n      commonIndex++;\n    }\n\n    const parents = [currentNodeParents[commonIndex - 1], currentNodeParents[commonIndex], deepestNodeParents[commonIndex]];\n    let child = parents[0].lastChild;\n\n    while (child) {\n      if (child === parents[1]) {\n        deepestNodeIndex = i;\n        deepestNodeParents = currentNodeParents;\n        break;\n      } else if (child === parents[2]) {\n        break;\n      }\n\n      child = child.previousSibling;\n    }\n  }\n\n  return deepestNodeIndex;\n}\n\nfunction getNodeParents(node, limit) {\n  const parents = [];\n  let parent = node;\n  let parentParent;\n\n  while ((parentParent = getParent(parent)) && parent !== limit && parentParent !== parent.ownerDocument) {\n    parents.unshift(parent);\n    parent = parentParent;\n  }\n\n  return parents;\n}\n\nfunction zIndexIsHigherThan(higherNode, lowerNode) {\n  const higherIndex = parseInt(win.getWindow(higherNode).getComputedStyle(higherNode).zIndex, 10) || 0;\n  const lowerIndex = parseInt(win.getWindow(lowerNode).getComputedStyle(lowerNode).zIndex, 10) || 0;\n  return higherIndex >= lowerIndex;\n}\n\nexport function matchesUpTo(element, selector, limit) {\n  while (is.element(element)) {\n    if (matchesSelector(element, selector)) {\n      return true;\n    }\n\n    element = parentNode(element);\n\n    if (element === limit) {\n      return matchesSelector(element, selector);\n    }\n  }\n\n  return false;\n}\nexport function getActualElement(element) {\n  return element.correspondingUseElement || element;\n}\nexport function getScrollXY(relevantWindow) {\n  relevantWindow = relevantWindow || win.window;\n  return {\n    x: relevantWindow.scrollX || relevantWindow.document.documentElement.scrollLeft,\n    y: relevantWindow.scrollY || relevantWindow.document.documentElement.scrollTop\n  };\n}\nexport function getElementClientRect(element) {\n  const clientRect = element instanceof domObjects.SVGElement ? element.getBoundingClientRect() : element.getClientRects()[0];\n  return clientRect && {\n    left: clientRect.left,\n    right: clientRect.right,\n    top: clientRect.top,\n    bottom: clientRect.bottom,\n    width: clientRect.width || clientRect.right - clientRect.left,\n    height: clientRect.height || clientRect.bottom - clientRect.top\n  };\n}\nexport function getElementRect(element) {\n  const clientRect = getElementClientRect(element);\n\n  if (!browser.isIOS7 && clientRect) {\n    const scroll = getScrollXY(win.getWindow(element));\n    clientRect.left += scroll.x;\n    clientRect.right += scroll.x;\n    clientRect.top += scroll.y;\n    clientRect.bottom += scroll.y;\n  }\n\n  return clientRect;\n}\nexport function getPath(node) {\n  const path = [];\n\n  while (node) {\n    path.push(node);\n    node = parentNode(node);\n  }\n\n  return path;\n}\nexport function trySelector(value) {\n  if (!is.string(value)) {\n    return false;\n  } // an exception will be raised if it is invalid\n\n\n  domObjects.document.querySelector(value);\n  return true;\n}\n//# sourceMappingURL=domUtils.js.map","import { closest, getElementRect, parentNode } from \"./domUtils.js\";\nimport extend from \"./extend.js\";\nimport is from \"./is.js\";\nexport function getStringOptionResult(value, target, element) {\n  if (value === 'parent') {\n    return parentNode(element);\n  }\n\n  if (value === 'self') {\n    return target.getRect(element);\n  }\n\n  return closest(element, value);\n}\nexport function resolveRectLike(value, target, element, functionArgs) {\n  let returnValue = value;\n\n  if (is.string(returnValue)) {\n    returnValue = getStringOptionResult(returnValue, target, element);\n  } else if (is.func(returnValue)) {\n    returnValue = returnValue(...functionArgs);\n  }\n\n  if (is.element(returnValue)) {\n    returnValue = getElementRect(returnValue);\n  }\n\n  return returnValue;\n}\nexport function rectToXY(rect) {\n  return rect && {\n    x: 'x' in rect ? rect.x : rect.left,\n    y: 'y' in rect ? rect.y : rect.top\n  };\n}\nexport function xywhToTlbr(rect) {\n  if (rect && !('left' in rect && 'top' in rect)) {\n    rect = extend({}, rect);\n    rect.left = rect.x || 0;\n    rect.top = rect.y || 0;\n    rect.right = rect.right || rect.left + rect.width;\n    rect.bottom = rect.bottom || rect.top + rect.height;\n  }\n\n  return rect;\n}\nexport function tlbrToXywh(rect) {\n  if (rect && !('x' in rect && 'y' in rect)) {\n    rect = extend({}, rect);\n    rect.x = rect.left || 0;\n    rect.y = rect.top || 0;\n    rect.width = rect.width || (rect.right || 0) - rect.x;\n    rect.height = rect.height || (rect.bottom || 0) - rect.y;\n  }\n\n  return rect;\n}\nexport function addEdges(edges, rect, delta) {\n  if (edges.left) {\n    rect.left += delta.x;\n  }\n\n  if (edges.right) {\n    rect.right += delta.x;\n  }\n\n  if (edges.top) {\n    rect.top += delta.y;\n  }\n\n  if (edges.bottom) {\n    rect.bottom += delta.y;\n  }\n\n  rect.width = rect.right - rect.left;\n  rect.height = rect.bottom - rect.top;\n}\n//# sourceMappingURL=rect.js.map","import { rectToXY, resolveRectLike } from \"./rect.js\";\nexport default function (target, element, actionName) {\n  const actionOptions = target.options[actionName];\n  const actionOrigin = actionOptions && actionOptions.origin;\n  const origin = actionOrigin || target.options.origin;\n  const originRect = resolveRectLike(origin, target, element, [target && element]);\n  return rectToXY(originRect) || {\n    x: 0,\n    y: 0\n  };\n}\n//# sourceMappingURL=getOriginXY.js.map","export default ((x, y) => Math.sqrt(x * x + y * y));\n//# sourceMappingURL=hypot.js.map","export class BaseEvent {\n  constructor(interaction) {\n    this.type = void 0;\n    this.target = void 0;\n    this.currentTarget = void 0;\n    this.interactable = void 0;\n    this._interaction = void 0;\n    this.timeStamp = void 0;\n    this.immediatePropagationStopped = false;\n    this.propagationStopped = false;\n    this._interaction = interaction;\n  }\n\n  preventDefault() {}\n  /**\n   * Don't call any other listeners (even on the current target)\n   */\n\n\n  stopPropagation() {\n    this.propagationStopped = true;\n  }\n  /**\n   * Don't call listeners on the remaining targets\n   */\n\n\n  stopImmediatePropagation() {\n    this.immediatePropagationStopped = this.propagationStopped = true;\n  }\n\n} // defined outside of class definition to avoid assignment of undefined during\n// construction\n\n// getters and setters defined here to support typescript 3.6 and below which\n// don't support getter and setters in .d.ts files\nObject.defineProperty(BaseEvent.prototype, 'interaction', {\n  get() {\n    return this._interaction._proxy;\n  },\n\n  set() {}\n\n});\n//# sourceMappingURL=BaseEvent.js.map","// eslint-disable-next-line @typescript-eslint/no-empty-interface\n// export interface Options extends BaseDefaults, PerActionDefaults {}\nexport const defaults = {\n  base: {\n    preventDefault: 'auto',\n    deltaSource: 'page'\n  },\n  perAction: {\n    enabled: false,\n    origin: {\n      x: 0,\n      y: 0\n    }\n  },\n  actions: {}\n};\n//# sourceMappingURL=defaultOptions.js.map","import extend from \"../utils/extend.js\";\nimport getOriginXY from \"../utils/getOriginXY.js\";\nimport hypot from \"../utils/hypot.js\";\nimport { BaseEvent } from \"./BaseEvent.js\";\nimport { defaults } from \"./defaultOptions.js\";\nexport class InteractEvent extends BaseEvent {\n  // resize\n\n  /** */\n  constructor(interaction, event, actionName, phase, element, preEnd, type) {\n    super(interaction);\n    this.target = void 0;\n    this.currentTarget = void 0;\n    this.relatedTarget = null;\n    this.screenX = void 0;\n    this.screenY = void 0;\n    this.button = void 0;\n    this.buttons = void 0;\n    this.ctrlKey = void 0;\n    this.shiftKey = void 0;\n    this.altKey = void 0;\n    this.metaKey = void 0;\n    this.page = void 0;\n    this.client = void 0;\n    this.delta = void 0;\n    this.rect = void 0;\n    this.x0 = void 0;\n    this.y0 = void 0;\n    this.t0 = void 0;\n    this.dt = void 0;\n    this.duration = void 0;\n    this.clientX0 = void 0;\n    this.clientY0 = void 0;\n    this.velocity = void 0;\n    this.speed = void 0;\n    this.swipe = void 0;\n    this.timeStamp = void 0;\n    this.axes = void 0;\n    this.preEnd = void 0;\n    element = element || interaction.element;\n    const target = interaction.interactable;\n    const deltaSource = (target && target.options || defaults).deltaSource;\n    const origin = getOriginXY(target, element, actionName);\n    const starting = phase === 'start';\n    const ending = phase === 'end';\n    const prevEvent = starting ? this : interaction.prevEvent;\n    const coords = starting ? interaction.coords.start : ending ? {\n      page: prevEvent.page,\n      client: prevEvent.client,\n      timeStamp: interaction.coords.cur.timeStamp\n    } : interaction.coords.cur;\n    this.page = extend({}, coords.page);\n    this.client = extend({}, coords.client);\n    this.rect = extend({}, interaction.rect);\n    this.timeStamp = coords.timeStamp;\n\n    if (!ending) {\n      this.page.x -= origin.x;\n      this.page.y -= origin.y;\n      this.client.x -= origin.x;\n      this.client.y -= origin.y;\n    }\n\n    this.ctrlKey = event.ctrlKey;\n    this.altKey = event.altKey;\n    this.shiftKey = event.shiftKey;\n    this.metaKey = event.metaKey;\n    this.button = event.button;\n    this.buttons = event.buttons;\n    this.target = element;\n    this.currentTarget = element;\n    this.preEnd = preEnd;\n    this.type = type || actionName + (phase || '');\n    this.interactable = target;\n    this.t0 = starting ? interaction.pointers[interaction.pointers.length - 1].downTime : prevEvent.t0;\n    this.x0 = interaction.coords.start.page.x - origin.x;\n    this.y0 = interaction.coords.start.page.y - origin.y;\n    this.clientX0 = interaction.coords.start.client.x - origin.x;\n    this.clientY0 = interaction.coords.start.client.y - origin.y;\n\n    if (starting || ending) {\n      this.delta = {\n        x: 0,\n        y: 0\n      };\n    } else {\n      this.delta = {\n        x: this[deltaSource].x - prevEvent[deltaSource].x,\n        y: this[deltaSource].y - prevEvent[deltaSource].y\n      };\n    }\n\n    this.dt = interaction.coords.delta.timeStamp;\n    this.duration = this.timeStamp - this.t0; // velocity and speed in pixels per second\n\n    this.velocity = extend({}, interaction.coords.velocity[deltaSource]);\n    this.speed = hypot(this.velocity.x, this.velocity.y);\n    this.swipe = ending || phase === 'inertiastart' ? this.getSwipe() : null;\n  }\n\n  getSwipe() {\n    const interaction = this._interaction;\n\n    if (interaction.prevEvent.speed < 600 || this.timeStamp - interaction.prevEvent.timeStamp > 150) {\n      return null;\n    }\n\n    let angle = 180 * Math.atan2(interaction.prevEvent.velocityY, interaction.prevEvent.velocityX) / Math.PI;\n    const overlap = 22.5;\n\n    if (angle < 0) {\n      angle += 360;\n    }\n\n    const left = 135 - overlap <= angle && angle < 225 + overlap;\n    const up = 225 - overlap <= angle && angle < 315 + overlap;\n    const right = !left && (315 - overlap <= angle || angle < 45 + overlap);\n    const down = !up && 45 - overlap <= angle && angle < 135 + overlap;\n    return {\n      up,\n      down,\n      left,\n      right,\n      angle,\n      speed: interaction.prevEvent.speed,\n      velocity: {\n        x: interaction.prevEvent.velocityX,\n        y: interaction.prevEvent.velocityY\n      }\n    };\n  }\n\n  preventDefault() {}\n  /**\n   * Don't call listeners on the remaining targets\n   */\n\n\n  stopImmediatePropagation() {\n    this.immediatePropagationStopped = this.propagationStopped = true;\n  }\n  /**\n   * Don't call any other listeners (even on the current target)\n   */\n\n\n  stopPropagation() {\n    this.propagationStopped = true;\n  }\n\n} // getters and setters defined here to support typescript 3.6 and below which\n// don't support getter and setters in .d.ts files\n\nObject.defineProperties(InteractEvent.prototype, {\n  pageX: {\n    get() {\n      return this.page.x;\n    },\n\n    set(value) {\n      this.page.x = value;\n    }\n\n  },\n  pageY: {\n    get() {\n      return this.page.y;\n    },\n\n    set(value) {\n      this.page.y = value;\n    }\n\n  },\n  clientX: {\n    get() {\n      return this.client.x;\n    },\n\n    set(value) {\n      this.client.x = value;\n    }\n\n  },\n  clientY: {\n    get() {\n      return this.client.y;\n    },\n\n    set(value) {\n      this.client.y = value;\n    }\n\n  },\n  dx: {\n    get() {\n      return this.delta.x;\n    },\n\n    set(value) {\n      this.delta.x = value;\n    }\n\n  },\n  dy: {\n    get() {\n      return this.delta.y;\n    },\n\n    set(value) {\n      this.delta.y = value;\n    }\n\n  },\n  velocityX: {\n    get() {\n      return this.velocity.x;\n    },\n\n    set(value) {\n      this.velocity.x = value;\n    }\n\n  },\n  velocityY: {\n    get() {\n      return this.velocity.y;\n    },\n\n    set(value) {\n      this.velocity.y = value;\n    }\n\n  }\n});\n//# sourceMappingURL=InteractEvent.js.map","export default function isNonNativeEvent(type, actions) {\n  if (actions.phaselessTypes[type]) {\n    return true;\n  }\n\n  for (const name in actions.map) {\n    if (type.indexOf(name) === 0 && type.substr(name.length) in actions.phases) {\n      return true;\n    }\n  }\n\n  return false;\n}\n//# sourceMappingURL=isNonNativeEvent.js.map","/* eslint-disable no-dupe-class-members */\nimport * as arr from \"../utils/arr.js\";\nimport browser from \"../utils/browser.js\";\nimport clone from \"../utils/clone.js\";\nimport { getElementRect, matchesUpTo, nodeContains, trySelector } from \"../utils/domUtils.js\";\nimport extend from \"../utils/extend.js\";\nimport is from \"../utils/is.js\";\nimport normalizeListeners from \"../utils/normalizeListeners.js\";\nimport { getWindow } from \"../utils/window.js\";\nimport { Eventable } from \"./Eventable.js\";\nimport isNonNativeEvent from \"./isNonNativeEvent.js\";\n\n/** */\nexport class Interactable {\n  /** @internal */\n  get _defaults() {\n    return {\n      base: {},\n      perAction: {},\n      actions: {}\n    };\n  }\n\n  /** */\n  constructor(target, options, defaultContext, scopeEvents) {\n    this.options = void 0;\n    this._actions = void 0;\n    this.target = void 0;\n    this.events = new Eventable();\n    this._context = void 0;\n    this._win = void 0;\n    this._doc = void 0;\n    this._scopeEvents = void 0;\n    this._rectChecker = void 0;\n    this._actions = options.actions;\n    this.target = target;\n    this._context = options.context || defaultContext;\n    this._win = getWindow(trySelector(target) ? this._context : target);\n    this._doc = this._win.document;\n    this._scopeEvents = scopeEvents;\n    this.set(options);\n  }\n\n  setOnEvents(actionName, phases) {\n    if (is.func(phases.onstart)) {\n      this.on(`${actionName}start`, phases.onstart);\n    }\n\n    if (is.func(phases.onmove)) {\n      this.on(`${actionName}move`, phases.onmove);\n    }\n\n    if (is.func(phases.onend)) {\n      this.on(`${actionName}end`, phases.onend);\n    }\n\n    if (is.func(phases.oninertiastart)) {\n      this.on(`${actionName}inertiastart`, phases.oninertiastart);\n    }\n\n    return this;\n  }\n\n  updatePerActionListeners(actionName, prev, cur) {\n    if (is.array(prev) || is.object(prev)) {\n      this.off(actionName, prev);\n    }\n\n    if (is.array(cur) || is.object(cur)) {\n      this.on(actionName, cur);\n    }\n  }\n\n  setPerAction(actionName, options) {\n    const defaults = this._defaults; // for all the default per-action options\n\n    for (const optionName_ in options) {\n      const optionName = optionName_;\n      const actionOptions = this.options[actionName];\n      const optionValue = options[optionName]; // remove old event listeners and add new ones\n\n      if (optionName === 'listeners') {\n        this.updatePerActionListeners(actionName, actionOptions.listeners, optionValue);\n      } // if the option value is an array\n\n\n      if (is.array(optionValue)) {\n        actionOptions[optionName] = arr.from(optionValue);\n      } // if the option value is an object\n      else if (is.plainObject(optionValue)) {\n          // copy the object\n          actionOptions[optionName] = extend(actionOptions[optionName] || {}, clone(optionValue)); // set anabled field to true if it exists in the defaults\n\n          if (is.object(defaults.perAction[optionName]) && 'enabled' in defaults.perAction[optionName]) {\n            actionOptions[optionName].enabled = optionValue.enabled !== false;\n          }\n        } // if the option value is a boolean and the default is an object\n        else if (is.bool(optionValue) && is.object(defaults.perAction[optionName])) {\n            actionOptions[optionName].enabled = optionValue;\n          } // if it's anything else, do a plain assignment\n          else {\n              actionOptions[optionName] = optionValue;\n            }\n    }\n  }\n  /**\n   * The default function to get an Interactables bounding rect. Can be\n   * overridden using {@link Interactable.rectChecker}.\n   *\n   * @param {Element} [element] The element to measure.\n   * @return {Rect} The object's bounding rectangle.\n   */\n\n\n  getRect(element) {\n    element = element || (is.element(this.target) ? this.target : null);\n\n    if (is.string(this.target)) {\n      element = element || this._context.querySelector(this.target);\n    }\n\n    return getElementRect(element);\n  }\n  /**\n   * Returns or sets the function used to calculate the interactable's\n   * element's rectangle\n   *\n   * @param {function} [checker] A function which returns this Interactable's\n   * bounding rectangle. See {@link Interactable.getRect}\n   * @return {function | object} The checker function or this Interactable\n   */\n\n\n  rectChecker(checker) {\n    if (is.func(checker)) {\n      this._rectChecker = checker;\n\n      this.getRect = element => {\n        const rect = extend({}, this._rectChecker(element));\n\n        if (!('width' in rect)) {\n          rect.width = rect.right - rect.left;\n          rect.height = rect.bottom - rect.top;\n        }\n\n        return rect;\n      };\n\n      return this;\n    }\n\n    if (checker === null) {\n      delete this.getRect;\n      delete this._rectChecker;\n      return this;\n    }\n\n    return this.getRect;\n  }\n\n  _backCompatOption(optionName, newValue) {\n    if (trySelector(newValue) || is.object(newValue)) {\n      this.options[optionName] = newValue;\n\n      for (const action in this._actions.map) {\n        this.options[action][optionName] = newValue;\n      }\n\n      return this;\n    }\n\n    return this.options[optionName];\n  }\n  /**\n   * Gets or sets the origin of the Interactable's element.  The x and y\n   * of the origin will be subtracted from action event coordinates.\n   *\n   * @param {Element | object | string} [origin] An HTML or SVG Element whose\n   * rect will be used, an object eg. { x: 0, y: 0 } or string 'parent', 'self'\n   * or any CSS selector\n   *\n   * @return {object} The current origin or this Interactable\n   */\n\n\n  origin(newValue) {\n    return this._backCompatOption('origin', newValue);\n  }\n  /**\n   * Returns or sets the mouse coordinate types used to calculate the\n   * movement of the pointer.\n   *\n   * @param {string} [newValue] Use 'client' if you will be scrolling while\n   * interacting; Use 'page' if you want autoScroll to work\n   * @return {string | object} The current deltaSource or this Interactable\n   */\n\n\n  deltaSource(newValue) {\n    if (newValue === 'page' || newValue === 'client') {\n      this.options.deltaSource = newValue;\n      return this;\n    }\n\n    return this.options.deltaSource;\n  }\n  /**\n   * Gets the selector context Node of the Interactable. The default is\n   * `window.document`.\n   *\n   * @return {Node} The context Node of this Interactable\n   */\n\n\n  context() {\n    return this._context;\n  }\n\n  inContext(element) {\n    return this._context === element.ownerDocument || nodeContains(this._context, element);\n  }\n\n  testIgnoreAllow(options, targetNode, eventTarget) {\n    return !this.testIgnore(options.ignoreFrom, targetNode, eventTarget) && this.testAllow(options.allowFrom, targetNode, eventTarget);\n  }\n\n  testAllow(allowFrom, targetNode, element) {\n    if (!allowFrom) {\n      return true;\n    }\n\n    if (!is.element(element)) {\n      return false;\n    }\n\n    if (is.string(allowFrom)) {\n      return matchesUpTo(element, allowFrom, targetNode);\n    } else if (is.element(allowFrom)) {\n      return nodeContains(allowFrom, element);\n    }\n\n    return false;\n  }\n\n  testIgnore(ignoreFrom, targetNode, element) {\n    if (!ignoreFrom || !is.element(element)) {\n      return false;\n    }\n\n    if (is.string(ignoreFrom)) {\n      return matchesUpTo(element, ignoreFrom, targetNode);\n    } else if (is.element(ignoreFrom)) {\n      return nodeContains(ignoreFrom, element);\n    }\n\n    return false;\n  }\n  /**\n   * Calls listeners for the given InteractEvent type bound globally\n   * and directly to this Interactable\n   *\n   * @param {InteractEvent} iEvent The InteractEvent object to be fired on this\n   * Interactable\n   * @return {Interactable} this Interactable\n   */\n\n\n  fire(iEvent) {\n    this.events.fire(iEvent);\n    return this;\n  }\n\n  _onOff(method, typeArg, listenerArg, options) {\n    if (is.object(typeArg) && !is.array(typeArg)) {\n      options = listenerArg;\n      listenerArg = null;\n    }\n\n    const addRemove = method === 'on' ? 'add' : 'remove';\n    const listeners = normalizeListeners(typeArg, listenerArg);\n\n    for (let type in listeners) {\n      if (type === 'wheel') {\n        type = browser.wheelEvent;\n      }\n\n      for (const listener of listeners[type]) {\n        // if it is an action event type\n        if (isNonNativeEvent(type, this._actions)) {\n          this.events[method](type, listener);\n        } // delegated event\n        else if (is.string(this.target)) {\n            this._scopeEvents[`${addRemove}Delegate`](this.target, this._context, type, listener, options);\n          } // remove listener from this Interactable's element\n          else {\n              this._scopeEvents[addRemove](this.target, type, listener, options);\n            }\n      }\n    }\n\n    return this;\n  }\n  /**\n   * Binds a listener for an InteractEvent, pointerEvent or DOM event.\n   *\n   * @param {string | array | object} types The types of events to listen\n   * for\n   * @param {function | array | object} [listener] The event listener function(s)\n   * @param {object | boolean} [options] options object or useCapture flag for\n   * addEventListener\n   * @return {Interactable} This Interactable\n   */\n\n\n  on(types, listener, options) {\n    return this._onOff('on', types, listener, options);\n  }\n  /**\n   * Removes an InteractEvent, pointerEvent or DOM event listener.\n   *\n   * @param {string | array | object} types The types of events that were\n   * listened for\n   * @param {function | array | object} [listener] The event listener function(s)\n   * @param {object | boolean} [options] options object or useCapture flag for\n   * removeEventListener\n   * @return {Interactable} This Interactable\n   */\n\n\n  off(types, listener, options) {\n    return this._onOff('off', types, listener, options);\n  }\n  /**\n   * Reset the options of this Interactable\n   *\n   * @param {object} options The new settings to apply\n   * @return {object} This Interactable\n   */\n\n\n  set(options) {\n    const defaults = this._defaults;\n\n    if (!is.object(options)) {\n      options = {};\n    }\n\n    this.options = clone(defaults.base);\n\n    for (const actionName_ in this._actions.methodDict) {\n      const actionName = actionName_;\n      const methodName = this._actions.methodDict[actionName];\n      this.options[actionName] = {};\n      this.setPerAction(actionName, extend(extend({}, defaults.perAction), defaults.actions[actionName]));\n      this[methodName](options[actionName]);\n    }\n\n    for (const setting in options) {\n      if (is.func(this[setting])) {\n        this[setting](options[setting]);\n      }\n    }\n\n    return this;\n  }\n  /**\n   * Remove this interactable from the list of interactables and remove it's\n   * action capabilities and event listeners\n   */\n\n\n  unset() {\n    if (is.string(this.target)) {\n      // remove delegated events\n      for (const type in this._scopeEvents.delegatedEvents) {\n        const delegated = this._scopeEvents.delegatedEvents[type];\n\n        for (let i = delegated.length - 1; i >= 0; i--) {\n          const {\n            selector,\n            context,\n            listeners\n          } = delegated[i];\n\n          if (selector === this.target && context === this._context) {\n            delegated.splice(i, 1);\n          }\n\n          for (let l = listeners.length - 1; l >= 0; l--) {\n            this._scopeEvents.removeDelegate(this.target, this._context, type, listeners[l][0], listeners[l][1]);\n          }\n        }\n      }\n    } else {\n      this._scopeEvents.remove(this.target, 'all');\n    }\n  }\n\n}\n//# sourceMappingURL=Interactable.js.map","import * as arr from \"../utils/arr.js\";\nimport * as domUtils from \"../utils/domUtils.js\";\nimport extend from \"../utils/extend.js\";\nimport is from \"../utils/is.js\";\nexport class InteractableSet {\n  // all set interactables\n  constructor(scope) {\n    this.list = [];\n    this.selectorMap = {};\n    this.scope = void 0;\n    this.scope = scope;\n    scope.addListeners({\n      'interactable:unset': ({\n        interactable\n      }) => {\n        const {\n          target,\n          _context: context\n        } = interactable;\n        const targetMappings = is.string(target) ? this.selectorMap[target] : target[this.scope.id];\n        const targetIndex = arr.findIndex(targetMappings, m => m.context === context);\n\n        if (targetMappings[targetIndex]) {\n          // Destroying mappingInfo's context and interactable\n          targetMappings[targetIndex].context = null;\n          targetMappings[targetIndex].interactable = null;\n        }\n\n        targetMappings.splice(targetIndex, 1);\n      }\n    });\n  }\n\n  new(target, options) {\n    options = extend(options || {}, {\n      actions: this.scope.actions\n    });\n    const interactable = new this.scope.Interactable(target, options, this.scope.document, this.scope.events);\n    const mappingInfo = {\n      context: interactable._context,\n      interactable\n    };\n    this.scope.addDocument(interactable._doc);\n    this.list.push(interactable);\n\n    if (is.string(target)) {\n      if (!this.selectorMap[target]) {\n        this.selectorMap[target] = [];\n      }\n\n      this.selectorMap[target].push(mappingInfo);\n    } else {\n      if (!interactable.target[this.scope.id]) {\n        Object.defineProperty(target, this.scope.id, {\n          value: [],\n          configurable: true\n        });\n      }\n\n      target[this.scope.id].push(mappingInfo);\n    }\n\n    this.scope.fire('interactable:new', {\n      target,\n      options,\n      interactable,\n      win: this.scope._win\n    });\n    return interactable;\n  }\n\n  get(target, options) {\n    const context = options && options.context || this.scope.document;\n    const isSelector = is.string(target);\n    const targetMappings = isSelector ? this.selectorMap[target] : target[this.scope.id];\n\n    if (!targetMappings) {\n      return null;\n    }\n\n    const found = arr.find(targetMappings, m => m.context === context && (isSelector || m.interactable.inContext(target)));\n    return found && found.interactable;\n  }\n\n  forEachMatch(node, callback) {\n    for (const interactable of this.list) {\n      let ret;\n\n      if ((is.string(interactable.target) // target is a selector and the element matches\n      ? is.element(node) && domUtils.matchesSelector(node, interactable.target) : // target is the element\n      node === interactable.target) && // the element is in context\n      interactable.inContext(node)) {\n        ret = callback(interactable);\n      }\n\n      if (ret !== undefined) {\n        return ret;\n      }\n    }\n  }\n\n}\n//# sourceMappingURL=InteractableSet.js.map","function pointerExtend(dest, source) {\n  for (const prop in source) {\n    const prefixedPropREs = pointerExtend.prefixedPropREs;\n    let deprecated = false; // skip deprecated prefixed properties\n\n    for (const vendor in prefixedPropREs) {\n      if (prop.indexOf(vendor) === 0 && prefixedPropREs[vendor].test(prop)) {\n        deprecated = true;\n        break;\n      }\n    }\n\n    if (!deprecated && typeof source[prop] !== 'function') {\n      dest[prop] = source[prop];\n    }\n  }\n\n  return dest;\n}\n\npointerExtend.prefixedPropREs = {\n  webkit: /(Movement[XY]|Radius[XY]|RotationAngle|Force)$/,\n  moz: /(Pressure)$/\n};\nexport default pointerExtend;\n//# sourceMappingURL=pointerExtend.js.map","import browser from \"./browser.js\";\nimport dom from \"./domObjects.js\";\nimport * as domUtils from \"./domUtils.js\";\nimport hypot from \"./hypot.js\";\nimport is from \"./is.js\";\nimport pointerExtend from \"./pointerExtend.js\";\nexport function copyCoords(dest, src) {\n  dest.page = dest.page || {};\n  dest.page.x = src.page.x;\n  dest.page.y = src.page.y;\n  dest.client = dest.client || {};\n  dest.client.x = src.client.x;\n  dest.client.y = src.client.y;\n  dest.timeStamp = src.timeStamp;\n}\nexport function setCoordDeltas(targetObj, prev, cur) {\n  targetObj.page.x = cur.page.x - prev.page.x;\n  targetObj.page.y = cur.page.y - prev.page.y;\n  targetObj.client.x = cur.client.x - prev.client.x;\n  targetObj.client.y = cur.client.y - prev.client.y;\n  targetObj.timeStamp = cur.timeStamp - prev.timeStamp;\n}\nexport function setCoordVelocity(targetObj, delta) {\n  const dt = Math.max(delta.timeStamp / 1000, 0.001);\n  targetObj.page.x = delta.page.x / dt;\n  targetObj.page.y = delta.page.y / dt;\n  targetObj.client.x = delta.client.x / dt;\n  targetObj.client.y = delta.client.y / dt;\n  targetObj.timeStamp = dt;\n}\nexport function setZeroCoords(targetObj) {\n  targetObj.page.x = 0;\n  targetObj.page.y = 0;\n  targetObj.client.x = 0;\n  targetObj.client.y = 0;\n}\nexport function isNativePointer(pointer) {\n  return pointer instanceof dom.Event || pointer instanceof dom.Touch;\n} // Get specified X/Y coords for mouse or event.touches[0]\n\nexport function getXY(type, pointer, xy) {\n  xy = xy || {};\n  type = type || 'page';\n  xy.x = pointer[type + 'X'];\n  xy.y = pointer[type + 'Y'];\n  return xy;\n}\nexport function getPageXY(pointer, page) {\n  page = page || {\n    x: 0,\n    y: 0\n  }; // Opera Mobile handles the viewport and scrolling oddly\n\n  if (browser.isOperaMobile && isNativePointer(pointer)) {\n    getXY('screen', pointer, page);\n    page.x += window.scrollX;\n    page.y += window.scrollY;\n  } else {\n    getXY('page', pointer, page);\n  }\n\n  return page;\n}\nexport function getClientXY(pointer, client) {\n  client = client || {};\n\n  if (browser.isOperaMobile && isNativePointer(pointer)) {\n    // Opera Mobile handles the viewport and scrolling oddly\n    getXY('screen', pointer, client);\n  } else {\n    getXY('client', pointer, client);\n  }\n\n  return client;\n}\nexport function getPointerId(pointer) {\n  return is.number(pointer.pointerId) ? pointer.pointerId : pointer.identifier;\n}\nexport function setCoords(dest, pointers, timeStamp) {\n  const pointer = pointers.length > 1 ? pointerAverage(pointers) : pointers[0];\n  getPageXY(pointer, dest.page);\n  getClientXY(pointer, dest.client);\n  dest.timeStamp = timeStamp;\n}\nexport function getTouchPair(event) {\n  const touches = []; // array of touches is supplied\n\n  if (is.array(event)) {\n    touches[0] = event[0];\n    touches[1] = event[1];\n  } // an event\n  else {\n      if (event.type === 'touchend') {\n        if (event.touches.length === 1) {\n          touches[0] = event.touches[0];\n          touches[1] = event.changedTouches[0];\n        } else if (event.touches.length === 0) {\n          touches[0] = event.changedTouches[0];\n          touches[1] = event.changedTouches[1];\n        }\n      } else {\n        touches[0] = event.touches[0];\n        touches[1] = event.touches[1];\n      }\n    }\n\n  return touches;\n}\nexport function pointerAverage(pointers) {\n  const average = {\n    pageX: 0,\n    pageY: 0,\n    clientX: 0,\n    clientY: 0,\n    screenX: 0,\n    screenY: 0\n  };\n\n  for (const pointer of pointers) {\n    for (const prop in average) {\n      average[prop] += pointer[prop];\n    }\n  }\n\n  for (const prop in average) {\n    average[prop] /= pointers.length;\n  }\n\n  return average;\n}\nexport function touchBBox(event) {\n  if (!event.length) {\n    return null;\n  }\n\n  const touches = getTouchPair(event);\n  const minX = Math.min(touches[0].pageX, touches[1].pageX);\n  const minY = Math.min(touches[0].pageY, touches[1].pageY);\n  const maxX = Math.max(touches[0].pageX, touches[1].pageX);\n  const maxY = Math.max(touches[0].pageY, touches[1].pageY);\n  return {\n    x: minX,\n    y: minY,\n    left: minX,\n    top: minY,\n    right: maxX,\n    bottom: maxY,\n    width: maxX - minX,\n    height: maxY - minY\n  };\n}\nexport function touchDistance(event, deltaSource) {\n  const sourceX = deltaSource + 'X';\n  const sourceY = deltaSource + 'Y';\n  const touches = getTouchPair(event);\n  const dx = touches[0][sourceX] - touches[1][sourceX];\n  const dy = touches[0][sourceY] - touches[1][sourceY];\n  return hypot(dx, dy);\n}\nexport function touchAngle(event, deltaSource) {\n  const sourceX = deltaSource + 'X';\n  const sourceY = deltaSource + 'Y';\n  const touches = getTouchPair(event);\n  const dx = touches[1][sourceX] - touches[0][sourceX];\n  const dy = touches[1][sourceY] - touches[0][sourceY];\n  const angle = 180 * Math.atan2(dy, dx) / Math.PI;\n  return angle;\n}\nexport function getPointerType(pointer) {\n  return is.string(pointer.pointerType) ? pointer.pointerType : is.number(pointer.pointerType) ? [undefined, undefined, 'touch', 'pen', 'mouse'][pointer.pointerType] // if the PointerEvent API isn't available, then the \"pointer\" must\n  // be either a MouseEvent, TouchEvent, or Touch object\n  : /touch/.test(pointer.type) || pointer instanceof dom.Touch ? 'touch' : 'mouse';\n} // [ event.target, event.currentTarget ]\n\nexport function getEventTargets(event) {\n  const path = is.func(event.composedPath) ? event.composedPath() : event.path;\n  return [domUtils.getActualElement(path ? path[0] : event.target), domUtils.getActualElement(event.currentTarget)];\n}\nexport function newCoords() {\n  return {\n    page: {\n      x: 0,\n      y: 0\n    },\n    client: {\n      x: 0,\n      y: 0\n    },\n    timeStamp: 0\n  };\n}\nexport function coordsToEvent(coords) {\n  const event = {\n    coords,\n\n    get page() {\n      return this.coords.page;\n    },\n\n    get client() {\n      return this.coords.client;\n    },\n\n    get timeStamp() {\n      return this.coords.timeStamp;\n    },\n\n    get pageX() {\n      return this.coords.page.x;\n    },\n\n    get pageY() {\n      return this.coords.page.y;\n    },\n\n    get clientX() {\n      return this.coords.client.x;\n    },\n\n    get clientY() {\n      return this.coords.client.y;\n    },\n\n    get pointerId() {\n      return this.coords.pointerId;\n    },\n\n    get target() {\n      return this.coords.target;\n    },\n\n    get type() {\n      return this.coords.type;\n    },\n\n    get pointerType() {\n      return this.coords.pointerType;\n    },\n\n    get buttons() {\n      return this.coords.buttons;\n    },\n\n    preventDefault() {}\n\n  };\n  return event;\n}\nexport { pointerExtend };\n//# sourceMappingURL=pointerUtils.js.map","import { Scope } from \"./scope.js\";\nimport * as arr from \"../utils/arr.js\";\nimport * as domUtils from \"../utils/domUtils.js\";\nimport extend from \"../utils/extend.js\";\nimport is from \"../utils/is.js\";\nimport pExtend from \"../utils/pointerExtend.js\";\nimport * as pointerUtils from \"../utils/pointerUtils.js\";\n\nfunction install(scope) {\n  const targets = [];\n  const delegatedEvents = {};\n  const documents = [];\n  const eventsMethods = {\n    add,\n    remove,\n    addDelegate,\n    removeDelegate,\n    delegateListener,\n    delegateUseCapture,\n    delegatedEvents,\n    documents,\n    targets,\n    supportsOptions: false,\n    supportsPassive: false\n  }; // check if browser supports passive events and options arg\n\n  scope.document.createElement('div').addEventListener('test', null, {\n    get capture() {\n      return eventsMethods.supportsOptions = true;\n    },\n\n    get passive() {\n      return eventsMethods.supportsPassive = true;\n    }\n\n  });\n  scope.events = eventsMethods;\n\n  function add(eventTarget, type, listener, optionalArg) {\n    const options = getOptions(optionalArg);\n    let target = arr.find(targets, t => t.eventTarget === eventTarget);\n\n    if (!target) {\n      target = {\n        eventTarget,\n        events: {}\n      };\n      targets.push(target);\n    }\n\n    if (!target.events[type]) {\n      target.events[type] = [];\n    }\n\n    if (eventTarget.addEventListener && !arr.contains(target.events[type], listener)) {\n      eventTarget.addEventListener(type, listener, eventsMethods.supportsOptions ? options : options.capture);\n      target.events[type].push(listener);\n    }\n  }\n\n  function remove(eventTarget, type, listener, optionalArg) {\n    const options = getOptions(optionalArg);\n    const targetIndex = arr.findIndex(targets, t => t.eventTarget === eventTarget);\n    const target = targets[targetIndex];\n\n    if (!target || !target.events) {\n      return;\n    }\n\n    if (type === 'all') {\n      for (type in target.events) {\n        if (target.events.hasOwnProperty(type)) {\n          remove(eventTarget, type, 'all');\n        }\n      }\n\n      return;\n    }\n\n    let typeIsEmpty = false;\n    const typeListeners = target.events[type];\n\n    if (typeListeners) {\n      if (listener === 'all') {\n        for (let i = typeListeners.length - 1; i >= 0; i--) {\n          remove(eventTarget, type, typeListeners[i], options);\n        }\n\n        return;\n      } else {\n        for (let i = 0; i < typeListeners.length; i++) {\n          if (typeListeners[i] === listener) {\n            eventTarget.removeEventListener(type, listener, eventsMethods.supportsOptions ? options : options.capture);\n            typeListeners.splice(i, 1);\n\n            if (typeListeners.length === 0) {\n              delete target.events[type];\n              typeIsEmpty = true;\n            }\n\n            break;\n          }\n        }\n      }\n    }\n\n    if (typeIsEmpty && !Object.keys(target.events).length) {\n      targets.splice(targetIndex, 1);\n    }\n  }\n\n  function addDelegate(selector, context, type, listener, optionalArg) {\n    const options = getOptions(optionalArg);\n\n    if (!delegatedEvents[type]) {\n      delegatedEvents[type] = []; // add delegate listener functions\n\n      for (const doc of documents) {\n        add(doc, type, delegateListener);\n        add(doc, type, delegateUseCapture, true);\n      }\n    }\n\n    const delegates = delegatedEvents[type];\n    let delegate = arr.find(delegates, d => d.selector === selector && d.context === context);\n\n    if (!delegate) {\n      delegate = {\n        selector,\n        context,\n        listeners: []\n      };\n      delegates.push(delegate);\n    }\n\n    delegate.listeners.push([listener, options]);\n  }\n\n  function removeDelegate(selector, context, type, listener, optionalArg) {\n    const options = getOptions(optionalArg);\n    const delegates = delegatedEvents[type];\n    let matchFound = false;\n    let index;\n\n    if (!delegates) {\n      return;\n    } // count from last index of delegated to 0\n\n\n    for (index = delegates.length - 1; index >= 0; index--) {\n      const cur = delegates[index]; // look for matching selector and context Node\n\n      if (cur.selector === selector && cur.context === context) {\n        const {\n          listeners\n        } = cur; // each item of the listeners array is an array: [function, capture, passive]\n\n        for (let i = listeners.length - 1; i >= 0; i--) {\n          const [fn, {\n            capture,\n            passive\n          }] = listeners[i]; // check if the listener functions and capture and passive flags match\n\n          if (fn === listener && capture === options.capture && passive === options.passive) {\n            // remove the listener from the array of listeners\n            listeners.splice(i, 1); // if all listeners for this target have been removed\n            // remove the target from the delegates array\n\n            if (!listeners.length) {\n              delegates.splice(index, 1); // remove delegate function from context\n\n              remove(context, type, delegateListener);\n              remove(context, type, delegateUseCapture, true);\n            } // only remove one listener\n\n\n            matchFound = true;\n            break;\n          }\n        }\n\n        if (matchFound) {\n          break;\n        }\n      }\n    }\n  } // bound to the interactable context when a DOM event\n  // listener is added to a selector interactable\n\n\n  function delegateListener(event, optionalArg) {\n    const options = getOptions(optionalArg);\n    const fakeEvent = new FakeEvent(event);\n    const delegates = delegatedEvents[event.type];\n    const [eventTarget] = pointerUtils.getEventTargets(event);\n    let element = eventTarget; // climb up document tree looking for selector matches\n\n    while (is.element(element)) {\n      for (let i = 0; i < delegates.length; i++) {\n        const cur = delegates[i];\n        const {\n          selector,\n          context\n        } = cur;\n\n        if (domUtils.matchesSelector(element, selector) && domUtils.nodeContains(context, eventTarget) && domUtils.nodeContains(context, element)) {\n          const {\n            listeners\n          } = cur;\n          fakeEvent.currentTarget = element;\n\n          for (const [fn, {\n            capture,\n            passive\n          }] of listeners) {\n            if (capture === options.capture && passive === options.passive) {\n              fn(fakeEvent);\n            }\n          }\n        }\n      }\n\n      element = domUtils.parentNode(element);\n    }\n  }\n\n  function delegateUseCapture(event) {\n    return delegateListener.call(this, event, true);\n  } // for type inferrence\n\n\n  return eventsMethods;\n}\n\nclass FakeEvent {\n  constructor(originalEvent) {\n    this.currentTarget = void 0;\n    this.originalEvent = void 0;\n    this.type = void 0;\n    this.originalEvent = originalEvent; // duplicate the event so that currentTarget can be changed\n\n    pExtend(this, originalEvent);\n  }\n\n  preventOriginalDefault() {\n    this.originalEvent.preventDefault();\n  }\n\n  stopPropagation() {\n    this.originalEvent.stopPropagation();\n  }\n\n  stopImmediatePropagation() {\n    this.originalEvent.stopImmediatePropagation();\n  }\n\n}\n\nfunction getOptions(param) {\n  if (!is.object(param)) {\n    return {\n      capture: !!param,\n      passive: false\n    };\n  }\n\n  const options = extend({}, param);\n  options.capture = !!param.capture;\n  options.passive = !!param.passive;\n  return options;\n}\n\nexport default {\n  id: 'events',\n  install\n};\n//# sourceMappingURL=events.js.map","import { window } from \"./window.js\";\nexport function warnOnce(method, message) {\n  let warned = false;\n  return function () {\n    if (!warned) {\n      window.console.warn(message);\n      warned = true;\n    }\n\n    return method.apply(this, arguments);\n  };\n}\nexport function copyAction(dest, src) {\n  dest.name = src.name;\n  dest.axis = src.axis;\n  dest.edges = src.edges;\n  return dest;\n}\n//# sourceMappingURL=misc.js.map","/** @module interact */\nimport browser from \"../utils/browser.js\";\nimport * as domUtils from \"../utils/domUtils.js\";\nimport is from \"../utils/is.js\";\nimport * as pointerUtils from \"../utils/pointerUtils.js\";\nimport { warnOnce } from \"../utils/misc.js\";\nimport isNonNativeEvent from \"./isNonNativeEvent.js\";\nexport function createInteractStatic(scope) {\n  /**\n   * ```js\n   * interact('#draggable').draggable(true)\n   *\n   * var rectables = interact('rect')\n   * rectables\n   *   .gesturable(true)\n   *   .on('gesturemove', function (event) {\n   *       // ...\n   *   })\n   * ```\n   *\n   * The methods of this variable can be used to set elements as interactables\n   * and also to change various default settings.\n   *\n   * Calling it as a function and passing an element or a valid CSS selector\n   * string returns an Interactable object which has various methods to configure\n   * it.\n   *\n   * @global\n   *\n   * @param {Element | string} target The HTML or SVG Element to interact with\n   * or CSS selector\n   * @return {Interactable}\n   */\n  const interact = (target, options) => {\n    let interactable = scope.interactables.get(target, options);\n\n    if (!interactable) {\n      interactable = scope.interactables.new(target, options);\n      interactable.events.global = interact.globalEvents;\n    }\n\n    return interactable;\n  }; // expose the functions used to calculate multi-touch properties\n\n\n  interact.getPointerAverage = pointerUtils.pointerAverage;\n  interact.getTouchBBox = pointerUtils.touchBBox;\n  interact.getTouchDistance = pointerUtils.touchDistance;\n  interact.getTouchAngle = pointerUtils.touchAngle;\n  interact.getElementRect = domUtils.getElementRect;\n  interact.getElementClientRect = domUtils.getElementClientRect;\n  interact.matchesSelector = domUtils.matchesSelector;\n  interact.closest = domUtils.closest;\n  interact.globalEvents = {}; // eslint-disable-next-line no-undef\n\n  interact.version = \"1.10.2\";\n  interact.scope = scope;\n  /**\n  * Use a plugin\n  *\n  * @alias module:interact.use\n  *\n   */\n\n  interact.use = function (plugin, options) {\n    this.scope.usePlugin(plugin, options);\n    return this;\n  };\n  /**\n   * Check if an element or selector has been set with the {@link interact}\n   * function\n   *\n   * @alias module:interact.isSet\n   *\n   * @param {Target} target The Element or string being searched for\n   * @param {object} options\n   * @return {boolean} Indicates if the element or CSS selector was previously\n   * passed to interact\n   */\n\n\n  interact.isSet = function (target, options) {\n    return !!this.scope.interactables.get(target, options && options.context);\n  };\n  /**\n   * @deprecated\n   * Add a global listener for an InteractEvent or adds a DOM event to `document`\n   *\n   * @alias module:interact.on\n   *\n   * @param {string | array | object} type The types of events to listen for\n   * @param {function} listener The function event (s)\n   * @param {object | boolean} [options] object or useCapture flag for\n   * addEventListener\n   * @return {object} interact\n   */\n\n\n  interact.on = warnOnce(function on(type, listener, options) {\n    if (is.string(type) && type.search(' ') !== -1) {\n      type = type.trim().split(/ +/);\n    }\n\n    if (is.array(type)) {\n      for (const eventType of type) {\n        this.on(eventType, listener, options);\n      }\n\n      return this;\n    }\n\n    if (is.object(type)) {\n      for (const prop in type) {\n        this.on(prop, type[prop], listener);\n      }\n\n      return this;\n    } // if it is an InteractEvent type, add listener to globalEvents\n\n\n    if (isNonNativeEvent(type, this.scope.actions)) {\n      // if this type of event was never bound\n      if (!this.globalEvents[type]) {\n        this.globalEvents[type] = [listener];\n      } else {\n        this.globalEvents[type].push(listener);\n      }\n    } // If non InteractEvent type, addEventListener to document\n    else {\n        this.scope.events.add(this.scope.document, type, listener, {\n          options\n        });\n      }\n\n    return this;\n  }, 'The interact.on() method is being deprecated');\n  /**\n   * @deprecated\n   * Removes a global InteractEvent listener or DOM event from `document`\n   *\n   * @alias module:interact.off\n   *\n   * @param {string | array | object} type The types of events that were listened\n   * for\n   * @param {function} listener The listener function to be removed\n   * @param {object | boolean} options [options] object or useCapture flag for\n   * removeEventListener\n   * @return {object} interact\n   */\n\n  interact.off = warnOnce(function off(type, listener, options) {\n    if (is.string(type) && type.search(' ') !== -1) {\n      type = type.trim().split(/ +/);\n    }\n\n    if (is.array(type)) {\n      for (const eventType of type) {\n        this.off(eventType, listener, options);\n      }\n\n      return this;\n    }\n\n    if (is.object(type)) {\n      for (const prop in type) {\n        this.off(prop, type[prop], listener);\n      }\n\n      return this;\n    }\n\n    if (isNonNativeEvent(type, this.scope.actions)) {\n      let index;\n\n      if (type in this.globalEvents && (index = this.globalEvents[type].indexOf(listener)) !== -1) {\n        this.globalEvents[type].splice(index, 1);\n      }\n    } else {\n      this.scope.events.remove(this.scope.document, type, listener, options);\n    }\n\n    return this;\n  }, 'The interact.off() method is being deprecated');\n\n  interact.debug = function () {\n    return this.scope;\n  };\n  /**\n   * @alias module:interact.supportsTouch\n   *\n   * @return {boolean} Whether or not the browser supports touch input\n   */\n\n\n  interact.supportsTouch = function () {\n    return browser.supportsTouch;\n  };\n  /**\n   * @alias module:interact.supportsPointerEvent\n   *\n   * @return {boolean} Whether or not the browser supports PointerEvents\n   */\n\n\n  interact.supportsPointerEvent = function () {\n    return browser.supportsPointerEvent;\n  };\n  /**\n   * Cancels all interactions (end events are not fired)\n   *\n   * @alias module:interact.stop\n   *\n   * @return {object} interact\n   */\n\n\n  interact.stop = function () {\n    for (const interaction of this.scope.interactions.list) {\n      interaction.stop();\n    }\n\n    return this;\n  };\n  /**\n   * Returns or sets the distance the pointer must be moved before an action\n   * sequence occurs. This also affects tolerance for tap events.\n   *\n   * @alias module:interact.pointerMoveTolerance\n   *\n   * @param {number} [newValue] The movement from the start position must be greater than this value\n   * @return {interact | number}\n   */\n\n\n  interact.pointerMoveTolerance = function (newValue) {\n    if (is.number(newValue)) {\n      this.scope.interactions.pointerMoveTolerance = newValue;\n      return this;\n    }\n\n    return this.scope.interactions.pointerMoveTolerance;\n  };\n\n  interact.addDocument = function (doc, options) {\n    this.scope.addDocument(doc, options);\n  };\n\n  interact.removeDocument = function (doc) {\n    this.scope.removeDocument(doc);\n  };\n\n  return interact;\n}\n//# sourceMappingURL=interactStatic.js.map","export class PointerInfo {\n  constructor(id, pointer, event, downTime, downTarget) {\n    this.id = void 0;\n    this.pointer = void 0;\n    this.event = void 0;\n    this.downTime = void 0;\n    this.downTarget = void 0;\n    this.id = id;\n    this.pointer = pointer;\n    this.event = event;\n    this.downTime = downTime;\n    this.downTarget = downTarget;\n  }\n\n}\n//# sourceMappingURL=PointerInfo.js.map","import * as arr from \"../utils/arr.js\";\nimport extend from \"../utils/extend.js\";\nimport hypot from \"../utils/hypot.js\";\nimport { warnOnce, copyAction } from \"../utils/misc.js\";\nimport * as pointerUtils from \"../utils/pointerUtils.js\";\nimport * as rectUtils from \"../utils/rect.js\";\nimport { InteractEvent } from \"./InteractEvent.js\";\nimport { PointerInfo } from \"./PointerInfo.js\";\nexport let _ProxyValues;\n\n(function (_ProxyValues) {\n  _ProxyValues[\"interactable\"] = \"\";\n  _ProxyValues[\"element\"] = \"\";\n  _ProxyValues[\"prepared\"] = \"\";\n  _ProxyValues[\"pointerIsDown\"] = \"\";\n  _ProxyValues[\"pointerWasMoved\"] = \"\";\n  _ProxyValues[\"_proxy\"] = \"\";\n})(_ProxyValues || (_ProxyValues = {}));\n\nexport let _ProxyMethods;\n\n(function (_ProxyMethods) {\n  _ProxyMethods[\"start\"] = \"\";\n  _ProxyMethods[\"move\"] = \"\";\n  _ProxyMethods[\"end\"] = \"\";\n  _ProxyMethods[\"stop\"] = \"\";\n  _ProxyMethods[\"interacting\"] = \"\";\n})(_ProxyMethods || (_ProxyMethods = {}));\n\nlet idCounter = 0;\nexport class Interaction {\n  // current interactable being interacted with\n  // the target element of the interactable\n  // action that's ready to be fired on next move event\n  // keep track of added pointers\n  // pointerdown/mousedown/touchstart event\n  // previous action event\n\n  /** @internal */\n  get pointerMoveTolerance() {\n    return 1;\n  }\n  /**\n   * @alias Interaction.prototype.move\n   */\n\n\n  /** */\n  constructor({\n    pointerType,\n    scopeFire\n  }) {\n    this.interactable = null;\n    this.element = null;\n    this.rect = void 0;\n    this._rects = void 0;\n    this.edges = void 0;\n    this._scopeFire = void 0;\n    this.prepared = {\n      name: null,\n      axis: null,\n      edges: null\n    };\n    this.pointerType = void 0;\n    this.pointers = [];\n    this.downEvent = null;\n    this.downPointer = {};\n    this._latestPointer = {\n      pointer: null,\n      event: null,\n      eventTarget: null\n    };\n    this.prevEvent = null;\n    this.pointerIsDown = false;\n    this.pointerWasMoved = false;\n    this._interacting = false;\n    this._ending = false;\n    this._stopped = true;\n    this._proxy = null;\n    this.simulation = null;\n    this.doMove = warnOnce(function (signalArg) {\n      this.move(signalArg);\n    }, 'The interaction.doMove() method has been renamed to interaction.move()');\n    this.coords = {\n      // Starting InteractEvent pointer coordinates\n      start: pointerUtils.newCoords(),\n      // Previous native pointer move event coordinates\n      prev: pointerUtils.newCoords(),\n      // current native pointer move event coordinates\n      cur: pointerUtils.newCoords(),\n      // Change in coordinates and time of the pointer\n      delta: pointerUtils.newCoords(),\n      // pointer velocity\n      velocity: pointerUtils.newCoords()\n    };\n    this._id = idCounter++;\n    this._scopeFire = scopeFire;\n    this.pointerType = pointerType;\n    const that = this;\n    this._proxy = {};\n\n    for (const key in _ProxyValues) {\n      Object.defineProperty(this._proxy, key, {\n        get() {\n          return that[key];\n        }\n\n      });\n    }\n\n    for (const key in _ProxyMethods) {\n      Object.defineProperty(this._proxy, key, {\n        value: (...args) => that[key](...args)\n      });\n    }\n\n    this._scopeFire('interactions:new', {\n      interaction: this\n    });\n  }\n\n  pointerDown(pointer, event, eventTarget) {\n    const pointerIndex = this.updatePointer(pointer, event, eventTarget, true);\n    const pointerInfo = this.pointers[pointerIndex];\n\n    this._scopeFire('interactions:down', {\n      pointer,\n      event,\n      eventTarget,\n      pointerIndex,\n      pointerInfo,\n      type: 'down',\n      interaction: this\n    });\n  }\n  /**\n   * ```js\n   * interact(target)\n   *   .draggable({\n   *     // disable the default drag start by down->move\n   *     manualStart: true\n   *   })\n   *   // start dragging after the user holds the pointer down\n   *   .on('hold', function (event) {\n   *     var interaction = event.interaction\n   *\n   *     if (!interaction.interacting()) {\n   *       interaction.start({ name: 'drag' },\n   *                         event.interactable,\n   *                         event.currentTarget)\n   *     }\n   * })\n   * ```\n   *\n   * Start an action with the given Interactable and Element as tartgets. The\n   * action must be enabled for the target Interactable and an appropriate\n   * number of pointers must be held down - 1 for drag/resize, 2 for gesture.\n   *\n   * Use it with `interactable.<action>able({ manualStart: false })` to always\n   * [start actions manually](https://github.com/taye/interact.js/issues/114)\n   *\n   * @param {object} action   The action to be performed - drag, resize, etc.\n   * @param {Interactable} target  The Interactable to target\n   * @param {Element} element The DOM Element to target\n   * @return {Boolean} Whether the interaction was successfully started\n   */\n\n\n  start(action, interactable, element) {\n    if (this.interacting() || !this.pointerIsDown || this.pointers.length < (action.name === 'gesture' ? 2 : 1) || !interactable.options[action.name].enabled) {\n      return false;\n    }\n\n    copyAction(this.prepared, action);\n    this.interactable = interactable;\n    this.element = element;\n    this.rect = interactable.getRect(element);\n    this.edges = this.prepared.edges ? extend({}, this.prepared.edges) : {\n      left: true,\n      right: true,\n      top: true,\n      bottom: true\n    };\n    this._stopped = false;\n    this._interacting = this._doPhase({\n      interaction: this,\n      event: this.downEvent,\n      phase: 'start'\n    }) && !this._stopped;\n    return this._interacting;\n  }\n\n  pointerMove(pointer, event, eventTarget) {\n    if (!this.simulation && !(this.modification && this.modification.endResult)) {\n      this.updatePointer(pointer, event, eventTarget, false);\n    }\n\n    const duplicateMove = this.coords.cur.page.x === this.coords.prev.page.x && this.coords.cur.page.y === this.coords.prev.page.y && this.coords.cur.client.x === this.coords.prev.client.x && this.coords.cur.client.y === this.coords.prev.client.y;\n    let dx;\n    let dy; // register movement greater than pointerMoveTolerance\n\n    if (this.pointerIsDown && !this.pointerWasMoved) {\n      dx = this.coords.cur.client.x - this.coords.start.client.x;\n      dy = this.coords.cur.client.y - this.coords.start.client.y;\n      this.pointerWasMoved = hypot(dx, dy) > this.pointerMoveTolerance;\n    }\n\n    const pointerIndex = this.getPointerIndex(pointer);\n    const signalArg = {\n      pointer,\n      pointerIndex,\n      pointerInfo: this.pointers[pointerIndex],\n      event,\n      type: 'move',\n      eventTarget,\n      dx,\n      dy,\n      duplicate: duplicateMove,\n      interaction: this\n    };\n\n    if (!duplicateMove) {\n      // set pointer coordinate, time changes and velocity\n      pointerUtils.setCoordVelocity(this.coords.velocity, this.coords.delta);\n    }\n\n    this._scopeFire('interactions:move', signalArg);\n\n    if (!duplicateMove && !this.simulation) {\n      // if interacting, fire an 'action-move' signal etc\n      if (this.interacting()) {\n        signalArg.type = null;\n        this.move(signalArg);\n      }\n\n      if (this.pointerWasMoved) {\n        pointerUtils.copyCoords(this.coords.prev, this.coords.cur);\n      }\n    }\n  }\n  /**\n   * ```js\n   * interact(target)\n   *   .draggable(true)\n   *   .on('dragmove', function (event) {\n   *     if (someCondition) {\n   *       // change the snap settings\n   *       event.interactable.draggable({ snap: { targets: [] }})\n   *       // fire another move event with re-calculated snap\n   *       event.interaction.move()\n   *     }\n   *   })\n   * ```\n   *\n   * Force a move of the current action at the same coordinates. Useful if\n   * snap/restrict has been changed and you want a movement with the new\n   * settings.\n   */\n\n\n  move(signalArg) {\n    if (!signalArg || !signalArg.event) {\n      pointerUtils.setZeroCoords(this.coords.delta);\n    }\n\n    signalArg = extend({\n      pointer: this._latestPointer.pointer,\n      event: this._latestPointer.event,\n      eventTarget: this._latestPointer.eventTarget,\n      interaction: this\n    }, signalArg || {});\n    signalArg.phase = 'move';\n\n    this._doPhase(signalArg);\n  } // End interact move events and stop auto-scroll unless simulation is running\n\n\n  pointerUp(pointer, event, eventTarget, curEventTarget) {\n    let pointerIndex = this.getPointerIndex(pointer);\n\n    if (pointerIndex === -1) {\n      pointerIndex = this.updatePointer(pointer, event, eventTarget, false);\n    }\n\n    const type = /cancel$/i.test(event.type) ? 'cancel' : 'up';\n\n    this._scopeFire(`interactions:${type}`, {\n      pointer,\n      pointerIndex,\n      pointerInfo: this.pointers[pointerIndex],\n      event,\n      eventTarget,\n      type: type,\n      curEventTarget,\n      interaction: this\n    });\n\n    if (!this.simulation) {\n      this.end(event);\n    }\n\n    this.removePointer(pointer, event);\n  }\n\n  documentBlur(event) {\n    this.end(event);\n\n    this._scopeFire('interactions:blur', {\n      event,\n      type: 'blur',\n      interaction: this\n    });\n  }\n  /**\n   * ```js\n   * interact(target)\n   *   .draggable(true)\n   *   .on('move', function (event) {\n   *     if (event.pageX > 1000) {\n   *       // end the current action\n   *       event.interaction.end()\n   *       // stop all further listeners from being called\n   *       event.stopImmediatePropagation()\n   *     }\n   *   })\n   * ```\n   *\n   * @param {PointerEvent} [event]\n   */\n\n\n  end(event) {\n    this._ending = true;\n    event = event || this._latestPointer.event;\n    let endPhaseResult;\n\n    if (this.interacting()) {\n      endPhaseResult = this._doPhase({\n        event,\n        interaction: this,\n        phase: 'end'\n      });\n    }\n\n    this._ending = false;\n\n    if (endPhaseResult === true) {\n      this.stop();\n    }\n  }\n\n  currentAction() {\n    return this._interacting ? this.prepared.name : null;\n  }\n\n  interacting() {\n    return this._interacting;\n  }\n  /** */\n\n\n  stop() {\n    this._scopeFire('interactions:stop', {\n      interaction: this\n    });\n\n    this.interactable = this.element = null;\n    this._interacting = false;\n    this._stopped = true;\n    this.prepared.name = this.prevEvent = null;\n  }\n\n  getPointerIndex(pointer) {\n    const pointerId = pointerUtils.getPointerId(pointer); // mouse and pen interactions may have only one pointer\n\n    return this.pointerType === 'mouse' || this.pointerType === 'pen' ? this.pointers.length - 1 : arr.findIndex(this.pointers, curPointer => curPointer.id === pointerId);\n  }\n\n  getPointerInfo(pointer) {\n    return this.pointers[this.getPointerIndex(pointer)];\n  }\n\n  updatePointer(pointer, event, eventTarget, down) {\n    const id = pointerUtils.getPointerId(pointer);\n    let pointerIndex = this.getPointerIndex(pointer);\n    let pointerInfo = this.pointers[pointerIndex];\n    down = down === false ? false : down || /(down|start)$/i.test(event.type);\n\n    if (!pointerInfo) {\n      pointerInfo = new PointerInfo(id, pointer, event, null, null);\n      pointerIndex = this.pointers.length;\n      this.pointers.push(pointerInfo);\n    } else {\n      pointerInfo.pointer = pointer;\n    }\n\n    pointerUtils.setCoords(this.coords.cur, this.pointers.map(p => p.pointer), this._now());\n    pointerUtils.setCoordDeltas(this.coords.delta, this.coords.prev, this.coords.cur);\n\n    if (down) {\n      this.pointerIsDown = true;\n      pointerInfo.downTime = this.coords.cur.timeStamp;\n      pointerInfo.downTarget = eventTarget;\n      pointerUtils.pointerExtend(this.downPointer, pointer);\n\n      if (!this.interacting()) {\n        pointerUtils.copyCoords(this.coords.start, this.coords.cur);\n        pointerUtils.copyCoords(this.coords.prev, this.coords.cur);\n        this.downEvent = event;\n        this.pointerWasMoved = false;\n      }\n    }\n\n    this._updateLatestPointer(pointer, event, eventTarget);\n\n    this._scopeFire('interactions:update-pointer', {\n      pointer,\n      event,\n      eventTarget,\n      down,\n      pointerInfo,\n      pointerIndex,\n      interaction: this\n    });\n\n    return pointerIndex;\n  }\n\n  removePointer(pointer, event) {\n    const pointerIndex = this.getPointerIndex(pointer);\n\n    if (pointerIndex === -1) {\n      return;\n    }\n\n    const pointerInfo = this.pointers[pointerIndex];\n\n    this._scopeFire('interactions:remove-pointer', {\n      pointer,\n      event,\n      eventTarget: null,\n      pointerIndex,\n      pointerInfo,\n      interaction: this\n    });\n\n    this.pointers.splice(pointerIndex, 1);\n    this.pointerIsDown = false;\n  }\n\n  _updateLatestPointer(pointer, event, eventTarget) {\n    this._latestPointer.pointer = pointer;\n    this._latestPointer.event = event;\n    this._latestPointer.eventTarget = eventTarget;\n  }\n\n  destroy() {\n    this._latestPointer.pointer = null;\n    this._latestPointer.event = null;\n    this._latestPointer.eventTarget = null;\n  }\n\n  _createPreparedEvent(event, phase, preEnd, type) {\n    return new InteractEvent(this, event, this.prepared.name, phase, this.element, preEnd, type);\n  }\n\n  _fireEvent(iEvent) {\n    this.interactable.fire(iEvent);\n\n    if (!this.prevEvent || iEvent.timeStamp >= this.prevEvent.timeStamp) {\n      this.prevEvent = iEvent;\n    }\n  }\n\n  _doPhase(signalArg) {\n    const {\n      event,\n      phase,\n      preEnd,\n      type\n    } = signalArg;\n    const {\n      rect\n    } = this;\n\n    if (rect && phase === 'move') {\n      // update the rect changes due to pointer move\n      rectUtils.addEdges(this.edges, rect, this.coords.delta[this.interactable.options.deltaSource]);\n      rect.width = rect.right - rect.left;\n      rect.height = rect.bottom - rect.top;\n    }\n\n    const beforeResult = this._scopeFire(`interactions:before-action-${phase}`, signalArg);\n\n    if (beforeResult === false) {\n      return false;\n    }\n\n    const iEvent = signalArg.iEvent = this._createPreparedEvent(event, phase, preEnd, type);\n\n    this._scopeFire(`interactions:action-${phase}`, signalArg);\n\n    if (phase === 'start') {\n      this.prevEvent = iEvent;\n    }\n\n    this._fireEvent(iEvent);\n\n    this._scopeFire(`interactions:after-action-${phase}`, signalArg);\n\n    return true;\n  }\n\n  _now() {\n    return Date.now();\n  }\n\n}\nexport default Interaction;\nexport { PointerInfo };\n//# sourceMappingURL=Interaction.js.map","import { Interactable } from \"./Interactable.js\";\nimport { matchesSelector, nodeContains } from \"../utils/domUtils.js\";\nimport is from \"../utils/is.js\";\nimport { getWindow } from \"../utils/window.js\";\n\nfunction preventDefault(newValue) {\n  if (/^(always|never|auto)$/.test(newValue)) {\n    this.options.preventDefault = newValue;\n    return this;\n  }\n\n  if (is.bool(newValue)) {\n    this.options.preventDefault = newValue ? 'always' : 'never';\n    return this;\n  }\n\n  return this.options.preventDefault;\n}\n\nfunction checkAndPreventDefault(interactable, scope, event) {\n  const setting = interactable.options.preventDefault;\n\n  if (setting === 'never') {\n    return;\n  }\n\n  if (setting === 'always') {\n    event.preventDefault();\n    return;\n  } // setting === 'auto'\n  // if the browser supports passive event listeners and isn't running on iOS,\n  // don't preventDefault of touch{start,move} events. CSS touch-action and\n  // user-select should be used instead of calling event.preventDefault().\n\n\n  if (scope.events.supportsPassive && /^touch(start|move)$/.test(event.type)) {\n    const doc = getWindow(event.target).document;\n    const docOptions = scope.getDocOptions(doc);\n\n    if (!(docOptions && docOptions.events) || docOptions.events.passive !== false) {\n      return;\n    }\n  } // don't preventDefault of pointerdown events\n\n\n  if (/^(mouse|pointer|touch)*(down|start)/i.test(event.type)) {\n    return;\n  } // don't preventDefault on editable elements\n\n\n  if (is.element(event.target) && matchesSelector(event.target, 'input,select,textarea,[contenteditable=true],[contenteditable=true] *')) {\n    return;\n  }\n\n  event.preventDefault();\n}\n\nfunction onInteractionEvent({\n  interaction,\n  event\n}) {\n  if (interaction.interactable) {\n    interaction.interactable.checkAndPreventDefault(event);\n  }\n}\n\nexport function install(scope) {\n  /** @lends Interactable */\n  const {\n    Interactable\n  } = scope;\n  /**\n   * Returns or sets whether to prevent the browser's default behaviour in\n   * response to pointer events. Can be set to:\n   *  - `'always'` to always prevent\n   *  - `'never'` to never prevent\n   *  - `'auto'` to let interact.js try to determine what would be best\n   *\n   * @param {string} [newValue] `'always'`, `'never'` or `'auto'`\n   * @return {string | Interactable} The current setting or this Interactable\n   */\n\n  Interactable.prototype.preventDefault = preventDefault;\n\n  Interactable.prototype.checkAndPreventDefault = function (event) {\n    return checkAndPreventDefault(this, scope, event);\n  }; // prevent native HTML5 drag on interact.js target elements\n\n\n  scope.interactions.docEvents.push({\n    type: 'dragstart',\n\n    listener(event) {\n      for (const interaction of scope.interactions.list) {\n        if (interaction.element && (interaction.element === event.target || nodeContains(interaction.element, event.target))) {\n          interaction.interactable.checkAndPreventDefault(event);\n          return;\n        }\n      }\n    }\n\n  });\n}\nexport default {\n  id: 'core/interactablePreventDefault',\n  install,\n  listeners: ['down', 'move', 'up', 'cancel'].reduce((acc, eventType) => {\n    acc[`interactions:${eventType}`] = onInteractionEvent;\n    return acc;\n  }, {})\n};\n//# sourceMappingURL=interactablePreventDefault.js.map","import * as dom from \"../utils/domUtils.js\";\nconst finder = {\n  methodOrder: ['simulationResume', 'mouseOrPen', 'hasPointer', 'idle'],\n\n  search(details) {\n    for (const method of finder.methodOrder) {\n      const interaction = finder[method](details);\n\n      if (interaction) {\n        return interaction;\n      }\n    }\n\n    return null;\n  },\n\n  // try to resume simulation with a new pointer\n  simulationResume({\n    pointerType,\n    eventType,\n    eventTarget,\n    scope\n  }) {\n    if (!/down|start/i.test(eventType)) {\n      return null;\n    }\n\n    for (const interaction of scope.interactions.list) {\n      let element = eventTarget;\n\n      if (interaction.simulation && interaction.simulation.allowResume && interaction.pointerType === pointerType) {\n        while (element) {\n          // if the element is the interaction element\n          if (element === interaction.element) {\n            return interaction;\n          }\n\n          element = dom.parentNode(element);\n        }\n      }\n    }\n\n    return null;\n  },\n\n  // if it's a mouse or pen interaction\n  mouseOrPen({\n    pointerId,\n    pointerType,\n    eventType,\n    scope\n  }) {\n    if (pointerType !== 'mouse' && pointerType !== 'pen') {\n      return null;\n    }\n\n    let firstNonActive;\n\n    for (const interaction of scope.interactions.list) {\n      if (interaction.pointerType === pointerType) {\n        // if it's a down event, skip interactions with running simulations\n        if (interaction.simulation && !hasPointerId(interaction, pointerId)) {\n          continue;\n        } // if the interaction is active, return it immediately\n\n\n        if (interaction.interacting()) {\n          return interaction;\n        } // otherwise save it and look for another active interaction\n        else if (!firstNonActive) {\n            firstNonActive = interaction;\n          }\n      }\n    } // if no active mouse interaction was found use the first inactive mouse\n    // interaction\n\n\n    if (firstNonActive) {\n      return firstNonActive;\n    } // find any mouse or pen interaction.\n    // ignore the interaction if the eventType is a *down, and a simulation\n    // is active\n\n\n    for (const interaction of scope.interactions.list) {\n      if (interaction.pointerType === pointerType && !(/down/i.test(eventType) && interaction.simulation)) {\n        return interaction;\n      }\n    }\n\n    return null;\n  },\n\n  // get interaction that has this pointer\n  hasPointer({\n    pointerId,\n    scope\n  }) {\n    for (const interaction of scope.interactions.list) {\n      if (hasPointerId(interaction, pointerId)) {\n        return interaction;\n      }\n    }\n\n    return null;\n  },\n\n  // get first idle interaction with a matching pointerType\n  idle({\n    pointerType,\n    scope\n  }) {\n    for (const interaction of scope.interactions.list) {\n      // if there's already a pointer held down\n      if (interaction.pointers.length === 1) {\n        const target = interaction.interactable; // don't add this pointer if there is a target interactable and it\n        // isn't gesturable\n\n        if (target && !(target.options.gesture && target.options.gesture.enabled)) {\n          continue;\n        }\n      } // maximum of 2 pointers per interaction\n      else if (interaction.pointers.length >= 2) {\n          continue;\n        }\n\n      if (!interaction.interacting() && pointerType === interaction.pointerType) {\n        return interaction;\n      }\n    }\n\n    return null;\n  }\n\n};\n\nfunction hasPointerId(interaction, pointerId) {\n  return interaction.pointers.some(({\n    id\n  }) => id === pointerId);\n}\n\nexport default finder;\n//# sourceMappingURL=interactionFinder.js.map","import { Scope, SignalArgs } from \"./scope.js\";\nimport browser from \"../utils/browser.js\";\nimport domObjects from \"../utils/domObjects.js\";\nimport { nodeContains } from \"../utils/domUtils.js\";\nimport * as pointerUtils from \"../utils/pointerUtils.js\";\nimport InteractionBase from \"./Interaction.js\";\nimport interactablePreventDefault from \"./interactablePreventDefault.js\";\nimport finder from \"./interactionFinder.js\";\nconst methodNames = ['pointerDown', 'pointerMove', 'pointerUp', 'updatePointer', 'removePointer', 'windowBlur'];\n\nfunction install(scope) {\n  const listeners = {};\n\n  for (const method of methodNames) {\n    listeners[method] = doOnInteractions(method, scope);\n  }\n\n  const pEventTypes = browser.pEventTypes;\n  let docEvents;\n\n  if (domObjects.PointerEvent) {\n    docEvents = [{\n      type: pEventTypes.down,\n      listener: releasePointersOnRemovedEls\n    }, {\n      type: pEventTypes.down,\n      listener: listeners.pointerDown\n    }, {\n      type: pEventTypes.move,\n      listener: listeners.pointerMove\n    }, {\n      type: pEventTypes.up,\n      listener: listeners.pointerUp\n    }, {\n      type: pEventTypes.cancel,\n      listener: listeners.pointerUp\n    }];\n  } else {\n    docEvents = [{\n      type: 'mousedown',\n      listener: listeners.pointerDown\n    }, {\n      type: 'mousemove',\n      listener: listeners.pointerMove\n    }, {\n      type: 'mouseup',\n      listener: listeners.pointerUp\n    }, {\n      type: 'touchstart',\n      listener: releasePointersOnRemovedEls\n    }, {\n      type: 'touchstart',\n      listener: listeners.pointerDown\n    }, {\n      type: 'touchmove',\n      listener: listeners.pointerMove\n    }, {\n      type: 'touchend',\n      listener: listeners.pointerUp\n    }, {\n      type: 'touchcancel',\n      listener: listeners.pointerUp\n    }];\n  }\n\n  docEvents.push({\n    type: 'blur',\n\n    listener(event) {\n      for (const interaction of scope.interactions.list) {\n        interaction.documentBlur(event);\n      }\n    }\n\n  }); // for ignoring browser's simulated mouse events\n\n  scope.prevTouchTime = 0;\n  scope.Interaction = class extends InteractionBase {\n    get pointerMoveTolerance() {\n      return scope.interactions.pointerMoveTolerance;\n    }\n\n    set pointerMoveTolerance(value) {\n      scope.interactions.pointerMoveTolerance = value;\n    }\n\n    _now() {\n      return scope.now();\n    }\n\n  };\n  scope.interactions = {\n    // all active and idle interactions\n    list: [],\n\n    new(options) {\n      options.scopeFire = (name, arg) => scope.fire(name, arg);\n\n      const interaction = new scope.Interaction(options);\n      scope.interactions.list.push(interaction);\n      return interaction;\n    },\n\n    listeners,\n    docEvents,\n    pointerMoveTolerance: 1\n  };\n\n  function releasePointersOnRemovedEls() {\n    // for all inactive touch interactions with pointers down\n    for (const interaction of scope.interactions.list) {\n      if (!interaction.pointerIsDown || interaction.pointerType !== 'touch' || interaction._interacting) {\n        continue;\n      } // if a pointer is down on an element that is no longer in the DOM tree\n\n\n      for (const pointer of interaction.pointers) {\n        if (!scope.documents.some(({\n          doc\n        }) => nodeContains(doc, pointer.downTarget))) {\n          // remove the pointer from the interaction\n          interaction.removePointer(pointer.pointer, pointer.event);\n        }\n      }\n    }\n  }\n\n  scope.usePlugin(interactablePreventDefault);\n}\n\nfunction doOnInteractions(method, scope) {\n  return function (event) {\n    const interactions = scope.interactions.list;\n    const pointerType = pointerUtils.getPointerType(event);\n    const [eventTarget, curEventTarget] = pointerUtils.getEventTargets(event);\n    const matches = []; // [ [pointer, interaction], ...]\n\n    if (/^touch/.test(event.type)) {\n      scope.prevTouchTime = scope.now(); // @ts-expect-error\n\n      for (const changedTouch of event.changedTouches) {\n        const pointer = changedTouch;\n        const pointerId = pointerUtils.getPointerId(pointer);\n        const searchDetails = {\n          pointer,\n          pointerId,\n          pointerType,\n          eventType: event.type,\n          eventTarget,\n          curEventTarget,\n          scope\n        };\n        const interaction = getInteraction(searchDetails);\n        matches.push([searchDetails.pointer, searchDetails.eventTarget, searchDetails.curEventTarget, interaction]);\n      }\n    } else {\n      let invalidPointer = false;\n\n      if (!browser.supportsPointerEvent && /mouse/.test(event.type)) {\n        // ignore mouse events while touch interactions are active\n        for (let i = 0; i < interactions.length && !invalidPointer; i++) {\n          invalidPointer = interactions[i].pointerType !== 'mouse' && interactions[i].pointerIsDown;\n        } // try to ignore mouse events that are simulated by the browser\n        // after a touch event\n\n\n        invalidPointer = invalidPointer || scope.now() - scope.prevTouchTime < 500 || // on iOS and Firefox Mobile, MouseEvent.timeStamp is zero if simulated\n        event.timeStamp === 0;\n      }\n\n      if (!invalidPointer) {\n        const searchDetails = {\n          pointer: event,\n          pointerId: pointerUtils.getPointerId(event),\n          pointerType,\n          eventType: event.type,\n          curEventTarget,\n          eventTarget,\n          scope\n        };\n        const interaction = getInteraction(searchDetails);\n        matches.push([searchDetails.pointer, searchDetails.eventTarget, searchDetails.curEventTarget, interaction]);\n      }\n    } // eslint-disable-next-line no-shadow\n\n\n    for (const [pointer, eventTarget, curEventTarget, interaction] of matches) {\n      interaction[method](pointer, event, eventTarget, curEventTarget);\n    }\n  };\n}\n\nfunction getInteraction(searchDetails) {\n  const {\n    pointerType,\n    scope\n  } = searchDetails;\n  const foundInteraction = finder.search(searchDetails);\n  const signalArg = {\n    interaction: foundInteraction,\n    searchDetails\n  };\n  scope.fire('interactions:find', signalArg);\n  return signalArg.interaction || scope.interactions.new({\n    pointerType\n  });\n}\n\nfunction onDocSignal({\n  doc,\n  scope,\n  options\n}, eventMethodName) {\n  const {\n    interactions: {\n      docEvents\n    },\n    events\n  } = scope;\n  const eventMethod = events[eventMethodName];\n\n  if (scope.browser.isIOS && !options.events) {\n    options.events = {\n      passive: false\n    };\n  } // delegate event listener\n\n\n  for (const eventType in events.delegatedEvents) {\n    eventMethod(doc, eventType, events.delegateListener);\n    eventMethod(doc, eventType, events.delegateUseCapture, true);\n  }\n\n  const eventOptions = options && options.events;\n\n  for (const {\n    type,\n    listener\n  } of docEvents) {\n    eventMethod(doc, type, listener, eventOptions);\n  }\n}\n\nconst interactions = {\n  id: 'core/interactions',\n  install,\n  listeners: {\n    'scope:add-document': arg => onDocSignal(arg, 'add'),\n    'scope:remove-document': arg => onDocSignal(arg, 'remove'),\n    'interactable:unset': ({\n      interactable\n    }, scope) => {\n      // Stop and destroy related interactions when an Interactable is unset\n      for (let i = scope.interactions.list.length - 1; i >= 0; i--) {\n        const interaction = scope.interactions.list[i];\n\n        if (interaction.interactable !== interactable) {\n          continue;\n        }\n\n        interaction.stop();\n        scope.fire('interactions:destroy', {\n          interaction\n        });\n        interaction.destroy();\n\n        if (scope.interactions.list.length > 2) {\n          scope.interactions.list.splice(i, 1);\n        }\n      }\n    }\n  },\n  onDocSignal,\n  doOnInteractions,\n  methodNames\n};\nexport default interactions;\n//# sourceMappingURL=interactions.js.map","import browser from \"../utils/browser.js\";\nimport clone from \"../utils/clone.js\";\nimport domObjects from \"../utils/domObjects.js\";\nimport extend from \"../utils/extend.js\";\nimport raf from \"../utils/raf.js\";\nimport * as win from \"../utils/window.js\";\nimport { Eventable } from \"./Eventable.js\";\nimport { InteractEvent } from \"./InteractEvent.js\";\nimport { Interactable as InteractableBase } from \"./Interactable.js\";\nimport { InteractableSet } from \"./InteractableSet.js\";\nimport { defaults } from \"./defaultOptions.js\";\nimport events from \"./events.js\";\nimport { createInteractStatic } from \"./interactStatic.js\";\nimport interactions from \"./interactions.js\";\nexport class Scope {\n  // main window\n  // main document\n  // main window\n  // all documents being listened to\n  constructor() {\n    this.id = `__interact_scope_${Math.floor(Math.random() * 100)}`;\n    this.isInitialized = false;\n    this.listenerMaps = [];\n    this.browser = browser;\n    this.defaults = clone(defaults);\n    this.Eventable = Eventable;\n    this.actions = {\n      map: {},\n      phases: {\n        start: true,\n        move: true,\n        end: true\n      },\n      methodDict: {},\n      phaselessTypes: {}\n    };\n    this.interactStatic = createInteractStatic(this);\n    this.InteractEvent = InteractEvent;\n    this.Interactable = void 0;\n    this.interactables = new InteractableSet(this);\n    this._win = void 0;\n    this.document = void 0;\n    this.window = void 0;\n    this.documents = [];\n    this._plugins = {\n      list: [],\n      map: {}\n    };\n\n    this.onWindowUnload = event => this.removeDocument(event.target);\n\n    const scope = this;\n    this.Interactable = class extends InteractableBase {\n      get _defaults() {\n        return scope.defaults;\n      }\n\n      set(options) {\n        super.set(options);\n        scope.fire('interactable:set', {\n          options,\n          interactable: this\n        });\n        return this;\n      }\n\n      unset() {\n        super.unset();\n        scope.interactables.list.splice(scope.interactables.list.indexOf(this), 1);\n        scope.fire('interactable:unset', {\n          interactable: this\n        });\n      }\n\n    };\n  }\n\n  addListeners(map, id) {\n    this.listenerMaps.push({\n      id,\n      map\n    });\n  }\n\n  fire(name, arg) {\n    for (const {\n      map: {\n        [name]: listener\n      }\n    } of this.listenerMaps) {\n      if (!!listener && listener(arg, this, name) === false) {\n        return false;\n      }\n    }\n  }\n\n  init(window) {\n    return this.isInitialized ? this : initScope(this, window);\n  }\n\n  pluginIsInstalled(plugin) {\n    return this._plugins.map[plugin.id] || this._plugins.list.indexOf(plugin) !== -1;\n  }\n\n  usePlugin(plugin, options) {\n    if (!this.isInitialized) {\n      return this;\n    }\n\n    if (this.pluginIsInstalled(plugin)) {\n      return this;\n    }\n\n    if (plugin.id) {\n      this._plugins.map[plugin.id] = plugin;\n    }\n\n    this._plugins.list.push(plugin);\n\n    if (plugin.install) {\n      plugin.install(this, options);\n    }\n\n    if (plugin.listeners && plugin.before) {\n      let index = 0;\n      const len = this.listenerMaps.length;\n      const before = plugin.before.reduce((acc, id) => {\n        acc[id] = true;\n        acc[pluginIdRoot(id)] = true;\n        return acc;\n      }, {});\n\n      for (; index < len; index++) {\n        const otherId = this.listenerMaps[index].id;\n\n        if (before[otherId] || before[pluginIdRoot(otherId)]) {\n          break;\n        }\n      }\n\n      this.listenerMaps.splice(index, 0, {\n        id: plugin.id,\n        map: plugin.listeners\n      });\n    } else if (plugin.listeners) {\n      this.listenerMaps.push({\n        id: plugin.id,\n        map: plugin.listeners\n      });\n    }\n\n    return this;\n  }\n\n  addDocument(doc, options) {\n    // do nothing if document is already known\n    if (this.getDocIndex(doc) !== -1) {\n      return false;\n    }\n\n    const window = win.getWindow(doc);\n    options = options ? extend({}, options) : {};\n    this.documents.push({\n      doc,\n      options\n    });\n    this.events.documents.push(doc); // don't add an unload event for the main document\n    // so that the page may be cached in browser history\n\n    if (doc !== this.document) {\n      this.events.add(window, 'unload', this.onWindowUnload);\n    }\n\n    this.fire('scope:add-document', {\n      doc,\n      window,\n      scope: this,\n      options\n    });\n  }\n\n  removeDocument(doc) {\n    const index = this.getDocIndex(doc);\n    const window = win.getWindow(doc);\n    const options = this.documents[index].options;\n    this.events.remove(window, 'unload', this.onWindowUnload);\n    this.documents.splice(index, 1);\n    this.events.documents.splice(index, 1);\n    this.fire('scope:remove-document', {\n      doc,\n      window,\n      scope: this,\n      options\n    });\n  }\n\n  getDocIndex(doc) {\n    for (let i = 0; i < this.documents.length; i++) {\n      if (this.documents[i].doc === doc) {\n        return i;\n      }\n    }\n\n    return -1;\n  }\n\n  getDocOptions(doc) {\n    const docIndex = this.getDocIndex(doc);\n    return docIndex === -1 ? null : this.documents[docIndex].options;\n  }\n\n  now() {\n    return (this.window.Date || Date).now();\n  }\n\n}\nexport function initScope(scope, window) {\n  scope.isInitialized = true;\n  win.init(window);\n  domObjects.init(window);\n  browser.init(window);\n  raf.init(window);\n  scope.window = window;\n  scope.document = window.document;\n  scope.usePlugin(interactions);\n  scope.usePlugin(events);\n  return scope;\n}\n\nfunction pluginIdRoot(id) {\n  return id && id.replace(/\\/.*$/, '');\n}\n//# sourceMappingURL=scope.js.map","import { Scope } from \"../core/scope.js\";\nconst scope = new Scope();\nconst interact = scope.interactStatic;\nexport default interact;\nexport const init = win => scope.init(win);\n\nif (typeof window === 'object' && !!window) {\n  init(window);\n}\n//# sourceMappingURL=index.js.map","import { Interactable } from \"../core/Interactable.js\";\nimport is from \"../utils/is.js\";\nimport { warnOnce } from \"../utils/misc.js\";\n\nfunction install(scope) {\n  const {\n    /** @lends Interactable */\n    Interactable // tslint:disable-line no-shadowed-variable\n\n  } = scope;\n\n  Interactable.prototype.getAction = function getAction(pointer, event, interaction, element) {\n    const action = defaultActionChecker(this, event, interaction, element, scope);\n\n    if (this.options.actionChecker) {\n      return this.options.actionChecker(pointer, event, action, this, element, interaction);\n    }\n\n    return action;\n  };\n  /**\n   * If the target of the `mousedown`, `pointerdown` or `touchstart` event or any\n   * of it's parents match the given CSS selector or Element, no\n   * drag/resize/gesture is started.\n   *\n   * @deprecated\n   * Don't use this method. Instead set the `ignoreFrom` option for each action\n   * or for `pointerEvents`\n   *\n   * ```js\n   * interact(targett)\n   *   .draggable({\n   *     ignoreFrom: 'input, textarea, a[href]'',\n   *   })\n   *   .pointerEvents({\n   *     ignoreFrom: '[no-pointer]',\n   *   })\n   * ```\n   *\n   * @param {string | Element | null} [newValue] a CSS selector string, an\n   * Element or `null` to not ignore any elements\n   * @return {string | Element | object} The current ignoreFrom value or this\n   * Interactable\n   */\n\n\n  Interactable.prototype.ignoreFrom = warnOnce(function (newValue) {\n    return this._backCompatOption('ignoreFrom', newValue);\n  }, 'Interactable.ignoreFrom() has been deprecated. Use Interactble.draggable({ignoreFrom: newValue}).');\n  /**\n   *\n   * A drag/resize/gesture is started only If the target of the `mousedown`,\n   * `pointerdown` or `touchstart` event or any of it's parents match the given\n   * CSS selector or Element.\n   *\n   * @deprecated\n   * Don't use this method. Instead set the `allowFrom` option for each action\n   * or for `pointerEvents`\n   *\n   * ```js\n   * interact(targett)\n   *   .resizable({\n   *     allowFrom: '.resize-handle',\n   *   .pointerEvents({\n   *     allowFrom: '.handle',,\n   *   })\n   * ```\n   *\n   * @param {string | Element | null} [newValue] a CSS selector string, an\n   * Element or `null` to allow from any element\n   * @return {string | Element | object} The current allowFrom value or this\n   * Interactable\n   */\n\n  Interactable.prototype.allowFrom = warnOnce(function (newValue) {\n    return this._backCompatOption('allowFrom', newValue);\n  }, 'Interactable.allowFrom() has been deprecated. Use Interactble.draggable({allowFrom: newValue}).');\n  /**\n   * ```js\n   * interact('.resize-drag')\n   *   .resizable(true)\n   *   .draggable(true)\n   *   .actionChecker(function (pointer, event, action, interactable, element, interaction) {\n   *\n   *     if (interact.matchesSelector(event.target, '.drag-handle')) {\n   *       // force drag with handle target\n   *       action.name = drag\n   *     }\n   *     else {\n   *       // resize from the top and right edges\n   *       action.name  = 'resize'\n   *       action.edges = { top: true, right: true }\n   *     }\n   *\n   *     return action\n   * })\n   * ```\n   *\n   * Returns or sets the function used to check action to be performed on\n   * pointerDown\n   *\n   * @param {function | null} [checker] A function which takes a pointer event,\n   * defaultAction string, interactable, element and interaction as parameters\n   * and returns an object with name property 'drag' 'resize' or 'gesture' and\n   * optionally an `edges` object with boolean 'top', 'left', 'bottom' and right\n   * props.\n   * @return {Function | Interactable} The checker function or this Interactable\n   */\n\n  Interactable.prototype.actionChecker = actionChecker;\n  /**\n   * Returns or sets whether the the cursor should be changed depending on the\n   * action that would be performed if the mouse were pressed and dragged.\n   *\n   * @param {boolean} [newValue]\n   * @return {boolean | Interactable} The current setting or this Interactable\n   */\n\n  Interactable.prototype.styleCursor = styleCursor;\n}\n\nfunction defaultActionChecker(interactable, event, interaction, element, scope) {\n  const rect = interactable.getRect(element);\n  const buttons = event.buttons || {\n    0: 1,\n    1: 4,\n    3: 8,\n    4: 16\n  }[event.button];\n  const arg = {\n    action: null,\n    interactable,\n    interaction,\n    element,\n    rect,\n    buttons\n  };\n  scope.fire('auto-start:check', arg);\n  return arg.action;\n}\n\nfunction styleCursor(newValue) {\n  if (is.bool(newValue)) {\n    this.options.styleCursor = newValue;\n    return this;\n  }\n\n  if (newValue === null) {\n    delete this.options.styleCursor;\n    return this;\n  }\n\n  return this.options.styleCursor;\n}\n\nfunction actionChecker(checker) {\n  if (is.func(checker)) {\n    this.options.actionChecker = checker;\n    return this;\n  }\n\n  if (checker === null) {\n    delete this.options.actionChecker;\n    return this;\n  }\n\n  return this.options.actionChecker;\n}\n\nexport default {\n  id: 'auto-start/interactableMethods',\n  install\n};\n//# sourceMappingURL=InteractableMethods.js.map","import { Scope, SignalArgs } from \"../core/scope.js\";\nimport * as domUtils from \"../utils/domUtils.js\";\nimport extend from \"../utils/extend.js\";\nimport is from \"../utils/is.js\";\nimport { copyAction } from \"../utils/misc.js\";\nimport InteractableMethods from \"./InteractableMethods.js\";\n\nfunction install(scope) {\n  const {\n    interactStatic: interact,\n    defaults\n  } = scope;\n  scope.usePlugin(InteractableMethods);\n  defaults.base.actionChecker = null;\n  defaults.base.styleCursor = true;\n  extend(defaults.perAction, {\n    manualStart: false,\n    max: Infinity,\n    maxPerElement: 1,\n    allowFrom: null,\n    ignoreFrom: null,\n    // only allow left button by default\n    // see https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/buttons#Return_value\n    mouseButtons: 1\n  });\n  /**\n   * Returns or sets the maximum number of concurrent interactions allowed.  By\n   * default only 1 interaction is allowed at a time (for backwards\n   * compatibility). To allow multiple interactions on the same Interactables and\n   * elements, you need to enable it in the draggable, resizable and gesturable\n   * `'max'` and `'maxPerElement'` options.\n   *\n   * @alias module:interact.maxInteractions\n   *\n   * @param {number} [newValue] Any number. newValue <= 0 means no interactions.\n   */\n\n  interact.maxInteractions = newValue => maxInteractions(newValue, scope);\n\n  scope.autoStart = {\n    // Allow this many interactions to happen simultaneously\n    maxInteractions: Infinity,\n    withinInteractionLimit,\n    cursorElement: null\n  };\n}\n\nfunction prepareOnDown({\n  interaction,\n  pointer,\n  event,\n  eventTarget\n}, scope) {\n  if (interaction.interacting()) {\n    return;\n  }\n\n  const actionInfo = getActionInfo(interaction, pointer, event, eventTarget, scope);\n  prepare(interaction, actionInfo, scope);\n}\n\nfunction prepareOnMove({\n  interaction,\n  pointer,\n  event,\n  eventTarget\n}, scope) {\n  if (interaction.pointerType !== 'mouse' || interaction.pointerIsDown || interaction.interacting()) {\n    return;\n  }\n\n  const actionInfo = getActionInfo(interaction, pointer, event, eventTarget, scope);\n  prepare(interaction, actionInfo, scope);\n}\n\nfunction startOnMove(arg, scope) {\n  const {\n    interaction\n  } = arg;\n\n  if (!interaction.pointerIsDown || interaction.interacting() || !interaction.pointerWasMoved || !interaction.prepared.name) {\n    return;\n  }\n\n  scope.fire('autoStart:before-start', arg);\n  const {\n    interactable\n  } = interaction;\n  const actionName = interaction.prepared.name;\n\n  if (actionName && interactable) {\n    // check manualStart and interaction limit\n    if (interactable.options[actionName].manualStart || !withinInteractionLimit(interactable, interaction.element, interaction.prepared, scope)) {\n      interaction.stop();\n    } else {\n      interaction.start(interaction.prepared, interactable, interaction.element);\n      setInteractionCursor(interaction, scope);\n    }\n  }\n}\n\nfunction clearCursorOnStop({\n  interaction\n}, scope) {\n  const {\n    interactable\n  } = interaction;\n\n  if (interactable && interactable.options.styleCursor) {\n    setCursor(interaction.element, '', scope);\n  }\n} // Check if the current interactable supports the action.\n// If so, return the validated action. Otherwise, return null\n\n\nfunction validateAction(action, interactable, element, eventTarget, scope) {\n  if (interactable.testIgnoreAllow(interactable.options[action.name], element, eventTarget) && interactable.options[action.name].enabled && withinInteractionLimit(interactable, element, action, scope)) {\n    return action;\n  }\n\n  return null;\n}\n\nfunction validateMatches(interaction, pointer, event, matches, matchElements, eventTarget, scope) {\n  for (let i = 0, len = matches.length; i < len; i++) {\n    const match = matches[i];\n    const matchElement = matchElements[i];\n    const matchAction = match.getAction(pointer, event, interaction, matchElement);\n\n    if (!matchAction) {\n      continue;\n    }\n\n    const action = validateAction(matchAction, match, matchElement, eventTarget, scope);\n\n    if (action) {\n      return {\n        action,\n        interactable: match,\n        element: matchElement\n      };\n    }\n  }\n\n  return {\n    action: null,\n    interactable: null,\n    element: null\n  };\n}\n\nfunction getActionInfo(interaction, pointer, event, eventTarget, scope) {\n  let matches = [];\n  let matchElements = [];\n  let element = eventTarget;\n\n  function pushMatches(interactable) {\n    matches.push(interactable);\n    matchElements.push(element);\n  }\n\n  while (is.element(element)) {\n    matches = [];\n    matchElements = [];\n    scope.interactables.forEachMatch(element, pushMatches);\n    const actionInfo = validateMatches(interaction, pointer, event, matches, matchElements, eventTarget, scope);\n\n    if (actionInfo.action && !actionInfo.interactable.options[actionInfo.action.name].manualStart) {\n      return actionInfo;\n    }\n\n    element = domUtils.parentNode(element);\n  }\n\n  return {\n    action: null,\n    interactable: null,\n    element: null\n  };\n}\n\nfunction prepare(interaction, {\n  action,\n  interactable,\n  element\n}, scope) {\n  action = action || {\n    name: null\n  };\n  interaction.interactable = interactable;\n  interaction.element = element;\n  copyAction(interaction.prepared, action);\n  interaction.rect = interactable && action.name ? interactable.getRect(element) : null;\n  setInteractionCursor(interaction, scope);\n  scope.fire('autoStart:prepared', {\n    interaction\n  });\n}\n\nfunction withinInteractionLimit(interactable, element, action, scope) {\n  const options = interactable.options;\n  const maxActions = options[action.name].max;\n  const maxPerElement = options[action.name].maxPerElement;\n  const autoStartMax = scope.autoStart.maxInteractions;\n  let activeInteractions = 0;\n  let interactableCount = 0;\n  let elementCount = 0; // no actions if any of these values == 0\n\n  if (!(maxActions && maxPerElement && autoStartMax)) {\n    return false;\n  }\n\n  for (const interaction of scope.interactions.list) {\n    const otherAction = interaction.prepared.name;\n\n    if (!interaction.interacting()) {\n      continue;\n    }\n\n    activeInteractions++;\n\n    if (activeInteractions >= autoStartMax) {\n      return false;\n    }\n\n    if (interaction.interactable !== interactable) {\n      continue;\n    }\n\n    interactableCount += otherAction === action.name ? 1 : 0;\n\n    if (interactableCount >= maxActions) {\n      return false;\n    }\n\n    if (interaction.element === element) {\n      elementCount++;\n\n      if (otherAction === action.name && elementCount >= maxPerElement) {\n        return false;\n      }\n    }\n  }\n\n  return autoStartMax > 0;\n}\n\nfunction maxInteractions(newValue, scope) {\n  if (is.number(newValue)) {\n    scope.autoStart.maxInteractions = newValue;\n    return this;\n  }\n\n  return scope.autoStart.maxInteractions;\n}\n\nfunction setCursor(element, cursor, scope) {\n  const {\n    cursorElement: prevCursorElement\n  } = scope.autoStart;\n\n  if (prevCursorElement && prevCursorElement !== element) {\n    prevCursorElement.style.cursor = '';\n  }\n\n  element.ownerDocument.documentElement.style.cursor = cursor;\n  element.style.cursor = cursor;\n  scope.autoStart.cursorElement = cursor ? element : null;\n}\n\nfunction setInteractionCursor(interaction, scope) {\n  const {\n    interactable,\n    element,\n    prepared\n  } = interaction;\n\n  if (!(interaction.pointerType === 'mouse' && interactable && interactable.options.styleCursor)) {\n    // clear previous target element cursor\n    if (scope.autoStart.cursorElement) {\n      setCursor(scope.autoStart.cursorElement, '', scope);\n    }\n\n    return;\n  }\n\n  let cursor = '';\n\n  if (prepared.name) {\n    const cursorChecker = interactable.options[prepared.name].cursorChecker;\n\n    if (is.func(cursorChecker)) {\n      cursor = cursorChecker(prepared, interactable, element, interaction._interacting);\n    } else {\n      cursor = scope.actions.map[prepared.name].getCursor(prepared);\n    }\n  }\n\n  setCursor(interaction.element, cursor || '', scope);\n}\n\nconst autoStart = {\n  id: 'auto-start/base',\n  before: ['actions'],\n  install,\n  listeners: {\n    'interactions:down': prepareOnDown,\n    'interactions:move': (arg, scope) => {\n      prepareOnMove(arg, scope);\n      startOnMove(arg, scope);\n    },\n    'interactions:stop': clearCursorOnStop\n  },\n  maxInteractions,\n  withinInteractionLimit,\n  validateAction\n};\nexport default autoStart;\n//# sourceMappingURL=base.js.map","import { parentNode } from \"../utils/domUtils.js\";\nimport is from \"../utils/is.js\";\nimport autoStart from \"./base.js\";\n\nfunction beforeStart({\n  interaction,\n  eventTarget,\n  dx,\n  dy\n}, scope) {\n  if (interaction.prepared.name !== 'drag') {\n    return;\n  } // check if a drag is in the correct axis\n\n\n  const absX = Math.abs(dx);\n  const absY = Math.abs(dy);\n  const targetOptions = interaction.interactable.options.drag;\n  const startAxis = targetOptions.startAxis;\n  const currentAxis = absX > absY ? 'x' : absX < absY ? 'y' : 'xy';\n  interaction.prepared.axis = targetOptions.lockAxis === 'start' ? currentAxis[0] // always lock to one axis even if currentAxis === 'xy'\n  : targetOptions.lockAxis; // if the movement isn't in the startAxis of the interactable\n\n  if (currentAxis !== 'xy' && startAxis !== 'xy' && startAxis !== currentAxis) {\n    // cancel the prepared action\n    interaction.prepared.name = null; // then try to get a drag from another ineractable\n\n    let element = eventTarget;\n\n    const getDraggable = function (interactable) {\n      if (interactable === interaction.interactable) {\n        return;\n      }\n\n      const options = interaction.interactable.options.drag;\n\n      if (!options.manualStart && interactable.testIgnoreAllow(options, element, eventTarget)) {\n        const action = interactable.getAction(interaction.downPointer, interaction.downEvent, interaction, element);\n\n        if (action && action.name === 'drag' && checkStartAxis(currentAxis, interactable) && autoStart.validateAction(action, interactable, element, eventTarget, scope)) {\n          return interactable;\n        }\n      }\n    }; // check all interactables\n\n\n    while (is.element(element)) {\n      const interactable = scope.interactables.forEachMatch(element, getDraggable);\n\n      if (interactable) {\n        interaction.prepared.name = 'drag';\n        interaction.interactable = interactable;\n        interaction.element = element;\n        break;\n      }\n\n      element = parentNode(element);\n    }\n  }\n}\n\nfunction checkStartAxis(startAxis, interactable) {\n  if (!interactable) {\n    return false;\n  }\n\n  const thisAxis = interactable.options.drag.startAxis;\n  return startAxis === 'xy' || thisAxis === 'xy' || thisAxis === startAxis;\n}\n\nexport default {\n  id: 'auto-start/dragAxis',\n  listeners: {\n    'autoStart:before-start': beforeStart\n  }\n};\n//# sourceMappingURL=dragAxis.js.map","import Interaction from \"../core/Interaction.js\";\nimport basePlugin from \"./base.js\";\n\nfunction install(scope) {\n  const {\n    defaults\n  } = scope;\n  scope.usePlugin(basePlugin);\n  defaults.perAction.hold = 0;\n  defaults.perAction.delay = 0;\n}\n\nfunction getHoldDuration(interaction) {\n  const actionName = interaction.prepared && interaction.prepared.name;\n\n  if (!actionName) {\n    return null;\n  }\n\n  const options = interaction.interactable.options;\n  return options[actionName].hold || options[actionName].delay;\n}\n\nconst hold = {\n  id: 'auto-start/hold',\n  install,\n  listeners: {\n    'interactions:new': ({\n      interaction\n    }) => {\n      interaction.autoStartHoldTimer = null;\n    },\n    'autoStart:prepared': ({\n      interaction\n    }) => {\n      const hold = getHoldDuration(interaction);\n\n      if (hold > 0) {\n        interaction.autoStartHoldTimer = setTimeout(() => {\n          interaction.start(interaction.prepared, interaction.interactable, interaction.element);\n        }, hold);\n      }\n    },\n    'interactions:move': ({\n      interaction,\n      duplicate\n    }) => {\n      if (interaction.autoStartHoldTimer && interaction.pointerWasMoved && !duplicate) {\n        clearTimeout(interaction.autoStartHoldTimer);\n        interaction.autoStartHoldTimer = null;\n      }\n    },\n    // prevent regular down->move autoStart\n    'autoStart:before-start': ({\n      interaction\n    }) => {\n      const holdDuration = getHoldDuration(interaction);\n\n      if (holdDuration > 0) {\n        interaction.prepared.name = null;\n      }\n    }\n  },\n  getHoldDuration\n};\nexport default hold;\n//# sourceMappingURL=hold.js.map","import autoStart from \"./base.js\";\nimport dragAxis from \"./dragAxis.js\";\nimport hold from \"./hold.js\";\nexport default {\n  id: 'auto-start',\n\n  install(scope) {\n    scope.usePlugin(autoStart);\n    scope.usePlugin(hold);\n    scope.usePlugin(dragAxis);\n  }\n\n};\n//# sourceMappingURL=plugin.js.map","import { Interactable } from \"../../core/Interactable.js\";\nimport is from \"../../utils/is.js\";\n\nfunction install(scope) {\n  const {\n    actions,\n    Interactable,\n    defaults\n  } = scope;\n  Interactable.prototype.draggable = drag.draggable;\n  actions.map.drag = drag;\n  actions.methodDict.drag = 'draggable';\n  defaults.actions.drag = drag.defaults;\n}\n\nfunction beforeMove({\n  interaction\n}) {\n  if (interaction.prepared.name !== 'drag') {\n    return;\n  }\n\n  const axis = interaction.prepared.axis;\n\n  if (axis === 'x') {\n    interaction.coords.cur.page.y = interaction.coords.start.page.y;\n    interaction.coords.cur.client.y = interaction.coords.start.client.y;\n    interaction.coords.velocity.client.y = 0;\n    interaction.coords.velocity.page.y = 0;\n  } else if (axis === 'y') {\n    interaction.coords.cur.page.x = interaction.coords.start.page.x;\n    interaction.coords.cur.client.x = interaction.coords.start.client.x;\n    interaction.coords.velocity.client.x = 0;\n    interaction.coords.velocity.page.x = 0;\n  }\n}\n\nfunction move({\n  iEvent,\n  interaction\n}) {\n  if (interaction.prepared.name !== 'drag') {\n    return;\n  }\n\n  const axis = interaction.prepared.axis;\n\n  if (axis === 'x' || axis === 'y') {\n    const opposite = axis === 'x' ? 'y' : 'x';\n    iEvent.page[opposite] = interaction.coords.start.page[opposite];\n    iEvent.client[opposite] = interaction.coords.start.client[opposite];\n    iEvent.delta[opposite] = 0;\n  }\n}\n/**\n * ```js\n * interact(element).draggable({\n *     onstart: function (event) {},\n *     onmove : function (event) {},\n *     onend  : function (event) {},\n *\n *     // the axis in which the first movement must be\n *     // for the drag sequence to start\n *     // 'xy' by default - any direction\n *     startAxis: 'x' || 'y' || 'xy',\n *\n *     // 'xy' by default - don't restrict to one axis (move in any direction)\n *     // 'x' or 'y' to restrict movement to either axis\n *     // 'start' to restrict movement to the axis the drag started in\n *     lockAxis: 'x' || 'y' || 'xy' || 'start',\n *\n *     // max number of drags that can happen concurrently\n *     // with elements of this Interactable. Infinity by default\n *     max: Infinity,\n *\n *     // max number of drags that can target the same element+Interactable\n *     // 1 by default\n *     maxPerElement: 2\n * })\n *\n * var isDraggable = interact('element').draggable(); // true\n * ```\n *\n * Get or set whether drag actions can be performed on the target\n *\n * @alias Interactable.prototype.draggable\n *\n * @param {boolean | object} [options] true/false or An object with event\n * listeners to be fired on drag events (object makes the Interactable\n * draggable)\n * @return {boolean | Interactable} boolean indicating if this can be the\n * target of drag events, or this Interctable\n */\n\n\nconst draggable = function draggable(options) {\n  if (is.object(options)) {\n    this.options.drag.enabled = options.enabled !== false;\n    this.setPerAction('drag', options);\n    this.setOnEvents('drag', options);\n\n    if (/^(xy|x|y|start)$/.test(options.lockAxis)) {\n      this.options.drag.lockAxis = options.lockAxis;\n    }\n\n    if (/^(xy|x|y)$/.test(options.startAxis)) {\n      this.options.drag.startAxis = options.startAxis;\n    }\n\n    return this;\n  }\n\n  if (is.bool(options)) {\n    this.options.drag.enabled = options;\n    return this;\n  }\n\n  return this.options.drag;\n};\n\nconst drag = {\n  id: 'actions/drag',\n  install,\n  listeners: {\n    'interactions:before-action-move': beforeMove,\n    'interactions:action-resume': beforeMove,\n    // dragmove\n    'interactions:action-move': move,\n    'auto-start:check': arg => {\n      const {\n        interaction,\n        interactable,\n        buttons\n      } = arg;\n      const dragOptions = interactable.options.drag;\n\n      if (!(dragOptions && dragOptions.enabled) || // check mouseButton setting if the pointer is down\n      interaction.pointerIsDown && /mouse|pointer/.test(interaction.pointerType) && (buttons & interactable.options.drag.mouseButtons) === 0) {\n        return undefined;\n      }\n\n      arg.action = {\n        name: 'drag',\n        axis: dragOptions.lockAxis === 'start' ? dragOptions.startAxis : dragOptions.lockAxis\n      };\n      return false;\n    }\n  },\n  draggable,\n  beforeMove,\n  move,\n  defaults: {\n    startAxis: 'xy',\n    lockAxis: 'xy'\n  },\n\n  getCursor() {\n    return 'move';\n  }\n\n};\nexport default drag;\n//# sourceMappingURL=plugin.js.map","/* eslint-disable import/order, no-console, eol-last */\nimport interact, { init } from \"../interact/index.js\";\nimport plugin from \"./plugin.js\";\n\nif (typeof window === 'object' && !!window) {\n  init(window);\n}\n\ninteract.use(plugin);\n//# sourceMappingURL=index.js.map","import { Interactable } from \"../../core/Interactable.js\";\nimport { Interaction } from \"../../core/Interaction.js\";\nimport * as dom from \"../../utils/domUtils.js\";\nimport extend from \"../../utils/extend.js\";\nimport is from \"../../utils/is.js\";\n\nfunction install(scope) {\n  const {\n    actions,\n    browser,\n\n    /** @lends Interactable */\n    Interactable,\n    // tslint:disable-line no-shadowed-variable\n    defaults\n  } = scope; // Less Precision with touch input\n\n  resize.cursors = initCursors(browser);\n  resize.defaultMargin = browser.supportsTouch || browser.supportsPointerEvent ? 20 : 10;\n  /**\n   * ```js\n   * interact(element).resizable({\n   *   onstart: function (event) {},\n   *   onmove : function (event) {},\n   *   onend  : function (event) {},\n   *\n   *   edges: {\n   *     top   : true,       // Use pointer coords to check for resize.\n   *     left  : false,      // Disable resizing from left edge.\n   *     bottom: '.resize-s',// Resize if pointer target matches selector\n   *     right : handleEl    // Resize if pointer target is the given Element\n   *   },\n   *\n   *     // Width and height can be adjusted independently. When `true`, width and\n   *     // height are adjusted at a 1:1 ratio.\n   *     square: false,\n   *\n   *     // Width and height can be adjusted independently. When `true`, width and\n   *     // height maintain the aspect ratio they had when resizing started.\n   *     preserveAspectRatio: false,\n   *\n   *   // a value of 'none' will limit the resize rect to a minimum of 0x0\n   *   // 'negate' will allow the rect to have negative width/height\n   *   // 'reposition' will keep the width/height positive by swapping\n   *   // the top and bottom edges and/or swapping the left and right edges\n   *   invert: 'none' || 'negate' || 'reposition'\n   *\n   *   // limit multiple resizes.\n   *   // See the explanation in the {@link Interactable.draggable} example\n   *   max: Infinity,\n   *   maxPerElement: 1,\n   * })\n   *\n   * var isResizeable = interact(element).resizable()\n   * ```\n   *\n   * Gets or sets whether resize actions can be performed on the target\n   *\n   * @param {boolean | object} [options] true/false or An object with event\n   * listeners to be fired on resize events (object makes the Interactable\n   * resizable)\n   * @return {boolean | Interactable} A boolean indicating if this can be the\n   * target of resize elements, or this Interactable\n   */\n\n  Interactable.prototype.resizable = function (options) {\n    return resizable(this, options, scope);\n  };\n\n  actions.map.resize = resize;\n  actions.methodDict.resize = 'resizable';\n  defaults.actions.resize = resize.defaults;\n}\n\nfunction resizeChecker(arg) {\n  const {\n    interaction,\n    interactable,\n    element,\n    rect,\n    buttons\n  } = arg;\n\n  if (!rect) {\n    return undefined;\n  }\n\n  const page = extend({}, interaction.coords.cur.page);\n  const resizeOptions = interactable.options.resize;\n\n  if (!(resizeOptions && resizeOptions.enabled) || // check mouseButton setting if the pointer is down\n  interaction.pointerIsDown && /mouse|pointer/.test(interaction.pointerType) && (buttons & resizeOptions.mouseButtons) === 0) {\n    return undefined;\n  } // if using resize.edges\n\n\n  if (is.object(resizeOptions.edges)) {\n    const resizeEdges = {\n      left: false,\n      right: false,\n      top: false,\n      bottom: false\n    };\n\n    for (const edge in resizeEdges) {\n      resizeEdges[edge] = checkResizeEdge(edge, resizeOptions.edges[edge], page, interaction._latestPointer.eventTarget, element, rect, resizeOptions.margin || resize.defaultMargin);\n    }\n\n    resizeEdges.left = resizeEdges.left && !resizeEdges.right;\n    resizeEdges.top = resizeEdges.top && !resizeEdges.bottom;\n\n    if (resizeEdges.left || resizeEdges.right || resizeEdges.top || resizeEdges.bottom) {\n      arg.action = {\n        name: 'resize',\n        edges: resizeEdges\n      };\n    }\n  } else {\n    const right = resizeOptions.axis !== 'y' && page.x > rect.right - resize.defaultMargin;\n    const bottom = resizeOptions.axis !== 'x' && page.y > rect.bottom - resize.defaultMargin;\n\n    if (right || bottom) {\n      arg.action = {\n        name: 'resize',\n        axes: (right ? 'x' : '') + (bottom ? 'y' : '')\n      };\n    }\n  }\n\n  return arg.action ? false : undefined;\n}\n\nfunction resizable(interactable, options, scope) {\n  if (is.object(options)) {\n    interactable.options.resize.enabled = options.enabled !== false;\n    interactable.setPerAction('resize', options);\n    interactable.setOnEvents('resize', options);\n\n    if (is.string(options.axis) && /^x$|^y$|^xy$/.test(options.axis)) {\n      interactable.options.resize.axis = options.axis;\n    } else if (options.axis === null) {\n      interactable.options.resize.axis = scope.defaults.actions.resize.axis;\n    }\n\n    if (is.bool(options.preserveAspectRatio)) {\n      interactable.options.resize.preserveAspectRatio = options.preserveAspectRatio;\n    } else if (is.bool(options.square)) {\n      interactable.options.resize.square = options.square;\n    }\n\n    return interactable;\n  }\n\n  if (is.bool(options)) {\n    interactable.options.resize.enabled = options;\n    return interactable;\n  }\n\n  return interactable.options.resize;\n}\n\nfunction checkResizeEdge(name, value, page, element, interactableElement, rect, margin) {\n  // false, '', undefined, null\n  if (!value) {\n    return false;\n  } // true value, use pointer coords and element rect\n\n\n  if (value === true) {\n    // if dimensions are negative, \"switch\" edges\n    const width = is.number(rect.width) ? rect.width : rect.right - rect.left;\n    const height = is.number(rect.height) ? rect.height : rect.bottom - rect.top; // don't use margin greater than half the relevent dimension\n\n    margin = Math.min(margin, Math.abs((name === 'left' || name === 'right' ? width : height) / 2));\n\n    if (width < 0) {\n      if (name === 'left') {\n        name = 'right';\n      } else if (name === 'right') {\n        name = 'left';\n      }\n    }\n\n    if (height < 0) {\n      if (name === 'top') {\n        name = 'bottom';\n      } else if (name === 'bottom') {\n        name = 'top';\n      }\n    }\n\n    if (name === 'left') {\n      return page.x < (width >= 0 ? rect.left : rect.right) + margin;\n    }\n\n    if (name === 'top') {\n      return page.y < (height >= 0 ? rect.top : rect.bottom) + margin;\n    }\n\n    if (name === 'right') {\n      return page.x > (width >= 0 ? rect.right : rect.left) - margin;\n    }\n\n    if (name === 'bottom') {\n      return page.y > (height >= 0 ? rect.bottom : rect.top) - margin;\n    }\n  } // the remaining checks require an element\n\n\n  if (!is.element(element)) {\n    return false;\n  }\n\n  return is.element(value) // the value is an element to use as a resize handle\n  ? value === element // otherwise check if element matches value as selector\n  : dom.matchesUpTo(element, value, interactableElement);\n}\n/* eslint-disable multiline-ternary */\n\n\nfunction initCursors(browser) {\n  return browser.isIe9 ? {\n    x: 'e-resize',\n    y: 's-resize',\n    xy: 'se-resize',\n    top: 'n-resize',\n    left: 'w-resize',\n    bottom: 's-resize',\n    right: 'e-resize',\n    topleft: 'se-resize',\n    bottomright: 'se-resize',\n    topright: 'ne-resize',\n    bottomleft: 'ne-resize'\n  } : {\n    x: 'ew-resize',\n    y: 'ns-resize',\n    xy: 'nwse-resize',\n    top: 'ns-resize',\n    left: 'ew-resize',\n    bottom: 'ns-resize',\n    right: 'ew-resize',\n    topleft: 'nwse-resize',\n    bottomright: 'nwse-resize',\n    topright: 'nesw-resize',\n    bottomleft: 'nesw-resize'\n  };\n}\n/* eslint-enable multiline-ternary */\n\n\nfunction start({\n  iEvent,\n  interaction\n}) {\n  if (interaction.prepared.name !== 'resize' || !interaction.prepared.edges) {\n    return;\n  }\n\n  const resizeEvent = iEvent;\n  const rect = interaction.rect;\n  interaction._rects = {\n    start: extend({}, rect),\n    corrected: extend({}, rect),\n    previous: extend({}, rect),\n    delta: {\n      left: 0,\n      right: 0,\n      width: 0,\n      top: 0,\n      bottom: 0,\n      height: 0\n    }\n  };\n  resizeEvent.edges = interaction.prepared.edges;\n  resizeEvent.rect = interaction._rects.corrected;\n  resizeEvent.deltaRect = interaction._rects.delta;\n}\n\nfunction move({\n  iEvent,\n  interaction\n}) {\n  if (interaction.prepared.name !== 'resize' || !interaction.prepared.edges) {\n    return;\n  }\n\n  const resizeEvent = iEvent;\n  const resizeOptions = interaction.interactable.options.resize;\n  const invert = resizeOptions.invert;\n  const invertible = invert === 'reposition' || invert === 'negate';\n  const current = interaction.rect;\n  const {\n    start: startRect,\n    corrected,\n    delta: deltaRect,\n    previous\n  } = interaction._rects;\n  extend(previous, corrected);\n\n  if (invertible) {\n    // if invertible, copy the current rect\n    extend(corrected, current);\n\n    if (invert === 'reposition') {\n      // swap edge values if necessary to keep width/height positive\n      if (corrected.top > corrected.bottom) {\n        const swap = corrected.top;\n        corrected.top = corrected.bottom;\n        corrected.bottom = swap;\n      }\n\n      if (corrected.left > corrected.right) {\n        const swap = corrected.left;\n        corrected.left = corrected.right;\n        corrected.right = swap;\n      }\n    }\n  } else {\n    // if not invertible, restrict to minimum of 0x0 rect\n    corrected.top = Math.min(current.top, startRect.bottom);\n    corrected.bottom = Math.max(current.bottom, startRect.top);\n    corrected.left = Math.min(current.left, startRect.right);\n    corrected.right = Math.max(current.right, startRect.left);\n  }\n\n  corrected.width = corrected.right - corrected.left;\n  corrected.height = corrected.bottom - corrected.top;\n\n  for (const edge in corrected) {\n    deltaRect[edge] = corrected[edge] - previous[edge];\n  }\n\n  resizeEvent.edges = interaction.prepared.edges;\n  resizeEvent.rect = corrected;\n  resizeEvent.deltaRect = deltaRect;\n}\n\nfunction end({\n  iEvent,\n  interaction\n}) {\n  if (interaction.prepared.name !== 'resize' || !interaction.prepared.edges) {\n    return;\n  }\n\n  const resizeEvent = iEvent;\n  resizeEvent.edges = interaction.prepared.edges;\n  resizeEvent.rect = interaction._rects.corrected;\n  resizeEvent.deltaRect = interaction._rects.delta;\n}\n\nfunction updateEventAxes({\n  iEvent,\n  interaction\n}) {\n  if (interaction.prepared.name !== 'resize' || !interaction.resizeAxes) {\n    return;\n  }\n\n  const options = interaction.interactable.options;\n  const resizeEvent = iEvent;\n\n  if (options.resize.square) {\n    if (interaction.resizeAxes === 'y') {\n      resizeEvent.delta.x = resizeEvent.delta.y;\n    } else {\n      resizeEvent.delta.y = resizeEvent.delta.x;\n    }\n\n    resizeEvent.axes = 'xy';\n  } else {\n    resizeEvent.axes = interaction.resizeAxes;\n\n    if (interaction.resizeAxes === 'x') {\n      resizeEvent.delta.y = 0;\n    } else if (interaction.resizeAxes === 'y') {\n      resizeEvent.delta.x = 0;\n    }\n  }\n}\n\nconst resize = {\n  id: 'actions/resize',\n  before: ['actions/drag'],\n  install,\n  listeners: {\n    'interactions:new': ({\n      interaction\n    }) => {\n      interaction.resizeAxes = 'xy';\n    },\n    'interactions:action-start': arg => {\n      start(arg);\n      updateEventAxes(arg);\n    },\n    'interactions:action-move': arg => {\n      move(arg);\n      updateEventAxes(arg);\n    },\n    'interactions:action-end': end,\n    'auto-start:check': resizeChecker\n  },\n  defaults: {\n    square: false,\n    preserveAspectRatio: false,\n    axis: 'xy',\n    // use default margin\n    margin: NaN,\n    // object with props left, right, top, bottom which are\n    // true/false values to resize when the pointer is over that edge,\n    // CSS selectors to match the handles for each direction\n    // or the Elements for each handle\n    edges: null,\n    // a value of 'none' will limit the resize rect to a minimum of 0x0\n    // 'negate' will alow the rect to have negative width/height\n    // 'reposition' will keep the width/height positive by swapping\n    // the top and bottom edges and/or swapping the left and right edges\n    invert: 'none'\n  },\n  cursors: null,\n\n  getCursor({\n    edges,\n    axis,\n    name\n  }) {\n    const cursors = resize.cursors;\n    let result = null;\n\n    if (axis) {\n      result = cursors[name + axis];\n    } else if (edges) {\n      let cursorKey = '';\n\n      for (const edge of ['top', 'bottom', 'left', 'right']) {\n        if (edges[edge]) {\n          cursorKey += edge;\n        }\n      }\n\n      result = cursors[cursorKey];\n    }\n\n    return result;\n  },\n\n  defaultMargin: null\n};\nexport default resize;\n//# sourceMappingURL=plugin.js.map","/* eslint-disable import/order, no-console, eol-last */\nimport interact, { init } from \"../../interact/index.js\";\nimport plugin from \"./plugin.js\";\n\nif (typeof window === 'object' && !!window) {\n  init(window);\n}\n\ninteract.use(plugin);\n//# sourceMappingURL=index.js.map","/* eslint-disable import/order, no-console, eol-last */\nimport interact, { init } from \"../../interact/index.js\";\nimport plugin from \"./plugin.js\";\n\nif (typeof window === 'object' && !!window) {\n  init(window);\n}\n\ninteract.use(plugin);\n//# sourceMappingURL=index.js.map","export default (() => {});\n//# sourceMappingURL=edgeTarget.js.map","export default (() => {});\n//# sourceMappingURL=elements.js.map","export default (grid => {\n  const coordFields = [['x', 'y'], ['left', 'top'], ['right', 'bottom'], ['width', 'height']].filter(([xField, yField]) => xField in grid || yField in grid);\n\n  const gridFunc = (x, y) => {\n    const {\n      range,\n      limits = {\n        left: -Infinity,\n        right: Infinity,\n        top: -Infinity,\n        bottom: Infinity\n      },\n      offset = {\n        x: 0,\n        y: 0\n      }\n    } = grid;\n    const result = {\n      range,\n      grid,\n      x: null,\n      y: null\n    };\n\n    for (const [xField, yField] of coordFields) {\n      const gridx = Math.round((x - offset.x) / grid[xField]);\n      const gridy = Math.round((y - offset.y) / grid[yField]);\n      result[xField] = Math.max(limits.left, Math.min(limits.right, gridx * grid[xField] + offset.x));\n      result[yField] = Math.max(limits.top, Math.min(limits.bottom, gridy * grid[yField] + offset.y));\n    }\n\n    return result;\n  };\n\n  gridFunc.grid = grid;\n  gridFunc.coordFields = coordFields;\n  return gridFunc;\n});\n//# sourceMappingURL=grid.js.map","import extend from \"../utils/extend.js\";\nimport * as allSnappers from \"./all.js\";\nconst snappersPlugin = {\n  id: 'snappers',\n\n  install(scope) {\n    const {\n      interactStatic: interact\n    } = scope;\n    interact.snappers = extend(interact.snappers || {}, allSnappers);\n    interact.createSnapGrid = interact.snappers.grid;\n  }\n\n};\nexport default snappersPlugin;\n//# sourceMappingURL=plugin.js.map","import clone from \"../utils/clone.js\";\nimport extend from \"../utils/extend.js\";\nimport * as rectUtils from \"../utils/rect.js\";\nexport default class Modification {\n  constructor(interaction) {\n    this.states = [];\n    this.startOffset = {\n      left: 0,\n      right: 0,\n      top: 0,\n      bottom: 0\n    };\n    this.startDelta = null;\n    this.result = null;\n    this.endResult = null;\n    this.edges = void 0;\n    this.interaction = void 0;\n    this.interaction = interaction;\n    this.result = createResult();\n  }\n\n  start({\n    phase\n  }, pageCoords) {\n    const {\n      interaction\n    } = this;\n    const modifierList = getModifierList(interaction);\n    this.prepareStates(modifierList);\n    this.edges = extend({}, interaction.edges);\n    this.startOffset = getRectOffset(interaction.rect, pageCoords);\n    this.startDelta = {\n      x: 0,\n      y: 0\n    };\n    const arg = {\n      phase,\n      pageCoords,\n      preEnd: false\n    };\n    this.result = createResult();\n    this.startAll(arg);\n    const result = this.result = this.setAll(arg);\n    return result;\n  }\n\n  fillArg(arg) {\n    const {\n      interaction\n    } = this;\n    arg.interaction = interaction;\n    arg.interactable = interaction.interactable;\n    arg.element = interaction.element;\n    arg.rect = arg.rect || interaction.rect;\n    arg.edges = this.edges;\n    arg.startOffset = this.startOffset;\n  }\n\n  startAll(arg) {\n    this.fillArg(arg);\n\n    for (const state of this.states) {\n      if (state.methods.start) {\n        arg.state = state;\n        state.methods.start(arg);\n      }\n    }\n  }\n\n  setAll(arg) {\n    this.fillArg(arg);\n    const {\n      phase,\n      preEnd,\n      skipModifiers,\n      rect: unmodifiedRect\n    } = arg;\n    arg.coords = extend({}, arg.pageCoords);\n    arg.rect = extend({}, unmodifiedRect);\n    const states = skipModifiers ? this.states.slice(skipModifiers) : this.states;\n    const newResult = createResult(arg.coords, arg.rect);\n\n    for (const state of states) {\n      const {\n        options\n      } = state;\n      const lastModifierCoords = extend({}, arg.coords);\n      let returnValue = null;\n\n      if (state.methods.set && this.shouldDo(options, preEnd, phase)) {\n        arg.state = state;\n        returnValue = state.methods.set(arg);\n        rectUtils.addEdges(this.interaction.edges, arg.rect, {\n          x: arg.coords.x - lastModifierCoords.x,\n          y: arg.coords.y - lastModifierCoords.y\n        });\n      }\n\n      newResult.eventProps.push(returnValue);\n    }\n\n    newResult.delta.x = arg.coords.x - arg.pageCoords.x;\n    newResult.delta.y = arg.coords.y - arg.pageCoords.y;\n    newResult.rectDelta.left = arg.rect.left - unmodifiedRect.left;\n    newResult.rectDelta.right = arg.rect.right - unmodifiedRect.right;\n    newResult.rectDelta.top = arg.rect.top - unmodifiedRect.top;\n    newResult.rectDelta.bottom = arg.rect.bottom - unmodifiedRect.bottom;\n    const prevCoords = this.result.coords;\n    const prevRect = this.result.rect;\n\n    if (prevCoords && prevRect) {\n      const rectChanged = newResult.rect.left !== prevRect.left || newResult.rect.right !== prevRect.right || newResult.rect.top !== prevRect.top || newResult.rect.bottom !== prevRect.bottom;\n      newResult.changed = rectChanged || prevCoords.x !== newResult.coords.x || prevCoords.y !== newResult.coords.y;\n    }\n\n    return newResult;\n  }\n\n  applyToInteraction(arg) {\n    const {\n      interaction\n    } = this;\n    const {\n      phase\n    } = arg;\n    const curCoords = interaction.coords.cur;\n    const startCoords = interaction.coords.start;\n    const {\n      result,\n      startDelta\n    } = this;\n    const curDelta = result.delta;\n\n    if (phase === 'start') {\n      extend(this.startDelta, result.delta);\n    }\n\n    for (const [coordsSet, delta] of [[startCoords, startDelta], [curCoords, curDelta]]) {\n      coordsSet.page.x += delta.x;\n      coordsSet.page.y += delta.y;\n      coordsSet.client.x += delta.x;\n      coordsSet.client.y += delta.y;\n    }\n\n    const {\n      rectDelta\n    } = this.result;\n    const rect = arg.rect || interaction.rect;\n    rect.left += rectDelta.left;\n    rect.right += rectDelta.right;\n    rect.top += rectDelta.top;\n    rect.bottom += rectDelta.bottom;\n    rect.width = rect.right - rect.left;\n    rect.height = rect.bottom - rect.top;\n  }\n\n  setAndApply(arg) {\n    const {\n      interaction\n    } = this;\n    const {\n      phase,\n      preEnd,\n      skipModifiers\n    } = arg;\n    const result = this.setAll({\n      preEnd,\n      phase,\n      pageCoords: arg.modifiedCoords || interaction.coords.cur.page\n    });\n    this.result = result; // don't fire an action move if a modifier would keep the event in the same\n    // cordinates as before\n\n    if (!result.changed && (!skipModifiers || skipModifiers < this.states.length) && interaction.interacting()) {\n      return false;\n    }\n\n    if (arg.modifiedCoords) {\n      const {\n        page\n      } = interaction.coords.cur;\n      const adjustment = {\n        x: arg.modifiedCoords.x - page.x,\n        y: arg.modifiedCoords.y - page.y\n      };\n      result.coords.x += adjustment.x;\n      result.coords.y += adjustment.y;\n      result.delta.x += adjustment.x;\n      result.delta.y += adjustment.y;\n    }\n\n    this.applyToInteraction(arg);\n  }\n\n  beforeEnd(arg) {\n    const {\n      interaction,\n      event\n    } = arg;\n    const states = this.states;\n\n    if (!states || !states.length) {\n      return;\n    }\n\n    let doPreend = false;\n\n    for (const state of states) {\n      arg.state = state;\n      const {\n        options,\n        methods\n      } = state;\n      const endPosition = methods.beforeEnd && methods.beforeEnd(arg);\n\n      if (endPosition) {\n        this.endResult = endPosition;\n        return false;\n      }\n\n      doPreend = doPreend || !doPreend && this.shouldDo(options, true, arg.phase, true);\n    }\n\n    if (doPreend) {\n      // trigger a final modified move before ending\n      interaction.move({\n        event,\n        preEnd: true\n      });\n    }\n  }\n\n  stop(arg) {\n    const {\n      interaction\n    } = arg;\n\n    if (!this.states || !this.states.length) {\n      return;\n    }\n\n    const modifierArg = extend({\n      states: this.states,\n      interactable: interaction.interactable,\n      element: interaction.element,\n      rect: null\n    }, arg);\n    this.fillArg(modifierArg);\n\n    for (const state of this.states) {\n      modifierArg.state = state;\n\n      if (state.methods.stop) {\n        state.methods.stop(modifierArg);\n      }\n    }\n\n    this.states = null;\n    this.endResult = null;\n  }\n\n  prepareStates(modifierList) {\n    this.states = [];\n\n    for (let index = 0; index < modifierList.length; index++) {\n      const {\n        options,\n        methods,\n        name\n      } = modifierList[index];\n      this.states.push({\n        options,\n        methods,\n        index,\n        name\n      });\n    }\n\n    return this.states;\n  }\n\n  restoreInteractionCoords({\n    interaction: {\n      coords,\n      rect,\n      modification\n    }\n  }) {\n    if (!modification.result) {\n      return;\n    }\n\n    const {\n      startDelta\n    } = modification;\n    const {\n      delta: curDelta,\n      rectDelta\n    } = modification.result;\n    const coordsAndDeltas = [[coords.start, startDelta], [coords.cur, curDelta]];\n\n    for (const [coordsSet, delta] of coordsAndDeltas) {\n      coordsSet.page.x -= delta.x;\n      coordsSet.page.y -= delta.y;\n      coordsSet.client.x -= delta.x;\n      coordsSet.client.y -= delta.y;\n    }\n\n    rect.left -= rectDelta.left;\n    rect.right -= rectDelta.right;\n    rect.top -= rectDelta.top;\n    rect.bottom -= rectDelta.bottom;\n  }\n\n  shouldDo(options, preEnd, phase, requireEndOnly) {\n    if ( // ignore disabled modifiers\n    !options || options.enabled === false || // check if we require endOnly option to fire move before end\n    requireEndOnly && !options.endOnly || // don't apply endOnly modifiers when not ending\n    options.endOnly && !preEnd || // check if modifier should run be applied on start\n    phase === 'start' && !options.setStart) {\n      return false;\n    }\n\n    return true;\n  }\n\n  copyFrom(other) {\n    this.startOffset = other.startOffset;\n    this.startDelta = other.startDelta;\n    this.edges = other.edges;\n    this.states = other.states.map(s => clone(s));\n    this.result = createResult(extend({}, other.result.coords), extend({}, other.result.rect));\n  }\n\n  destroy() {\n    for (const prop in this) {\n      this[prop] = null;\n    }\n  }\n\n}\n\nfunction createResult(coords, rect) {\n  return {\n    rect,\n    coords,\n    delta: {\n      x: 0,\n      y: 0\n    },\n    rectDelta: {\n      left: 0,\n      right: 0,\n      top: 0,\n      bottom: 0\n    },\n    eventProps: [],\n    changed: true\n  };\n}\n\nfunction getModifierList(interaction) {\n  const actionOptions = interaction.interactable.options[interaction.prepared.name];\n  const actionModifiers = actionOptions.modifiers;\n\n  if (actionModifiers && actionModifiers.length) {\n    return actionModifiers;\n  }\n\n  return ['snap', 'snapSize', 'snapEdges', 'restrict', 'restrictEdges', 'restrictSize'].map(type => {\n    const options = actionOptions[type];\n    return options && options.enabled && {\n      options,\n      methods: options._methods\n    };\n  }).filter(m => !!m);\n}\n\nexport function getRectOffset(rect, coords) {\n  return rect ? {\n    left: coords.x - rect.left,\n    top: coords.y - rect.top,\n    right: rect.right - coords.x,\n    bottom: rect.bottom - coords.y\n  } : {\n    left: 0,\n    top: 0,\n    right: 0,\n    bottom: 0\n  };\n}\n//# sourceMappingURL=Modification.js.map","import { InteractEvent } from \"../core/InteractEvent.js\";\nimport Interaction from \"../core/Interaction.js\";\nimport Modification from \"./Modification.js\";\nexport function makeModifier(module, name) {\n  const {\n    defaults\n  } = module;\n  const methods = {\n    start: module.start,\n    set: module.set,\n    beforeEnd: module.beforeEnd,\n    stop: module.stop\n  };\n\n  const modifier = _options => {\n    const options = _options || {};\n    options.enabled = options.enabled !== false; // add missing defaults to options\n\n    for (const prop in defaults) {\n      if (!(prop in options)) {\n        options[prop] = defaults[prop];\n      }\n    }\n\n    const m = {\n      options,\n      methods,\n      name,\n      enable: () => {\n        options.enabled = true;\n        return m;\n      },\n      disable: () => {\n        options.enabled = false;\n        return m;\n      }\n    };\n    return m;\n  };\n\n  if (name && typeof name === 'string') {\n    // for backwrads compatibility\n    modifier._defaults = defaults;\n    modifier._methods = methods;\n  }\n\n  return modifier;\n}\nexport function addEventModifiers({\n  iEvent,\n  interaction: {\n    modification: {\n      result\n    }\n  }\n}) {\n  if (result) {\n    iEvent.modifiers = result.eventProps;\n  }\n}\nconst modifiersBase = {\n  id: 'modifiers/base',\n  before: ['actions'],\n  install: scope => {\n    scope.defaults.perAction.modifiers = [];\n  },\n  listeners: {\n    'interactions:new': ({\n      interaction\n    }) => {\n      interaction.modification = new Modification(interaction);\n    },\n    'interactions:before-action-start': arg => {\n      const {\n        modification\n      } = arg.interaction;\n      modification.start(arg, arg.interaction.coords.start.page);\n      arg.interaction.edges = modification.edges;\n      modification.applyToInteraction(arg);\n    },\n    'interactions:before-action-move': arg => arg.interaction.modification.setAndApply(arg),\n    'interactions:before-action-end': arg => arg.interaction.modification.beforeEnd(arg),\n    'interactions:action-start': addEventModifiers,\n    'interactions:action-move': addEventModifiers,\n    'interactions:action-end': addEventModifiers,\n    'interactions:after-action-start': arg => arg.interaction.modification.restoreInteractionCoords(arg),\n    'interactions:after-action-move': arg => arg.interaction.modification.restoreInteractionCoords(arg),\n    'interactions:stop': arg => arg.interaction.modification.stop(arg)\n  }\n};\nexport default modifiersBase;\n//# sourceMappingURL=base.js.map","/**\n * @module modifiers/aspectRatio\n *\n * @description\n * This module forces elements to be resized with a specified dx/dy ratio.\n *\n * ```js\n * interact(target).resizable({\n *   modifiers: [\n *     interact.modifiers.snapSize({\n *       targets: [ interact.snappers.grid({ x: 20, y: 20 }) ],\n *     }),\n *     interact.aspectRatio({ ratio: 'preserve' }),\n *   ],\n * });\n * ```\n */\nimport extend from \"../utils/extend.js\";\nimport { addEdges } from \"../utils/rect.js\";\nimport Modification from \"./Modification.js\";\nimport { makeModifier } from \"./base.js\";\nconst aspectRatio = {\n  start(arg) {\n    const {\n      state,\n      rect,\n      edges: originalEdges,\n      pageCoords: coords\n    } = arg;\n    let {\n      ratio\n    } = state.options;\n    const {\n      equalDelta,\n      modifiers\n    } = state.options;\n\n    if (ratio === 'preserve') {\n      ratio = rect.width / rect.height;\n    }\n\n    state.startCoords = extend({}, coords);\n    state.startRect = extend({}, rect);\n    state.ratio = ratio;\n    state.equalDelta = equalDelta;\n    const linkedEdges = state.linkedEdges = {\n      top: originalEdges.top || originalEdges.left && !originalEdges.bottom,\n      left: originalEdges.left || originalEdges.top && !originalEdges.right,\n      bottom: originalEdges.bottom || originalEdges.right && !originalEdges.top,\n      right: originalEdges.right || originalEdges.bottom && !originalEdges.left\n    };\n    state.xIsPrimaryAxis = !!(originalEdges.left || originalEdges.right);\n\n    if (state.equalDelta) {\n      state.edgeSign = (linkedEdges.left ? 1 : -1) * (linkedEdges.top ? 1 : -1);\n    } else {\n      const negativeSecondaryEdge = state.xIsPrimaryAxis ? linkedEdges.top : linkedEdges.left;\n      state.edgeSign = negativeSecondaryEdge ? -1 : 1;\n    }\n\n    extend(arg.edges, linkedEdges);\n\n    if (!modifiers || !modifiers.length) {\n      return;\n    }\n\n    const subModification = new Modification(arg.interaction);\n    subModification.copyFrom(arg.interaction.modification);\n    subModification.prepareStates(modifiers);\n    state.subModification = subModification;\n    subModification.startAll({ ...arg\n    });\n  },\n\n  set(arg) {\n    const {\n      state,\n      rect,\n      coords\n    } = arg;\n    const initialCoords = extend({}, coords);\n    const aspectMethod = state.equalDelta ? setEqualDelta : setRatio;\n    aspectMethod(state, state.xIsPrimaryAxis, coords, rect);\n\n    if (!state.subModification) {\n      return null;\n    }\n\n    const correctedRect = extend({}, rect);\n    addEdges(state.linkedEdges, correctedRect, {\n      x: coords.x - initialCoords.x,\n      y: coords.y - initialCoords.y\n    });\n    const result = state.subModification.setAll({ ...arg,\n      rect: correctedRect,\n      edges: state.linkedEdges,\n      pageCoords: coords,\n      prevCoords: coords,\n      prevRect: correctedRect\n    });\n    const {\n      delta\n    } = result;\n\n    if (result.changed) {\n      const xIsCriticalAxis = Math.abs(delta.x) > Math.abs(delta.y); // do aspect modification again with critical edge axis as primary\n\n      aspectMethod(state, xIsCriticalAxis, result.coords, result.rect);\n      extend(coords, result.coords);\n    }\n\n    return result.eventProps;\n  },\n\n  defaults: {\n    ratio: 'preserve',\n    equalDelta: false,\n    modifiers: [],\n    enabled: false\n  }\n};\n\nfunction setEqualDelta({\n  startCoords,\n  edgeSign\n}, xIsPrimaryAxis, coords) {\n  if (xIsPrimaryAxis) {\n    coords.y = startCoords.y + (coords.x - startCoords.x) * edgeSign;\n  } else {\n    coords.x = startCoords.x + (coords.y - startCoords.y) * edgeSign;\n  }\n}\n\nfunction setRatio({\n  startRect,\n  startCoords,\n  ratio,\n  edgeSign\n}, xIsPrimaryAxis, coords, rect) {\n  if (xIsPrimaryAxis) {\n    const newHeight = rect.width / ratio;\n    coords.y = startCoords.y + (newHeight - startRect.height) * edgeSign;\n  } else {\n    const newWidth = rect.height * ratio;\n    coords.x = startCoords.x + (newWidth - startRect.width) * edgeSign;\n  }\n}\n\nexport default makeModifier(aspectRatio, 'aspectRatio');\nexport { aspectRatio };\n//# sourceMappingURL=aspectRatio.js.map","const noop = () => {};\n\nnoop._defaults = {};\nexport default noop;\n//# sourceMappingURL=noop.js.map","import extend from \"../../utils/extend.js\";\nimport is from \"../../utils/is.js\";\nimport * as rectUtils from \"../../utils/rect.js\";\nimport { makeModifier } from \"../base.js\";\n\nfunction start({\n  rect,\n  startOffset,\n  state,\n  interaction,\n  pageCoords\n}) {\n  const {\n    options\n  } = state;\n  const {\n    elementRect\n  } = options;\n  const offset = extend({\n    left: 0,\n    top: 0,\n    right: 0,\n    bottom: 0\n  }, options.offset || {});\n\n  if (rect && elementRect) {\n    const restriction = getRestrictionRect(options.restriction, interaction, pageCoords);\n\n    if (restriction) {\n      const widthDiff = restriction.right - restriction.left - rect.width;\n      const heightDiff = restriction.bottom - restriction.top - rect.height;\n\n      if (widthDiff < 0) {\n        offset.left += widthDiff;\n        offset.right += widthDiff;\n      }\n\n      if (heightDiff < 0) {\n        offset.top += heightDiff;\n        offset.bottom += heightDiff;\n      }\n    }\n\n    offset.left += startOffset.left - rect.width * elementRect.left;\n    offset.top += startOffset.top - rect.height * elementRect.top;\n    offset.right += startOffset.right - rect.width * (1 - elementRect.right);\n    offset.bottom += startOffset.bottom - rect.height * (1 - elementRect.bottom);\n  }\n\n  state.offset = offset;\n}\n\nfunction set({\n  coords,\n  interaction,\n  state\n}) {\n  const {\n    options,\n    offset\n  } = state;\n  const restriction = getRestrictionRect(options.restriction, interaction, coords);\n\n  if (!restriction) {\n    return;\n  }\n\n  const rect = rectUtils.xywhToTlbr(restriction);\n  coords.x = Math.max(Math.min(rect.right - offset.right, coords.x), rect.left + offset.left);\n  coords.y = Math.max(Math.min(rect.bottom - offset.bottom, coords.y), rect.top + offset.top);\n}\n\nexport function getRestrictionRect(value, interaction, coords) {\n  if (is.func(value)) {\n    return rectUtils.resolveRectLike(value, interaction.interactable, interaction.element, [coords.x, coords.y, interaction]);\n  } else {\n    return rectUtils.resolveRectLike(value, interaction.interactable, interaction.element);\n  }\n}\nconst defaults = {\n  restriction: null,\n  elementRect: null,\n  offset: null,\n  endOnly: false,\n  enabled: false\n};\nconst restrict = {\n  start,\n  set,\n  defaults\n};\nexport default makeModifier(restrict, 'restrict');\nexport { restrict };\n//# sourceMappingURL=pointer.js.map","// This module adds the options.resize.restrictEdges setting which sets min and\n// max for the top, left, bottom and right edges of the target being resized.\n//\n// interact(target).resize({\n//   edges: { top: true, left: true },\n//   restrictEdges: {\n//     inner: { top: 200, left: 200, right: 400, bottom: 400 },\n//     outer: { top:   0, left:   0, right: 600, bottom: 600 },\n//   },\n// })\nimport extend from \"../../utils/extend.js\";\nimport * as rectUtils from \"../../utils/rect.js\";\nimport { makeModifier } from \"../base.js\";\nimport { getRestrictionRect } from \"./pointer.js\";\nconst noInner = {\n  top: +Infinity,\n  left: +Infinity,\n  bottom: -Infinity,\n  right: -Infinity\n};\nconst noOuter = {\n  top: -Infinity,\n  left: -Infinity,\n  bottom: +Infinity,\n  right: +Infinity\n};\n\nfunction start({\n  interaction,\n  startOffset,\n  state\n}) {\n  const {\n    options\n  } = state;\n  let offset;\n\n  if (options) {\n    const offsetRect = getRestrictionRect(options.offset, interaction, interaction.coords.start.page);\n    offset = rectUtils.rectToXY(offsetRect);\n  }\n\n  offset = offset || {\n    x: 0,\n    y: 0\n  };\n  state.offset = {\n    top: offset.y + startOffset.top,\n    left: offset.x + startOffset.left,\n    bottom: offset.y - startOffset.bottom,\n    right: offset.x - startOffset.right\n  };\n}\n\nfunction set({\n  coords,\n  edges,\n  interaction,\n  state\n}) {\n  const {\n    offset,\n    options\n  } = state;\n\n  if (!edges) {\n    return;\n  }\n\n  const page = extend({}, coords);\n  const inner = getRestrictionRect(options.inner, interaction, page) || {};\n  const outer = getRestrictionRect(options.outer, interaction, page) || {};\n  fixRect(inner, noInner);\n  fixRect(outer, noOuter);\n\n  if (edges.top) {\n    coords.y = Math.min(Math.max(outer.top + offset.top, page.y), inner.top + offset.top);\n  } else if (edges.bottom) {\n    coords.y = Math.max(Math.min(outer.bottom + offset.bottom, page.y), inner.bottom + offset.bottom);\n  }\n\n  if (edges.left) {\n    coords.x = Math.min(Math.max(outer.left + offset.left, page.x), inner.left + offset.left);\n  } else if (edges.right) {\n    coords.x = Math.max(Math.min(outer.right + offset.right, page.x), inner.right + offset.right);\n  }\n}\n\nfunction fixRect(rect, defaults) {\n  for (const edge of ['top', 'left', 'bottom', 'right']) {\n    if (!(edge in rect)) {\n      rect[edge] = defaults[edge];\n    }\n  }\n\n  return rect;\n}\n\nconst defaults = {\n  inner: null,\n  outer: null,\n  offset: null,\n  endOnly: false,\n  enabled: false\n};\nconst restrictEdges = {\n  noInner,\n  noOuter,\n  start,\n  set,\n  defaults\n};\nexport default makeModifier(restrictEdges, 'restrictEdges');\nexport { restrictEdges };\n//# sourceMappingURL=edges.js.map","import extend from \"../../utils/extend.js\";\nimport { makeModifier } from \"../base.js\";\nimport { restrict } from \"./pointer.js\";\nconst defaults = extend({\n  get elementRect() {\n    return {\n      top: 0,\n      left: 0,\n      bottom: 1,\n      right: 1\n    };\n  },\n\n  set elementRect(_) {}\n\n}, restrict.defaults);\nconst restrictRect = {\n  start: restrict.start,\n  set: restrict.set,\n  defaults\n};\nexport default makeModifier(restrictRect, 'restrictRect');\nexport { restrictRect };\n//# sourceMappingURL=rect.js.map","import extend from \"../../utils/extend.js\";\nimport * as rectUtils from \"../../utils/rect.js\";\nimport { makeModifier } from \"../base.js\";\nimport { restrictEdges } from \"./edges.js\";\nimport { getRestrictionRect } from \"./pointer.js\";\nconst noMin = {\n  width: -Infinity,\n  height: -Infinity\n};\nconst noMax = {\n  width: +Infinity,\n  height: +Infinity\n};\n\nfunction start(arg) {\n  return restrictEdges.start(arg);\n}\n\nfunction set(arg) {\n  const {\n    interaction,\n    state,\n    rect,\n    edges\n  } = arg;\n  const {\n    options\n  } = state;\n\n  if (!edges) {\n    return;\n  }\n\n  const minSize = rectUtils.tlbrToXywh(getRestrictionRect(options.min, interaction, arg.coords)) || noMin;\n  const maxSize = rectUtils.tlbrToXywh(getRestrictionRect(options.max, interaction, arg.coords)) || noMax;\n  state.options = {\n    endOnly: options.endOnly,\n    inner: extend({}, restrictEdges.noInner),\n    outer: extend({}, restrictEdges.noOuter)\n  };\n\n  if (edges.top) {\n    state.options.inner.top = rect.bottom - minSize.height;\n    state.options.outer.top = rect.bottom - maxSize.height;\n  } else if (edges.bottom) {\n    state.options.inner.bottom = rect.top + minSize.height;\n    state.options.outer.bottom = rect.top + maxSize.height;\n  }\n\n  if (edges.left) {\n    state.options.inner.left = rect.right - minSize.width;\n    state.options.outer.left = rect.right - maxSize.width;\n  } else if (edges.right) {\n    state.options.inner.right = rect.left + minSize.width;\n    state.options.outer.right = rect.left + maxSize.width;\n  }\n\n  restrictEdges.set(arg);\n  state.options = options;\n}\n\nconst defaults = {\n  min: null,\n  max: null,\n  endOnly: false,\n  enabled: false\n};\nconst restrictSize = {\n  start,\n  set,\n  defaults\n};\nexport default makeModifier(restrictSize, 'restrictSize');\nexport { restrictSize };\n//# sourceMappingURL=size.js.map","import extend from \"../../utils/extend.js\";\nimport getOriginXY from \"../../utils/getOriginXY.js\";\nimport hypot from \"../../utils/hypot.js\";\nimport is from \"../../utils/is.js\";\nimport { resolveRectLike, rectToXY } from \"../../utils/rect.js\";\nimport { makeModifier } from \"../base.js\";\n\nfunction start(arg) {\n  const {\n    interaction,\n    interactable,\n    element,\n    rect,\n    state,\n    startOffset\n  } = arg;\n  const {\n    options\n  } = state;\n  const origin = options.offsetWithOrigin ? getOrigin(arg) : {\n    x: 0,\n    y: 0\n  };\n  let snapOffset;\n\n  if (options.offset === 'startCoords') {\n    snapOffset = {\n      x: interaction.coords.start.page.x,\n      y: interaction.coords.start.page.y\n    };\n  } else {\n    const offsetRect = resolveRectLike(options.offset, interactable, element, [interaction]);\n    snapOffset = rectToXY(offsetRect) || {\n      x: 0,\n      y: 0\n    };\n    snapOffset.x += origin.x;\n    snapOffset.y += origin.y;\n  }\n\n  const {\n    relativePoints\n  } = options;\n  state.offsets = rect && relativePoints && relativePoints.length ? relativePoints.map((relativePoint, index) => ({\n    index,\n    relativePoint,\n    x: startOffset.left - rect.width * relativePoint.x + snapOffset.x,\n    y: startOffset.top - rect.height * relativePoint.y + snapOffset.y\n  })) : [extend({\n    index: 0,\n    relativePoint: null\n  }, snapOffset)];\n}\n\nfunction set(arg) {\n  const {\n    interaction,\n    coords,\n    state\n  } = arg;\n  const {\n    options,\n    offsets\n  } = state;\n  const origin = getOriginXY(interaction.interactable, interaction.element, interaction.prepared.name);\n  const page = extend({}, coords);\n  const targets = [];\n\n  if (!options.offsetWithOrigin) {\n    page.x -= origin.x;\n    page.y -= origin.y;\n  }\n\n  for (const offset of offsets) {\n    const relativeX = page.x - offset.x;\n    const relativeY = page.y - offset.y;\n\n    for (let index = 0, len = options.targets.length; index < len; index++) {\n      const snapTarget = options.targets[index];\n      let target;\n\n      if (is.func(snapTarget)) {\n        target = snapTarget(relativeX, relativeY, interaction._proxy, offset, index);\n      } else {\n        target = snapTarget;\n      }\n\n      if (!target) {\n        continue;\n      }\n\n      targets.push({\n        x: (is.number(target.x) ? target.x : relativeX) + offset.x,\n        y: (is.number(target.y) ? target.y : relativeY) + offset.y,\n        range: is.number(target.range) ? target.range : options.range,\n        source: snapTarget,\n        index,\n        offset\n      });\n    }\n  }\n\n  const closest = {\n    target: null,\n    inRange: false,\n    distance: 0,\n    range: 0,\n    delta: {\n      x: 0,\n      y: 0\n    }\n  };\n\n  for (const target of targets) {\n    const range = target.range;\n    const dx = target.x - page.x;\n    const dy = target.y - page.y;\n    const distance = hypot(dx, dy);\n    let inRange = distance <= range; // Infinite targets count as being out of range\n    // compared to non infinite ones that are in range\n\n    if (range === Infinity && closest.inRange && closest.range !== Infinity) {\n      inRange = false;\n    }\n\n    if (!closest.target || (inRange // is the closest target in range?\n    ? closest.inRange && range !== Infinity // the pointer is relatively deeper in this target\n    ? distance / range < closest.distance / closest.range // this target has Infinite range and the closest doesn't\n    : range === Infinity && closest.range !== Infinity || // OR this target is closer that the previous closest\n    distance < closest.distance : // The other is not in range and the pointer is closer to this target\n    !closest.inRange && distance < closest.distance)) {\n      closest.target = target;\n      closest.distance = distance;\n      closest.range = range;\n      closest.inRange = inRange;\n      closest.delta.x = dx;\n      closest.delta.y = dy;\n    }\n  }\n\n  if (closest.inRange) {\n    coords.x = closest.target.x;\n    coords.y = closest.target.y;\n  }\n\n  state.closest = closest;\n  return closest;\n}\n\nfunction getOrigin(arg) {\n  const {\n    element\n  } = arg.interaction;\n  const optionsOrigin = rectToXY(resolveRectLike(arg.state.options.origin, null, null, [element]));\n  const origin = optionsOrigin || getOriginXY(arg.interactable, element, arg.interaction.prepared.name);\n  return origin;\n}\n\nconst defaults = {\n  range: Infinity,\n  targets: null,\n  offset: null,\n  offsetWithOrigin: true,\n  origin: null,\n  relativePoints: null,\n  endOnly: false,\n  enabled: false\n};\nconst snap = {\n  start,\n  set,\n  defaults\n};\nexport default makeModifier(snap, 'snap');\nexport { snap };\n//# sourceMappingURL=pointer.js.map","// This module allows snapping of the size of targets during resize\n// interactions.\nimport extend from \"../../utils/extend.js\";\nimport is from \"../../utils/is.js\";\nimport { makeModifier } from \"../base.js\";\nimport { snap } from \"./pointer.js\";\n\nfunction start(arg) {\n  const {\n    state,\n    edges\n  } = arg;\n  const {\n    options\n  } = state;\n\n  if (!edges) {\n    return null;\n  }\n\n  arg.state = {\n    options: {\n      targets: null,\n      relativePoints: [{\n        x: edges.left ? 0 : 1,\n        y: edges.top ? 0 : 1\n      }],\n      offset: options.offset || 'self',\n      origin: {\n        x: 0,\n        y: 0\n      },\n      range: options.range\n    }\n  };\n  state.targetFields = state.targetFields || [['width', 'height'], ['x', 'y']];\n  snap.start(arg);\n  state.offsets = arg.state.offsets;\n  arg.state = state;\n}\n\nfunction set(arg) {\n  const {\n    interaction,\n    state,\n    coords\n  } = arg;\n  const {\n    options,\n    offsets\n  } = state;\n  const relative = {\n    x: coords.x - offsets[0].x,\n    y: coords.y - offsets[0].y\n  };\n  state.options = extend({}, options);\n  state.options.targets = [];\n\n  for (const snapTarget of options.targets || []) {\n    let target;\n\n    if (is.func(snapTarget)) {\n      target = snapTarget(relative.x, relative.y, interaction);\n    } else {\n      target = snapTarget;\n    }\n\n    if (!target) {\n      continue;\n    }\n\n    for (const [xField, yField] of state.targetFields) {\n      if (xField in target || yField in target) {\n        target.x = target[xField];\n        target.y = target[yField];\n        break;\n      }\n    }\n\n    state.options.targets.push(target);\n  }\n\n  const returnValue = snap.set(arg);\n  state.options = options;\n  return returnValue;\n}\n\nconst defaults = {\n  range: Infinity,\n  targets: null,\n  offset: null,\n  endOnly: false,\n  enabled: false\n};\nconst snapSize = {\n  start,\n  set,\n  defaults\n};\nexport default makeModifier(snapSize, 'snapSize');\nexport { snapSize };\n//# sourceMappingURL=size.js.map","/**\n * @module modifiers/snapEdges\n *\n * @description\n * WOW> This module allows snapping of the edges of targets during resize\n * interactions.\n *\n * ```js\n * interact(target).resizable({\n *   snapEdges: {\n *     targets: [interact.snappers.grid({ x: 100, y: 50 })],\n *   },\n * })\n *\n * interact(target).resizable({\n *   snapEdges: {\n *     targets: [\n *       interact.snappers.grid({\n *        top: 50,\n *        left: 50,\n *        bottom: 100,\n *        right: 100,\n *       }),\n *     ],\n *   },\n * })\n * ```\n */\nimport clone from \"../../utils/clone.js\";\nimport extend from \"../../utils/extend.js\";\nimport { makeModifier } from \"../base.js\";\nimport { snapSize } from \"./size.js\";\n\nfunction start(arg) {\n  const {\n    edges\n  } = arg;\n\n  if (!edges) {\n    return null;\n  }\n\n  arg.state.targetFields = arg.state.targetFields || [[edges.left ? 'left' : 'right', edges.top ? 'top' : 'bottom']];\n  return snapSize.start(arg);\n}\n\nconst snapEdges = {\n  start,\n  set: snapSize.set,\n  defaults: extend(clone(snapSize.defaults), {\n    targets: null,\n    range: null,\n    offset: {\n      x: 0,\n      y: 0\n    }\n  })\n};\nexport default makeModifier(snapEdges, 'snapEdges');\nexport { snapEdges };\n//# sourceMappingURL=edges.js.map","/* eslint-disable node/no-extraneous-import */\nimport aspectRatio from \"./aspectRatio.js\";\nimport avoid from \"./avoid.js\";\nimport restrictEdges from \"./restrict/edges.js\";\nimport restrict from \"./restrict/pointer.js\";\nimport restrictRect from \"./restrict/rect.js\";\nimport restrictSize from \"./restrict/size.js\";\nimport rubberband from \"./rubberband.js\";\nimport snapEdges from \"./snap/edges.js\";\nimport snap from \"./snap/pointer.js\";\nimport snapSize from \"./snap/size.js\";\nimport spring from \"./spring.js\";\nimport transform from \"./transform.js\";\nexport default {\n  aspectRatio,\n  restrictEdges,\n  restrict,\n  restrictRect,\n  restrictSize,\n  snapEdges,\n  snap,\n  snapSize,\n  spring,\n  avoid,\n  transform,\n  rubberband\n};\n//# sourceMappingURL=all.js.map","import snappers from \"../snappers/plugin.js\";\nimport all from \"./all.js\";\nimport base from \"./base.js\";\nconst modifiers = {\n  id: 'modifiers',\n\n  install(scope) {\n    const {\n      interactStatic: interact\n    } = scope;\n    scope.usePlugin(base);\n    scope.usePlugin(snappers);\n    interact.modifiers = all; // for backwrads compatibility\n\n    for (const type in all) {\n      const {\n        _defaults,\n        _methods\n      } = all[type];\n      _defaults._methods = _methods;\n      scope.defaults.perAction[type] = _defaults;\n    }\n  }\n\n};\nexport default modifiers;\n//# sourceMappingURL=plugin.js.map","/* eslint-disable no-console */\nimport { Scope } from \"../core/scope.js\";\nimport domObjects from \"../utils/domObjects.js\";\nimport { parentNode } from \"../utils/domUtils.js\";\nimport extend from \"../utils/extend.js\";\nimport is from \"../utils/is.js\";\nimport * as win from \"../utils/window.js\";\nvar CheckName;\n\n(function (CheckName) {\n  CheckName[\"touchAction\"] = \"touchAction\";\n  CheckName[\"boxSizing\"] = \"boxSizing\";\n  CheckName[\"noListeners\"] = \"noListeners\";\n})(CheckName || (CheckName = {}));\n\nconst prefix = '[interact.js] ';\nconst links = {\n  touchAction: 'https://developer.mozilla.org/en-US/docs/Web/CSS/touch-action',\n  boxSizing: 'https://developer.mozilla.org/en-US/docs/Web/CSS/box-sizing'\n}; // eslint-disable-next-line no-undef\n\nconst isProduction = \"development\" === 'production'; // eslint-disable-next-line no-restricted-syntax\n\nfunction install(scope, {\n  logger\n} = {}) {\n  const {\n    Interactable,\n    defaults\n  } = scope;\n  scope.logger = logger || console;\n  defaults.base.devTools = {\n    ignore: {}\n  };\n\n  Interactable.prototype.devTools = function (options) {\n    if (options) {\n      extend(this.options.devTools, options);\n      return this;\n    }\n\n    return this.options.devTools;\n  };\n}\n\nconst checks = [{\n  name: CheckName.touchAction,\n\n  perform({\n    element\n  }) {\n    return !parentHasStyle(element, 'touchAction', /pan-|pinch|none/);\n  },\n\n  getInfo({\n    element\n  }) {\n    return [element, links.touchAction];\n  },\n\n  text: 'Consider adding CSS \"touch-action: none\" to this element\\n'\n}, {\n  name: CheckName.boxSizing,\n\n  perform(interaction) {\n    const {\n      element\n    } = interaction;\n    return interaction.prepared.name === 'resize' && element instanceof domObjects.HTMLElement && !hasStyle(element, 'boxSizing', /border-box/);\n  },\n\n  text: 'Consider adding CSS \"box-sizing: border-box\" to this resizable element',\n\n  getInfo({\n    element\n  }) {\n    return [element, links.boxSizing];\n  }\n\n}, {\n  name: CheckName.noListeners,\n\n  perform(interaction) {\n    const actionName = interaction.prepared.name;\n    const moveListeners = interaction.interactable.events.types[`${actionName}move`] || [];\n    return !moveListeners.length;\n  },\n\n  getInfo(interaction) {\n    return [interaction.prepared.name, interaction.interactable];\n  },\n\n  text: 'There are no listeners set for this action'\n}];\n\nfunction hasStyle(element, prop, styleRe) {\n  const value = element.style[prop] || win.window.getComputedStyle(element)[prop];\n  return styleRe.test((value || '').toString());\n}\n\nfunction parentHasStyle(element, prop, styleRe) {\n  let parent = element;\n\n  while (is.element(parent)) {\n    if (hasStyle(parent, prop, styleRe)) {\n      return true;\n    }\n\n    parent = parentNode(parent);\n  }\n\n  return false;\n}\n\nconst id = 'dev-tools';\nconst defaultExport = isProduction ? {\n  id,\n  install: () => {}\n} : {\n  id,\n  install,\n  listeners: {\n    'interactions:action-start': ({\n      interaction\n    }, scope) => {\n      for (const check of checks) {\n        const options = interaction.interactable && interaction.interactable.options;\n\n        if (!(options && options.devTools && options.devTools.ignore[check.name]) && check.perform(interaction)) {\n          scope.logger.warn(prefix + check.text, ...check.getInfo(interaction));\n        }\n      }\n    }\n  },\n  checks,\n  CheckName,\n  links,\n  prefix\n};\nexport default defaultExport;\n//# sourceMappingURL=plugin.js.map","/* eslint-disable import/order, no-console, eol-last */\nimport interact, { init } from \"../interact/index.js\";\nimport plugin from \"./plugin.js\";\n\nif (typeof window === 'object' && !!window) {\n  init(window);\n}\n\ninteract.use(plugin);\n//# sourceMappingURL=index.js.map","/* eslint-disable import/order, no-console, eol-last */\nimport interact, { init } from \"../interact/index.js\";\nimport plugin from \"./plugin.js\";\n\nif (typeof window === 'object' && !!window) {\n  init(window);\n}\n\ninteract.use(plugin);\n//# sourceMappingURL=index.js.map","import { render } from \"./GridItem.vue?vue&type=template&id=46ff2fc8\"\nimport script from \"./GridItem.vue?vue&type=script&lang=js\"\nexport * from \"./GridItem.vue?vue&type=script&lang=js\"\n\nimport \"./GridItem.vue?vue&type=style&index=0&id=46ff2fc8&lang=css\"\n\nimport exportComponent from \"/Users/bytedance/Documents/codes/github/vue-grid-layout/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n    <div ref=\"item\" class=\"vue-grid-layout\" :style=\"mergedStyle\">\n        <slot></slot>\n        <grid-item class=\"vue-grid-placeholder\"\n                   v-show=\"isDragging\"\n                   :x=\"placeholder.x\"\n                   :y=\"placeholder.y\"\n                   :w=\"placeholder.w\"\n                   :h=\"placeholder.h\"\n                   :i=\"placeholder.i\"></grid-item>\n    </div>\n</template>\n<style>\n    .vue-grid-layout {\n        position: relative;\n        transition: height 200ms ease;\n    }\n</style>\n<script>\n    import mitt from 'mitt';\n    const elementResizeDetectorMaker = require(\"element-resize-detector\");\n\n    import {bottom, compact, getLayoutItem, moveElement, validateLayout, cloneLayout, getAllCollisions} from '@/helpers/utils';\n    import {getBreakpointFromWidth, getColsFromBreakpoint, findOrGenerateResponsiveLayout} from \"@/helpers/responsiveUtils\";\n    //var eventBus = require('./eventBus');\n\n    import GridItem from './GridItem.vue'\n    import {addWindowEventListener, removeWindowEventListener} from \"@/helpers/DOM\";\n\n    export default {\n        name: \"GridLayout\",\n        provide() {\n            return {\n                eventBus: this.eventBus,\n                layout: this\n            }\n        },\n        components: {\n            GridItem,\n        },\n        props: {\n            // If true, the container height swells and contracts to fit contents\n            autoSize: {\n                type: Boolean,\n                default: true\n            },\n            colNum: {\n                type: Number,\n                default: 12\n            },\n            rowHeight: {\n                type: Number,\n                default: 150\n            },\n            maxRows: {\n                type: Number,\n                default: Infinity\n            },\n            margin: {\n                type: Array,\n                default: function () {\n                    return [10, 10];\n                }\n            },\n            isDraggable: {\n                type: Boolean,\n                default: true\n            },\n            isResizable: {\n                type: Boolean,\n                default: true\n            },\n            isMirrored: {\n                type: Boolean,\n                default: false\n            },\n            useCssTransforms: {\n                type: Boolean,\n                default: true\n            },\n            verticalCompact: {\n                type: Boolean,\n                default: true\n            },\n            layout: {\n                type: Array,\n                required: true\n            },\n            responsive: {\n                type: Boolean,\n                default: false\n            },\n            responsiveLayouts: {\n                type: Object,\n                default: function() {\n                    return {};\n                }\n            },\n            breakpoints:{\n                type: Object,\n                default: function(){return{ lg: 1200, md: 996, sm: 768, xs: 480, xxs: 0 }}\n            },\n            cols:{\n                type: Object,\n                default: function(){return{ lg: 12, md: 10, sm: 6, xs: 4, xxs: 2 }},\n            },\n            preventCollision: {\n                type: Boolean,\n                default: false\n            },\n            useStyleCursor: {\n                type: Boolean,\n                default: true\n            }\n        },\n        data: function () {\n            return {\n                eventBus: mitt(),\n                width: null,\n                mergedStyle: {},\n                lastLayoutLength: 0,\n                isDragging: false,\n                placeholder: {\n                    x: 0,\n                    y: 0,\n                    w: 0,\n                    h: 0,\n                    i: -1\n                },\n                layouts: {}, // array to store all layouts from different breakpoints\n                lastBreakpoint: null, // store last active breakpoint\n                originalLayout: null, // store original Layout\n                // layout: JSON.parse(JSON.stringify(this.value)),\n            };\n        },\n        created () {\n            const self = this;\n\n            // Accessible refernces of functions for removing in beforeUnmount\n            self.resizeEventHandler = function({eventType, i, x, y, h, w}) {\n                self.resizeEvent(eventType, i, x, y, h, w);\n            };\n\n            self.dragEventHandler = function({eventType, i, x, y, h, w}) {\n                self.dragEvent(eventType, i, x, y, h, w);\n            };\n\n            self.eventBus.on('resizeEvent', self.resizeEventHandler);\n            self.eventBus.on('dragEvent', self.dragEventHandler);\n            self.$emit('layout-created', self.layout);\n        },\n        beforeUnmount: function(){\n            //Remove listeners\n            this.eventBus.off('resizeEvent', this.resizeEventHandler);\n            this.eventBus.off('dragEvent', this.dragEventHandler);\n            removeWindowEventListener(\"resize\", this.onWindowResize);\n            if (this.erd) {\n                this.erd.uninstall(this.$refs.item);\n            }\n        },\n        beforeMount: function() {\n            this.$emit('layout-before-mount', this.layout);\n        },\n        mounted: function() {\n            this.$emit('layout-mounted', this.layout);\n            this.$nextTick(function () {\n                validateLayout(this.layout);\n\n                this.originalLayout = this.layout;\n                const self = this;\n                this.$nextTick(function() {\n                    self.onWindowResize();\n\n                    self.initResponsiveFeatures();\n\n                    //self.width = self.$el.offsetWidth;\n                    addWindowEventListener('resize', self.onWindowResize);\n\n                    compact(self.layout, self.verticalCompact);\n\n                    self.$emit('layout-updated',self.layout)\n\n                    self.updateHeight();\n                    self.$nextTick(function () {\n                        this.erd = elementResizeDetectorMaker({\n                            strategy: \"scroll\", //<- For ultra performance.\n                            // See https://github.com/wnr/element-resize-detector/issues/110 about callOnAdd.\n                            callOnAdd: false,\n                        });\n                        this.erd.listenTo(self.$refs.item, function () {\n                            self.onWindowResize();\n                        });\n                    });\n                });\n            });\n        },\n        watch: {\n            width: function (newval, oldval) {\n                const self = this;\n                this.$nextTick(function () {\n                    //this.$broadcast(\"updateWidth\", this.width);\n                    this.eventBus.emit(\"updateWidth\", this.width);\n                    if (oldval === null) {\n                        /*\n                            If oldval == null is when the width has never been\n                            set before. That only occurs when mouting is\n                            finished, and onWindowResize has been called and\n                            this.width has been changed the first time after it\n                            got set to null in the constructor. It is now time\n                            to issue layout-ready events as the GridItems have\n                            their sizes configured properly.\n\n                            The reason for emitting the layout-ready events on\n                            the next tick is to allow for the newly-emitted\n                            updateWidth event (above) to have reached the\n                            children GridItem-s and had their effect, so we're\n                            sure that they have the final size before we emit\n                            layout-ready (for this GridLayout) and\n                            item-layout-ready (for the GridItem-s).\n\n                            This way any client event handlers can reliably\n                            invistigate stable sizes of GridItem-s.\n                        */\n                        this.$nextTick(() => {\n                            this.$emit('layout-ready', self.layout);\n                        });\n                    }\n                    this.updateHeight();\n                });\n            },\n            layout() {\n                this.layoutUpdate();\n            },\n            colNum: function (val) {\n                this.eventBus.emit(\"setColNum\", val);\n            },\n            rowHeight: function() {\n                this.eventBus.emit(\"setRowHeight\", this.rowHeight);\n            },\n            isDraggable: function() {\n                this.eventBus.emit(\"setDraggable\", this.isDraggable);\n            },\n            isResizable: function() {\n                this.eventBus.emit(\"setResizable\", this.isResizable);\n            },\n            responsive() {\n                if (!this.responsive) {\n                    this.$emit('update:layout', this.originalLayout);\n                    this.eventBus.emit(\"setColNum\", this.colNum);\n                }\n                this.onWindowResize();\n            },\n            maxRows: function() {\n                this.eventBus.emit(\"setMaxRows\", this.maxRows);\n            },\n            margin() {\n                this.updateHeight();\n            }\n        },\n        methods: {\n            layoutUpdate() {\n                if (this.layout !== undefined && this.originalLayout !== null) {\n                    if (this.layout.length !== this.originalLayout.length) {\n                        // console.log(\"### LAYOUT UPDATE!\", this.layout.length, this.originalLayout.length);\n\n                        let diff = this.findDifference(this.layout, this.originalLayout);\n                        if (diff.length > 0){\n                            // console.log(diff);\n                            if (this.layout.length > this.originalLayout.length) {\n                                this.originalLayout = this.originalLayout.concat(diff);\n                            } else {\n                                this.originalLayout = this.originalLayout.filter(obj => {\n                                    return !diff.some(obj2 => {\n                                        return obj.i === obj2.i;\n                                    });\n                                });\n                            }\n                        }\n\n                        this.lastLayoutLength = this.layout.length;\n                        this.initResponsiveFeatures();\n                    }\n\n                    compact(this.layout, this.verticalCompact);\n                    this.eventBus.emit(\"updateWidth\", this.width);\n                    this.updateHeight();\n\n                    this.$emit('layout-updated',this.layout)\n                }\n            },\n            updateHeight: function () {\n                this.mergedStyle = {\n                    height: this.containerHeight()\n                };\n            },\n            onWindowResize: function () {\n                if (this.$refs !== null && this.$refs.item !== null && this.$refs.item !== undefined) {\n                    this.width = this.$refs.item.offsetWidth;\n                }\n                this.eventBus.emit(\"resizeEvent\", {});\n            },\n            containerHeight: function () {\n                if (!this.autoSize) return;\n                // console.log(\"bottom: \" + bottom(this.layout))\n                // console.log(\"rowHeight + margins: \" + (this.rowHeight + this.margin[1]) + this.margin[1])\n                const containerHeight =  bottom(this.layout) * (this.rowHeight + this.margin[1]) + this.margin[1] + 'px';\n                return containerHeight;\n            },\n            dragEvent: function (eventName, id, x, y, h, w) {\n                //console.log(eventName + \" id=\" + id + \", x=\" + x + \", y=\" + y);\n                let l = getLayoutItem(this.layout, id);\n                //GetLayoutItem sometimes returns null object\n                if (l === undefined || l === null){\n                    l = {x:0, y:0}\n                }\n\n                if (eventName === \"dragmove\" || eventName === \"dragstart\") {\n                    this.placeholder.i = id;\n                    this.placeholder.x = l.x;\n                    this.placeholder.y = l.y;\n                    this.placeholder.w = w;\n                    this.placeholder.h = h;\n                    this.$nextTick(function() {\n                        this.isDragging = true;\n                    });\n                    //this.$broadcast(\"updateWidth\", this.width);\n                    this.eventBus.emit(\"updateWidth\", this.width);\n                } else {\n                    this.$nextTick(function() {\n                        this.isDragging = false;\n                    });\n                }\n\n                // Move the element to the dragged location.\n                this.$emit(\"update:layout\", moveElement(this.layout, l, x, y, true, this.preventCollision));\n                compact(this.layout, this.verticalCompact);\n                // needed because vue can't detect changes on array element properties\n                this.eventBus.emit(\"compact\");\n                this.updateHeight();\n                if (eventName === 'dragend') this.$emit('layout-updated', this.layout);\n            },\n            resizeEvent: function (eventName, id, x, y, h, w) {\n                let l = getLayoutItem(this.layout, id);\n                //GetLayoutItem sometimes return null object\n                if (l === undefined || l === null){\n                    l = {h:0, w:0}\n                }\n\n                let hasCollisions;\n                if (this.preventCollision) {\n                    const collisions = getAllCollisions(this.layout, { ...l, w, h }).filter(\n                        layoutItem => layoutItem.i !== l.i\n                    );\n                    hasCollisions = collisions.length > 0;\n\n                    // If we're colliding, we need adjust the placeholder.\n                    if (hasCollisions) {\n                        // adjust w && h to maximum allowed space\n                        let leastX = Infinity,\n                        leastY = Infinity;\n                        collisions.forEach(layoutItem => {\n                        if (layoutItem.x > l.x) leastX = Math.min(leastX, layoutItem.x);\n                        if (layoutItem.y > l.y) leastY = Math.min(leastY, layoutItem.y);\n                        });\n\n                        if (Number.isFinite(leastX)) l.w = leastX - l.x;\n                        if (Number.isFinite(leastY)) l.h = leastY - l.y;\n                    }\n                }\n\n                if (!hasCollisions) {\n                    // Set new width and height.\n                    l.w = w;\n                    l.h = h;\n                }\n\n                if (eventName === \"resizestart\" || eventName === \"resizemove\") {\n                    this.placeholder.i = id;\n                    this.placeholder.x = x;\n                    this.placeholder.y = y;\n                    this.placeholder.w = l.w;\n                    this.placeholder.h = l.h;\n                    this.$nextTick(function() {\n                        this.isDragging = true;\n                    });\n                    //this.$broadcast(\"updateWidth\", this.width);\n                    this.eventBus.emit(\"updateWidth\", this.width);\n\n                } else {\n                    this.$nextTick(function() {\n                        this.isDragging = false;\n                    });\n                }\n\n                if (this.responsive) this.responsiveGridLayout();\n\n                compact(this.layout, this.verticalCompact);\n                this.eventBus.emit(\"compact\");\n                this.updateHeight();\n\n                if (eventName === 'resizeend') this.$emit('layout-updated', this.layout);\n            },\n\n            // finds or generates new layouts for set breakpoints\n            responsiveGridLayout(){\n                let newBreakpoint = getBreakpointFromWidth(this.breakpoints, this.width);\n                let newCols = getColsFromBreakpoint(newBreakpoint, this.cols);\n\n                // save actual layout in layouts\n                if(this.lastBreakpoint != null && !this.layouts[this.lastBreakpoint])\n                    this.layouts[this.lastBreakpoint] = cloneLayout(this.layout);\n\n                // Find or generate a new layout.\n                let layout = findOrGenerateResponsiveLayout(\n                    this.originalLayout,\n                    this.layouts,\n                    this.breakpoints,\n                    newBreakpoint,\n                    this.lastBreakpoint,\n                    newCols,\n                    this.verticalCompact\n                );\n\n                // Store the new layout.\n                this.layouts[newBreakpoint] = layout;\n\n                if (this.lastBreakpoint !== newBreakpoint) {\n                    this.$emit('breakpoint-changed', newBreakpoint, layout);\n                }\n\n                // new prop sync\n                this.$emit('update:layout', layout);\n\n                this.lastBreakpoint = newBreakpoint;\n                this.eventBus.emit(\"setColNum\", getColsFromBreakpoint(newBreakpoint, this.cols));\n            },\n\n            // clear all responsive layouts\n            initResponsiveFeatures(){\n                // clear layouts\n                this.layouts = Object.assign({}, this.responsiveLayouts);\n            },\n\n            // find difference in layouts\n            findDifference(layout, originalLayout){\n\n                //Find values that are in result1 but not in result2\n                let uniqueResultOne = layout.filter(function(obj) {\n                    return !originalLayout.some(function(obj2) {\n                        return obj.i === obj2.i;\n                    });\n                });\n\n                //Find values that are in result2 but not in result1\n                let uniqueResultTwo = originalLayout.filter(function(obj) {\n                    return !layout.some(function(obj2) {\n                        return obj.i === obj2.i;\n                    });\n                });\n\n                //Combine the two arrays of unique entries#\n                return uniqueResultOne.concat(uniqueResultTwo);\n            }\n        },\n    }\n</script>\n","import _Object$defineProperty from \"@babel/runtime-corejs2/core-js/object/define-property\";\nexport default function _defineProperty(obj, key, value) {\n  if (key in obj) {\n    _Object$defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n\n  return obj;\n}","export default function(n){return{all:n=n||new Map,on:function(t,e){var i=n.get(t);i&&i.push(e)||n.set(t,[e])},off:function(t,e){var i=n.get(t);i&&i.splice(i.indexOf(e)>>>0,1)},emit:function(t,e){(n.get(t)||[]).slice().map(function(n){n(e)}),(n.get(\"*\")||[]).slice().map(function(n){n(t,e)})}}}\n//# sourceMappingURL=mitt.es.js.map\n","import { render } from \"./GridLayout.vue?vue&type=template&id=fc5948f6\"\nimport script from \"./GridLayout.vue?vue&type=script&lang=js\"\nexport * from \"./GridLayout.vue?vue&type=script&lang=js\"\n\nimport \"./GridLayout.vue?vue&type=style&index=0&id=fc5948f6&lang=css\"\n\nimport exportComponent from \"/Users/bytedance/Documents/codes/github/vue-grid-layout/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { App } from 'vue';\n\nimport GridItem from './GridItem.vue';\nimport GridLayout from './GridLayout.vue';\n\nexport { GridLayout, GridItem };\n\nconst install = (app: App) => {\n    app.component('grid-layout', GridLayout)\n    app.component('grid-item', GridItem)\n}\ninstall.GridItem = GridItem;\ninstall.GridLayout = GridLayout;\n\nexport default install;","import './setPublicPath'\nimport mod from '~entry'\nexport default mod\nexport * from '~entry'\n","// 20.1.2.2 Number.isFinite(number)\nvar $export = require('./_export');\nvar _isFinite = require('./_global').isFinite;\n\n$export($export.S, 'Number', {\n  isFinite: function isFinite(it) {\n    return typeof it == 'number' && _isFinite(it);\n  }\n});\n","module.exports = '\\x09\\x0A\\x0B\\x0C\\x0D\\x20\\xA0\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003' +\n  '\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n"],"sourceRoot":""}
\ No newline at end of file
diff --git a/src/components/index.js b/src/components/index.js
index b59d2064..375a417e 100644
--- a/src/components/index.js
+++ b/src/components/index.js
@@ -9,5 +9,7 @@ const install = (app: App) => {
     app.component('grid-layout', GridLayout)
     app.component('grid-item', GridItem)
 }
+install.GridItem = GridItem;
+install.GridLayout = GridLayout;
 
 export default install;
\ No newline at end of file