@fangzhongya/fang-ui 0.1.19 → 0.1.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (106) hide show
  1. package/dist/components/forms/src/data.cjs +3 -3
  2. package/dist/components/forms/src/data.d.ts +1 -1
  3. package/dist/components/forms/src/data.js +3 -3
  4. package/dist/components/forms/src/index2.cjs +5 -3
  5. package/dist/components/forms/src/index2.js +5 -3
  6. package/dist/components/forms/src/setup.cjs +0 -7
  7. package/dist/components/forms/src/setup.js +0 -7
  8. package/dist/components/forms-div/src/data.cjs +1 -1
  9. package/dist/components/forms-div/src/data.js +1 -1
  10. package/dist/components/forms-div/src/index2.cjs +7 -1
  11. package/dist/components/forms-div/src/index2.js +7 -1
  12. package/dist/components/forms-item/src/data.cjs +1 -1
  13. package/dist/components/forms-item/src/data.js +1 -1
  14. package/dist/components/forms-item/src/index2.cjs +4 -2
  15. package/dist/components/forms-item/src/index2.js +4 -2
  16. package/dist/components/forms-items/src/data.cjs +1 -1
  17. package/dist/components/forms-items/src/data.js +1 -1
  18. package/dist/components/forms-items/src/index2.cjs +4 -2
  19. package/dist/components/forms-items/src/index2.js +4 -2
  20. package/dist/components/global-config/src/data.cjs +12 -0
  21. package/dist/components/global-config/src/data.d.ts +12 -0
  22. package/dist/components/global-config/src/data.js +12 -0
  23. package/dist/components/index.cjs +8 -6
  24. package/dist/{index.css → components/index.css} +39 -22
  25. package/dist/components/index.d.ts +1 -0
  26. package/dist/components/index.js +2 -0
  27. package/dist/components/index.scss +2 -2
  28. package/dist/components/index2.scss +2 -2
  29. package/dist/components/list/index.css +12 -0
  30. package/dist/components/list/index.scss +15 -0
  31. package/dist/components/list/src/data.cjs +21 -2
  32. package/dist/components/list/src/data.d.ts +22 -1
  33. package/dist/components/list/src/data.js +21 -2
  34. package/dist/components/list/src/index2.cjs +61 -10
  35. package/dist/components/list/src/index2.js +61 -10
  36. package/dist/components/list/style/index2.scss +1 -0
  37. package/dist/components/page/index.css +11 -0
  38. package/dist/components/tables/common/pagin.cjs +60 -16
  39. package/dist/components/tables/common/pagin.d.ts +8 -0
  40. package/dist/components/tables/common/pagin.js +60 -16
  41. package/dist/components/tables/common/tooltip.cjs +101 -0
  42. package/dist/components/tables/common/tooltip.d.ts +6 -0
  43. package/dist/components/tables/common/tooltip.js +101 -0
  44. package/dist/components/tables/common/util.cjs +3 -3
  45. package/dist/components/tables/common/util.js +3 -3
  46. package/dist/components/tables/src/column.cjs +19 -15
  47. package/dist/components/tables/src/column.d.ts +3 -2
  48. package/dist/components/tables/src/column.js +17 -13
  49. package/dist/components/tables/src/columns3.cjs +16 -32
  50. package/dist/components/tables/src/columns3.js +15 -31
  51. package/dist/components/tables/src/data.cjs +3 -2
  52. package/dist/components/tables/src/data.d.ts +1 -0
  53. package/dist/components/tables/src/data.js +3 -2
  54. package/dist/components/tablespd/index.cjs +9 -0
  55. package/dist/components/tablespd/index.css +88 -0
  56. package/dist/components/tablespd/index.d.ts +4 -0
  57. package/dist/components/tablespd/index.js +9 -0
  58. package/dist/components/tablespd/index.scss +40 -0
  59. package/dist/components/tablespd/src/data.cjs +13 -0
  60. package/dist/components/tablespd/src/data.d.ts +18 -0
  61. package/dist/components/tablespd/src/data.js +13 -0
  62. package/dist/components/tablespd/src/index.cjs +4 -0
  63. package/dist/components/tablespd/src/index.js +4 -0
  64. package/dist/components/tablespd/src/index2.cjs +111 -0
  65. package/dist/components/tablespd/src/index2.js +111 -0
  66. package/dist/components/tablespd/style/index2.scss +4 -0
  67. package/dist/components/tablesv/src/column.cjs +4 -4
  68. package/dist/components/tablesv/src/column.js +3 -3
  69. package/dist/css/index.css +39 -22
  70. package/dist/css/list.css +12 -0
  71. package/dist/css/page.css +11 -0
  72. package/dist/css/tablespd.css +88 -0
  73. package/dist/directives/index.cjs +6 -4
  74. package/dist/directives/index.d.ts +1 -0
  75. package/dist/directives/index.js +4 -2
  76. package/dist/directives/sortable/index.cjs +45 -0
  77. package/dist/directives/sortable/index.d.ts +6 -0
  78. package/dist/directives/sortable/index.js +45 -0
  79. package/dist/expand/{chunk-XY53LCPN.js → chunk-2BLP2ANQ.js} +3 -0
  80. package/dist/expand/{chunk-IEODUGVJ.cjs → chunk-OT6GISSR.cjs} +3 -0
  81. package/dist/expand/components.cjs +5 -5
  82. package/dist/expand/components.js +1 -1
  83. package/dist/expand/config.cjs +2 -2
  84. package/dist/expand/config.js +1 -1
  85. package/dist/hooks/cssname/index.d.ts +2 -2
  86. package/dist/hooks/index.cjs +0 -1
  87. package/dist/hooks/index.js +1 -2
  88. package/dist/hooks/inherit/index.cjs +0 -8
  89. package/dist/hooks/inherit/index.d.ts +0 -1
  90. package/dist/hooks/inherit/index.js +0 -8
  91. package/dist/icons/index.json +1 -1
  92. package/dist/index.cjs +30 -26
  93. package/dist/index.js +6 -2
  94. package/dist/node_modules/.pnpm/sortablejs@1.15.6/node_modules/sortablejs/modular/sortable.esm.cjs +2758 -0
  95. package/dist/node_modules/.pnpm/sortablejs@1.15.6/node_modules/sortablejs/modular/sortable.esm.js +2758 -0
  96. package/dist/utils/vues/getAttrValue.cjs +11 -0
  97. package/dist/utils/vues/getAttrValue.d.ts +3 -0
  98. package/dist/utils/vues/getAttrValue.js +11 -0
  99. package/dist/utils/vues/index.cjs +2 -0
  100. package/dist/utils/vues/index.d.ts +1 -0
  101. package/dist/utils/vues/index.js +2 -0
  102. package/package.json +7 -5
  103. /package/dist/components/{forms-item → forms-items}/index.css +0 -0
  104. /package/dist/components/{date-picker → global-config}/index.css +0 -0
  105. /package/dist/css/{forms-item.css → forms-items.css} +0 -0
  106. /package/dist/css/{date-picker.css → global-config.css} +0 -0
@@ -0,0 +1,2758 @@
1
+ "use strict";
2
+ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
+ /**!
4
+ * Sortable 1.15.6
5
+ * @author RubaXa <trash@rubaxa.org>
6
+ * @author owenm <owen23355@gmail.com>
7
+ * @license MIT
8
+ */
9
+ function ownKeys(object, enumerableOnly) {
10
+ var keys = Object.keys(object);
11
+ if (Object.getOwnPropertySymbols) {
12
+ var symbols = Object.getOwnPropertySymbols(object);
13
+ if (enumerableOnly) {
14
+ symbols = symbols.filter(function(sym) {
15
+ return Object.getOwnPropertyDescriptor(object, sym).enumerable;
16
+ });
17
+ }
18
+ keys.push.apply(keys, symbols);
19
+ }
20
+ return keys;
21
+ }
22
+ function _objectSpread2(target) {
23
+ for (var i = 1; i < arguments.length; i++) {
24
+ var source = arguments[i] != null ? arguments[i] : {};
25
+ if (i % 2) {
26
+ ownKeys(Object(source), true).forEach(function(key) {
27
+ _defineProperty(target, key, source[key]);
28
+ });
29
+ } else if (Object.getOwnPropertyDescriptors) {
30
+ Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
31
+ } else {
32
+ ownKeys(Object(source)).forEach(function(key) {
33
+ Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
34
+ });
35
+ }
36
+ }
37
+ return target;
38
+ }
39
+ function _typeof(obj) {
40
+ "@babel/helpers - typeof";
41
+ if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
42
+ _typeof = function(obj2) {
43
+ return typeof obj2;
44
+ };
45
+ } else {
46
+ _typeof = function(obj2) {
47
+ return obj2 && typeof Symbol === "function" && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2;
48
+ };
49
+ }
50
+ return _typeof(obj);
51
+ }
52
+ function _defineProperty(obj, key, value) {
53
+ if (key in obj) {
54
+ Object.defineProperty(obj, key, {
55
+ value,
56
+ enumerable: true,
57
+ configurable: true,
58
+ writable: true
59
+ });
60
+ } else {
61
+ obj[key] = value;
62
+ }
63
+ return obj;
64
+ }
65
+ function _extends() {
66
+ _extends = Object.assign || function(target) {
67
+ for (var i = 1; i < arguments.length; i++) {
68
+ var source = arguments[i];
69
+ for (var key in source) {
70
+ if (Object.prototype.hasOwnProperty.call(source, key)) {
71
+ target[key] = source[key];
72
+ }
73
+ }
74
+ }
75
+ return target;
76
+ };
77
+ return _extends.apply(this, arguments);
78
+ }
79
+ function _objectWithoutPropertiesLoose(source, excluded) {
80
+ if (source == null) return {};
81
+ var target = {};
82
+ var sourceKeys = Object.keys(source);
83
+ var key, i;
84
+ for (i = 0; i < sourceKeys.length; i++) {
85
+ key = sourceKeys[i];
86
+ if (excluded.indexOf(key) >= 0) continue;
87
+ target[key] = source[key];
88
+ }
89
+ return target;
90
+ }
91
+ function _objectWithoutProperties(source, excluded) {
92
+ if (source == null) return {};
93
+ var target = _objectWithoutPropertiesLoose(source, excluded);
94
+ var key, i;
95
+ if (Object.getOwnPropertySymbols) {
96
+ var sourceSymbolKeys = Object.getOwnPropertySymbols(source);
97
+ for (i = 0; i < sourceSymbolKeys.length; i++) {
98
+ key = sourceSymbolKeys[i];
99
+ if (excluded.indexOf(key) >= 0) continue;
100
+ if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;
101
+ target[key] = source[key];
102
+ }
103
+ }
104
+ return target;
105
+ }
106
+ function _toConsumableArray(arr) {
107
+ return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();
108
+ }
109
+ function _arrayWithoutHoles(arr) {
110
+ if (Array.isArray(arr)) return _arrayLikeToArray(arr);
111
+ }
112
+ function _iterableToArray(iter) {
113
+ if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
114
+ }
115
+ function _unsupportedIterableToArray(o, minLen) {
116
+ if (!o) return;
117
+ if (typeof o === "string") return _arrayLikeToArray(o, minLen);
118
+ var n = Object.prototype.toString.call(o).slice(8, -1);
119
+ if (n === "Object" && o.constructor) n = o.constructor.name;
120
+ if (n === "Map" || n === "Set") return Array.from(o);
121
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
122
+ }
123
+ function _arrayLikeToArray(arr, len) {
124
+ if (len == null || len > arr.length) len = arr.length;
125
+ for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
126
+ return arr2;
127
+ }
128
+ function _nonIterableSpread() {
129
+ throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
130
+ }
131
+ var version = "1.15.6";
132
+ function userAgent(pattern) {
133
+ if (typeof window !== "undefined" && window.navigator) {
134
+ return !!/* @__PURE__ */ navigator.userAgent.match(pattern);
135
+ }
136
+ }
137
+ var IE11OrLess = userAgent(/(?:Trident.*rv[ :]?11\.|msie|iemobile|Windows Phone)/i);
138
+ var Edge = userAgent(/Edge/i);
139
+ var FireFox = userAgent(/firefox/i);
140
+ var Safari = userAgent(/safari/i) && !userAgent(/chrome/i) && !userAgent(/android/i);
141
+ var IOS = userAgent(/iP(ad|od|hone)/i);
142
+ var ChromeForAndroid = userAgent(/chrome/i) && userAgent(/android/i);
143
+ var captureMode = {
144
+ capture: false,
145
+ passive: false
146
+ };
147
+ function on(el, event, fn) {
148
+ el.addEventListener(event, fn, !IE11OrLess && captureMode);
149
+ }
150
+ function off(el, event, fn) {
151
+ el.removeEventListener(event, fn, !IE11OrLess && captureMode);
152
+ }
153
+ function matches(el, selector) {
154
+ if (!selector) return;
155
+ selector[0] === ">" && (selector = selector.substring(1));
156
+ if (el) {
157
+ try {
158
+ if (el.matches) {
159
+ return el.matches(selector);
160
+ } else if (el.msMatchesSelector) {
161
+ return el.msMatchesSelector(selector);
162
+ } else if (el.webkitMatchesSelector) {
163
+ return el.webkitMatchesSelector(selector);
164
+ }
165
+ } catch (_) {
166
+ return false;
167
+ }
168
+ }
169
+ return false;
170
+ }
171
+ function getParentOrHost(el) {
172
+ return el.host && el !== document && el.host.nodeType ? el.host : el.parentNode;
173
+ }
174
+ function closest(el, selector, ctx, includeCTX) {
175
+ if (el) {
176
+ ctx = ctx || document;
177
+ do {
178
+ if (selector != null && (selector[0] === ">" ? el.parentNode === ctx && matches(el, selector) : matches(el, selector)) || includeCTX && el === ctx) {
179
+ return el;
180
+ }
181
+ if (el === ctx) break;
182
+ } while (el = getParentOrHost(el));
183
+ }
184
+ return null;
185
+ }
186
+ var R_SPACE = /\s+/g;
187
+ function toggleClass(el, name, state) {
188
+ if (el && name) {
189
+ if (el.classList) {
190
+ el.classList[state ? "add" : "remove"](name);
191
+ } else {
192
+ var className = (" " + el.className + " ").replace(R_SPACE, " ").replace(" " + name + " ", " ");
193
+ el.className = (className + (state ? " " + name : "")).replace(R_SPACE, " ");
194
+ }
195
+ }
196
+ }
197
+ function css(el, prop, val) {
198
+ var style = el && el.style;
199
+ if (style) {
200
+ if (val === void 0) {
201
+ if (document.defaultView && document.defaultView.getComputedStyle) {
202
+ val = document.defaultView.getComputedStyle(el, "");
203
+ } else if (el.currentStyle) {
204
+ val = el.currentStyle;
205
+ }
206
+ return prop === void 0 ? val : val[prop];
207
+ } else {
208
+ if (!(prop in style) && prop.indexOf("webkit") === -1) {
209
+ prop = "-webkit-" + prop;
210
+ }
211
+ style[prop] = val + (typeof val === "string" ? "" : "px");
212
+ }
213
+ }
214
+ }
215
+ function matrix(el, selfOnly) {
216
+ var appliedTransforms = "";
217
+ if (typeof el === "string") {
218
+ appliedTransforms = el;
219
+ } else {
220
+ do {
221
+ var transform = css(el, "transform");
222
+ if (transform && transform !== "none") {
223
+ appliedTransforms = transform + " " + appliedTransforms;
224
+ }
225
+ } while (!selfOnly && (el = el.parentNode));
226
+ }
227
+ var matrixFn = window.DOMMatrix || window.WebKitCSSMatrix || window.CSSMatrix || window.MSCSSMatrix;
228
+ return matrixFn && new matrixFn(appliedTransforms);
229
+ }
230
+ function find(ctx, tagName, iterator) {
231
+ if (ctx) {
232
+ var list = ctx.getElementsByTagName(tagName), i = 0, n = list.length;
233
+ if (iterator) {
234
+ for (; i < n; i++) {
235
+ iterator(list[i], i);
236
+ }
237
+ }
238
+ return list;
239
+ }
240
+ return [];
241
+ }
242
+ function getWindowScrollingElement() {
243
+ var scrollingElement = document.scrollingElement;
244
+ if (scrollingElement) {
245
+ return scrollingElement;
246
+ } else {
247
+ return document.documentElement;
248
+ }
249
+ }
250
+ function getRect(el, relativeToContainingBlock, relativeToNonStaticParent, undoScale, container) {
251
+ if (!el.getBoundingClientRect && el !== window) return;
252
+ var elRect, top, left, bottom, right, height, width;
253
+ if (el !== window && el.parentNode && el !== getWindowScrollingElement()) {
254
+ elRect = el.getBoundingClientRect();
255
+ top = elRect.top;
256
+ left = elRect.left;
257
+ bottom = elRect.bottom;
258
+ right = elRect.right;
259
+ height = elRect.height;
260
+ width = elRect.width;
261
+ } else {
262
+ top = 0;
263
+ left = 0;
264
+ bottom = window.innerHeight;
265
+ right = window.innerWidth;
266
+ height = window.innerHeight;
267
+ width = window.innerWidth;
268
+ }
269
+ if ((relativeToContainingBlock || relativeToNonStaticParent) && el !== window) {
270
+ container = container || el.parentNode;
271
+ if (!IE11OrLess) {
272
+ do {
273
+ if (container && container.getBoundingClientRect && (css(container, "transform") !== "none" || relativeToNonStaticParent && css(container, "position") !== "static")) {
274
+ var containerRect = container.getBoundingClientRect();
275
+ top -= containerRect.top + parseInt(css(container, "border-top-width"));
276
+ left -= containerRect.left + parseInt(css(container, "border-left-width"));
277
+ bottom = top + elRect.height;
278
+ right = left + elRect.width;
279
+ break;
280
+ }
281
+ } while (container = container.parentNode);
282
+ }
283
+ }
284
+ if (undoScale && el !== window) {
285
+ var elMatrix = matrix(container || el), scaleX = elMatrix && elMatrix.a, scaleY = elMatrix && elMatrix.d;
286
+ if (elMatrix) {
287
+ top /= scaleY;
288
+ left /= scaleX;
289
+ width /= scaleX;
290
+ height /= scaleY;
291
+ bottom = top + height;
292
+ right = left + width;
293
+ }
294
+ }
295
+ return {
296
+ top,
297
+ left,
298
+ bottom,
299
+ right,
300
+ width,
301
+ height
302
+ };
303
+ }
304
+ function isScrolledPast(el, elSide, parentSide) {
305
+ var parent = getParentAutoScrollElement(el, true), elSideVal = getRect(el)[elSide];
306
+ while (parent) {
307
+ var parentSideVal = getRect(parent)[parentSide], visible = void 0;
308
+ if (parentSide === "top" || parentSide === "left") {
309
+ visible = elSideVal >= parentSideVal;
310
+ } else {
311
+ visible = elSideVal <= parentSideVal;
312
+ }
313
+ if (!visible) return parent;
314
+ if (parent === getWindowScrollingElement()) break;
315
+ parent = getParentAutoScrollElement(parent, false);
316
+ }
317
+ return false;
318
+ }
319
+ function getChild(el, childNum, options, includeDragEl) {
320
+ var currentChild = 0, i = 0, children = el.children;
321
+ while (i < children.length) {
322
+ if (children[i].style.display !== "none" && children[i] !== Sortable.ghost && (includeDragEl || children[i] !== Sortable.dragged) && closest(children[i], options.draggable, el, false)) {
323
+ if (currentChild === childNum) {
324
+ return children[i];
325
+ }
326
+ currentChild++;
327
+ }
328
+ i++;
329
+ }
330
+ return null;
331
+ }
332
+ function lastChild(el, selector) {
333
+ var last = el.lastElementChild;
334
+ while (last && (last === Sortable.ghost || css(last, "display") === "none" || selector && !matches(last, selector))) {
335
+ last = last.previousElementSibling;
336
+ }
337
+ return last || null;
338
+ }
339
+ function index(el, selector) {
340
+ var index2 = 0;
341
+ if (!el || !el.parentNode) {
342
+ return -1;
343
+ }
344
+ while (el = el.previousElementSibling) {
345
+ if (el.nodeName.toUpperCase() !== "TEMPLATE" && el !== Sortable.clone && (!selector || matches(el, selector))) {
346
+ index2++;
347
+ }
348
+ }
349
+ return index2;
350
+ }
351
+ function getRelativeScrollOffset(el) {
352
+ var offsetLeft = 0, offsetTop = 0, winScroller = getWindowScrollingElement();
353
+ if (el) {
354
+ do {
355
+ var elMatrix = matrix(el), scaleX = elMatrix.a, scaleY = elMatrix.d;
356
+ offsetLeft += el.scrollLeft * scaleX;
357
+ offsetTop += el.scrollTop * scaleY;
358
+ } while (el !== winScroller && (el = el.parentNode));
359
+ }
360
+ return [offsetLeft, offsetTop];
361
+ }
362
+ function indexOfObject(arr, obj) {
363
+ for (var i in arr) {
364
+ if (!arr.hasOwnProperty(i)) continue;
365
+ for (var key in obj) {
366
+ if (obj.hasOwnProperty(key) && obj[key] === arr[i][key]) return Number(i);
367
+ }
368
+ }
369
+ return -1;
370
+ }
371
+ function getParentAutoScrollElement(el, includeSelf) {
372
+ if (!el || !el.getBoundingClientRect) return getWindowScrollingElement();
373
+ var elem = el;
374
+ var gotSelf = false;
375
+ do {
376
+ if (elem.clientWidth < elem.scrollWidth || elem.clientHeight < elem.scrollHeight) {
377
+ var elemCSS = css(elem);
378
+ if (elem.clientWidth < elem.scrollWidth && (elemCSS.overflowX == "auto" || elemCSS.overflowX == "scroll") || elem.clientHeight < elem.scrollHeight && (elemCSS.overflowY == "auto" || elemCSS.overflowY == "scroll")) {
379
+ if (!elem.getBoundingClientRect || elem === document.body) return getWindowScrollingElement();
380
+ if (gotSelf || includeSelf) return elem;
381
+ gotSelf = true;
382
+ }
383
+ }
384
+ } while (elem = elem.parentNode);
385
+ return getWindowScrollingElement();
386
+ }
387
+ function extend(dst, src) {
388
+ if (dst && src) {
389
+ for (var key in src) {
390
+ if (src.hasOwnProperty(key)) {
391
+ dst[key] = src[key];
392
+ }
393
+ }
394
+ }
395
+ return dst;
396
+ }
397
+ function isRectEqual(rect1, rect2) {
398
+ return Math.round(rect1.top) === Math.round(rect2.top) && Math.round(rect1.left) === Math.round(rect2.left) && Math.round(rect1.height) === Math.round(rect2.height) && Math.round(rect1.width) === Math.round(rect2.width);
399
+ }
400
+ var _throttleTimeout;
401
+ function throttle(callback, ms) {
402
+ return function() {
403
+ if (!_throttleTimeout) {
404
+ var args = arguments, _this = this;
405
+ if (args.length === 1) {
406
+ callback.call(_this, args[0]);
407
+ } else {
408
+ callback.apply(_this, args);
409
+ }
410
+ _throttleTimeout = setTimeout(function() {
411
+ _throttleTimeout = void 0;
412
+ }, ms);
413
+ }
414
+ };
415
+ }
416
+ function cancelThrottle() {
417
+ clearTimeout(_throttleTimeout);
418
+ _throttleTimeout = void 0;
419
+ }
420
+ function scrollBy(el, x, y) {
421
+ el.scrollLeft += x;
422
+ el.scrollTop += y;
423
+ }
424
+ function clone(el) {
425
+ var Polymer = window.Polymer;
426
+ var $ = window.jQuery || window.Zepto;
427
+ if (Polymer && Polymer.dom) {
428
+ return Polymer.dom(el).cloneNode(true);
429
+ } else if ($) {
430
+ return $(el).clone(true)[0];
431
+ } else {
432
+ return el.cloneNode(true);
433
+ }
434
+ }
435
+ function setRect(el, rect) {
436
+ css(el, "position", "absolute");
437
+ css(el, "top", rect.top);
438
+ css(el, "left", rect.left);
439
+ css(el, "width", rect.width);
440
+ css(el, "height", rect.height);
441
+ }
442
+ function unsetRect(el) {
443
+ css(el, "position", "");
444
+ css(el, "top", "");
445
+ css(el, "left", "");
446
+ css(el, "width", "");
447
+ css(el, "height", "");
448
+ }
449
+ function getChildContainingRectFromElement(container, options, ghostEl2) {
450
+ var rect = {};
451
+ Array.from(container.children).forEach(function(child) {
452
+ var _rect$left, _rect$top, _rect$right, _rect$bottom;
453
+ if (!closest(child, options.draggable, container, false) || child.animated || child === ghostEl2) return;
454
+ var childRect = getRect(child);
455
+ rect.left = Math.min((_rect$left = rect.left) !== null && _rect$left !== void 0 ? _rect$left : Infinity, childRect.left);
456
+ rect.top = Math.min((_rect$top = rect.top) !== null && _rect$top !== void 0 ? _rect$top : Infinity, childRect.top);
457
+ rect.right = Math.max((_rect$right = rect.right) !== null && _rect$right !== void 0 ? _rect$right : -Infinity, childRect.right);
458
+ rect.bottom = Math.max((_rect$bottom = rect.bottom) !== null && _rect$bottom !== void 0 ? _rect$bottom : -Infinity, childRect.bottom);
459
+ });
460
+ rect.width = rect.right - rect.left;
461
+ rect.height = rect.bottom - rect.top;
462
+ rect.x = rect.left;
463
+ rect.y = rect.top;
464
+ return rect;
465
+ }
466
+ var expando = "Sortable" + (/* @__PURE__ */ new Date()).getTime();
467
+ function AnimationStateManager() {
468
+ var animationStates = [], animationCallbackId;
469
+ return {
470
+ captureAnimationState: function captureAnimationState() {
471
+ animationStates = [];
472
+ if (!this.options.animation) return;
473
+ var children = [].slice.call(this.el.children);
474
+ children.forEach(function(child) {
475
+ if (css(child, "display") === "none" || child === Sortable.ghost) return;
476
+ animationStates.push({
477
+ target: child,
478
+ rect: getRect(child)
479
+ });
480
+ var fromRect = _objectSpread2({}, animationStates[animationStates.length - 1].rect);
481
+ if (child.thisAnimationDuration) {
482
+ var childMatrix = matrix(child, true);
483
+ if (childMatrix) {
484
+ fromRect.top -= childMatrix.f;
485
+ fromRect.left -= childMatrix.e;
486
+ }
487
+ }
488
+ child.fromRect = fromRect;
489
+ });
490
+ },
491
+ addAnimationState: function addAnimationState(state) {
492
+ animationStates.push(state);
493
+ },
494
+ removeAnimationState: function removeAnimationState(target) {
495
+ animationStates.splice(indexOfObject(animationStates, {
496
+ target
497
+ }), 1);
498
+ },
499
+ animateAll: function animateAll(callback) {
500
+ var _this = this;
501
+ if (!this.options.animation) {
502
+ clearTimeout(animationCallbackId);
503
+ if (typeof callback === "function") callback();
504
+ return;
505
+ }
506
+ var animating = false, animationTime = 0;
507
+ animationStates.forEach(function(state) {
508
+ var time = 0, target = state.target, fromRect = target.fromRect, toRect = getRect(target), prevFromRect = target.prevFromRect, prevToRect = target.prevToRect, animatingRect = state.rect, targetMatrix = matrix(target, true);
509
+ if (targetMatrix) {
510
+ toRect.top -= targetMatrix.f;
511
+ toRect.left -= targetMatrix.e;
512
+ }
513
+ target.toRect = toRect;
514
+ if (target.thisAnimationDuration) {
515
+ if (isRectEqual(prevFromRect, toRect) && !isRectEqual(fromRect, toRect) && // Make sure animatingRect is on line between toRect & fromRect
516
+ (animatingRect.top - toRect.top) / (animatingRect.left - toRect.left) === (fromRect.top - toRect.top) / (fromRect.left - toRect.left)) {
517
+ time = calculateRealTime(animatingRect, prevFromRect, prevToRect, _this.options);
518
+ }
519
+ }
520
+ if (!isRectEqual(toRect, fromRect)) {
521
+ target.prevFromRect = fromRect;
522
+ target.prevToRect = toRect;
523
+ if (!time) {
524
+ time = _this.options.animation;
525
+ }
526
+ _this.animate(target, animatingRect, toRect, time);
527
+ }
528
+ if (time) {
529
+ animating = true;
530
+ animationTime = Math.max(animationTime, time);
531
+ clearTimeout(target.animationResetTimer);
532
+ target.animationResetTimer = setTimeout(function() {
533
+ target.animationTime = 0;
534
+ target.prevFromRect = null;
535
+ target.fromRect = null;
536
+ target.prevToRect = null;
537
+ target.thisAnimationDuration = null;
538
+ }, time);
539
+ target.thisAnimationDuration = time;
540
+ }
541
+ });
542
+ clearTimeout(animationCallbackId);
543
+ if (!animating) {
544
+ if (typeof callback === "function") callback();
545
+ } else {
546
+ animationCallbackId = setTimeout(function() {
547
+ if (typeof callback === "function") callback();
548
+ }, animationTime);
549
+ }
550
+ animationStates = [];
551
+ },
552
+ animate: function animate(target, currentRect, toRect, duration) {
553
+ if (duration) {
554
+ css(target, "transition", "");
555
+ css(target, "transform", "");
556
+ var elMatrix = matrix(this.el), scaleX = elMatrix && elMatrix.a, scaleY = elMatrix && elMatrix.d, translateX = (currentRect.left - toRect.left) / (scaleX || 1), translateY = (currentRect.top - toRect.top) / (scaleY || 1);
557
+ target.animatingX = !!translateX;
558
+ target.animatingY = !!translateY;
559
+ css(target, "transform", "translate3d(" + translateX + "px," + translateY + "px,0)");
560
+ this.forRepaintDummy = repaint(target);
561
+ css(target, "transition", "transform " + duration + "ms" + (this.options.easing ? " " + this.options.easing : ""));
562
+ css(target, "transform", "translate3d(0,0,0)");
563
+ typeof target.animated === "number" && clearTimeout(target.animated);
564
+ target.animated = setTimeout(function() {
565
+ css(target, "transition", "");
566
+ css(target, "transform", "");
567
+ target.animated = false;
568
+ target.animatingX = false;
569
+ target.animatingY = false;
570
+ }, duration);
571
+ }
572
+ }
573
+ };
574
+ }
575
+ function repaint(target) {
576
+ return target.offsetWidth;
577
+ }
578
+ function calculateRealTime(animatingRect, fromRect, toRect, options) {
579
+ return Math.sqrt(Math.pow(fromRect.top - animatingRect.top, 2) + Math.pow(fromRect.left - animatingRect.left, 2)) / Math.sqrt(Math.pow(fromRect.top - toRect.top, 2) + Math.pow(fromRect.left - toRect.left, 2)) * options.animation;
580
+ }
581
+ var plugins = [];
582
+ var defaults = {
583
+ initializeByDefault: true
584
+ };
585
+ var PluginManager = {
586
+ mount: function mount(plugin) {
587
+ for (var option2 in defaults) {
588
+ if (defaults.hasOwnProperty(option2) && !(option2 in plugin)) {
589
+ plugin[option2] = defaults[option2];
590
+ }
591
+ }
592
+ plugins.forEach(function(p) {
593
+ if (p.pluginName === plugin.pluginName) {
594
+ throw "Sortable: Cannot mount plugin ".concat(plugin.pluginName, " more than once");
595
+ }
596
+ });
597
+ plugins.push(plugin);
598
+ },
599
+ pluginEvent: function pluginEvent(eventName, sortable, evt) {
600
+ var _this = this;
601
+ this.eventCanceled = false;
602
+ evt.cancel = function() {
603
+ _this.eventCanceled = true;
604
+ };
605
+ var eventNameGlobal = eventName + "Global";
606
+ plugins.forEach(function(plugin) {
607
+ if (!sortable[plugin.pluginName]) return;
608
+ if (sortable[plugin.pluginName][eventNameGlobal]) {
609
+ sortable[plugin.pluginName][eventNameGlobal](_objectSpread2({
610
+ sortable
611
+ }, evt));
612
+ }
613
+ if (sortable.options[plugin.pluginName] && sortable[plugin.pluginName][eventName]) {
614
+ sortable[plugin.pluginName][eventName](_objectSpread2({
615
+ sortable
616
+ }, evt));
617
+ }
618
+ });
619
+ },
620
+ initializePlugins: function initializePlugins(sortable, el, defaults2, options) {
621
+ plugins.forEach(function(plugin) {
622
+ var pluginName = plugin.pluginName;
623
+ if (!sortable.options[pluginName] && !plugin.initializeByDefault) return;
624
+ var initialized = new plugin(sortable, el, sortable.options);
625
+ initialized.sortable = sortable;
626
+ initialized.options = sortable.options;
627
+ sortable[pluginName] = initialized;
628
+ _extends(defaults2, initialized.defaults);
629
+ });
630
+ for (var option2 in sortable.options) {
631
+ if (!sortable.options.hasOwnProperty(option2)) continue;
632
+ var modified = this.modifyOption(sortable, option2, sortable.options[option2]);
633
+ if (typeof modified !== "undefined") {
634
+ sortable.options[option2] = modified;
635
+ }
636
+ }
637
+ },
638
+ getEventProperties: function getEventProperties(name, sortable) {
639
+ var eventProperties = {};
640
+ plugins.forEach(function(plugin) {
641
+ if (typeof plugin.eventProperties !== "function") return;
642
+ _extends(eventProperties, plugin.eventProperties.call(sortable[plugin.pluginName], name));
643
+ });
644
+ return eventProperties;
645
+ },
646
+ modifyOption: function modifyOption(sortable, name, value) {
647
+ var modifiedValue;
648
+ plugins.forEach(function(plugin) {
649
+ if (!sortable[plugin.pluginName]) return;
650
+ if (plugin.optionListeners && typeof plugin.optionListeners[name] === "function") {
651
+ modifiedValue = plugin.optionListeners[name].call(sortable[plugin.pluginName], value);
652
+ }
653
+ });
654
+ return modifiedValue;
655
+ }
656
+ };
657
+ function dispatchEvent(_ref) {
658
+ var sortable = _ref.sortable, rootEl2 = _ref.rootEl, name = _ref.name, targetEl = _ref.targetEl, cloneEl2 = _ref.cloneEl, toEl = _ref.toEl, fromEl = _ref.fromEl, oldIndex2 = _ref.oldIndex, newIndex2 = _ref.newIndex, oldDraggableIndex2 = _ref.oldDraggableIndex, newDraggableIndex2 = _ref.newDraggableIndex, originalEvent = _ref.originalEvent, putSortable2 = _ref.putSortable, extraEventProperties = _ref.extraEventProperties;
659
+ sortable = sortable || rootEl2 && rootEl2[expando];
660
+ if (!sortable) return;
661
+ var evt, options = sortable.options, onName = "on" + name.charAt(0).toUpperCase() + name.substr(1);
662
+ if (window.CustomEvent && !IE11OrLess && !Edge) {
663
+ evt = new CustomEvent(name, {
664
+ bubbles: true,
665
+ cancelable: true
666
+ });
667
+ } else {
668
+ evt = document.createEvent("Event");
669
+ evt.initEvent(name, true, true);
670
+ }
671
+ evt.to = toEl || rootEl2;
672
+ evt.from = fromEl || rootEl2;
673
+ evt.item = targetEl || rootEl2;
674
+ evt.clone = cloneEl2;
675
+ evt.oldIndex = oldIndex2;
676
+ evt.newIndex = newIndex2;
677
+ evt.oldDraggableIndex = oldDraggableIndex2;
678
+ evt.newDraggableIndex = newDraggableIndex2;
679
+ evt.originalEvent = originalEvent;
680
+ evt.pullMode = putSortable2 ? putSortable2.lastPutMode : void 0;
681
+ var allEventProperties = _objectSpread2(_objectSpread2({}, extraEventProperties), PluginManager.getEventProperties(name, sortable));
682
+ for (var option2 in allEventProperties) {
683
+ evt[option2] = allEventProperties[option2];
684
+ }
685
+ if (rootEl2) {
686
+ rootEl2.dispatchEvent(evt);
687
+ }
688
+ if (options[onName]) {
689
+ options[onName].call(sortable, evt);
690
+ }
691
+ }
692
+ var _excluded = ["evt"];
693
+ var pluginEvent2 = function pluginEvent3(eventName, sortable) {
694
+ var _ref = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {}, originalEvent = _ref.evt, data = _objectWithoutProperties(_ref, _excluded);
695
+ PluginManager.pluginEvent.bind(Sortable)(eventName, sortable, _objectSpread2({
696
+ dragEl,
697
+ parentEl,
698
+ ghostEl,
699
+ rootEl,
700
+ nextEl,
701
+ lastDownEl,
702
+ cloneEl,
703
+ cloneHidden,
704
+ dragStarted: moved,
705
+ putSortable,
706
+ activeSortable: Sortable.active,
707
+ originalEvent,
708
+ oldIndex,
709
+ oldDraggableIndex,
710
+ newIndex,
711
+ newDraggableIndex,
712
+ hideGhostForTarget: _hideGhostForTarget,
713
+ unhideGhostForTarget: _unhideGhostForTarget,
714
+ cloneNowHidden: function cloneNowHidden() {
715
+ cloneHidden = true;
716
+ },
717
+ cloneNowShown: function cloneNowShown() {
718
+ cloneHidden = false;
719
+ },
720
+ dispatchSortableEvent: function dispatchSortableEvent(name) {
721
+ _dispatchEvent({
722
+ sortable,
723
+ name,
724
+ originalEvent
725
+ });
726
+ }
727
+ }, data));
728
+ };
729
+ function _dispatchEvent(info) {
730
+ dispatchEvent(_objectSpread2({
731
+ putSortable,
732
+ cloneEl,
733
+ targetEl: dragEl,
734
+ rootEl,
735
+ oldIndex,
736
+ oldDraggableIndex,
737
+ newIndex,
738
+ newDraggableIndex
739
+ }, info));
740
+ }
741
+ var dragEl, parentEl, ghostEl, rootEl, nextEl, lastDownEl, cloneEl, cloneHidden, oldIndex, newIndex, oldDraggableIndex, newDraggableIndex, activeGroup, putSortable, awaitingDragStarted = false, ignoreNextClick = false, sortables = [], tapEvt, touchEvt, lastDx, lastDy, tapDistanceLeft, tapDistanceTop, moved, lastTarget, lastDirection, pastFirstInvertThresh = false, isCircumstantialInvert = false, targetMoveDistance, ghostRelativeParent, ghostRelativeParentInitialScroll = [], _silent = false, savedInputChecked = [];
742
+ var documentExists = typeof document !== "undefined", PositionGhostAbsolutely = IOS, CSSFloatProperty = Edge || IE11OrLess ? "cssFloat" : "float", supportDraggable = documentExists && !ChromeForAndroid && !IOS && "draggable" in document.createElement("div"), supportCssPointerEvents = (function() {
743
+ if (!documentExists) return;
744
+ if (IE11OrLess) {
745
+ return false;
746
+ }
747
+ var el = document.createElement("x");
748
+ el.style.cssText = "pointer-events:auto";
749
+ return el.style.pointerEvents === "auto";
750
+ })(), _detectDirection = function _detectDirection2(el, options) {
751
+ var elCSS = css(el), elWidth = parseInt(elCSS.width) - parseInt(elCSS.paddingLeft) - parseInt(elCSS.paddingRight) - parseInt(elCSS.borderLeftWidth) - parseInt(elCSS.borderRightWidth), child1 = getChild(el, 0, options), child2 = getChild(el, 1, options), firstChildCSS = child1 && css(child1), secondChildCSS = child2 && css(child2), firstChildWidth = firstChildCSS && parseInt(firstChildCSS.marginLeft) + parseInt(firstChildCSS.marginRight) + getRect(child1).width, secondChildWidth = secondChildCSS && parseInt(secondChildCSS.marginLeft) + parseInt(secondChildCSS.marginRight) + getRect(child2).width;
752
+ if (elCSS.display === "flex") {
753
+ return elCSS.flexDirection === "column" || elCSS.flexDirection === "column-reverse" ? "vertical" : "horizontal";
754
+ }
755
+ if (elCSS.display === "grid") {
756
+ return elCSS.gridTemplateColumns.split(" ").length <= 1 ? "vertical" : "horizontal";
757
+ }
758
+ if (child1 && firstChildCSS["float"] && firstChildCSS["float"] !== "none") {
759
+ var touchingSideChild2 = firstChildCSS["float"] === "left" ? "left" : "right";
760
+ return child2 && (secondChildCSS.clear === "both" || secondChildCSS.clear === touchingSideChild2) ? "vertical" : "horizontal";
761
+ }
762
+ return child1 && (firstChildCSS.display === "block" || firstChildCSS.display === "flex" || firstChildCSS.display === "table" || firstChildCSS.display === "grid" || firstChildWidth >= elWidth && elCSS[CSSFloatProperty] === "none" || child2 && elCSS[CSSFloatProperty] === "none" && firstChildWidth + secondChildWidth > elWidth) ? "vertical" : "horizontal";
763
+ }, _dragElInRowColumn = function _dragElInRowColumn2(dragRect, targetRect, vertical) {
764
+ var dragElS1Opp = vertical ? dragRect.left : dragRect.top, dragElS2Opp = vertical ? dragRect.right : dragRect.bottom, dragElOppLength = vertical ? dragRect.width : dragRect.height, targetS1Opp = vertical ? targetRect.left : targetRect.top, targetS2Opp = vertical ? targetRect.right : targetRect.bottom, targetOppLength = vertical ? targetRect.width : targetRect.height;
765
+ return dragElS1Opp === targetS1Opp || dragElS2Opp === targetS2Opp || dragElS1Opp + dragElOppLength / 2 === targetS1Opp + targetOppLength / 2;
766
+ }, _detectNearestEmptySortable = function _detectNearestEmptySortable2(x, y) {
767
+ var ret;
768
+ sortables.some(function(sortable) {
769
+ var threshold = sortable[expando].options.emptyInsertThreshold;
770
+ if (!threshold || lastChild(sortable)) return;
771
+ var rect = getRect(sortable), insideHorizontally = x >= rect.left - threshold && x <= rect.right + threshold, insideVertically = y >= rect.top - threshold && y <= rect.bottom + threshold;
772
+ if (insideHorizontally && insideVertically) {
773
+ return ret = sortable;
774
+ }
775
+ });
776
+ return ret;
777
+ }, _prepareGroup = function _prepareGroup2(options) {
778
+ function toFn(value, pull) {
779
+ return function(to, from, dragEl2, evt) {
780
+ var sameGroup = to.options.group.name && from.options.group.name && to.options.group.name === from.options.group.name;
781
+ if (value == null && (pull || sameGroup)) {
782
+ return true;
783
+ } else if (value == null || value === false) {
784
+ return false;
785
+ } else if (pull && value === "clone") {
786
+ return value;
787
+ } else if (typeof value === "function") {
788
+ return toFn(value(to, from, dragEl2, evt), pull)(to, from, dragEl2, evt);
789
+ } else {
790
+ var otherGroup = (pull ? to : from).options.group.name;
791
+ return value === true || typeof value === "string" && value === otherGroup || value.join && value.indexOf(otherGroup) > -1;
792
+ }
793
+ };
794
+ }
795
+ var group = {};
796
+ var originalGroup = options.group;
797
+ if (!originalGroup || _typeof(originalGroup) != "object") {
798
+ originalGroup = {
799
+ name: originalGroup
800
+ };
801
+ }
802
+ group.name = originalGroup.name;
803
+ group.checkPull = toFn(originalGroup.pull, true);
804
+ group.checkPut = toFn(originalGroup.put);
805
+ group.revertClone = originalGroup.revertClone;
806
+ options.group = group;
807
+ }, _hideGhostForTarget = function _hideGhostForTarget2() {
808
+ if (!supportCssPointerEvents && ghostEl) {
809
+ css(ghostEl, "display", "none");
810
+ }
811
+ }, _unhideGhostForTarget = function _unhideGhostForTarget2() {
812
+ if (!supportCssPointerEvents && ghostEl) {
813
+ css(ghostEl, "display", "");
814
+ }
815
+ };
816
+ if (documentExists && !ChromeForAndroid) {
817
+ document.addEventListener("click", function(evt) {
818
+ if (ignoreNextClick) {
819
+ evt.preventDefault();
820
+ evt.stopPropagation && evt.stopPropagation();
821
+ evt.stopImmediatePropagation && evt.stopImmediatePropagation();
822
+ ignoreNextClick = false;
823
+ return false;
824
+ }
825
+ }, true);
826
+ }
827
+ var nearestEmptyInsertDetectEvent = function nearestEmptyInsertDetectEvent2(evt) {
828
+ if (dragEl) {
829
+ evt = evt.touches ? evt.touches[0] : evt;
830
+ var nearest = _detectNearestEmptySortable(evt.clientX, evt.clientY);
831
+ if (nearest) {
832
+ var event = {};
833
+ for (var i in evt) {
834
+ if (evt.hasOwnProperty(i)) {
835
+ event[i] = evt[i];
836
+ }
837
+ }
838
+ event.target = event.rootEl = nearest;
839
+ event.preventDefault = void 0;
840
+ event.stopPropagation = void 0;
841
+ nearest[expando]._onDragOver(event);
842
+ }
843
+ }
844
+ };
845
+ var _checkOutsideTargetEl = function _checkOutsideTargetEl2(evt) {
846
+ if (dragEl) {
847
+ dragEl.parentNode[expando]._isOutsideThisEl(evt.target);
848
+ }
849
+ };
850
+ function Sortable(el, options) {
851
+ if (!(el && el.nodeType && el.nodeType === 1)) {
852
+ throw "Sortable: `el` must be an HTMLElement, not ".concat({}.toString.call(el));
853
+ }
854
+ this.el = el;
855
+ this.options = options = _extends({}, options);
856
+ el[expando] = this;
857
+ var defaults2 = {
858
+ group: null,
859
+ sort: true,
860
+ disabled: false,
861
+ store: null,
862
+ handle: null,
863
+ draggable: /^[uo]l$/i.test(el.nodeName) ? ">li" : ">*",
864
+ swapThreshold: 1,
865
+ // percentage; 0 <= x <= 1
866
+ invertSwap: false,
867
+ // invert always
868
+ invertedSwapThreshold: null,
869
+ // will be set to same as swapThreshold if default
870
+ removeCloneOnHide: true,
871
+ direction: function direction() {
872
+ return _detectDirection(el, this.options);
873
+ },
874
+ ghostClass: "sortable-ghost",
875
+ chosenClass: "sortable-chosen",
876
+ dragClass: "sortable-drag",
877
+ ignore: "a, img",
878
+ filter: null,
879
+ preventOnFilter: true,
880
+ animation: 0,
881
+ easing: null,
882
+ setData: function setData(dataTransfer, dragEl2) {
883
+ dataTransfer.setData("Text", dragEl2.textContent);
884
+ },
885
+ dropBubble: false,
886
+ dragoverBubble: false,
887
+ dataIdAttr: "data-id",
888
+ delay: 0,
889
+ delayOnTouchOnly: false,
890
+ touchStartThreshold: (Number.parseInt ? Number : window).parseInt(window.devicePixelRatio, 10) || 1,
891
+ forceFallback: false,
892
+ fallbackClass: "sortable-fallback",
893
+ fallbackOnBody: false,
894
+ fallbackTolerance: 0,
895
+ fallbackOffset: {
896
+ x: 0,
897
+ y: 0
898
+ },
899
+ // Disabled on Safari: #1571; Enabled on Safari IOS: #2244
900
+ supportPointer: Sortable.supportPointer !== false && "PointerEvent" in window && (!Safari || IOS),
901
+ emptyInsertThreshold: 5
902
+ };
903
+ PluginManager.initializePlugins(this, el, defaults2);
904
+ for (var name in defaults2) {
905
+ !(name in options) && (options[name] = defaults2[name]);
906
+ }
907
+ _prepareGroup(options);
908
+ for (var fn in this) {
909
+ if (fn.charAt(0) === "_" && typeof this[fn] === "function") {
910
+ this[fn] = this[fn].bind(this);
911
+ }
912
+ }
913
+ this.nativeDraggable = options.forceFallback ? false : supportDraggable;
914
+ if (this.nativeDraggable) {
915
+ this.options.touchStartThreshold = 1;
916
+ }
917
+ if (options.supportPointer) {
918
+ on(el, "pointerdown", this._onTapStart);
919
+ } else {
920
+ on(el, "mousedown", this._onTapStart);
921
+ on(el, "touchstart", this._onTapStart);
922
+ }
923
+ if (this.nativeDraggable) {
924
+ on(el, "dragover", this);
925
+ on(el, "dragenter", this);
926
+ }
927
+ sortables.push(this.el);
928
+ options.store && options.store.get && this.sort(options.store.get(this) || []);
929
+ _extends(this, AnimationStateManager());
930
+ }
931
+ Sortable.prototype = /** @lends Sortable.prototype */
932
+ {
933
+ constructor: Sortable,
934
+ _isOutsideThisEl: function _isOutsideThisEl(target) {
935
+ if (!this.el.contains(target) && target !== this.el) {
936
+ lastTarget = null;
937
+ }
938
+ },
939
+ _getDirection: function _getDirection(evt, target) {
940
+ return typeof this.options.direction === "function" ? this.options.direction.call(this, evt, target, dragEl) : this.options.direction;
941
+ },
942
+ _onTapStart: function _onTapStart(evt) {
943
+ if (!evt.cancelable) return;
944
+ var _this = this, el = this.el, options = this.options, preventOnFilter = options.preventOnFilter, type = evt.type, touch = evt.touches && evt.touches[0] || evt.pointerType && evt.pointerType === "touch" && evt, target = (touch || evt).target, originalTarget = evt.target.shadowRoot && (evt.path && evt.path[0] || evt.composedPath && evt.composedPath()[0]) || target, filter = options.filter;
945
+ _saveInputCheckedState(el);
946
+ if (dragEl) {
947
+ return;
948
+ }
949
+ if (/mousedown|pointerdown/.test(type) && evt.button !== 0 || options.disabled) {
950
+ return;
951
+ }
952
+ if (originalTarget.isContentEditable) {
953
+ return;
954
+ }
955
+ if (!this.nativeDraggable && Safari && target && target.tagName.toUpperCase() === "SELECT") {
956
+ return;
957
+ }
958
+ target = closest(target, options.draggable, el, false);
959
+ if (target && target.animated) {
960
+ return;
961
+ }
962
+ if (lastDownEl === target) {
963
+ return;
964
+ }
965
+ oldIndex = index(target);
966
+ oldDraggableIndex = index(target, options.draggable);
967
+ if (typeof filter === "function") {
968
+ if (filter.call(this, evt, target, this)) {
969
+ _dispatchEvent({
970
+ sortable: _this,
971
+ rootEl: originalTarget,
972
+ name: "filter",
973
+ targetEl: target,
974
+ toEl: el,
975
+ fromEl: el
976
+ });
977
+ pluginEvent2("filter", _this, {
978
+ evt
979
+ });
980
+ preventOnFilter && evt.preventDefault();
981
+ return;
982
+ }
983
+ } else if (filter) {
984
+ filter = filter.split(",").some(function(criteria) {
985
+ criteria = closest(originalTarget, criteria.trim(), el, false);
986
+ if (criteria) {
987
+ _dispatchEvent({
988
+ sortable: _this,
989
+ rootEl: criteria,
990
+ name: "filter",
991
+ targetEl: target,
992
+ fromEl: el,
993
+ toEl: el
994
+ });
995
+ pluginEvent2("filter", _this, {
996
+ evt
997
+ });
998
+ return true;
999
+ }
1000
+ });
1001
+ if (filter) {
1002
+ preventOnFilter && evt.preventDefault();
1003
+ return;
1004
+ }
1005
+ }
1006
+ if (options.handle && !closest(originalTarget, options.handle, el, false)) {
1007
+ return;
1008
+ }
1009
+ this._prepareDragStart(evt, touch, target);
1010
+ },
1011
+ _prepareDragStart: function _prepareDragStart(evt, touch, target) {
1012
+ var _this = this, el = _this.el, options = _this.options, ownerDocument = el.ownerDocument, dragStartFn;
1013
+ if (target && !dragEl && target.parentNode === el) {
1014
+ var dragRect = getRect(target);
1015
+ rootEl = el;
1016
+ dragEl = target;
1017
+ parentEl = dragEl.parentNode;
1018
+ nextEl = dragEl.nextSibling;
1019
+ lastDownEl = target;
1020
+ activeGroup = options.group;
1021
+ Sortable.dragged = dragEl;
1022
+ tapEvt = {
1023
+ target: dragEl,
1024
+ clientX: (touch || evt).clientX,
1025
+ clientY: (touch || evt).clientY
1026
+ };
1027
+ tapDistanceLeft = tapEvt.clientX - dragRect.left;
1028
+ tapDistanceTop = tapEvt.clientY - dragRect.top;
1029
+ this._lastX = (touch || evt).clientX;
1030
+ this._lastY = (touch || evt).clientY;
1031
+ dragEl.style["will-change"] = "all";
1032
+ dragStartFn = function dragStartFn2() {
1033
+ pluginEvent2("delayEnded", _this, {
1034
+ evt
1035
+ });
1036
+ if (Sortable.eventCanceled) {
1037
+ _this._onDrop();
1038
+ return;
1039
+ }
1040
+ _this._disableDelayedDragEvents();
1041
+ if (!FireFox && _this.nativeDraggable) {
1042
+ dragEl.draggable = true;
1043
+ }
1044
+ _this._triggerDragStart(evt, touch);
1045
+ _dispatchEvent({
1046
+ sortable: _this,
1047
+ name: "choose",
1048
+ originalEvent: evt
1049
+ });
1050
+ toggleClass(dragEl, options.chosenClass, true);
1051
+ };
1052
+ options.ignore.split(",").forEach(function(criteria) {
1053
+ find(dragEl, criteria.trim(), _disableDraggable);
1054
+ });
1055
+ on(ownerDocument, "dragover", nearestEmptyInsertDetectEvent);
1056
+ on(ownerDocument, "mousemove", nearestEmptyInsertDetectEvent);
1057
+ on(ownerDocument, "touchmove", nearestEmptyInsertDetectEvent);
1058
+ if (options.supportPointer) {
1059
+ on(ownerDocument, "pointerup", _this._onDrop);
1060
+ !this.nativeDraggable && on(ownerDocument, "pointercancel", _this._onDrop);
1061
+ } else {
1062
+ on(ownerDocument, "mouseup", _this._onDrop);
1063
+ on(ownerDocument, "touchend", _this._onDrop);
1064
+ on(ownerDocument, "touchcancel", _this._onDrop);
1065
+ }
1066
+ if (FireFox && this.nativeDraggable) {
1067
+ this.options.touchStartThreshold = 4;
1068
+ dragEl.draggable = true;
1069
+ }
1070
+ pluginEvent2("delayStart", this, {
1071
+ evt
1072
+ });
1073
+ if (options.delay && (!options.delayOnTouchOnly || touch) && (!this.nativeDraggable || !(Edge || IE11OrLess))) {
1074
+ if (Sortable.eventCanceled) {
1075
+ this._onDrop();
1076
+ return;
1077
+ }
1078
+ if (options.supportPointer) {
1079
+ on(ownerDocument, "pointerup", _this._disableDelayedDrag);
1080
+ on(ownerDocument, "pointercancel", _this._disableDelayedDrag);
1081
+ } else {
1082
+ on(ownerDocument, "mouseup", _this._disableDelayedDrag);
1083
+ on(ownerDocument, "touchend", _this._disableDelayedDrag);
1084
+ on(ownerDocument, "touchcancel", _this._disableDelayedDrag);
1085
+ }
1086
+ on(ownerDocument, "mousemove", _this._delayedDragTouchMoveHandler);
1087
+ on(ownerDocument, "touchmove", _this._delayedDragTouchMoveHandler);
1088
+ options.supportPointer && on(ownerDocument, "pointermove", _this._delayedDragTouchMoveHandler);
1089
+ _this._dragStartTimer = setTimeout(dragStartFn, options.delay);
1090
+ } else {
1091
+ dragStartFn();
1092
+ }
1093
+ }
1094
+ },
1095
+ _delayedDragTouchMoveHandler: function _delayedDragTouchMoveHandler(e) {
1096
+ var touch = e.touches ? e.touches[0] : e;
1097
+ if (Math.max(Math.abs(touch.clientX - this._lastX), Math.abs(touch.clientY - this._lastY)) >= Math.floor(this.options.touchStartThreshold / (this.nativeDraggable && window.devicePixelRatio || 1))) {
1098
+ this._disableDelayedDrag();
1099
+ }
1100
+ },
1101
+ _disableDelayedDrag: function _disableDelayedDrag() {
1102
+ dragEl && _disableDraggable(dragEl);
1103
+ clearTimeout(this._dragStartTimer);
1104
+ this._disableDelayedDragEvents();
1105
+ },
1106
+ _disableDelayedDragEvents: function _disableDelayedDragEvents() {
1107
+ var ownerDocument = this.el.ownerDocument;
1108
+ off(ownerDocument, "mouseup", this._disableDelayedDrag);
1109
+ off(ownerDocument, "touchend", this._disableDelayedDrag);
1110
+ off(ownerDocument, "touchcancel", this._disableDelayedDrag);
1111
+ off(ownerDocument, "pointerup", this._disableDelayedDrag);
1112
+ off(ownerDocument, "pointercancel", this._disableDelayedDrag);
1113
+ off(ownerDocument, "mousemove", this._delayedDragTouchMoveHandler);
1114
+ off(ownerDocument, "touchmove", this._delayedDragTouchMoveHandler);
1115
+ off(ownerDocument, "pointermove", this._delayedDragTouchMoveHandler);
1116
+ },
1117
+ _triggerDragStart: function _triggerDragStart(evt, touch) {
1118
+ touch = touch || evt.pointerType == "touch" && evt;
1119
+ if (!this.nativeDraggable || touch) {
1120
+ if (this.options.supportPointer) {
1121
+ on(document, "pointermove", this._onTouchMove);
1122
+ } else if (touch) {
1123
+ on(document, "touchmove", this._onTouchMove);
1124
+ } else {
1125
+ on(document, "mousemove", this._onTouchMove);
1126
+ }
1127
+ } else {
1128
+ on(dragEl, "dragend", this);
1129
+ on(rootEl, "dragstart", this._onDragStart);
1130
+ }
1131
+ try {
1132
+ if (document.selection) {
1133
+ _nextTick(function() {
1134
+ document.selection.empty();
1135
+ });
1136
+ } else {
1137
+ window.getSelection().removeAllRanges();
1138
+ }
1139
+ } catch (err) {
1140
+ }
1141
+ },
1142
+ _dragStarted: function _dragStarted(fallback, evt) {
1143
+ awaitingDragStarted = false;
1144
+ if (rootEl && dragEl) {
1145
+ pluginEvent2("dragStarted", this, {
1146
+ evt
1147
+ });
1148
+ if (this.nativeDraggable) {
1149
+ on(document, "dragover", _checkOutsideTargetEl);
1150
+ }
1151
+ var options = this.options;
1152
+ !fallback && toggleClass(dragEl, options.dragClass, false);
1153
+ toggleClass(dragEl, options.ghostClass, true);
1154
+ Sortable.active = this;
1155
+ fallback && this._appendGhost();
1156
+ _dispatchEvent({
1157
+ sortable: this,
1158
+ name: "start",
1159
+ originalEvent: evt
1160
+ });
1161
+ } else {
1162
+ this._nulling();
1163
+ }
1164
+ },
1165
+ _emulateDragOver: function _emulateDragOver() {
1166
+ if (touchEvt) {
1167
+ this._lastX = touchEvt.clientX;
1168
+ this._lastY = touchEvt.clientY;
1169
+ _hideGhostForTarget();
1170
+ var target = document.elementFromPoint(touchEvt.clientX, touchEvt.clientY);
1171
+ var parent = target;
1172
+ while (target && target.shadowRoot) {
1173
+ target = target.shadowRoot.elementFromPoint(touchEvt.clientX, touchEvt.clientY);
1174
+ if (target === parent) break;
1175
+ parent = target;
1176
+ }
1177
+ dragEl.parentNode[expando]._isOutsideThisEl(target);
1178
+ if (parent) {
1179
+ do {
1180
+ if (parent[expando]) {
1181
+ var inserted = void 0;
1182
+ inserted = parent[expando]._onDragOver({
1183
+ clientX: touchEvt.clientX,
1184
+ clientY: touchEvt.clientY,
1185
+ target,
1186
+ rootEl: parent
1187
+ });
1188
+ if (inserted && !this.options.dragoverBubble) {
1189
+ break;
1190
+ }
1191
+ }
1192
+ target = parent;
1193
+ } while (parent = getParentOrHost(parent));
1194
+ }
1195
+ _unhideGhostForTarget();
1196
+ }
1197
+ },
1198
+ _onTouchMove: function _onTouchMove(evt) {
1199
+ if (tapEvt) {
1200
+ var options = this.options, fallbackTolerance = options.fallbackTolerance, fallbackOffset = options.fallbackOffset, touch = evt.touches ? evt.touches[0] : evt, ghostMatrix = ghostEl && matrix(ghostEl, true), scaleX = ghostEl && ghostMatrix && ghostMatrix.a, scaleY = ghostEl && ghostMatrix && ghostMatrix.d, relativeScrollOffset = PositionGhostAbsolutely && ghostRelativeParent && getRelativeScrollOffset(ghostRelativeParent), dx = (touch.clientX - tapEvt.clientX + fallbackOffset.x) / (scaleX || 1) + (relativeScrollOffset ? relativeScrollOffset[0] - ghostRelativeParentInitialScroll[0] : 0) / (scaleX || 1), dy = (touch.clientY - tapEvt.clientY + fallbackOffset.y) / (scaleY || 1) + (relativeScrollOffset ? relativeScrollOffset[1] - ghostRelativeParentInitialScroll[1] : 0) / (scaleY || 1);
1201
+ if (!Sortable.active && !awaitingDragStarted) {
1202
+ if (fallbackTolerance && Math.max(Math.abs(touch.clientX - this._lastX), Math.abs(touch.clientY - this._lastY)) < fallbackTolerance) {
1203
+ return;
1204
+ }
1205
+ this._onDragStart(evt, true);
1206
+ }
1207
+ if (ghostEl) {
1208
+ if (ghostMatrix) {
1209
+ ghostMatrix.e += dx - (lastDx || 0);
1210
+ ghostMatrix.f += dy - (lastDy || 0);
1211
+ } else {
1212
+ ghostMatrix = {
1213
+ a: 1,
1214
+ b: 0,
1215
+ c: 0,
1216
+ d: 1,
1217
+ e: dx,
1218
+ f: dy
1219
+ };
1220
+ }
1221
+ var cssMatrix = "matrix(".concat(ghostMatrix.a, ",").concat(ghostMatrix.b, ",").concat(ghostMatrix.c, ",").concat(ghostMatrix.d, ",").concat(ghostMatrix.e, ",").concat(ghostMatrix.f, ")");
1222
+ css(ghostEl, "webkitTransform", cssMatrix);
1223
+ css(ghostEl, "mozTransform", cssMatrix);
1224
+ css(ghostEl, "msTransform", cssMatrix);
1225
+ css(ghostEl, "transform", cssMatrix);
1226
+ lastDx = dx;
1227
+ lastDy = dy;
1228
+ touchEvt = touch;
1229
+ }
1230
+ evt.cancelable && evt.preventDefault();
1231
+ }
1232
+ },
1233
+ _appendGhost: function _appendGhost() {
1234
+ if (!ghostEl) {
1235
+ var container = this.options.fallbackOnBody ? document.body : rootEl, rect = getRect(dragEl, true, PositionGhostAbsolutely, true, container), options = this.options;
1236
+ if (PositionGhostAbsolutely) {
1237
+ ghostRelativeParent = container;
1238
+ while (css(ghostRelativeParent, "position") === "static" && css(ghostRelativeParent, "transform") === "none" && ghostRelativeParent !== document) {
1239
+ ghostRelativeParent = ghostRelativeParent.parentNode;
1240
+ }
1241
+ if (ghostRelativeParent !== document.body && ghostRelativeParent !== document.documentElement) {
1242
+ if (ghostRelativeParent === document) ghostRelativeParent = getWindowScrollingElement();
1243
+ rect.top += ghostRelativeParent.scrollTop;
1244
+ rect.left += ghostRelativeParent.scrollLeft;
1245
+ } else {
1246
+ ghostRelativeParent = getWindowScrollingElement();
1247
+ }
1248
+ ghostRelativeParentInitialScroll = getRelativeScrollOffset(ghostRelativeParent);
1249
+ }
1250
+ ghostEl = dragEl.cloneNode(true);
1251
+ toggleClass(ghostEl, options.ghostClass, false);
1252
+ toggleClass(ghostEl, options.fallbackClass, true);
1253
+ toggleClass(ghostEl, options.dragClass, true);
1254
+ css(ghostEl, "transition", "");
1255
+ css(ghostEl, "transform", "");
1256
+ css(ghostEl, "box-sizing", "border-box");
1257
+ css(ghostEl, "margin", 0);
1258
+ css(ghostEl, "top", rect.top);
1259
+ css(ghostEl, "left", rect.left);
1260
+ css(ghostEl, "width", rect.width);
1261
+ css(ghostEl, "height", rect.height);
1262
+ css(ghostEl, "opacity", "0.8");
1263
+ css(ghostEl, "position", PositionGhostAbsolutely ? "absolute" : "fixed");
1264
+ css(ghostEl, "zIndex", "100000");
1265
+ css(ghostEl, "pointerEvents", "none");
1266
+ Sortable.ghost = ghostEl;
1267
+ container.appendChild(ghostEl);
1268
+ css(ghostEl, "transform-origin", tapDistanceLeft / parseInt(ghostEl.style.width) * 100 + "% " + tapDistanceTop / parseInt(ghostEl.style.height) * 100 + "%");
1269
+ }
1270
+ },
1271
+ _onDragStart: function _onDragStart(evt, fallback) {
1272
+ var _this = this;
1273
+ var dataTransfer = evt.dataTransfer;
1274
+ var options = _this.options;
1275
+ pluginEvent2("dragStart", this, {
1276
+ evt
1277
+ });
1278
+ if (Sortable.eventCanceled) {
1279
+ this._onDrop();
1280
+ return;
1281
+ }
1282
+ pluginEvent2("setupClone", this);
1283
+ if (!Sortable.eventCanceled) {
1284
+ cloneEl = clone(dragEl);
1285
+ cloneEl.removeAttribute("id");
1286
+ cloneEl.draggable = false;
1287
+ cloneEl.style["will-change"] = "";
1288
+ this._hideClone();
1289
+ toggleClass(cloneEl, this.options.chosenClass, false);
1290
+ Sortable.clone = cloneEl;
1291
+ }
1292
+ _this.cloneId = _nextTick(function() {
1293
+ pluginEvent2("clone", _this);
1294
+ if (Sortable.eventCanceled) return;
1295
+ if (!_this.options.removeCloneOnHide) {
1296
+ rootEl.insertBefore(cloneEl, dragEl);
1297
+ }
1298
+ _this._hideClone();
1299
+ _dispatchEvent({
1300
+ sortable: _this,
1301
+ name: "clone"
1302
+ });
1303
+ });
1304
+ !fallback && toggleClass(dragEl, options.dragClass, true);
1305
+ if (fallback) {
1306
+ ignoreNextClick = true;
1307
+ _this._loopId = setInterval(_this._emulateDragOver, 50);
1308
+ } else {
1309
+ off(document, "mouseup", _this._onDrop);
1310
+ off(document, "touchend", _this._onDrop);
1311
+ off(document, "touchcancel", _this._onDrop);
1312
+ if (dataTransfer) {
1313
+ dataTransfer.effectAllowed = "move";
1314
+ options.setData && options.setData.call(_this, dataTransfer, dragEl);
1315
+ }
1316
+ on(document, "drop", _this);
1317
+ css(dragEl, "transform", "translateZ(0)");
1318
+ }
1319
+ awaitingDragStarted = true;
1320
+ _this._dragStartId = _nextTick(_this._dragStarted.bind(_this, fallback, evt));
1321
+ on(document, "selectstart", _this);
1322
+ moved = true;
1323
+ window.getSelection().removeAllRanges();
1324
+ if (Safari) {
1325
+ css(document.body, "user-select", "none");
1326
+ }
1327
+ },
1328
+ // Returns true - if no further action is needed (either inserted or another condition)
1329
+ _onDragOver: function _onDragOver(evt) {
1330
+ var el = this.el, target = evt.target, dragRect, targetRect, revert, options = this.options, group = options.group, activeSortable = Sortable.active, isOwner = activeGroup === group, canSort = options.sort, fromSortable = putSortable || activeSortable, vertical, _this = this, completedFired = false;
1331
+ if (_silent) return;
1332
+ function dragOverEvent(name, extra) {
1333
+ pluginEvent2(name, _this, _objectSpread2({
1334
+ evt,
1335
+ isOwner,
1336
+ axis: vertical ? "vertical" : "horizontal",
1337
+ revert,
1338
+ dragRect,
1339
+ targetRect,
1340
+ canSort,
1341
+ fromSortable,
1342
+ target,
1343
+ completed,
1344
+ onMove: function onMove(target2, after2) {
1345
+ return _onMove(rootEl, el, dragEl, dragRect, target2, getRect(target2), evt, after2);
1346
+ },
1347
+ changed
1348
+ }, extra));
1349
+ }
1350
+ function capture() {
1351
+ dragOverEvent("dragOverAnimationCapture");
1352
+ _this.captureAnimationState();
1353
+ if (_this !== fromSortable) {
1354
+ fromSortable.captureAnimationState();
1355
+ }
1356
+ }
1357
+ function completed(insertion) {
1358
+ dragOverEvent("dragOverCompleted", {
1359
+ insertion
1360
+ });
1361
+ if (insertion) {
1362
+ if (isOwner) {
1363
+ activeSortable._hideClone();
1364
+ } else {
1365
+ activeSortable._showClone(_this);
1366
+ }
1367
+ if (_this !== fromSortable) {
1368
+ toggleClass(dragEl, putSortable ? putSortable.options.ghostClass : activeSortable.options.ghostClass, false);
1369
+ toggleClass(dragEl, options.ghostClass, true);
1370
+ }
1371
+ if (putSortable !== _this && _this !== Sortable.active) {
1372
+ putSortable = _this;
1373
+ } else if (_this === Sortable.active && putSortable) {
1374
+ putSortable = null;
1375
+ }
1376
+ if (fromSortable === _this) {
1377
+ _this._ignoreWhileAnimating = target;
1378
+ }
1379
+ _this.animateAll(function() {
1380
+ dragOverEvent("dragOverAnimationComplete");
1381
+ _this._ignoreWhileAnimating = null;
1382
+ });
1383
+ if (_this !== fromSortable) {
1384
+ fromSortable.animateAll();
1385
+ fromSortable._ignoreWhileAnimating = null;
1386
+ }
1387
+ }
1388
+ if (target === dragEl && !dragEl.animated || target === el && !target.animated) {
1389
+ lastTarget = null;
1390
+ }
1391
+ if (!options.dragoverBubble && !evt.rootEl && target !== document) {
1392
+ dragEl.parentNode[expando]._isOutsideThisEl(evt.target);
1393
+ !insertion && nearestEmptyInsertDetectEvent(evt);
1394
+ }
1395
+ !options.dragoverBubble && evt.stopPropagation && evt.stopPropagation();
1396
+ return completedFired = true;
1397
+ }
1398
+ function changed() {
1399
+ newIndex = index(dragEl);
1400
+ newDraggableIndex = index(dragEl, options.draggable);
1401
+ _dispatchEvent({
1402
+ sortable: _this,
1403
+ name: "change",
1404
+ toEl: el,
1405
+ newIndex,
1406
+ newDraggableIndex,
1407
+ originalEvent: evt
1408
+ });
1409
+ }
1410
+ if (evt.preventDefault !== void 0) {
1411
+ evt.cancelable && evt.preventDefault();
1412
+ }
1413
+ target = closest(target, options.draggable, el, true);
1414
+ dragOverEvent("dragOver");
1415
+ if (Sortable.eventCanceled) return completedFired;
1416
+ if (dragEl.contains(evt.target) || target.animated && target.animatingX && target.animatingY || _this._ignoreWhileAnimating === target) {
1417
+ return completed(false);
1418
+ }
1419
+ ignoreNextClick = false;
1420
+ if (activeSortable && !options.disabled && (isOwner ? canSort || (revert = parentEl !== rootEl) : putSortable === this || (this.lastPutMode = activeGroup.checkPull(this, activeSortable, dragEl, evt)) && group.checkPut(this, activeSortable, dragEl, evt))) {
1421
+ vertical = this._getDirection(evt, target) === "vertical";
1422
+ dragRect = getRect(dragEl);
1423
+ dragOverEvent("dragOverValid");
1424
+ if (Sortable.eventCanceled) return completedFired;
1425
+ if (revert) {
1426
+ parentEl = rootEl;
1427
+ capture();
1428
+ this._hideClone();
1429
+ dragOverEvent("revert");
1430
+ if (!Sortable.eventCanceled) {
1431
+ if (nextEl) {
1432
+ rootEl.insertBefore(dragEl, nextEl);
1433
+ } else {
1434
+ rootEl.appendChild(dragEl);
1435
+ }
1436
+ }
1437
+ return completed(true);
1438
+ }
1439
+ var elLastChild = lastChild(el, options.draggable);
1440
+ if (!elLastChild || _ghostIsLast(evt, vertical, this) && !elLastChild.animated) {
1441
+ if (elLastChild === dragEl) {
1442
+ return completed(false);
1443
+ }
1444
+ if (elLastChild && el === evt.target) {
1445
+ target = elLastChild;
1446
+ }
1447
+ if (target) {
1448
+ targetRect = getRect(target);
1449
+ }
1450
+ if (_onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, !!target) !== false) {
1451
+ capture();
1452
+ if (elLastChild && elLastChild.nextSibling) {
1453
+ el.insertBefore(dragEl, elLastChild.nextSibling);
1454
+ } else {
1455
+ el.appendChild(dragEl);
1456
+ }
1457
+ parentEl = el;
1458
+ changed();
1459
+ return completed(true);
1460
+ }
1461
+ } else if (elLastChild && _ghostIsFirst(evt, vertical, this)) {
1462
+ var firstChild = getChild(el, 0, options, true);
1463
+ if (firstChild === dragEl) {
1464
+ return completed(false);
1465
+ }
1466
+ target = firstChild;
1467
+ targetRect = getRect(target);
1468
+ if (_onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, false) !== false) {
1469
+ capture();
1470
+ el.insertBefore(dragEl, firstChild);
1471
+ parentEl = el;
1472
+ changed();
1473
+ return completed(true);
1474
+ }
1475
+ } else if (target.parentNode === el) {
1476
+ targetRect = getRect(target);
1477
+ var direction = 0, targetBeforeFirstSwap, differentLevel = dragEl.parentNode !== el, differentRowCol = !_dragElInRowColumn(dragEl.animated && dragEl.toRect || dragRect, target.animated && target.toRect || targetRect, vertical), side1 = vertical ? "top" : "left", scrolledPastTop = isScrolledPast(target, "top", "top") || isScrolledPast(dragEl, "top", "top"), scrollBefore = scrolledPastTop ? scrolledPastTop.scrollTop : void 0;
1478
+ if (lastTarget !== target) {
1479
+ targetBeforeFirstSwap = targetRect[side1];
1480
+ pastFirstInvertThresh = false;
1481
+ isCircumstantialInvert = !differentRowCol && options.invertSwap || differentLevel;
1482
+ }
1483
+ direction = _getSwapDirection(evt, target, targetRect, vertical, differentRowCol ? 1 : options.swapThreshold, options.invertedSwapThreshold == null ? options.swapThreshold : options.invertedSwapThreshold, isCircumstantialInvert, lastTarget === target);
1484
+ var sibling;
1485
+ if (direction !== 0) {
1486
+ var dragIndex = index(dragEl);
1487
+ do {
1488
+ dragIndex -= direction;
1489
+ sibling = parentEl.children[dragIndex];
1490
+ } while (sibling && (css(sibling, "display") === "none" || sibling === ghostEl));
1491
+ }
1492
+ if (direction === 0 || sibling === target) {
1493
+ return completed(false);
1494
+ }
1495
+ lastTarget = target;
1496
+ lastDirection = direction;
1497
+ var nextSibling = target.nextElementSibling, after = false;
1498
+ after = direction === 1;
1499
+ var moveVector = _onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, after);
1500
+ if (moveVector !== false) {
1501
+ if (moveVector === 1 || moveVector === -1) {
1502
+ after = moveVector === 1;
1503
+ }
1504
+ _silent = true;
1505
+ setTimeout(_unsilent, 30);
1506
+ capture();
1507
+ if (after && !nextSibling) {
1508
+ el.appendChild(dragEl);
1509
+ } else {
1510
+ target.parentNode.insertBefore(dragEl, after ? nextSibling : target);
1511
+ }
1512
+ if (scrolledPastTop) {
1513
+ scrollBy(scrolledPastTop, 0, scrollBefore - scrolledPastTop.scrollTop);
1514
+ }
1515
+ parentEl = dragEl.parentNode;
1516
+ if (targetBeforeFirstSwap !== void 0 && !isCircumstantialInvert) {
1517
+ targetMoveDistance = Math.abs(targetBeforeFirstSwap - getRect(target)[side1]);
1518
+ }
1519
+ changed();
1520
+ return completed(true);
1521
+ }
1522
+ }
1523
+ if (el.contains(dragEl)) {
1524
+ return completed(false);
1525
+ }
1526
+ }
1527
+ return false;
1528
+ },
1529
+ _ignoreWhileAnimating: null,
1530
+ _offMoveEvents: function _offMoveEvents() {
1531
+ off(document, "mousemove", this._onTouchMove);
1532
+ off(document, "touchmove", this._onTouchMove);
1533
+ off(document, "pointermove", this._onTouchMove);
1534
+ off(document, "dragover", nearestEmptyInsertDetectEvent);
1535
+ off(document, "mousemove", nearestEmptyInsertDetectEvent);
1536
+ off(document, "touchmove", nearestEmptyInsertDetectEvent);
1537
+ },
1538
+ _offUpEvents: function _offUpEvents() {
1539
+ var ownerDocument = this.el.ownerDocument;
1540
+ off(ownerDocument, "mouseup", this._onDrop);
1541
+ off(ownerDocument, "touchend", this._onDrop);
1542
+ off(ownerDocument, "pointerup", this._onDrop);
1543
+ off(ownerDocument, "pointercancel", this._onDrop);
1544
+ off(ownerDocument, "touchcancel", this._onDrop);
1545
+ off(document, "selectstart", this);
1546
+ },
1547
+ _onDrop: function _onDrop(evt) {
1548
+ var el = this.el, options = this.options;
1549
+ newIndex = index(dragEl);
1550
+ newDraggableIndex = index(dragEl, options.draggable);
1551
+ pluginEvent2("drop", this, {
1552
+ evt
1553
+ });
1554
+ parentEl = dragEl && dragEl.parentNode;
1555
+ newIndex = index(dragEl);
1556
+ newDraggableIndex = index(dragEl, options.draggable);
1557
+ if (Sortable.eventCanceled) {
1558
+ this._nulling();
1559
+ return;
1560
+ }
1561
+ awaitingDragStarted = false;
1562
+ isCircumstantialInvert = false;
1563
+ pastFirstInvertThresh = false;
1564
+ clearInterval(this._loopId);
1565
+ clearTimeout(this._dragStartTimer);
1566
+ _cancelNextTick(this.cloneId);
1567
+ _cancelNextTick(this._dragStartId);
1568
+ if (this.nativeDraggable) {
1569
+ off(document, "drop", this);
1570
+ off(el, "dragstart", this._onDragStart);
1571
+ }
1572
+ this._offMoveEvents();
1573
+ this._offUpEvents();
1574
+ if (Safari) {
1575
+ css(document.body, "user-select", "");
1576
+ }
1577
+ css(dragEl, "transform", "");
1578
+ if (evt) {
1579
+ if (moved) {
1580
+ evt.cancelable && evt.preventDefault();
1581
+ !options.dropBubble && evt.stopPropagation();
1582
+ }
1583
+ ghostEl && ghostEl.parentNode && ghostEl.parentNode.removeChild(ghostEl);
1584
+ if (rootEl === parentEl || putSortable && putSortable.lastPutMode !== "clone") {
1585
+ cloneEl && cloneEl.parentNode && cloneEl.parentNode.removeChild(cloneEl);
1586
+ }
1587
+ if (dragEl) {
1588
+ if (this.nativeDraggable) {
1589
+ off(dragEl, "dragend", this);
1590
+ }
1591
+ _disableDraggable(dragEl);
1592
+ dragEl.style["will-change"] = "";
1593
+ if (moved && !awaitingDragStarted) {
1594
+ toggleClass(dragEl, putSortable ? putSortable.options.ghostClass : this.options.ghostClass, false);
1595
+ }
1596
+ toggleClass(dragEl, this.options.chosenClass, false);
1597
+ _dispatchEvent({
1598
+ sortable: this,
1599
+ name: "unchoose",
1600
+ toEl: parentEl,
1601
+ newIndex: null,
1602
+ newDraggableIndex: null,
1603
+ originalEvent: evt
1604
+ });
1605
+ if (rootEl !== parentEl) {
1606
+ if (newIndex >= 0) {
1607
+ _dispatchEvent({
1608
+ rootEl: parentEl,
1609
+ name: "add",
1610
+ toEl: parentEl,
1611
+ fromEl: rootEl,
1612
+ originalEvent: evt
1613
+ });
1614
+ _dispatchEvent({
1615
+ sortable: this,
1616
+ name: "remove",
1617
+ toEl: parentEl,
1618
+ originalEvent: evt
1619
+ });
1620
+ _dispatchEvent({
1621
+ rootEl: parentEl,
1622
+ name: "sort",
1623
+ toEl: parentEl,
1624
+ fromEl: rootEl,
1625
+ originalEvent: evt
1626
+ });
1627
+ _dispatchEvent({
1628
+ sortable: this,
1629
+ name: "sort",
1630
+ toEl: parentEl,
1631
+ originalEvent: evt
1632
+ });
1633
+ }
1634
+ putSortable && putSortable.save();
1635
+ } else {
1636
+ if (newIndex !== oldIndex) {
1637
+ if (newIndex >= 0) {
1638
+ _dispatchEvent({
1639
+ sortable: this,
1640
+ name: "update",
1641
+ toEl: parentEl,
1642
+ originalEvent: evt
1643
+ });
1644
+ _dispatchEvent({
1645
+ sortable: this,
1646
+ name: "sort",
1647
+ toEl: parentEl,
1648
+ originalEvent: evt
1649
+ });
1650
+ }
1651
+ }
1652
+ }
1653
+ if (Sortable.active) {
1654
+ if (newIndex == null || newIndex === -1) {
1655
+ newIndex = oldIndex;
1656
+ newDraggableIndex = oldDraggableIndex;
1657
+ }
1658
+ _dispatchEvent({
1659
+ sortable: this,
1660
+ name: "end",
1661
+ toEl: parentEl,
1662
+ originalEvent: evt
1663
+ });
1664
+ this.save();
1665
+ }
1666
+ }
1667
+ }
1668
+ this._nulling();
1669
+ },
1670
+ _nulling: function _nulling() {
1671
+ pluginEvent2("nulling", this);
1672
+ rootEl = dragEl = parentEl = ghostEl = nextEl = cloneEl = lastDownEl = cloneHidden = tapEvt = touchEvt = moved = newIndex = newDraggableIndex = oldIndex = oldDraggableIndex = lastTarget = lastDirection = putSortable = activeGroup = Sortable.dragged = Sortable.ghost = Sortable.clone = Sortable.active = null;
1673
+ savedInputChecked.forEach(function(el) {
1674
+ el.checked = true;
1675
+ });
1676
+ savedInputChecked.length = lastDx = lastDy = 0;
1677
+ },
1678
+ handleEvent: function handleEvent(evt) {
1679
+ switch (evt.type) {
1680
+ case "drop":
1681
+ case "dragend":
1682
+ this._onDrop(evt);
1683
+ break;
1684
+ case "dragenter":
1685
+ case "dragover":
1686
+ if (dragEl) {
1687
+ this._onDragOver(evt);
1688
+ _globalDragOver(evt);
1689
+ }
1690
+ break;
1691
+ case "selectstart":
1692
+ evt.preventDefault();
1693
+ break;
1694
+ }
1695
+ },
1696
+ /**
1697
+ * Serializes the item into an array of string.
1698
+ * @returns {String[]}
1699
+ */
1700
+ toArray: function toArray() {
1701
+ var order = [], el, children = this.el.children, i = 0, n = children.length, options = this.options;
1702
+ for (; i < n; i++) {
1703
+ el = children[i];
1704
+ if (closest(el, options.draggable, this.el, false)) {
1705
+ order.push(el.getAttribute(options.dataIdAttr) || _generateId(el));
1706
+ }
1707
+ }
1708
+ return order;
1709
+ },
1710
+ /**
1711
+ * Sorts the elements according to the array.
1712
+ * @param {String[]} order order of the items
1713
+ */
1714
+ sort: function sort(order, useAnimation) {
1715
+ var items = {}, rootEl2 = this.el;
1716
+ this.toArray().forEach(function(id, i) {
1717
+ var el = rootEl2.children[i];
1718
+ if (closest(el, this.options.draggable, rootEl2, false)) {
1719
+ items[id] = el;
1720
+ }
1721
+ }, this);
1722
+ useAnimation && this.captureAnimationState();
1723
+ order.forEach(function(id) {
1724
+ if (items[id]) {
1725
+ rootEl2.removeChild(items[id]);
1726
+ rootEl2.appendChild(items[id]);
1727
+ }
1728
+ });
1729
+ useAnimation && this.animateAll();
1730
+ },
1731
+ /**
1732
+ * Save the current sorting
1733
+ */
1734
+ save: function save() {
1735
+ var store = this.options.store;
1736
+ store && store.set && store.set(this);
1737
+ },
1738
+ /**
1739
+ * For each element in the set, get the first element that matches the selector by testing the element itself and traversing up through its ancestors in the DOM tree.
1740
+ * @param {HTMLElement} el
1741
+ * @param {String} [selector] default: `options.draggable`
1742
+ * @returns {HTMLElement|null}
1743
+ */
1744
+ closest: function closest$1(el, selector) {
1745
+ return closest(el, selector || this.options.draggable, this.el, false);
1746
+ },
1747
+ /**
1748
+ * Set/get option
1749
+ * @param {string} name
1750
+ * @param {*} [value]
1751
+ * @returns {*}
1752
+ */
1753
+ option: function option(name, value) {
1754
+ var options = this.options;
1755
+ if (value === void 0) {
1756
+ return options[name];
1757
+ } else {
1758
+ var modifiedValue = PluginManager.modifyOption(this, name, value);
1759
+ if (typeof modifiedValue !== "undefined") {
1760
+ options[name] = modifiedValue;
1761
+ } else {
1762
+ options[name] = value;
1763
+ }
1764
+ if (name === "group") {
1765
+ _prepareGroup(options);
1766
+ }
1767
+ }
1768
+ },
1769
+ /**
1770
+ * Destroy
1771
+ */
1772
+ destroy: function destroy() {
1773
+ pluginEvent2("destroy", this);
1774
+ var el = this.el;
1775
+ el[expando] = null;
1776
+ off(el, "mousedown", this._onTapStart);
1777
+ off(el, "touchstart", this._onTapStart);
1778
+ off(el, "pointerdown", this._onTapStart);
1779
+ if (this.nativeDraggable) {
1780
+ off(el, "dragover", this);
1781
+ off(el, "dragenter", this);
1782
+ }
1783
+ Array.prototype.forEach.call(el.querySelectorAll("[draggable]"), function(el2) {
1784
+ el2.removeAttribute("draggable");
1785
+ });
1786
+ this._onDrop();
1787
+ this._disableDelayedDragEvents();
1788
+ sortables.splice(sortables.indexOf(this.el), 1);
1789
+ this.el = el = null;
1790
+ },
1791
+ _hideClone: function _hideClone() {
1792
+ if (!cloneHidden) {
1793
+ pluginEvent2("hideClone", this);
1794
+ if (Sortable.eventCanceled) return;
1795
+ css(cloneEl, "display", "none");
1796
+ if (this.options.removeCloneOnHide && cloneEl.parentNode) {
1797
+ cloneEl.parentNode.removeChild(cloneEl);
1798
+ }
1799
+ cloneHidden = true;
1800
+ }
1801
+ },
1802
+ _showClone: function _showClone(putSortable2) {
1803
+ if (putSortable2.lastPutMode !== "clone") {
1804
+ this._hideClone();
1805
+ return;
1806
+ }
1807
+ if (cloneHidden) {
1808
+ pluginEvent2("showClone", this);
1809
+ if (Sortable.eventCanceled) return;
1810
+ if (dragEl.parentNode == rootEl && !this.options.group.revertClone) {
1811
+ rootEl.insertBefore(cloneEl, dragEl);
1812
+ } else if (nextEl) {
1813
+ rootEl.insertBefore(cloneEl, nextEl);
1814
+ } else {
1815
+ rootEl.appendChild(cloneEl);
1816
+ }
1817
+ if (this.options.group.revertClone) {
1818
+ this.animate(dragEl, cloneEl);
1819
+ }
1820
+ css(cloneEl, "display", "");
1821
+ cloneHidden = false;
1822
+ }
1823
+ }
1824
+ };
1825
+ function _globalDragOver(evt) {
1826
+ if (evt.dataTransfer) {
1827
+ evt.dataTransfer.dropEffect = "move";
1828
+ }
1829
+ evt.cancelable && evt.preventDefault();
1830
+ }
1831
+ function _onMove(fromEl, toEl, dragEl2, dragRect, targetEl, targetRect, originalEvent, willInsertAfter) {
1832
+ var evt, sortable = fromEl[expando], onMoveFn = sortable.options.onMove, retVal;
1833
+ if (window.CustomEvent && !IE11OrLess && !Edge) {
1834
+ evt = new CustomEvent("move", {
1835
+ bubbles: true,
1836
+ cancelable: true
1837
+ });
1838
+ } else {
1839
+ evt = document.createEvent("Event");
1840
+ evt.initEvent("move", true, true);
1841
+ }
1842
+ evt.to = toEl;
1843
+ evt.from = fromEl;
1844
+ evt.dragged = dragEl2;
1845
+ evt.draggedRect = dragRect;
1846
+ evt.related = targetEl || toEl;
1847
+ evt.relatedRect = targetRect || getRect(toEl);
1848
+ evt.willInsertAfter = willInsertAfter;
1849
+ evt.originalEvent = originalEvent;
1850
+ fromEl.dispatchEvent(evt);
1851
+ if (onMoveFn) {
1852
+ retVal = onMoveFn.call(sortable, evt, originalEvent);
1853
+ }
1854
+ return retVal;
1855
+ }
1856
+ function _disableDraggable(el) {
1857
+ el.draggable = false;
1858
+ }
1859
+ function _unsilent() {
1860
+ _silent = false;
1861
+ }
1862
+ function _ghostIsFirst(evt, vertical, sortable) {
1863
+ var firstElRect = getRect(getChild(sortable.el, 0, sortable.options, true));
1864
+ var childContainingRect = getChildContainingRectFromElement(sortable.el, sortable.options, ghostEl);
1865
+ var spacer = 10;
1866
+ return vertical ? evt.clientX < childContainingRect.left - spacer || evt.clientY < firstElRect.top && evt.clientX < firstElRect.right : evt.clientY < childContainingRect.top - spacer || evt.clientY < firstElRect.bottom && evt.clientX < firstElRect.left;
1867
+ }
1868
+ function _ghostIsLast(evt, vertical, sortable) {
1869
+ var lastElRect = getRect(lastChild(sortable.el, sortable.options.draggable));
1870
+ var childContainingRect = getChildContainingRectFromElement(sortable.el, sortable.options, ghostEl);
1871
+ var spacer = 10;
1872
+ return vertical ? evt.clientX > childContainingRect.right + spacer || evt.clientY > lastElRect.bottom && evt.clientX > lastElRect.left : evt.clientY > childContainingRect.bottom + spacer || evt.clientX > lastElRect.right && evt.clientY > lastElRect.top;
1873
+ }
1874
+ function _getSwapDirection(evt, target, targetRect, vertical, swapThreshold, invertedSwapThreshold, invertSwap, isLastTarget) {
1875
+ var mouseOnAxis = vertical ? evt.clientY : evt.clientX, targetLength = vertical ? targetRect.height : targetRect.width, targetS1 = vertical ? targetRect.top : targetRect.left, targetS2 = vertical ? targetRect.bottom : targetRect.right, invert = false;
1876
+ if (!invertSwap) {
1877
+ if (isLastTarget && targetMoveDistance < targetLength * swapThreshold) {
1878
+ if (!pastFirstInvertThresh && (lastDirection === 1 ? mouseOnAxis > targetS1 + targetLength * invertedSwapThreshold / 2 : mouseOnAxis < targetS2 - targetLength * invertedSwapThreshold / 2)) {
1879
+ pastFirstInvertThresh = true;
1880
+ }
1881
+ if (!pastFirstInvertThresh) {
1882
+ if (lastDirection === 1 ? mouseOnAxis < targetS1 + targetMoveDistance : mouseOnAxis > targetS2 - targetMoveDistance) {
1883
+ return -lastDirection;
1884
+ }
1885
+ } else {
1886
+ invert = true;
1887
+ }
1888
+ } else {
1889
+ if (mouseOnAxis > targetS1 + targetLength * (1 - swapThreshold) / 2 && mouseOnAxis < targetS2 - targetLength * (1 - swapThreshold) / 2) {
1890
+ return _getInsertDirection(target);
1891
+ }
1892
+ }
1893
+ }
1894
+ invert = invert || invertSwap;
1895
+ if (invert) {
1896
+ if (mouseOnAxis < targetS1 + targetLength * invertedSwapThreshold / 2 || mouseOnAxis > targetS2 - targetLength * invertedSwapThreshold / 2) {
1897
+ return mouseOnAxis > targetS1 + targetLength / 2 ? 1 : -1;
1898
+ }
1899
+ }
1900
+ return 0;
1901
+ }
1902
+ function _getInsertDirection(target) {
1903
+ if (index(dragEl) < index(target)) {
1904
+ return 1;
1905
+ } else {
1906
+ return -1;
1907
+ }
1908
+ }
1909
+ function _generateId(el) {
1910
+ var str = el.tagName + el.className + el.src + el.href + el.textContent, i = str.length, sum = 0;
1911
+ while (i--) {
1912
+ sum += str.charCodeAt(i);
1913
+ }
1914
+ return sum.toString(36);
1915
+ }
1916
+ function _saveInputCheckedState(root) {
1917
+ savedInputChecked.length = 0;
1918
+ var inputs = root.getElementsByTagName("input");
1919
+ var idx = inputs.length;
1920
+ while (idx--) {
1921
+ var el = inputs[idx];
1922
+ el.checked && savedInputChecked.push(el);
1923
+ }
1924
+ }
1925
+ function _nextTick(fn) {
1926
+ return setTimeout(fn, 0);
1927
+ }
1928
+ function _cancelNextTick(id) {
1929
+ return clearTimeout(id);
1930
+ }
1931
+ if (documentExists) {
1932
+ on(document, "touchmove", function(evt) {
1933
+ if ((Sortable.active || awaitingDragStarted) && evt.cancelable) {
1934
+ evt.preventDefault();
1935
+ }
1936
+ });
1937
+ }
1938
+ Sortable.utils = {
1939
+ on,
1940
+ off,
1941
+ css,
1942
+ find,
1943
+ is: function is(el, selector) {
1944
+ return !!closest(el, selector, el, false);
1945
+ },
1946
+ extend,
1947
+ throttle,
1948
+ closest,
1949
+ toggleClass,
1950
+ clone,
1951
+ index,
1952
+ nextTick: _nextTick,
1953
+ cancelNextTick: _cancelNextTick,
1954
+ detectDirection: _detectDirection,
1955
+ getChild,
1956
+ expando
1957
+ };
1958
+ Sortable.get = function(element) {
1959
+ return element[expando];
1960
+ };
1961
+ Sortable.mount = function() {
1962
+ for (var _len = arguments.length, plugins2 = new Array(_len), _key = 0; _key < _len; _key++) {
1963
+ plugins2[_key] = arguments[_key];
1964
+ }
1965
+ if (plugins2[0].constructor === Array) plugins2 = plugins2[0];
1966
+ plugins2.forEach(function(plugin) {
1967
+ if (!plugin.prototype || !plugin.prototype.constructor) {
1968
+ throw "Sortable: Mounted plugin must be a constructor function, not ".concat({}.toString.call(plugin));
1969
+ }
1970
+ if (plugin.utils) Sortable.utils = _objectSpread2(_objectSpread2({}, Sortable.utils), plugin.utils);
1971
+ PluginManager.mount(plugin);
1972
+ });
1973
+ };
1974
+ Sortable.create = function(el, options) {
1975
+ return new Sortable(el, options);
1976
+ };
1977
+ Sortable.version = version;
1978
+ var autoScrolls = [], scrollEl, scrollRootEl, scrolling = false, lastAutoScrollX, lastAutoScrollY, touchEvt$1, pointerElemChangedInterval;
1979
+ function AutoScrollPlugin() {
1980
+ function AutoScroll() {
1981
+ this.defaults = {
1982
+ scroll: true,
1983
+ forceAutoScrollFallback: false,
1984
+ scrollSensitivity: 30,
1985
+ scrollSpeed: 10,
1986
+ bubbleScroll: true
1987
+ };
1988
+ for (var fn in this) {
1989
+ if (fn.charAt(0) === "_" && typeof this[fn] === "function") {
1990
+ this[fn] = this[fn].bind(this);
1991
+ }
1992
+ }
1993
+ }
1994
+ AutoScroll.prototype = {
1995
+ dragStarted: function dragStarted2(_ref) {
1996
+ var originalEvent = _ref.originalEvent;
1997
+ if (this.sortable.nativeDraggable) {
1998
+ on(document, "dragover", this._handleAutoScroll);
1999
+ } else {
2000
+ if (this.options.supportPointer) {
2001
+ on(document, "pointermove", this._handleFallbackAutoScroll);
2002
+ } else if (originalEvent.touches) {
2003
+ on(document, "touchmove", this._handleFallbackAutoScroll);
2004
+ } else {
2005
+ on(document, "mousemove", this._handleFallbackAutoScroll);
2006
+ }
2007
+ }
2008
+ },
2009
+ dragOverCompleted: function dragOverCompleted(_ref2) {
2010
+ var originalEvent = _ref2.originalEvent;
2011
+ if (!this.options.dragOverBubble && !originalEvent.rootEl) {
2012
+ this._handleAutoScroll(originalEvent);
2013
+ }
2014
+ },
2015
+ drop: function drop3() {
2016
+ if (this.sortable.nativeDraggable) {
2017
+ off(document, "dragover", this._handleAutoScroll);
2018
+ } else {
2019
+ off(document, "pointermove", this._handleFallbackAutoScroll);
2020
+ off(document, "touchmove", this._handleFallbackAutoScroll);
2021
+ off(document, "mousemove", this._handleFallbackAutoScroll);
2022
+ }
2023
+ clearPointerElemChangedInterval();
2024
+ clearAutoScrolls();
2025
+ cancelThrottle();
2026
+ },
2027
+ nulling: function nulling() {
2028
+ touchEvt$1 = scrollRootEl = scrollEl = scrolling = pointerElemChangedInterval = lastAutoScrollX = lastAutoScrollY = null;
2029
+ autoScrolls.length = 0;
2030
+ },
2031
+ _handleFallbackAutoScroll: function _handleFallbackAutoScroll(evt) {
2032
+ this._handleAutoScroll(evt, true);
2033
+ },
2034
+ _handleAutoScroll: function _handleAutoScroll(evt, fallback) {
2035
+ var _this = this;
2036
+ var x = (evt.touches ? evt.touches[0] : evt).clientX, y = (evt.touches ? evt.touches[0] : evt).clientY, elem = document.elementFromPoint(x, y);
2037
+ touchEvt$1 = evt;
2038
+ if (fallback || this.options.forceAutoScrollFallback || Edge || IE11OrLess || Safari) {
2039
+ autoScroll(evt, this.options, elem, fallback);
2040
+ var ogElemScroller = getParentAutoScrollElement(elem, true);
2041
+ if (scrolling && (!pointerElemChangedInterval || x !== lastAutoScrollX || y !== lastAutoScrollY)) {
2042
+ pointerElemChangedInterval && clearPointerElemChangedInterval();
2043
+ pointerElemChangedInterval = setInterval(function() {
2044
+ var newElem = getParentAutoScrollElement(document.elementFromPoint(x, y), true);
2045
+ if (newElem !== ogElemScroller) {
2046
+ ogElemScroller = newElem;
2047
+ clearAutoScrolls();
2048
+ }
2049
+ autoScroll(evt, _this.options, newElem, fallback);
2050
+ }, 10);
2051
+ lastAutoScrollX = x;
2052
+ lastAutoScrollY = y;
2053
+ }
2054
+ } else {
2055
+ if (!this.options.bubbleScroll || getParentAutoScrollElement(elem, true) === getWindowScrollingElement()) {
2056
+ clearAutoScrolls();
2057
+ return;
2058
+ }
2059
+ autoScroll(evt, this.options, getParentAutoScrollElement(elem, false), false);
2060
+ }
2061
+ }
2062
+ };
2063
+ return _extends(AutoScroll, {
2064
+ pluginName: "scroll",
2065
+ initializeByDefault: true
2066
+ });
2067
+ }
2068
+ function clearAutoScrolls() {
2069
+ autoScrolls.forEach(function(autoScroll2) {
2070
+ clearInterval(autoScroll2.pid);
2071
+ });
2072
+ autoScrolls = [];
2073
+ }
2074
+ function clearPointerElemChangedInterval() {
2075
+ clearInterval(pointerElemChangedInterval);
2076
+ }
2077
+ var autoScroll = throttle(function(evt, options, rootEl2, isFallback) {
2078
+ if (!options.scroll) return;
2079
+ var x = (evt.touches ? evt.touches[0] : evt).clientX, y = (evt.touches ? evt.touches[0] : evt).clientY, sens = options.scrollSensitivity, speed = options.scrollSpeed, winScroller = getWindowScrollingElement();
2080
+ var scrollThisInstance = false, scrollCustomFn;
2081
+ if (scrollRootEl !== rootEl2) {
2082
+ scrollRootEl = rootEl2;
2083
+ clearAutoScrolls();
2084
+ scrollEl = options.scroll;
2085
+ scrollCustomFn = options.scrollFn;
2086
+ if (scrollEl === true) {
2087
+ scrollEl = getParentAutoScrollElement(rootEl2, true);
2088
+ }
2089
+ }
2090
+ var layersOut = 0;
2091
+ var currentParent = scrollEl;
2092
+ do {
2093
+ var el = currentParent, rect = getRect(el), top = rect.top, bottom = rect.bottom, left = rect.left, right = rect.right, width = rect.width, height = rect.height, canScrollX = void 0, canScrollY = void 0, scrollWidth = el.scrollWidth, scrollHeight = el.scrollHeight, elCSS = css(el), scrollPosX = el.scrollLeft, scrollPosY = el.scrollTop;
2094
+ if (el === winScroller) {
2095
+ canScrollX = width < scrollWidth && (elCSS.overflowX === "auto" || elCSS.overflowX === "scroll" || elCSS.overflowX === "visible");
2096
+ canScrollY = height < scrollHeight && (elCSS.overflowY === "auto" || elCSS.overflowY === "scroll" || elCSS.overflowY === "visible");
2097
+ } else {
2098
+ canScrollX = width < scrollWidth && (elCSS.overflowX === "auto" || elCSS.overflowX === "scroll");
2099
+ canScrollY = height < scrollHeight && (elCSS.overflowY === "auto" || elCSS.overflowY === "scroll");
2100
+ }
2101
+ var vx = canScrollX && (Math.abs(right - x) <= sens && scrollPosX + width < scrollWidth) - (Math.abs(left - x) <= sens && !!scrollPosX);
2102
+ var vy = canScrollY && (Math.abs(bottom - y) <= sens && scrollPosY + height < scrollHeight) - (Math.abs(top - y) <= sens && !!scrollPosY);
2103
+ if (!autoScrolls[layersOut]) {
2104
+ for (var i = 0; i <= layersOut; i++) {
2105
+ if (!autoScrolls[i]) {
2106
+ autoScrolls[i] = {};
2107
+ }
2108
+ }
2109
+ }
2110
+ if (autoScrolls[layersOut].vx != vx || autoScrolls[layersOut].vy != vy || autoScrolls[layersOut].el !== el) {
2111
+ autoScrolls[layersOut].el = el;
2112
+ autoScrolls[layersOut].vx = vx;
2113
+ autoScrolls[layersOut].vy = vy;
2114
+ clearInterval(autoScrolls[layersOut].pid);
2115
+ if (vx != 0 || vy != 0) {
2116
+ scrollThisInstance = true;
2117
+ autoScrolls[layersOut].pid = setInterval((function() {
2118
+ if (isFallback && this.layer === 0) {
2119
+ Sortable.active._onTouchMove(touchEvt$1);
2120
+ }
2121
+ var scrollOffsetY = autoScrolls[this.layer].vy ? autoScrolls[this.layer].vy * speed : 0;
2122
+ var scrollOffsetX = autoScrolls[this.layer].vx ? autoScrolls[this.layer].vx * speed : 0;
2123
+ if (typeof scrollCustomFn === "function") {
2124
+ if (scrollCustomFn.call(Sortable.dragged.parentNode[expando], scrollOffsetX, scrollOffsetY, evt, touchEvt$1, autoScrolls[this.layer].el) !== "continue") {
2125
+ return;
2126
+ }
2127
+ }
2128
+ scrollBy(autoScrolls[this.layer].el, scrollOffsetX, scrollOffsetY);
2129
+ }).bind({
2130
+ layer: layersOut
2131
+ }), 24);
2132
+ }
2133
+ }
2134
+ layersOut++;
2135
+ } while (options.bubbleScroll && currentParent !== winScroller && (currentParent = getParentAutoScrollElement(currentParent, false)));
2136
+ scrolling = scrollThisInstance;
2137
+ }, 30);
2138
+ var drop = function drop2(_ref) {
2139
+ var originalEvent = _ref.originalEvent, putSortable2 = _ref.putSortable, dragEl2 = _ref.dragEl, activeSortable = _ref.activeSortable, dispatchSortableEvent = _ref.dispatchSortableEvent, hideGhostForTarget = _ref.hideGhostForTarget, unhideGhostForTarget = _ref.unhideGhostForTarget;
2140
+ if (!originalEvent) return;
2141
+ var toSortable = putSortable2 || activeSortable;
2142
+ hideGhostForTarget();
2143
+ var touch = originalEvent.changedTouches && originalEvent.changedTouches.length ? originalEvent.changedTouches[0] : originalEvent;
2144
+ var target = document.elementFromPoint(touch.clientX, touch.clientY);
2145
+ unhideGhostForTarget();
2146
+ if (toSortable && !toSortable.el.contains(target)) {
2147
+ dispatchSortableEvent("spill");
2148
+ this.onSpill({
2149
+ dragEl: dragEl2,
2150
+ putSortable: putSortable2
2151
+ });
2152
+ }
2153
+ };
2154
+ function Revert() {
2155
+ }
2156
+ Revert.prototype = {
2157
+ startIndex: null,
2158
+ dragStart: function dragStart(_ref2) {
2159
+ var oldDraggableIndex2 = _ref2.oldDraggableIndex;
2160
+ this.startIndex = oldDraggableIndex2;
2161
+ },
2162
+ onSpill: function onSpill(_ref3) {
2163
+ var dragEl2 = _ref3.dragEl, putSortable2 = _ref3.putSortable;
2164
+ this.sortable.captureAnimationState();
2165
+ if (putSortable2) {
2166
+ putSortable2.captureAnimationState();
2167
+ }
2168
+ var nextSibling = getChild(this.sortable.el, this.startIndex, this.options);
2169
+ if (nextSibling) {
2170
+ this.sortable.el.insertBefore(dragEl2, nextSibling);
2171
+ } else {
2172
+ this.sortable.el.appendChild(dragEl2);
2173
+ }
2174
+ this.sortable.animateAll();
2175
+ if (putSortable2) {
2176
+ putSortable2.animateAll();
2177
+ }
2178
+ },
2179
+ drop
2180
+ };
2181
+ _extends(Revert, {
2182
+ pluginName: "revertOnSpill"
2183
+ });
2184
+ function Remove() {
2185
+ }
2186
+ Remove.prototype = {
2187
+ onSpill: function onSpill2(_ref4) {
2188
+ var dragEl2 = _ref4.dragEl, putSortable2 = _ref4.putSortable;
2189
+ var parentSortable = putSortable2 || this.sortable;
2190
+ parentSortable.captureAnimationState();
2191
+ dragEl2.parentNode && dragEl2.parentNode.removeChild(dragEl2);
2192
+ parentSortable.animateAll();
2193
+ },
2194
+ drop
2195
+ };
2196
+ _extends(Remove, {
2197
+ pluginName: "removeOnSpill"
2198
+ });
2199
+ var lastSwapEl;
2200
+ function SwapPlugin() {
2201
+ function Swap() {
2202
+ this.defaults = {
2203
+ swapClass: "sortable-swap-highlight"
2204
+ };
2205
+ }
2206
+ Swap.prototype = {
2207
+ dragStart: function dragStart2(_ref) {
2208
+ var dragEl2 = _ref.dragEl;
2209
+ lastSwapEl = dragEl2;
2210
+ },
2211
+ dragOverValid: function dragOverValid(_ref2) {
2212
+ var completed = _ref2.completed, target = _ref2.target, onMove = _ref2.onMove, activeSortable = _ref2.activeSortable, changed = _ref2.changed, cancel = _ref2.cancel;
2213
+ if (!activeSortable.options.swap) return;
2214
+ var el = this.sortable.el, options = this.options;
2215
+ if (target && target !== el) {
2216
+ var prevSwapEl = lastSwapEl;
2217
+ if (onMove(target) !== false) {
2218
+ toggleClass(target, options.swapClass, true);
2219
+ lastSwapEl = target;
2220
+ } else {
2221
+ lastSwapEl = null;
2222
+ }
2223
+ if (prevSwapEl && prevSwapEl !== lastSwapEl) {
2224
+ toggleClass(prevSwapEl, options.swapClass, false);
2225
+ }
2226
+ }
2227
+ changed();
2228
+ completed(true);
2229
+ cancel();
2230
+ },
2231
+ drop: function drop3(_ref3) {
2232
+ var activeSortable = _ref3.activeSortable, putSortable2 = _ref3.putSortable, dragEl2 = _ref3.dragEl;
2233
+ var toSortable = putSortable2 || this.sortable;
2234
+ var options = this.options;
2235
+ lastSwapEl && toggleClass(lastSwapEl, options.swapClass, false);
2236
+ if (lastSwapEl && (options.swap || putSortable2 && putSortable2.options.swap)) {
2237
+ if (dragEl2 !== lastSwapEl) {
2238
+ toSortable.captureAnimationState();
2239
+ if (toSortable !== activeSortable) activeSortable.captureAnimationState();
2240
+ swapNodes(dragEl2, lastSwapEl);
2241
+ toSortable.animateAll();
2242
+ if (toSortable !== activeSortable) activeSortable.animateAll();
2243
+ }
2244
+ }
2245
+ },
2246
+ nulling: function nulling() {
2247
+ lastSwapEl = null;
2248
+ }
2249
+ };
2250
+ return _extends(Swap, {
2251
+ pluginName: "swap",
2252
+ eventProperties: function eventProperties() {
2253
+ return {
2254
+ swapItem: lastSwapEl
2255
+ };
2256
+ }
2257
+ });
2258
+ }
2259
+ function swapNodes(n1, n2) {
2260
+ var p1 = n1.parentNode, p2 = n2.parentNode, i1, i2;
2261
+ if (!p1 || !p2 || p1.isEqualNode(n2) || p2.isEqualNode(n1)) return;
2262
+ i1 = index(n1);
2263
+ i2 = index(n2);
2264
+ if (p1.isEqualNode(p2) && i1 < i2) {
2265
+ i2++;
2266
+ }
2267
+ p1.insertBefore(n2, p1.children[i1]);
2268
+ p2.insertBefore(n1, p2.children[i2]);
2269
+ }
2270
+ var multiDragElements = [], multiDragClones = [], lastMultiDragSelect, multiDragSortable, initialFolding = false, folding = false, dragStarted = false, dragEl$1, clonesFromRect, clonesHidden;
2271
+ function MultiDragPlugin() {
2272
+ function MultiDrag(sortable) {
2273
+ for (var fn in this) {
2274
+ if (fn.charAt(0) === "_" && typeof this[fn] === "function") {
2275
+ this[fn] = this[fn].bind(this);
2276
+ }
2277
+ }
2278
+ if (!sortable.options.avoidImplicitDeselect) {
2279
+ if (sortable.options.supportPointer) {
2280
+ on(document, "pointerup", this._deselectMultiDrag);
2281
+ } else {
2282
+ on(document, "mouseup", this._deselectMultiDrag);
2283
+ on(document, "touchend", this._deselectMultiDrag);
2284
+ }
2285
+ }
2286
+ on(document, "keydown", this._checkKeyDown);
2287
+ on(document, "keyup", this._checkKeyUp);
2288
+ this.defaults = {
2289
+ selectedClass: "sortable-selected",
2290
+ multiDragKey: null,
2291
+ avoidImplicitDeselect: false,
2292
+ setData: function setData(dataTransfer, dragEl2) {
2293
+ var data = "";
2294
+ if (multiDragElements.length && multiDragSortable === sortable) {
2295
+ multiDragElements.forEach(function(multiDragElement, i) {
2296
+ data += (!i ? "" : ", ") + multiDragElement.textContent;
2297
+ });
2298
+ } else {
2299
+ data = dragEl2.textContent;
2300
+ }
2301
+ dataTransfer.setData("Text", data);
2302
+ }
2303
+ };
2304
+ }
2305
+ MultiDrag.prototype = {
2306
+ multiDragKeyDown: false,
2307
+ isMultiDrag: false,
2308
+ delayStartGlobal: function delayStartGlobal(_ref) {
2309
+ var dragged = _ref.dragEl;
2310
+ dragEl$1 = dragged;
2311
+ },
2312
+ delayEnded: function delayEnded() {
2313
+ this.isMultiDrag = ~multiDragElements.indexOf(dragEl$1);
2314
+ },
2315
+ setupClone: function setupClone(_ref2) {
2316
+ var sortable = _ref2.sortable, cancel = _ref2.cancel;
2317
+ if (!this.isMultiDrag) return;
2318
+ for (var i = 0; i < multiDragElements.length; i++) {
2319
+ multiDragClones.push(clone(multiDragElements[i]));
2320
+ multiDragClones[i].sortableIndex = multiDragElements[i].sortableIndex;
2321
+ multiDragClones[i].draggable = false;
2322
+ multiDragClones[i].style["will-change"] = "";
2323
+ toggleClass(multiDragClones[i], this.options.selectedClass, false);
2324
+ multiDragElements[i] === dragEl$1 && toggleClass(multiDragClones[i], this.options.chosenClass, false);
2325
+ }
2326
+ sortable._hideClone();
2327
+ cancel();
2328
+ },
2329
+ clone: function clone2(_ref3) {
2330
+ var sortable = _ref3.sortable, rootEl2 = _ref3.rootEl, dispatchSortableEvent = _ref3.dispatchSortableEvent, cancel = _ref3.cancel;
2331
+ if (!this.isMultiDrag) return;
2332
+ if (!this.options.removeCloneOnHide) {
2333
+ if (multiDragElements.length && multiDragSortable === sortable) {
2334
+ insertMultiDragClones(true, rootEl2);
2335
+ dispatchSortableEvent("clone");
2336
+ cancel();
2337
+ }
2338
+ }
2339
+ },
2340
+ showClone: function showClone(_ref4) {
2341
+ var cloneNowShown = _ref4.cloneNowShown, rootEl2 = _ref4.rootEl, cancel = _ref4.cancel;
2342
+ if (!this.isMultiDrag) return;
2343
+ insertMultiDragClones(false, rootEl2);
2344
+ multiDragClones.forEach(function(clone2) {
2345
+ css(clone2, "display", "");
2346
+ });
2347
+ cloneNowShown();
2348
+ clonesHidden = false;
2349
+ cancel();
2350
+ },
2351
+ hideClone: function hideClone(_ref5) {
2352
+ var _this = this;
2353
+ var sortable = _ref5.sortable, cloneNowHidden = _ref5.cloneNowHidden, cancel = _ref5.cancel;
2354
+ if (!this.isMultiDrag) return;
2355
+ multiDragClones.forEach(function(clone2) {
2356
+ css(clone2, "display", "none");
2357
+ if (_this.options.removeCloneOnHide && clone2.parentNode) {
2358
+ clone2.parentNode.removeChild(clone2);
2359
+ }
2360
+ });
2361
+ cloneNowHidden();
2362
+ clonesHidden = true;
2363
+ cancel();
2364
+ },
2365
+ dragStartGlobal: function dragStartGlobal(_ref6) {
2366
+ var sortable = _ref6.sortable;
2367
+ if (!this.isMultiDrag && multiDragSortable) {
2368
+ multiDragSortable.multiDrag._deselectMultiDrag();
2369
+ }
2370
+ multiDragElements.forEach(function(multiDragElement) {
2371
+ multiDragElement.sortableIndex = index(multiDragElement);
2372
+ });
2373
+ multiDragElements = multiDragElements.sort(function(a, b) {
2374
+ return a.sortableIndex - b.sortableIndex;
2375
+ });
2376
+ dragStarted = true;
2377
+ },
2378
+ dragStarted: function dragStarted2(_ref7) {
2379
+ var _this2 = this;
2380
+ var sortable = _ref7.sortable;
2381
+ if (!this.isMultiDrag) return;
2382
+ if (this.options.sort) {
2383
+ sortable.captureAnimationState();
2384
+ if (this.options.animation) {
2385
+ multiDragElements.forEach(function(multiDragElement) {
2386
+ if (multiDragElement === dragEl$1) return;
2387
+ css(multiDragElement, "position", "absolute");
2388
+ });
2389
+ var dragRect = getRect(dragEl$1, false, true, true);
2390
+ multiDragElements.forEach(function(multiDragElement) {
2391
+ if (multiDragElement === dragEl$1) return;
2392
+ setRect(multiDragElement, dragRect);
2393
+ });
2394
+ folding = true;
2395
+ initialFolding = true;
2396
+ }
2397
+ }
2398
+ sortable.animateAll(function() {
2399
+ folding = false;
2400
+ initialFolding = false;
2401
+ if (_this2.options.animation) {
2402
+ multiDragElements.forEach(function(multiDragElement) {
2403
+ unsetRect(multiDragElement);
2404
+ });
2405
+ }
2406
+ if (_this2.options.sort) {
2407
+ removeMultiDragElements();
2408
+ }
2409
+ });
2410
+ },
2411
+ dragOver: function dragOver(_ref8) {
2412
+ var target = _ref8.target, completed = _ref8.completed, cancel = _ref8.cancel;
2413
+ if (folding && ~multiDragElements.indexOf(target)) {
2414
+ completed(false);
2415
+ cancel();
2416
+ }
2417
+ },
2418
+ revert: function revert(_ref9) {
2419
+ var fromSortable = _ref9.fromSortable, rootEl2 = _ref9.rootEl, sortable = _ref9.sortable, dragRect = _ref9.dragRect;
2420
+ if (multiDragElements.length > 1) {
2421
+ multiDragElements.forEach(function(multiDragElement) {
2422
+ sortable.addAnimationState({
2423
+ target: multiDragElement,
2424
+ rect: folding ? getRect(multiDragElement) : dragRect
2425
+ });
2426
+ unsetRect(multiDragElement);
2427
+ multiDragElement.fromRect = dragRect;
2428
+ fromSortable.removeAnimationState(multiDragElement);
2429
+ });
2430
+ folding = false;
2431
+ insertMultiDragElements(!this.options.removeCloneOnHide, rootEl2);
2432
+ }
2433
+ },
2434
+ dragOverCompleted: function dragOverCompleted(_ref10) {
2435
+ var sortable = _ref10.sortable, isOwner = _ref10.isOwner, insertion = _ref10.insertion, activeSortable = _ref10.activeSortable, parentEl2 = _ref10.parentEl, putSortable2 = _ref10.putSortable;
2436
+ var options = this.options;
2437
+ if (insertion) {
2438
+ if (isOwner) {
2439
+ activeSortable._hideClone();
2440
+ }
2441
+ initialFolding = false;
2442
+ if (options.animation && multiDragElements.length > 1 && (folding || !isOwner && !activeSortable.options.sort && !putSortable2)) {
2443
+ var dragRectAbsolute = getRect(dragEl$1, false, true, true);
2444
+ multiDragElements.forEach(function(multiDragElement) {
2445
+ if (multiDragElement === dragEl$1) return;
2446
+ setRect(multiDragElement, dragRectAbsolute);
2447
+ parentEl2.appendChild(multiDragElement);
2448
+ });
2449
+ folding = true;
2450
+ }
2451
+ if (!isOwner) {
2452
+ if (!folding) {
2453
+ removeMultiDragElements();
2454
+ }
2455
+ if (multiDragElements.length > 1) {
2456
+ var clonesHiddenBefore = clonesHidden;
2457
+ activeSortable._showClone(sortable);
2458
+ if (activeSortable.options.animation && !clonesHidden && clonesHiddenBefore) {
2459
+ multiDragClones.forEach(function(clone2) {
2460
+ activeSortable.addAnimationState({
2461
+ target: clone2,
2462
+ rect: clonesFromRect
2463
+ });
2464
+ clone2.fromRect = clonesFromRect;
2465
+ clone2.thisAnimationDuration = null;
2466
+ });
2467
+ }
2468
+ } else {
2469
+ activeSortable._showClone(sortable);
2470
+ }
2471
+ }
2472
+ }
2473
+ },
2474
+ dragOverAnimationCapture: function dragOverAnimationCapture(_ref11) {
2475
+ var dragRect = _ref11.dragRect, isOwner = _ref11.isOwner, activeSortable = _ref11.activeSortable;
2476
+ multiDragElements.forEach(function(multiDragElement) {
2477
+ multiDragElement.thisAnimationDuration = null;
2478
+ });
2479
+ if (activeSortable.options.animation && !isOwner && activeSortable.multiDrag.isMultiDrag) {
2480
+ clonesFromRect = _extends({}, dragRect);
2481
+ var dragMatrix = matrix(dragEl$1, true);
2482
+ clonesFromRect.top -= dragMatrix.f;
2483
+ clonesFromRect.left -= dragMatrix.e;
2484
+ }
2485
+ },
2486
+ dragOverAnimationComplete: function dragOverAnimationComplete() {
2487
+ if (folding) {
2488
+ folding = false;
2489
+ removeMultiDragElements();
2490
+ }
2491
+ },
2492
+ drop: function drop3(_ref12) {
2493
+ var evt = _ref12.originalEvent, rootEl2 = _ref12.rootEl, parentEl2 = _ref12.parentEl, sortable = _ref12.sortable, dispatchSortableEvent = _ref12.dispatchSortableEvent, oldIndex2 = _ref12.oldIndex, putSortable2 = _ref12.putSortable;
2494
+ var toSortable = putSortable2 || this.sortable;
2495
+ if (!evt) return;
2496
+ var options = this.options, children = parentEl2.children;
2497
+ if (!dragStarted) {
2498
+ if (options.multiDragKey && !this.multiDragKeyDown) {
2499
+ this._deselectMultiDrag();
2500
+ }
2501
+ toggleClass(dragEl$1, options.selectedClass, !~multiDragElements.indexOf(dragEl$1));
2502
+ if (!~multiDragElements.indexOf(dragEl$1)) {
2503
+ multiDragElements.push(dragEl$1);
2504
+ dispatchEvent({
2505
+ sortable,
2506
+ rootEl: rootEl2,
2507
+ name: "select",
2508
+ targetEl: dragEl$1,
2509
+ originalEvent: evt
2510
+ });
2511
+ if (evt.shiftKey && lastMultiDragSelect && sortable.el.contains(lastMultiDragSelect)) {
2512
+ var lastIndex = index(lastMultiDragSelect), currentIndex = index(dragEl$1);
2513
+ if (~lastIndex && ~currentIndex && lastIndex !== currentIndex) {
2514
+ (function() {
2515
+ var n, i;
2516
+ if (currentIndex > lastIndex) {
2517
+ i = lastIndex;
2518
+ n = currentIndex;
2519
+ } else {
2520
+ i = currentIndex;
2521
+ n = lastIndex + 1;
2522
+ }
2523
+ var filter = options.filter;
2524
+ for (; i < n; i++) {
2525
+ if (~multiDragElements.indexOf(children[i])) continue;
2526
+ if (!closest(children[i], options.draggable, parentEl2, false)) continue;
2527
+ var filtered = filter && (typeof filter === "function" ? filter.call(sortable, evt, children[i], sortable) : filter.split(",").some(function(criteria) {
2528
+ return closest(children[i], criteria.trim(), parentEl2, false);
2529
+ }));
2530
+ if (filtered) continue;
2531
+ toggleClass(children[i], options.selectedClass, true);
2532
+ multiDragElements.push(children[i]);
2533
+ dispatchEvent({
2534
+ sortable,
2535
+ rootEl: rootEl2,
2536
+ name: "select",
2537
+ targetEl: children[i],
2538
+ originalEvent: evt
2539
+ });
2540
+ }
2541
+ })();
2542
+ }
2543
+ } else {
2544
+ lastMultiDragSelect = dragEl$1;
2545
+ }
2546
+ multiDragSortable = toSortable;
2547
+ } else {
2548
+ multiDragElements.splice(multiDragElements.indexOf(dragEl$1), 1);
2549
+ lastMultiDragSelect = null;
2550
+ dispatchEvent({
2551
+ sortable,
2552
+ rootEl: rootEl2,
2553
+ name: "deselect",
2554
+ targetEl: dragEl$1,
2555
+ originalEvent: evt
2556
+ });
2557
+ }
2558
+ }
2559
+ if (dragStarted && this.isMultiDrag) {
2560
+ folding = false;
2561
+ if ((parentEl2[expando].options.sort || parentEl2 !== rootEl2) && multiDragElements.length > 1) {
2562
+ var dragRect = getRect(dragEl$1), multiDragIndex = index(dragEl$1, ":not(." + this.options.selectedClass + ")");
2563
+ if (!initialFolding && options.animation) dragEl$1.thisAnimationDuration = null;
2564
+ toSortable.captureAnimationState();
2565
+ if (!initialFolding) {
2566
+ if (options.animation) {
2567
+ dragEl$1.fromRect = dragRect;
2568
+ multiDragElements.forEach(function(multiDragElement) {
2569
+ multiDragElement.thisAnimationDuration = null;
2570
+ if (multiDragElement !== dragEl$1) {
2571
+ var rect = folding ? getRect(multiDragElement) : dragRect;
2572
+ multiDragElement.fromRect = rect;
2573
+ toSortable.addAnimationState({
2574
+ target: multiDragElement,
2575
+ rect
2576
+ });
2577
+ }
2578
+ });
2579
+ }
2580
+ removeMultiDragElements();
2581
+ multiDragElements.forEach(function(multiDragElement) {
2582
+ if (children[multiDragIndex]) {
2583
+ parentEl2.insertBefore(multiDragElement, children[multiDragIndex]);
2584
+ } else {
2585
+ parentEl2.appendChild(multiDragElement);
2586
+ }
2587
+ multiDragIndex++;
2588
+ });
2589
+ if (oldIndex2 === index(dragEl$1)) {
2590
+ var update = false;
2591
+ multiDragElements.forEach(function(multiDragElement) {
2592
+ if (multiDragElement.sortableIndex !== index(multiDragElement)) {
2593
+ update = true;
2594
+ return;
2595
+ }
2596
+ });
2597
+ if (update) {
2598
+ dispatchSortableEvent("update");
2599
+ dispatchSortableEvent("sort");
2600
+ }
2601
+ }
2602
+ }
2603
+ multiDragElements.forEach(function(multiDragElement) {
2604
+ unsetRect(multiDragElement);
2605
+ });
2606
+ toSortable.animateAll();
2607
+ }
2608
+ multiDragSortable = toSortable;
2609
+ }
2610
+ if (rootEl2 === parentEl2 || putSortable2 && putSortable2.lastPutMode !== "clone") {
2611
+ multiDragClones.forEach(function(clone2) {
2612
+ clone2.parentNode && clone2.parentNode.removeChild(clone2);
2613
+ });
2614
+ }
2615
+ },
2616
+ nullingGlobal: function nullingGlobal() {
2617
+ this.isMultiDrag = dragStarted = false;
2618
+ multiDragClones.length = 0;
2619
+ },
2620
+ destroyGlobal: function destroyGlobal() {
2621
+ this._deselectMultiDrag();
2622
+ off(document, "pointerup", this._deselectMultiDrag);
2623
+ off(document, "mouseup", this._deselectMultiDrag);
2624
+ off(document, "touchend", this._deselectMultiDrag);
2625
+ off(document, "keydown", this._checkKeyDown);
2626
+ off(document, "keyup", this._checkKeyUp);
2627
+ },
2628
+ _deselectMultiDrag: function _deselectMultiDrag(evt) {
2629
+ if (typeof dragStarted !== "undefined" && dragStarted) return;
2630
+ if (multiDragSortable !== this.sortable) return;
2631
+ if (evt && closest(evt.target, this.options.draggable, this.sortable.el, false)) return;
2632
+ if (evt && evt.button !== 0) return;
2633
+ while (multiDragElements.length) {
2634
+ var el = multiDragElements[0];
2635
+ toggleClass(el, this.options.selectedClass, false);
2636
+ multiDragElements.shift();
2637
+ dispatchEvent({
2638
+ sortable: this.sortable,
2639
+ rootEl: this.sortable.el,
2640
+ name: "deselect",
2641
+ targetEl: el,
2642
+ originalEvent: evt
2643
+ });
2644
+ }
2645
+ },
2646
+ _checkKeyDown: function _checkKeyDown(evt) {
2647
+ if (evt.key === this.options.multiDragKey) {
2648
+ this.multiDragKeyDown = true;
2649
+ }
2650
+ },
2651
+ _checkKeyUp: function _checkKeyUp(evt) {
2652
+ if (evt.key === this.options.multiDragKey) {
2653
+ this.multiDragKeyDown = false;
2654
+ }
2655
+ }
2656
+ };
2657
+ return _extends(MultiDrag, {
2658
+ // Static methods & properties
2659
+ pluginName: "multiDrag",
2660
+ utils: {
2661
+ /**
2662
+ * Selects the provided multi-drag item
2663
+ * @param {HTMLElement} el The element to be selected
2664
+ */
2665
+ select: function select(el) {
2666
+ var sortable = el.parentNode[expando];
2667
+ if (!sortable || !sortable.options.multiDrag || ~multiDragElements.indexOf(el)) return;
2668
+ if (multiDragSortable && multiDragSortable !== sortable) {
2669
+ multiDragSortable.multiDrag._deselectMultiDrag();
2670
+ multiDragSortable = sortable;
2671
+ }
2672
+ toggleClass(el, sortable.options.selectedClass, true);
2673
+ multiDragElements.push(el);
2674
+ },
2675
+ /**
2676
+ * Deselects the provided multi-drag item
2677
+ * @param {HTMLElement} el The element to be deselected
2678
+ */
2679
+ deselect: function deselect(el) {
2680
+ var sortable = el.parentNode[expando], index2 = multiDragElements.indexOf(el);
2681
+ if (!sortable || !sortable.options.multiDrag || !~index2) return;
2682
+ toggleClass(el, sortable.options.selectedClass, false);
2683
+ multiDragElements.splice(index2, 1);
2684
+ }
2685
+ },
2686
+ eventProperties: function eventProperties() {
2687
+ var _this3 = this;
2688
+ var oldIndicies = [], newIndicies = [];
2689
+ multiDragElements.forEach(function(multiDragElement) {
2690
+ oldIndicies.push({
2691
+ multiDragElement,
2692
+ index: multiDragElement.sortableIndex
2693
+ });
2694
+ var newIndex2;
2695
+ if (folding && multiDragElement !== dragEl$1) {
2696
+ newIndex2 = -1;
2697
+ } else if (folding) {
2698
+ newIndex2 = index(multiDragElement, ":not(." + _this3.options.selectedClass + ")");
2699
+ } else {
2700
+ newIndex2 = index(multiDragElement);
2701
+ }
2702
+ newIndicies.push({
2703
+ multiDragElement,
2704
+ index: newIndex2
2705
+ });
2706
+ });
2707
+ return {
2708
+ items: _toConsumableArray(multiDragElements),
2709
+ clones: [].concat(multiDragClones),
2710
+ oldIndicies,
2711
+ newIndicies
2712
+ };
2713
+ },
2714
+ optionListeners: {
2715
+ multiDragKey: function multiDragKey(key) {
2716
+ key = key.toLowerCase();
2717
+ if (key === "ctrl") {
2718
+ key = "Control";
2719
+ } else if (key.length > 1) {
2720
+ key = key.charAt(0).toUpperCase() + key.substr(1);
2721
+ }
2722
+ return key;
2723
+ }
2724
+ }
2725
+ });
2726
+ }
2727
+ function insertMultiDragElements(clonesInserted, rootEl2) {
2728
+ multiDragElements.forEach(function(multiDragElement, i) {
2729
+ var target = rootEl2.children[multiDragElement.sortableIndex + (clonesInserted ? Number(i) : 0)];
2730
+ if (target) {
2731
+ rootEl2.insertBefore(multiDragElement, target);
2732
+ } else {
2733
+ rootEl2.appendChild(multiDragElement);
2734
+ }
2735
+ });
2736
+ }
2737
+ function insertMultiDragClones(elementsInserted, rootEl2) {
2738
+ multiDragClones.forEach(function(clone2, i) {
2739
+ var target = rootEl2.children[clone2.sortableIndex + (elementsInserted ? Number(i) : 0)];
2740
+ if (target) {
2741
+ rootEl2.insertBefore(clone2, target);
2742
+ } else {
2743
+ rootEl2.appendChild(clone2);
2744
+ }
2745
+ });
2746
+ }
2747
+ function removeMultiDragElements() {
2748
+ multiDragElements.forEach(function(multiDragElement) {
2749
+ if (multiDragElement === dragEl$1) return;
2750
+ multiDragElement.parentNode && multiDragElement.parentNode.removeChild(multiDragElement);
2751
+ });
2752
+ }
2753
+ Sortable.mount(new AutoScrollPlugin());
2754
+ Sortable.mount(Remove, Revert);
2755
+ exports.MultiDrag = MultiDragPlugin;
2756
+ exports.Sortable = Sortable;
2757
+ exports.Swap = SwapPlugin;
2758
+ exports.default = Sortable;