@innovastudio/contentbox 1.6.39 → 1.6.40

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.
@@ -39535,33 +39535,27 @@ const renderGridEditor = builder => {
39535
39535
  };
39536
39536
 
39537
39537
  /**!
39538
- * Sortable 1.14.0
39538
+ * Sortable 1.15.2
39539
39539
  * @author RubaXa <trash@rubaxa.org>
39540
39540
  * @author owenm <owen23355@gmail.com>
39541
39541
  * @license MIT
39542
39542
  */
39543
39543
  function ownKeys$1(object, enumerableOnly) {
39544
39544
  var keys = Object.keys(object);
39545
-
39546
39545
  if (Object.getOwnPropertySymbols) {
39547
39546
  var symbols = Object.getOwnPropertySymbols(object);
39548
-
39549
39547
  if (enumerableOnly) {
39550
39548
  symbols = symbols.filter(function (sym) {
39551
39549
  return Object.getOwnPropertyDescriptor(object, sym).enumerable;
39552
39550
  });
39553
39551
  }
39554
-
39555
39552
  keys.push.apply(keys, symbols);
39556
39553
  }
39557
-
39558
39554
  return keys;
39559
39555
  }
39560
-
39561
39556
  function _objectSpread2$1(target) {
39562
39557
  for (var i = 1; i < arguments.length; i++) {
39563
39558
  var source = arguments[i] != null ? arguments[i] : {};
39564
-
39565
39559
  if (i % 2) {
39566
39560
  ownKeys$1(Object(source), true).forEach(function (key) {
39567
39561
  _defineProperty$1(target, key, source[key]);
@@ -39574,10 +39568,8 @@ function _objectSpread2$1(target) {
39574
39568
  });
39575
39569
  }
39576
39570
  }
39577
-
39578
39571
  return target;
39579
39572
  }
39580
-
39581
39573
  function _typeof$1(obj) {
39582
39574
  "@babel/helpers - typeof";
39583
39575
 
@@ -39590,10 +39582,8 @@ function _typeof$1(obj) {
39590
39582
  return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
39591
39583
  };
39592
39584
  }
39593
-
39594
39585
  return _typeof$1(obj);
39595
39586
  }
39596
-
39597
39587
  function _defineProperty$1(obj, key, value) {
39598
39588
  if (key in obj) {
39599
39589
  Object.defineProperty(obj, key, {
@@ -39605,53 +39595,40 @@ function _defineProperty$1(obj, key, value) {
39605
39595
  } else {
39606
39596
  obj[key] = value;
39607
39597
  }
39608
-
39609
39598
  return obj;
39610
39599
  }
39611
-
39612
39600
  function _extends() {
39613
39601
  _extends = Object.assign || function (target) {
39614
39602
  for (var i = 1; i < arguments.length; i++) {
39615
39603
  var source = arguments[i];
39616
-
39617
39604
  for (var key in source) {
39618
39605
  if (Object.prototype.hasOwnProperty.call(source, key)) {
39619
39606
  target[key] = source[key];
39620
39607
  }
39621
39608
  }
39622
39609
  }
39623
-
39624
39610
  return target;
39625
39611
  };
39626
-
39627
39612
  return _extends.apply(this, arguments);
39628
39613
  }
39629
-
39630
39614
  function _objectWithoutPropertiesLoose(source, excluded) {
39631
39615
  if (source == null) return {};
39632
39616
  var target = {};
39633
39617
  var sourceKeys = Object.keys(source);
39634
39618
  var key, i;
39635
-
39636
39619
  for (i = 0; i < sourceKeys.length; i++) {
39637
39620
  key = sourceKeys[i];
39638
39621
  if (excluded.indexOf(key) >= 0) continue;
39639
39622
  target[key] = source[key];
39640
39623
  }
39641
-
39642
39624
  return target;
39643
39625
  }
39644
-
39645
39626
  function _objectWithoutProperties(source, excluded) {
39646
39627
  if (source == null) return {};
39647
-
39648
39628
  var target = _objectWithoutPropertiesLoose(source, excluded);
39649
-
39650
39629
  var key, i;
39651
-
39652
39630
  if (Object.getOwnPropertySymbols) {
39653
39631
  var sourceSymbolKeys = Object.getOwnPropertySymbols(source);
39654
-
39655
39632
  for (i = 0; i < sourceSymbolKeys.length; i++) {
39656
39633
  key = sourceSymbolKeys[i];
39657
39634
  if (excluded.indexOf(key) >= 0) continue;
@@ -39659,18 +39636,16 @@ function _objectWithoutProperties(source, excluded) {
39659
39636
  target[key] = source[key];
39660
39637
  }
39661
39638
  }
39662
-
39663
39639
  return target;
39664
39640
  }
39665
39641
 
39666
- var version$1 = "1.14.0";
39642
+ var version$1 = "1.15.2";
39667
39643
 
39668
39644
  function userAgent(pattern) {
39669
39645
  if (typeof window !== 'undefined' && window.navigator) {
39670
39646
  return !! /*@__PURE__*/navigator.userAgent.match(pattern);
39671
39647
  }
39672
39648
  }
39673
-
39674
39649
  var IE11OrLess = userAgent(/(?:Trident.*rv[ :]?11\.|msie|iemobile|Windows Phone)/i);
39675
39650
  var Edge = userAgent(/Edge/i);
39676
39651
  var FireFox = userAgent(/firefox/i);
@@ -39682,23 +39657,15 @@ var captureMode = {
39682
39657
  capture: false,
39683
39658
  passive: false
39684
39659
  };
39685
-
39686
39660
  function on(el, event, fn) {
39687
39661
  el.addEventListener(event, fn, !IE11OrLess && captureMode);
39688
39662
  }
39689
-
39690
39663
  function off(el, event, fn) {
39691
39664
  el.removeEventListener(event, fn, !IE11OrLess && captureMode);
39692
39665
  }
39693
-
39694
- function matches(
39695
- /**HTMLElement*/
39696
- el,
39697
- /**String*/
39698
- selector) {
39666
+ function matches( /**HTMLElement*/el, /**String*/selector) {
39699
39667
  if (!selector) return;
39700
39668
  selector[0] === '>' && (selector = selector.substring(1));
39701
-
39702
39669
  if (el) {
39703
39670
  try {
39704
39671
  if (el.matches) {
@@ -39712,39 +39679,25 @@ selector) {
39712
39679
  return false;
39713
39680
  }
39714
39681
  }
39715
-
39716
39682
  return false;
39717
39683
  }
39718
-
39719
39684
  function getParentOrHost(el) {
39720
39685
  return el.host && el !== document && el.host.nodeType ? el.host : el.parentNode;
39721
39686
  }
39722
-
39723
- function closest(
39724
- /**HTMLElement*/
39725
- el,
39726
- /**String*/
39727
- selector,
39728
- /**HTMLElement*/
39729
- ctx, includeCTX) {
39687
+ function closest( /**HTMLElement*/el, /**String*/selector, /**HTMLElement*/ctx, includeCTX) {
39730
39688
  if (el) {
39731
39689
  ctx = ctx || document;
39732
-
39733
39690
  do {
39734
39691
  if (selector != null && (selector[0] === '>' ? el.parentNode === ctx && matches(el, selector) : matches(el, selector)) || includeCTX && el === ctx) {
39735
39692
  return el;
39736
39693
  }
39737
-
39738
39694
  if (el === ctx) break;
39739
39695
  /* jshint boss:true */
39740
39696
  } while (el = getParentOrHost(el));
39741
39697
  }
39742
-
39743
39698
  return null;
39744
39699
  }
39745
-
39746
39700
  var R_SPACE = /\s+/g;
39747
-
39748
39701
  function toggleClass$1(el, name, state) {
39749
39702
  if (el && name) {
39750
39703
  if (el.classList) {
@@ -39755,10 +39708,8 @@ function toggleClass$1(el, name, state) {
39755
39708
  }
39756
39709
  }
39757
39710
  }
39758
-
39759
39711
  function css$2(el, prop, val) {
39760
39712
  var style = el && el.style;
39761
-
39762
39713
  if (style) {
39763
39714
  if (val === void 0) {
39764
39715
  if (document.defaultView && document.defaultView.getComputedStyle) {
@@ -39766,83 +39717,67 @@ function css$2(el, prop, val) {
39766
39717
  } else if (el.currentStyle) {
39767
39718
  val = el.currentStyle;
39768
39719
  }
39769
-
39770
39720
  return prop === void 0 ? val : val[prop];
39771
39721
  } else {
39772
39722
  if (!(prop in style) && prop.indexOf('webkit') === -1) {
39773
39723
  prop = '-webkit-' + prop;
39774
39724
  }
39775
-
39776
39725
  style[prop] = val + (typeof val === 'string' ? '' : 'px');
39777
39726
  }
39778
39727
  }
39779
39728
  }
39780
-
39781
39729
  function matrix(el, selfOnly) {
39782
39730
  var appliedTransforms = '';
39783
-
39784
39731
  if (typeof el === 'string') {
39785
39732
  appliedTransforms = el;
39786
39733
  } else {
39787
39734
  do {
39788
39735
  var transform = css$2(el, 'transform');
39789
-
39790
39736
  if (transform && transform !== 'none') {
39791
39737
  appliedTransforms = transform + ' ' + appliedTransforms;
39792
39738
  }
39793
39739
  /* jshint boss:true */
39794
-
39795
39740
  } while (!selfOnly && (el = el.parentNode));
39796
39741
  }
39797
-
39798
39742
  var matrixFn = window.DOMMatrix || window.WebKitCSSMatrix || window.CSSMatrix || window.MSCSSMatrix;
39799
39743
  /*jshint -W056 */
39800
-
39801
39744
  return matrixFn && new matrixFn(appliedTransforms);
39802
39745
  }
39803
-
39804
39746
  function find$2(ctx, tagName, iterator) {
39805
39747
  if (ctx) {
39806
39748
  var list = ctx.getElementsByTagName(tagName),
39807
- i = 0,
39808
- n = list.length;
39809
-
39749
+ i = 0,
39750
+ n = list.length;
39810
39751
  if (iterator) {
39811
39752
  for (; i < n; i++) {
39812
39753
  iterator(list[i], i);
39813
39754
  }
39814
39755
  }
39815
-
39816
39756
  return list;
39817
39757
  }
39818
-
39819
39758
  return [];
39820
39759
  }
39821
-
39822
39760
  function getWindowScrollingElement() {
39823
39761
  var scrollingElement = document.scrollingElement;
39824
-
39825
39762
  if (scrollingElement) {
39826
39763
  return scrollingElement;
39827
39764
  } else {
39828
39765
  return document.documentElement;
39829
39766
  }
39830
39767
  }
39831
- /**
39832
- * Returns the "bounding client rect" of given element
39833
- * @param {HTMLElement} el The element whose boundingClientRect is wanted
39834
- * @param {[Boolean]} relativeToContainingBlock Whether the rect should be relative to the containing block of (including) the container
39835
- * @param {[Boolean]} relativeToNonStaticParent Whether the rect should be relative to the relative parent of (including) the contaienr
39836
- * @param {[Boolean]} undoScale Whether the container's scale() should be undone
39837
- * @param {[HTMLElement]} container The parent the element will be placed in
39838
- * @return {Object} The boundingClientRect of el, with specified adjustments
39839
- */
39840
-
39841
39768
 
39769
+ /**
39770
+ * Returns the "bounding client rect" of given element
39771
+ * @param {HTMLElement} el The element whose boundingClientRect is wanted
39772
+ * @param {[Boolean]} relativeToContainingBlock Whether the rect should be relative to the containing block of (including) the container
39773
+ * @param {[Boolean]} relativeToNonStaticParent Whether the rect should be relative to the relative parent of (including) the contaienr
39774
+ * @param {[Boolean]} undoScale Whether the container's scale() should be undone
39775
+ * @param {[HTMLElement]} container The parent the element will be placed in
39776
+ * @return {Object} The boundingClientRect of el, with specified adjustments
39777
+ */
39842
39778
  function getRect$1(el, relativeToContainingBlock, relativeToNonStaticParent, undoScale, container) {
39843
39779
  if (!el.getBoundingClientRect && el !== window) return;
39844
39780
  var elRect, top, left, bottom, right, height, width;
39845
-
39846
39781
  if (el !== window && el.parentNode && el !== getWindowScrollingElement()) {
39847
39782
  elRect = el.getBoundingClientRect();
39848
39783
  top = elRect.top;
@@ -39859,17 +39794,18 @@ function getRect$1(el, relativeToContainingBlock, relativeToNonStaticParent, und
39859
39794
  height = window.innerHeight;
39860
39795
  width = window.innerWidth;
39861
39796
  }
39862
-
39863
39797
  if ((relativeToContainingBlock || relativeToNonStaticParent) && el !== window) {
39864
39798
  // Adjust for translate()
39865
- container = container || el.parentNode; // solves #1123 (see: https://stackoverflow.com/a/37953806/6088312)
39866
- // Not needed on <= IE11
39799
+ container = container || el.parentNode;
39867
39800
 
39801
+ // solves #1123 (see: https://stackoverflow.com/a/37953806/6088312)
39802
+ // Not needed on <= IE11
39868
39803
  if (!IE11OrLess) {
39869
39804
  do {
39870
39805
  if (container && container.getBoundingClientRect && (css$2(container, 'transform') !== 'none' || relativeToNonStaticParent && css$2(container, 'position') !== 'static')) {
39871
- var containerRect = container.getBoundingClientRect(); // Set relative to edges of padding box of container
39806
+ var containerRect = container.getBoundingClientRect();
39872
39807
 
39808
+ // Set relative to edges of padding box of container
39873
39809
  top -= containerRect.top + parseInt(css$2(container, 'border-top-width'));
39874
39810
  left -= containerRect.left + parseInt(css$2(container, 'border-left-width'));
39875
39811
  bottom = top + elRect.height;
@@ -39877,17 +39813,14 @@ function getRect$1(el, relativeToContainingBlock, relativeToNonStaticParent, und
39877
39813
  break;
39878
39814
  }
39879
39815
  /* jshint boss:true */
39880
-
39881
39816
  } while (container = container.parentNode);
39882
39817
  }
39883
39818
  }
39884
-
39885
39819
  if (undoScale && el !== window) {
39886
39820
  // Adjust for scale()
39887
39821
  var elMatrix = matrix(container || el),
39888
- scaleX = elMatrix && elMatrix.a,
39889
- scaleY = elMatrix && elMatrix.d;
39890
-
39822
+ scaleX = elMatrix && elMatrix.a,
39823
+ scaleY = elMatrix && elMatrix.d;
39891
39824
  if (elMatrix) {
39892
39825
  top /= scaleY;
39893
39826
  left /= scaleX;
@@ -39897,7 +39830,6 @@ function getRect$1(el, relativeToContainingBlock, relativeToNonStaticParent, und
39897
39830
  right = left + width;
39898
39831
  }
39899
39832
  }
39900
-
39901
39833
  return {
39902
39834
  top: top,
39903
39835
  left: left,
@@ -39907,165 +39839,140 @@ function getRect$1(el, relativeToContainingBlock, relativeToNonStaticParent, und
39907
39839
  height: height
39908
39840
  };
39909
39841
  }
39910
- /**
39911
- * Checks if a side of an element is scrolled past a side of its parents
39912
- * @param {HTMLElement} el The element who's side being scrolled out of view is in question
39913
- * @param {String} elSide Side of the element in question ('top', 'left', 'right', 'bottom')
39914
- * @param {String} parentSide Side of the parent in question ('top', 'left', 'right', 'bottom')
39915
- * @return {HTMLElement} The parent scroll element that the el's side is scrolled past, or null if there is no such element
39916
- */
39917
-
39918
39842
 
39843
+ /**
39844
+ * Checks if a side of an element is scrolled past a side of its parents
39845
+ * @param {HTMLElement} el The element who's side being scrolled out of view is in question
39846
+ * @param {String} elSide Side of the element in question ('top', 'left', 'right', 'bottom')
39847
+ * @param {String} parentSide Side of the parent in question ('top', 'left', 'right', 'bottom')
39848
+ * @return {HTMLElement} The parent scroll element that the el's side is scrolled past, or null if there is no such element
39849
+ */
39919
39850
  function isScrolledPast(el, elSide, parentSide) {
39920
39851
  var parent = getParentAutoScrollElement(el, true),
39921
- elSideVal = getRect$1(el)[elSide];
39922
- /* jshint boss:true */
39852
+ elSideVal = getRect$1(el)[elSide];
39923
39853
 
39854
+ /* jshint boss:true */
39924
39855
  while (parent) {
39925
39856
  var parentSideVal = getRect$1(parent)[parentSide],
39926
- visible = void 0;
39927
-
39857
+ visible = void 0;
39928
39858
  if (parentSide === 'top' || parentSide === 'left') {
39929
39859
  visible = elSideVal >= parentSideVal;
39930
39860
  } else {
39931
39861
  visible = elSideVal <= parentSideVal;
39932
39862
  }
39933
-
39934
39863
  if (!visible) return parent;
39935
39864
  if (parent === getWindowScrollingElement()) break;
39936
39865
  parent = getParentAutoScrollElement(parent, false);
39937
39866
  }
39938
-
39939
39867
  return false;
39940
39868
  }
39941
- /**
39942
- * Gets nth child of el, ignoring hidden children, sortable's elements (does not ignore clone if it's visible)
39943
- * and non-draggable elements
39944
- * @param {HTMLElement} el The parent element
39945
- * @param {Number} childNum The index of the child
39946
- * @param {Object} options Parent Sortable's options
39947
- * @return {HTMLElement} The child at index childNum, or null if not found
39948
- */
39949
-
39950
39869
 
39870
+ /**
39871
+ * Gets nth child of el, ignoring hidden children, sortable's elements (does not ignore clone if it's visible)
39872
+ * and non-draggable elements
39873
+ * @param {HTMLElement} el The parent element
39874
+ * @param {Number} childNum The index of the child
39875
+ * @param {Object} options Parent Sortable's options
39876
+ * @return {HTMLElement} The child at index childNum, or null if not found
39877
+ */
39951
39878
  function getChild(el, childNum, options, includeDragEl) {
39952
39879
  var currentChild = 0,
39953
- i = 0,
39954
- children = el.children;
39955
-
39880
+ i = 0,
39881
+ children = el.children;
39956
39882
  while (i < children.length) {
39957
39883
  if (children[i].style.display !== 'none' && children[i] !== Sortable.ghost && (includeDragEl || children[i] !== Sortable.dragged) && closest(children[i], options.draggable, el, false)) {
39958
39884
  if (currentChild === childNum) {
39959
39885
  return children[i];
39960
39886
  }
39961
-
39962
39887
  currentChild++;
39963
39888
  }
39964
-
39965
39889
  i++;
39966
39890
  }
39967
-
39968
39891
  return null;
39969
39892
  }
39970
- /**
39971
- * Gets the last child in the el, ignoring ghostEl or invisible elements (clones)
39972
- * @param {HTMLElement} el Parent element
39973
- * @param {selector} selector Any other elements that should be ignored
39974
- * @return {HTMLElement} The last child, ignoring ghostEl
39975
- */
39976
-
39977
39893
 
39894
+ /**
39895
+ * Gets the last child in the el, ignoring ghostEl or invisible elements (clones)
39896
+ * @param {HTMLElement} el Parent element
39897
+ * @param {selector} selector Any other elements that should be ignored
39898
+ * @return {HTMLElement} The last child, ignoring ghostEl
39899
+ */
39978
39900
  function lastChild(el, selector) {
39979
39901
  var last = el.lastElementChild;
39980
-
39981
39902
  while (last && (last === Sortable.ghost || css$2(last, 'display') === 'none' || selector && !matches(last, selector))) {
39982
39903
  last = last.previousElementSibling;
39983
39904
  }
39984
-
39985
39905
  return last || null;
39986
39906
  }
39987
- /**
39988
- * Returns the index of an element within its parent for a selected set of
39989
- * elements
39990
- * @param {HTMLElement} el
39991
- * @param {selector} selector
39992
- * @return {number}
39993
- */
39994
-
39995
39907
 
39908
+ /**
39909
+ * Returns the index of an element within its parent for a selected set of
39910
+ * elements
39911
+ * @param {HTMLElement} el
39912
+ * @param {selector} selector
39913
+ * @return {number}
39914
+ */
39996
39915
  function index(el, selector) {
39997
39916
  var index = 0;
39998
-
39999
39917
  if (!el || !el.parentNode) {
40000
39918
  return -1;
40001
39919
  }
40002
- /* jshint boss:true */
40003
-
40004
39920
 
39921
+ /* jshint boss:true */
40005
39922
  while (el = el.previousElementSibling) {
40006
39923
  if (el.nodeName.toUpperCase() !== 'TEMPLATE' && el !== Sortable.clone && (!selector || matches(el, selector))) {
40007
39924
  index++;
40008
39925
  }
40009
39926
  }
40010
-
40011
39927
  return index;
40012
39928
  }
40013
- /**
40014
- * Returns the scroll offset of the given element, added with all the scroll offsets of parent elements.
40015
- * The value is returned in real pixels.
40016
- * @param {HTMLElement} el
40017
- * @return {Array} Offsets in the format of [left, top]
40018
- */
40019
-
40020
39929
 
39930
+ /**
39931
+ * Returns the scroll offset of the given element, added with all the scroll offsets of parent elements.
39932
+ * The value is returned in real pixels.
39933
+ * @param {HTMLElement} el
39934
+ * @return {Array} Offsets in the format of [left, top]
39935
+ */
40021
39936
  function getRelativeScrollOffset(el) {
40022
39937
  var offsetLeft = 0,
40023
- offsetTop = 0,
40024
- winScroller = getWindowScrollingElement();
40025
-
39938
+ offsetTop = 0,
39939
+ winScroller = getWindowScrollingElement();
40026
39940
  if (el) {
40027
39941
  do {
40028
39942
  var elMatrix = matrix(el),
40029
- scaleX = elMatrix.a,
40030
- scaleY = elMatrix.d;
39943
+ scaleX = elMatrix.a,
39944
+ scaleY = elMatrix.d;
40031
39945
  offsetLeft += el.scrollLeft * scaleX;
40032
39946
  offsetTop += el.scrollTop * scaleY;
40033
39947
  } while (el !== winScroller && (el = el.parentNode));
40034
39948
  }
40035
-
40036
39949
  return [offsetLeft, offsetTop];
40037
39950
  }
40038
- /**
40039
- * Returns the index of the object within the given array
40040
- * @param {Array} arr Array that may or may not hold the object
40041
- * @param {Object} obj An object that has a key-value pair unique to and identical to a key-value pair in the object you want to find
40042
- * @return {Number} The index of the object in the array, or -1
40043
- */
40044
-
40045
39951
 
39952
+ /**
39953
+ * Returns the index of the object within the given array
39954
+ * @param {Array} arr Array that may or may not hold the object
39955
+ * @param {Object} obj An object that has a key-value pair unique to and identical to a key-value pair in the object you want to find
39956
+ * @return {Number} The index of the object in the array, or -1
39957
+ */
40046
39958
  function indexOfObject(arr, obj) {
40047
39959
  for (var i in arr) {
40048
39960
  if (!arr.hasOwnProperty(i)) continue;
40049
-
40050
39961
  for (var key in obj) {
40051
39962
  if (obj.hasOwnProperty(key) && obj[key] === arr[i][key]) return Number(i);
40052
39963
  }
40053
39964
  }
40054
-
40055
39965
  return -1;
40056
39966
  }
40057
-
40058
39967
  function getParentAutoScrollElement(el, includeSelf) {
40059
39968
  // skip to window
40060
39969
  if (!el || !el.getBoundingClientRect) return getWindowScrollingElement();
40061
39970
  var elem = el;
40062
39971
  var gotSelf = false;
40063
-
40064
39972
  do {
40065
39973
  // we don't need to get elem css if it isn't even overflowing in the first place (performance)
40066
39974
  if (elem.clientWidth < elem.scrollWidth || elem.clientHeight < elem.scrollHeight) {
40067
39975
  var elemCSS = css$2(elem);
40068
-
40069
39976
  if (elem.clientWidth < elem.scrollWidth && (elemCSS.overflowX == 'auto' || elemCSS.overflowX == 'scroll') || elem.clientHeight < elem.scrollHeight && (elemCSS.overflowY == 'auto' || elemCSS.overflowY == 'scroll')) {
40070
39977
  if (!elem.getBoundingClientRect || elem === document.body) return getWindowScrollingElement();
40071
39978
  if (gotSelf || includeSelf) return elem;
@@ -40073,12 +39980,9 @@ function getParentAutoScrollElement(el, includeSelf) {
40073
39980
  }
40074
39981
  }
40075
39982
  /* jshint boss:true */
40076
-
40077
39983
  } while (elem = elem.parentNode);
40078
-
40079
39984
  return getWindowScrollingElement();
40080
39985
  }
40081
-
40082
39986
  function extend(dst, src) {
40083
39987
  if (dst && src) {
40084
39988
  for (var key in src) {
@@ -40087,49 +39991,39 @@ function extend(dst, src) {
40087
39991
  }
40088
39992
  }
40089
39993
  }
40090
-
40091
39994
  return dst;
40092
39995
  }
40093
-
40094
39996
  function isRectEqual(rect1, rect2) {
40095
39997
  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);
40096
39998
  }
40097
-
40098
39999
  var _throttleTimeout;
40099
-
40100
40000
  function throttle$1(callback, ms) {
40101
40001
  return function () {
40102
40002
  if (!_throttleTimeout) {
40103
40003
  var args = arguments,
40104
- _this = this;
40105
-
40004
+ _this = this;
40106
40005
  if (args.length === 1) {
40107
40006
  callback.call(_this, args[0]);
40108
40007
  } else {
40109
40008
  callback.apply(_this, args);
40110
40009
  }
40111
-
40112
40010
  _throttleTimeout = setTimeout(function () {
40113
40011
  _throttleTimeout = void 0;
40114
40012
  }, ms);
40115
40013
  }
40116
40014
  };
40117
40015
  }
40118
-
40119
40016
  function cancelThrottle() {
40120
40017
  clearTimeout(_throttleTimeout);
40121
40018
  _throttleTimeout = void 0;
40122
40019
  }
40123
-
40124
40020
  function scrollBy(el, x, y) {
40125
40021
  el.scrollLeft += x;
40126
40022
  el.scrollTop += y;
40127
40023
  }
40128
-
40129
40024
  function clone(el) {
40130
40025
  var Polymer = window.Polymer;
40131
40026
  var $ = window.jQuery || window.Zepto;
40132
-
40133
40027
  if (Polymer && Polymer.dom) {
40134
40028
  return Polymer.dom(el).cloneNode(true);
40135
40029
  } else if ($) {
@@ -40138,12 +40032,28 @@ function clone(el) {
40138
40032
  return el.cloneNode(true);
40139
40033
  }
40140
40034
  }
40141
-
40035
+ function getChildContainingRectFromElement(container, options, ghostEl) {
40036
+ var rect = {};
40037
+ Array.from(container.children).forEach(function (child) {
40038
+ var _rect$left, _rect$top, _rect$right, _rect$bottom;
40039
+ if (!closest(child, options.draggable, container, false) || child.animated || child === ghostEl) return;
40040
+ var childRect = getRect$1(child);
40041
+ rect.left = Math.min((_rect$left = rect.left) !== null && _rect$left !== void 0 ? _rect$left : Infinity, childRect.left);
40042
+ rect.top = Math.min((_rect$top = rect.top) !== null && _rect$top !== void 0 ? _rect$top : Infinity, childRect.top);
40043
+ rect.right = Math.max((_rect$right = rect.right) !== null && _rect$right !== void 0 ? _rect$right : -Infinity, childRect.right);
40044
+ rect.bottom = Math.max((_rect$bottom = rect.bottom) !== null && _rect$bottom !== void 0 ? _rect$bottom : -Infinity, childRect.bottom);
40045
+ });
40046
+ rect.width = rect.right - rect.left;
40047
+ rect.height = rect.bottom - rect.top;
40048
+ rect.x = rect.left;
40049
+ rect.y = rect.top;
40050
+ return rect;
40051
+ }
40142
40052
  var expando = 'Sortable' + new Date().getTime();
40143
40053
 
40144
40054
  function AnimationStateManager() {
40145
40055
  var animationStates = [],
40146
- animationCallbackId;
40056
+ animationCallbackId;
40147
40057
  return {
40148
40058
  captureAnimationState: function captureAnimationState() {
40149
40059
  animationStates = [];
@@ -40155,19 +40065,16 @@ function AnimationStateManager() {
40155
40065
  target: child,
40156
40066
  rect: getRect$1(child)
40157
40067
  });
40068
+ var fromRect = _objectSpread2$1({}, animationStates[animationStates.length - 1].rect);
40158
40069
 
40159
- var fromRect = _objectSpread2$1({}, animationStates[animationStates.length - 1].rect); // If animating: compensate for current animation
40160
-
40161
-
40070
+ // If animating: compensate for current animation
40162
40071
  if (child.thisAnimationDuration) {
40163
40072
  var childMatrix = matrix(child, true);
40164
-
40165
40073
  if (childMatrix) {
40166
40074
  fromRect.top -= childMatrix.f;
40167
40075
  fromRect.left -= childMatrix.e;
40168
40076
  }
40169
40077
  }
40170
-
40171
40078
  child.fromRect = fromRect;
40172
40079
  });
40173
40080
  },
@@ -40181,54 +40088,47 @@ function AnimationStateManager() {
40181
40088
  },
40182
40089
  animateAll: function animateAll(callback) {
40183
40090
  var _this = this;
40184
-
40185
40091
  if (!this.options.animation) {
40186
40092
  clearTimeout(animationCallbackId);
40187
40093
  if (typeof callback === 'function') callback();
40188
40094
  return;
40189
40095
  }
40190
-
40191
40096
  var animating = false,
40192
- animationTime = 0;
40097
+ animationTime = 0;
40193
40098
  animationStates.forEach(function (state) {
40194
40099
  var time = 0,
40195
- target = state.target,
40196
- fromRect = target.fromRect,
40197
- toRect = getRect$1(target),
40198
- prevFromRect = target.prevFromRect,
40199
- prevToRect = target.prevToRect,
40200
- animatingRect = state.rect,
40201
- targetMatrix = matrix(target, true);
40202
-
40100
+ target = state.target,
40101
+ fromRect = target.fromRect,
40102
+ toRect = getRect$1(target),
40103
+ prevFromRect = target.prevFromRect,
40104
+ prevToRect = target.prevToRect,
40105
+ animatingRect = state.rect,
40106
+ targetMatrix = matrix(target, true);
40203
40107
  if (targetMatrix) {
40204
40108
  // Compensate for current animation
40205
40109
  toRect.top -= targetMatrix.f;
40206
40110
  toRect.left -= targetMatrix.e;
40207
40111
  }
40208
-
40209
40112
  target.toRect = toRect;
40210
-
40211
40113
  if (target.thisAnimationDuration) {
40212
40114
  // Could also check if animatingRect is between fromRect and toRect
40213
- if (isRectEqual(prevFromRect, toRect) && !isRectEqual(fromRect, toRect) && // Make sure animatingRect is on line between toRect & fromRect
40115
+ if (isRectEqual(prevFromRect, toRect) && !isRectEqual(fromRect, toRect) &&
40116
+ // Make sure animatingRect is on line between toRect & fromRect
40214
40117
  (animatingRect.top - toRect.top) / (animatingRect.left - toRect.left) === (fromRect.top - toRect.top) / (fromRect.left - toRect.left)) {
40215
40118
  // If returning to same place as started from animation and on same axis
40216
40119
  time = calculateRealTime(animatingRect, prevFromRect, prevToRect, _this.options);
40217
40120
  }
40218
- } // if fromRect != toRect: animate
40219
-
40121
+ }
40220
40122
 
40123
+ // if fromRect != toRect: animate
40221
40124
  if (!isRectEqual(toRect, fromRect)) {
40222
40125
  target.prevFromRect = fromRect;
40223
40126
  target.prevToRect = toRect;
40224
-
40225
40127
  if (!time) {
40226
40128
  time = _this.options.animation;
40227
40129
  }
40228
-
40229
40130
  _this.animate(target, animatingRect, toRect, time);
40230
40131
  }
40231
-
40232
40132
  if (time) {
40233
40133
  animating = true;
40234
40134
  animationTime = Math.max(animationTime, time);
@@ -40244,7 +40144,6 @@ function AnimationStateManager() {
40244
40144
  }
40245
40145
  });
40246
40146
  clearTimeout(animationCallbackId);
40247
-
40248
40147
  if (!animating) {
40249
40148
  if (typeof callback === 'function') callback();
40250
40149
  } else {
@@ -40252,7 +40151,6 @@ function AnimationStateManager() {
40252
40151
  if (typeof callback === 'function') callback();
40253
40152
  }, animationTime);
40254
40153
  }
40255
-
40256
40154
  animationStates = [];
40257
40155
  },
40258
40156
  animate: function animate(target, currentRect, toRect, duration) {
@@ -40260,10 +40158,10 @@ function AnimationStateManager() {
40260
40158
  css$2(target, 'transition', '');
40261
40159
  css$2(target, 'transform', '');
40262
40160
  var elMatrix = matrix(this.el),
40263
- scaleX = elMatrix && elMatrix.a,
40264
- scaleY = elMatrix && elMatrix.d,
40265
- translateX = (currentRect.left - toRect.left) / (scaleX || 1),
40266
- translateY = (currentRect.top - toRect.top) / (scaleY || 1);
40161
+ scaleX = elMatrix && elMatrix.a,
40162
+ scaleY = elMatrix && elMatrix.d,
40163
+ translateX = (currentRect.left - toRect.left) / (scaleX || 1),
40164
+ translateY = (currentRect.top - toRect.top) / (scaleY || 1);
40267
40165
  target.animatingX = !!translateX;
40268
40166
  target.animatingY = !!translateY;
40269
40167
  css$2(target, 'transform', 'translate3d(' + translateX + 'px,' + translateY + 'px,0)');
@@ -40283,11 +40181,9 @@ function AnimationStateManager() {
40283
40181
  }
40284
40182
  };
40285
40183
  }
40286
-
40287
40184
  function repaint(target) {
40288
40185
  return target.offsetWidth;
40289
40186
  }
40290
-
40291
40187
  function calculateRealTime(animatingRect, fromRect, toRect, options) {
40292
40188
  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;
40293
40189
  }
@@ -40304,7 +40200,6 @@ var PluginManager = {
40304
40200
  plugin[option] = defaults[option];
40305
40201
  }
40306
40202
  }
40307
-
40308
40203
  plugins.forEach(function (p) {
40309
40204
  if (p.pluginName === plugin.pluginName) {
40310
40205
  throw "Sortable: Cannot mount plugin ".concat(plugin.pluginName, " more than once");
@@ -40314,25 +40209,22 @@ var PluginManager = {
40314
40209
  },
40315
40210
  pluginEvent: function pluginEvent(eventName, sortable, evt) {
40316
40211
  var _this = this;
40317
-
40318
40212
  this.eventCanceled = false;
40319
-
40320
40213
  evt.cancel = function () {
40321
40214
  _this.eventCanceled = true;
40322
40215
  };
40323
-
40324
40216
  var eventNameGlobal = eventName + 'Global';
40325
40217
  plugins.forEach(function (plugin) {
40326
- if (!sortable[plugin.pluginName]) return; // Fire global events if it exists in this sortable
40327
-
40218
+ if (!sortable[plugin.pluginName]) return;
40219
+ // Fire global events if it exists in this sortable
40328
40220
  if (sortable[plugin.pluginName][eventNameGlobal]) {
40329
40221
  sortable[plugin.pluginName][eventNameGlobal](_objectSpread2$1({
40330
40222
  sortable: sortable
40331
40223
  }, evt));
40332
- } // Only fire plugin event if plugin is enabled in this sortable,
40333
- // and plugin has event defined
40334
-
40224
+ }
40335
40225
 
40226
+ // Only fire plugin event if plugin is enabled in this sortable,
40227
+ // and plugin has event defined
40336
40228
  if (sortable.options[plugin.pluginName] && sortable[plugin.pluginName][eventName]) {
40337
40229
  sortable[plugin.pluginName][eventName](_objectSpread2$1({
40338
40230
  sortable: sortable
@@ -40347,15 +40239,14 @@ var PluginManager = {
40347
40239
  var initialized = new plugin(sortable, el, sortable.options);
40348
40240
  initialized.sortable = sortable;
40349
40241
  initialized.options = sortable.options;
40350
- sortable[pluginName] = initialized; // Add default options from plugin
40242
+ sortable[pluginName] = initialized;
40351
40243
 
40244
+ // Add default options from plugin
40352
40245
  _extends(defaults, initialized.defaults);
40353
40246
  });
40354
-
40355
40247
  for (var option in sortable.options) {
40356
40248
  if (!sortable.options.hasOwnProperty(option)) continue;
40357
40249
  var modified = this.modifyOption(sortable, option, sortable.options[option]);
40358
-
40359
40250
  if (typeof modified !== 'undefined') {
40360
40251
  sortable.options[option] = modified;
40361
40252
  }
@@ -40365,7 +40256,6 @@ var PluginManager = {
40365
40256
  var eventProperties = {};
40366
40257
  plugins.forEach(function (plugin) {
40367
40258
  if (typeof plugin.eventProperties !== 'function') return;
40368
-
40369
40259
  _extends(eventProperties, plugin.eventProperties.call(sortable[plugin.pluginName], name));
40370
40260
  });
40371
40261
  return eventProperties;
@@ -40374,8 +40264,9 @@ var PluginManager = {
40374
40264
  var modifiedValue;
40375
40265
  plugins.forEach(function (plugin) {
40376
40266
  // Plugin must exist on the Sortable
40377
- if (!sortable[plugin.pluginName]) return; // If static option listener exists for this option, call in the context of the Sortable's instance of this plugin
40267
+ if (!sortable[plugin.pluginName]) return;
40378
40268
 
40269
+ // If static option listener exists for this option, call in the context of the Sortable's instance of this plugin
40379
40270
  if (plugin.optionListeners && typeof plugin.optionListeners[name] === 'function') {
40380
40271
  modifiedValue = plugin.optionListeners[name].call(sortable[plugin.pluginName], value);
40381
40272
  }
@@ -40386,25 +40277,25 @@ var PluginManager = {
40386
40277
 
40387
40278
  function dispatchEvent$1(_ref) {
40388
40279
  var sortable = _ref.sortable,
40389
- rootEl = _ref.rootEl,
40390
- name = _ref.name,
40391
- targetEl = _ref.targetEl,
40392
- cloneEl = _ref.cloneEl,
40393
- toEl = _ref.toEl,
40394
- fromEl = _ref.fromEl,
40395
- oldIndex = _ref.oldIndex,
40396
- newIndex = _ref.newIndex,
40397
- oldDraggableIndex = _ref.oldDraggableIndex,
40398
- newDraggableIndex = _ref.newDraggableIndex,
40399
- originalEvent = _ref.originalEvent,
40400
- putSortable = _ref.putSortable,
40401
- extraEventProperties = _ref.extraEventProperties;
40280
+ rootEl = _ref.rootEl,
40281
+ name = _ref.name,
40282
+ targetEl = _ref.targetEl,
40283
+ cloneEl = _ref.cloneEl,
40284
+ toEl = _ref.toEl,
40285
+ fromEl = _ref.fromEl,
40286
+ oldIndex = _ref.oldIndex,
40287
+ newIndex = _ref.newIndex,
40288
+ oldDraggableIndex = _ref.oldDraggableIndex,
40289
+ newDraggableIndex = _ref.newDraggableIndex,
40290
+ originalEvent = _ref.originalEvent,
40291
+ putSortable = _ref.putSortable,
40292
+ extraEventProperties = _ref.extraEventProperties;
40402
40293
  sortable = sortable || rootEl && rootEl[expando];
40403
40294
  if (!sortable) return;
40404
40295
  var evt,
40405
- options = sortable.options,
40406
- onName = 'on' + name.charAt(0).toUpperCase() + name.substr(1); // Support for new CustomEvent feature
40407
-
40296
+ options = sortable.options,
40297
+ onName = 'on' + name.charAt(0).toUpperCase() + name.substr(1);
40298
+ // Support for new CustomEvent feature
40408
40299
  if (window.CustomEvent && !IE11OrLess && !Edge) {
40409
40300
  evt = new CustomEvent(name, {
40410
40301
  bubbles: true,
@@ -40414,7 +40305,6 @@ function dispatchEvent$1(_ref) {
40414
40305
  evt = document.createEvent('Event');
40415
40306
  evt.initEvent(name, true, true);
40416
40307
  }
40417
-
40418
40308
  evt.to = toEl || rootEl;
40419
40309
  evt.from = fromEl || rootEl;
40420
40310
  evt.item = targetEl || rootEl;
@@ -40425,29 +40315,23 @@ function dispatchEvent$1(_ref) {
40425
40315
  evt.newDraggableIndex = newDraggableIndex;
40426
40316
  evt.originalEvent = originalEvent;
40427
40317
  evt.pullMode = putSortable ? putSortable.lastPutMode : undefined;
40428
-
40429
40318
  var allEventProperties = _objectSpread2$1(_objectSpread2$1({}, extraEventProperties), PluginManager.getEventProperties(name, sortable));
40430
-
40431
40319
  for (var option in allEventProperties) {
40432
40320
  evt[option] = allEventProperties[option];
40433
40321
  }
40434
-
40435
40322
  if (rootEl) {
40436
40323
  rootEl.dispatchEvent(evt);
40437
40324
  }
40438
-
40439
40325
  if (options[onName]) {
40440
40326
  options[onName].call(sortable, evt);
40441
40327
  }
40442
40328
  }
40443
40329
 
40444
40330
  var _excluded = ["evt"];
40445
-
40446
40331
  var pluginEvent = function pluginEvent(eventName, sortable) {
40447
40332
  var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},
40448
- originalEvent = _ref.evt,
40449
- data = _objectWithoutProperties(_ref, _excluded);
40450
-
40333
+ originalEvent = _ref.evt,
40334
+ data = _objectWithoutProperties(_ref, _excluded);
40451
40335
  PluginManager.pluginEvent.bind(Sortable)(eventName, sortable, _objectSpread2$1({
40452
40336
  dragEl: dragEl,
40453
40337
  parentEl: parentEl,
@@ -40482,7 +40366,6 @@ var pluginEvent = function pluginEvent(eventName, sortable) {
40482
40366
  }
40483
40367
  }, data));
40484
40368
  };
40485
-
40486
40369
  function _dispatchEvent(info) {
40487
40370
  dispatchEvent$1(_objectSpread2$1({
40488
40371
  putSortable: putSortable,
@@ -40495,62 +40378,61 @@ function _dispatchEvent(info) {
40495
40378
  newDraggableIndex: newDraggableIndex
40496
40379
  }, info));
40497
40380
  }
40498
-
40499
40381
  var dragEl,
40500
- parentEl,
40501
- ghostEl,
40502
- rootEl,
40503
- nextEl,
40504
- lastDownEl,
40505
- cloneEl,
40506
- cloneHidden,
40507
- oldIndex,
40508
- newIndex,
40509
- oldDraggableIndex,
40510
- newDraggableIndex,
40511
- activeGroup,
40512
- putSortable,
40513
- awaitingDragStarted = false,
40514
- ignoreNextClick = false,
40515
- sortables = [],
40516
- tapEvt,
40517
- touchEvt,
40518
- lastDx,
40519
- lastDy,
40520
- tapDistanceLeft,
40521
- tapDistanceTop,
40522
- moved,
40523
- lastTarget,
40524
- lastDirection,
40525
- pastFirstInvertThresh = false,
40526
- isCircumstantialInvert = false,
40527
- targetMoveDistance,
40528
- // For positioning ghost absolutely
40529
- ghostRelativeParent,
40530
- ghostRelativeParentInitialScroll = [],
40531
- // (left, top)
40532
- _silent = false,
40533
- savedInputChecked = [];
40534
- /** @const */
40382
+ parentEl,
40383
+ ghostEl,
40384
+ rootEl,
40385
+ nextEl,
40386
+ lastDownEl,
40387
+ cloneEl,
40388
+ cloneHidden,
40389
+ oldIndex,
40390
+ newIndex,
40391
+ oldDraggableIndex,
40392
+ newDraggableIndex,
40393
+ activeGroup,
40394
+ putSortable,
40395
+ awaitingDragStarted = false,
40396
+ ignoreNextClick = false,
40397
+ sortables = [],
40398
+ tapEvt,
40399
+ touchEvt,
40400
+ lastDx,
40401
+ lastDy,
40402
+ tapDistanceLeft,
40403
+ tapDistanceTop,
40404
+ moved,
40405
+ lastTarget,
40406
+ lastDirection,
40407
+ pastFirstInvertThresh = false,
40408
+ isCircumstantialInvert = false,
40409
+ targetMoveDistance,
40410
+ // For positioning ghost absolutely
40411
+ ghostRelativeParent,
40412
+ ghostRelativeParentInitialScroll = [],
40413
+ // (left, top)
40414
+
40415
+ _silent = false,
40416
+ savedInputChecked = [];
40535
40417
 
40418
+ /** @const */
40536
40419
  var documentExists = typeof document !== 'undefined',
40537
- PositionGhostAbsolutely = IOS,
40538
- CSSFloatProperty = Edge || IE11OrLess ? 'cssFloat' : 'float',
40539
- // This will not pass for IE9, because IE9 DnD only works on anchors
40540
- supportDraggable = documentExists && !ChromeForAndroid && !IOS && 'draggable' in document.createElement('div'),
40541
- supportCssPointerEvents = function () {
40542
- if (!documentExists) return; // false when <= IE11
40543
-
40544
- if (IE11OrLess) {
40545
- return false;
40546
- }
40547
-
40548
- var el = document.createElement('x');
40549
- el.style.cssText = 'pointer-events:auto';
40550
- return el.style.pointerEvents === 'auto';
40551
- }(),
40552
- _detectDirection = function _detectDirection(el, options) {
40553
- var elCSS = css$2(el),
40420
+ PositionGhostAbsolutely = IOS,
40421
+ CSSFloatProperty = Edge || IE11OrLess ? 'cssFloat' : 'float',
40422
+ // This will not pass for IE9, because IE9 DnD only works on anchors
40423
+ supportDraggable = documentExists && !ChromeForAndroid && !IOS && 'draggable' in document.createElement('div'),
40424
+ supportCssPointerEvents = function () {
40425
+ if (!documentExists) return;
40426
+ // false when <= IE11
40427
+ if (IE11OrLess) {
40428
+ return false;
40429
+ }
40430
+ var el = document.createElement('x');
40431
+ el.style.cssText = 'pointer-events:auto';
40432
+ return el.style.pointerEvents === 'auto';
40433
+ }(),
40434
+ _detectDirection = function _detectDirection(el, options) {
40435
+ var elCSS = css$2(el),
40554
40436
  elWidth = parseInt(elCSS.width) - parseInt(elCSS.paddingLeft) - parseInt(elCSS.paddingRight) - parseInt(elCSS.borderLeftWidth) - parseInt(elCSS.borderRightWidth),
40555
40437
  child1 = getChild(el, 0, options),
40556
40438
  child2 = getChild(el, 1, options),
@@ -40558,103 +40440,93 @@ supportDraggable = documentExists && !ChromeForAndroid && !IOS && 'draggable' in
40558
40440
  secondChildCSS = child2 && css$2(child2),
40559
40441
  firstChildWidth = firstChildCSS && parseInt(firstChildCSS.marginLeft) + parseInt(firstChildCSS.marginRight) + getRect$1(child1).width,
40560
40442
  secondChildWidth = secondChildCSS && parseInt(secondChildCSS.marginLeft) + parseInt(secondChildCSS.marginRight) + getRect$1(child2).width;
40561
-
40562
- if (elCSS.display === 'flex') {
40563
- return elCSS.flexDirection === 'column' || elCSS.flexDirection === 'column-reverse' ? 'vertical' : 'horizontal';
40564
- }
40565
-
40566
- if (elCSS.display === 'grid') {
40567
- return elCSS.gridTemplateColumns.split(' ').length <= 1 ? 'vertical' : 'horizontal';
40568
- }
40569
-
40570
- if (child1 && firstChildCSS["float"] && firstChildCSS["float"] !== 'none') {
40571
- var touchingSideChild2 = firstChildCSS["float"] === 'left' ? 'left' : 'right';
40572
- return child2 && (secondChildCSS.clear === 'both' || secondChildCSS.clear === touchingSideChild2) ? 'vertical' : 'horizontal';
40573
- }
40574
-
40575
- 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';
40576
- },
40577
- _dragElInRowColumn = function _dragElInRowColumn(dragRect, targetRect, vertical) {
40578
- var dragElS1Opp = vertical ? dragRect.left : dragRect.top,
40443
+ if (elCSS.display === 'flex') {
40444
+ return elCSS.flexDirection === 'column' || elCSS.flexDirection === 'column-reverse' ? 'vertical' : 'horizontal';
40445
+ }
40446
+ if (elCSS.display === 'grid') {
40447
+ return elCSS.gridTemplateColumns.split(' ').length <= 1 ? 'vertical' : 'horizontal';
40448
+ }
40449
+ if (child1 && firstChildCSS["float"] && firstChildCSS["float"] !== 'none') {
40450
+ var touchingSideChild2 = firstChildCSS["float"] === 'left' ? 'left' : 'right';
40451
+ return child2 && (secondChildCSS.clear === 'both' || secondChildCSS.clear === touchingSideChild2) ? 'vertical' : 'horizontal';
40452
+ }
40453
+ 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';
40454
+ },
40455
+ _dragElInRowColumn = function _dragElInRowColumn(dragRect, targetRect, vertical) {
40456
+ var dragElS1Opp = vertical ? dragRect.left : dragRect.top,
40579
40457
  dragElS2Opp = vertical ? dragRect.right : dragRect.bottom,
40580
40458
  dragElOppLength = vertical ? dragRect.width : dragRect.height,
40581
40459
  targetS1Opp = vertical ? targetRect.left : targetRect.top,
40582
40460
  targetS2Opp = vertical ? targetRect.right : targetRect.bottom,
40583
40461
  targetOppLength = vertical ? targetRect.width : targetRect.height;
40584
- return dragElS1Opp === targetS1Opp || dragElS2Opp === targetS2Opp || dragElS1Opp + dragElOppLength / 2 === targetS1Opp + targetOppLength / 2;
40585
- },
40586
-
40587
- /**
40588
- * Detects first nearest empty sortable to X and Y position using emptyInsertThreshold.
40589
- * @param {Number} x X position
40590
- * @param {Number} y Y position
40591
- * @return {HTMLElement} Element of the first found nearest Sortable
40592
- */
40593
- _detectNearestEmptySortable = function _detectNearestEmptySortable(x, y) {
40594
- var ret;
40595
- sortables.some(function (sortable) {
40596
- var threshold = sortable[expando].options.emptyInsertThreshold;
40597
- if (!threshold || lastChild(sortable)) return;
40598
- var rect = getRect$1(sortable),
40462
+ return dragElS1Opp === targetS1Opp || dragElS2Opp === targetS2Opp || dragElS1Opp + dragElOppLength / 2 === targetS1Opp + targetOppLength / 2;
40463
+ },
40464
+ /**
40465
+ * Detects first nearest empty sortable to X and Y position using emptyInsertThreshold.
40466
+ * @param {Number} x X position
40467
+ * @param {Number} y Y position
40468
+ * @return {HTMLElement} Element of the first found nearest Sortable
40469
+ */
40470
+ _detectNearestEmptySortable = function _detectNearestEmptySortable(x, y) {
40471
+ var ret;
40472
+ sortables.some(function (sortable) {
40473
+ var threshold = sortable[expando].options.emptyInsertThreshold;
40474
+ if (!threshold || lastChild(sortable)) return;
40475
+ var rect = getRect$1(sortable),
40599
40476
  insideHorizontally = x >= rect.left - threshold && x <= rect.right + threshold,
40600
40477
  insideVertically = y >= rect.top - threshold && y <= rect.bottom + threshold;
40601
-
40602
- if (insideHorizontally && insideVertically) {
40603
- return ret = sortable;
40604
- }
40605
- });
40606
- return ret;
40607
- },
40608
- _prepareGroup = function _prepareGroup(options) {
40609
- function toFn(value, pull) {
40610
- return function (to, from, dragEl, evt) {
40611
- var sameGroup = to.options.group.name && from.options.group.name && to.options.group.name === from.options.group.name;
40612
-
40613
- if (value == null && (pull || sameGroup)) {
40614
- // Default pull value
40615
- // Default pull and put value if same group
40616
- return true;
40617
- } else if (value == null || value === false) {
40618
- return false;
40619
- } else if (pull && value === 'clone') {
40620
- return value;
40621
- } else if (typeof value === 'function') {
40622
- return toFn(value(to, from, dragEl, evt), pull)(to, from, dragEl, evt);
40623
- } else {
40624
- var otherGroup = (pull ? to : from).options.group.name;
40625
- return value === true || typeof value === 'string' && value === otherGroup || value.join && value.indexOf(otherGroup) > -1;
40478
+ if (insideHorizontally && insideVertically) {
40479
+ return ret = sortable;
40626
40480
  }
40627
- };
40628
- }
40629
-
40630
- var group = {};
40631
- var originalGroup = options.group;
40632
-
40633
- if (!originalGroup || _typeof$1(originalGroup) != 'object') {
40634
- originalGroup = {
40635
- name: originalGroup
40636
- };
40637
- }
40638
-
40639
- group.name = originalGroup.name;
40640
- group.checkPull = toFn(originalGroup.pull, true);
40641
- group.checkPut = toFn(originalGroup.put);
40642
- group.revertClone = originalGroup.revertClone;
40643
- options.group = group;
40644
- },
40645
- _hideGhostForTarget = function _hideGhostForTarget() {
40646
- if (!supportCssPointerEvents && ghostEl) {
40647
- css$2(ghostEl, 'display', 'none');
40648
- }
40649
- },
40650
- _unhideGhostForTarget = function _unhideGhostForTarget() {
40651
- if (!supportCssPointerEvents && ghostEl) {
40652
- css$2(ghostEl, 'display', '');
40653
- }
40654
- }; // #1184 fix - Prevent click event on fallback if dragged but item not changed position
40655
-
40481
+ });
40482
+ return ret;
40483
+ },
40484
+ _prepareGroup = function _prepareGroup(options) {
40485
+ function toFn(value, pull) {
40486
+ return function (to, from, dragEl, evt) {
40487
+ var sameGroup = to.options.group.name && from.options.group.name && to.options.group.name === from.options.group.name;
40488
+ if (value == null && (pull || sameGroup)) {
40489
+ // Default pull value
40490
+ // Default pull and put value if same group
40491
+ return true;
40492
+ } else if (value == null || value === false) {
40493
+ return false;
40494
+ } else if (pull && value === 'clone') {
40495
+ return value;
40496
+ } else if (typeof value === 'function') {
40497
+ return toFn(value(to, from, dragEl, evt), pull)(to, from, dragEl, evt);
40498
+ } else {
40499
+ var otherGroup = (pull ? to : from).options.group.name;
40500
+ return value === true || typeof value === 'string' && value === otherGroup || value.join && value.indexOf(otherGroup) > -1;
40501
+ }
40502
+ };
40503
+ }
40504
+ var group = {};
40505
+ var originalGroup = options.group;
40506
+ if (!originalGroup || _typeof$1(originalGroup) != 'object') {
40507
+ originalGroup = {
40508
+ name: originalGroup
40509
+ };
40510
+ }
40511
+ group.name = originalGroup.name;
40512
+ group.checkPull = toFn(originalGroup.pull, true);
40513
+ group.checkPut = toFn(originalGroup.put);
40514
+ group.revertClone = originalGroup.revertClone;
40515
+ options.group = group;
40516
+ },
40517
+ _hideGhostForTarget = function _hideGhostForTarget() {
40518
+ if (!supportCssPointerEvents && ghostEl) {
40519
+ css$2(ghostEl, 'display', 'none');
40520
+ }
40521
+ },
40522
+ _unhideGhostForTarget = function _unhideGhostForTarget() {
40523
+ if (!supportCssPointerEvents && ghostEl) {
40524
+ css$2(ghostEl, 'display', '');
40525
+ }
40526
+ };
40656
40527
 
40657
- if (documentExists) {
40528
+ // #1184 fix - Prevent click event on fallback if dragged but item not changed position
40529
+ if (documentExists && !ChromeForAndroid) {
40658
40530
  document.addEventListener('click', function (evt) {
40659
40531
  if (ignoreNextClick) {
40660
40532
  evt.preventDefault();
@@ -40665,53 +40537,44 @@ if (documentExists) {
40665
40537
  }
40666
40538
  }, true);
40667
40539
  }
40668
-
40669
40540
  var nearestEmptyInsertDetectEvent = function nearestEmptyInsertDetectEvent(evt) {
40670
40541
  if (dragEl) {
40671
40542
  evt = evt.touches ? evt.touches[0] : evt;
40672
-
40673
40543
  var nearest = _detectNearestEmptySortable(evt.clientX, evt.clientY);
40674
-
40675
40544
  if (nearest) {
40676
40545
  // Create imitation event
40677
40546
  var event = {};
40678
-
40679
40547
  for (var i in evt) {
40680
40548
  if (evt.hasOwnProperty(i)) {
40681
40549
  event[i] = evt[i];
40682
40550
  }
40683
40551
  }
40684
-
40685
40552
  event.target = event.rootEl = nearest;
40686
40553
  event.preventDefault = void 0;
40687
40554
  event.stopPropagation = void 0;
40688
-
40689
40555
  nearest[expando]._onDragOver(event);
40690
40556
  }
40691
40557
  }
40692
40558
  };
40693
-
40694
40559
  var _checkOutsideTargetEl = function _checkOutsideTargetEl(evt) {
40695
40560
  if (dragEl) {
40696
40561
  dragEl.parentNode[expando]._isOutsideThisEl(evt.target);
40697
40562
  }
40698
40563
  };
40699
- /**
40700
- * @class Sortable
40701
- * @param {HTMLElement} el
40702
- * @param {Object} [options]
40703
- */
40704
-
40705
40564
 
40565
+ /**
40566
+ * @class Sortable
40567
+ * @param {HTMLElement} el
40568
+ * @param {Object} [options]
40569
+ */
40706
40570
  function Sortable(el, options) {
40707
40571
  if (!(el && el.nodeType && el.nodeType === 1)) {
40708
40572
  throw "Sortable: `el` must be an HTMLElement, not ".concat({}.toString.call(el));
40709
40573
  }
40710
-
40711
40574
  this.el = el; // root element
40575
+ this.options = options = _extends({}, options);
40712
40576
 
40713
- this.options = options = _extends({}, options); // Export instance
40714
-
40577
+ // Export instance
40715
40578
  el[expando] = this;
40716
40579
  var defaults = {
40717
40580
  group: null,
@@ -40758,52 +40621,48 @@ function Sortable(el, options) {
40758
40621
  supportPointer: Sortable.supportPointer !== false && 'PointerEvent' in window && !Safari,
40759
40622
  emptyInsertThreshold: 5
40760
40623
  };
40761
- PluginManager.initializePlugins(this, el, defaults); // Set default options
40624
+ PluginManager.initializePlugins(this, el, defaults);
40762
40625
 
40626
+ // Set default options
40763
40627
  for (var name in defaults) {
40764
40628
  !(name in options) && (options[name] = defaults[name]);
40765
40629
  }
40630
+ _prepareGroup(options);
40766
40631
 
40767
- _prepareGroup(options); // Bind all private methods
40768
-
40769
-
40632
+ // Bind all private methods
40770
40633
  for (var fn in this) {
40771
40634
  if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {
40772
40635
  this[fn] = this[fn].bind(this);
40773
40636
  }
40774
- } // Setup drag mode
40775
-
40637
+ }
40776
40638
 
40639
+ // Setup drag mode
40777
40640
  this.nativeDraggable = options.forceFallback ? false : supportDraggable;
40778
-
40779
40641
  if (this.nativeDraggable) {
40780
40642
  // Touch start threshold cannot be greater than the native dragstart threshold
40781
40643
  this.options.touchStartThreshold = 1;
40782
- } // Bind events
40783
-
40644
+ }
40784
40645
 
40646
+ // Bind events
40785
40647
  if (options.supportPointer) {
40786
40648
  on(el, 'pointerdown', this._onTapStart);
40787
40649
  } else {
40788
40650
  on(el, 'mousedown', this._onTapStart);
40789
40651
  on(el, 'touchstart', this._onTapStart);
40790
40652
  }
40791
-
40792
40653
  if (this.nativeDraggable) {
40793
40654
  on(el, 'dragover', this);
40794
40655
  on(el, 'dragenter', this);
40795
40656
  }
40657
+ sortables.push(this.el);
40796
40658
 
40797
- sortables.push(this.el); // Restore sorting
40798
-
40799
- options.store && options.store.get && this.sort(options.store.get(this) || []); // Add animation state manager
40659
+ // Restore sorting
40660
+ options.store && options.store.get && this.sort(options.store.get(this) || []);
40800
40661
 
40662
+ // Add animation state manager
40801
40663
  _extends(this, AnimationStateManager());
40802
40664
  }
40803
-
40804
- Sortable.prototype =
40805
- /** @lends Sortable.prototype */
40806
- {
40665
+ Sortable.prototype = /** @lends Sortable.prototype */{
40807
40666
  constructor: Sortable,
40808
40667
  _isOutsideThisEl: function _isOutsideThisEl(target) {
40809
40668
  if (!this.el.contains(target) && target !== this.el) {
@@ -40813,57 +40672,50 @@ Sortable.prototype =
40813
40672
  _getDirection: function _getDirection(evt, target) {
40814
40673
  return typeof this.options.direction === 'function' ? this.options.direction.call(this, evt, target, dragEl) : this.options.direction;
40815
40674
  },
40816
- _onTapStart: function _onTapStart(
40817
- /** Event|TouchEvent */
40818
- evt) {
40675
+ _onTapStart: function _onTapStart( /** Event|TouchEvent */evt) {
40819
40676
  if (!evt.cancelable) return;
40820
-
40821
40677
  var _this = this,
40822
- el = this.el,
40823
- options = this.options,
40824
- preventOnFilter = options.preventOnFilter,
40825
- type = evt.type,
40826
- touch = evt.touches && evt.touches[0] || evt.pointerType && evt.pointerType === 'touch' && evt,
40827
- target = (touch || evt).target,
40828
- originalTarget = evt.target.shadowRoot && (evt.path && evt.path[0] || evt.composedPath && evt.composedPath()[0]) || target,
40829
- filter = options.filter;
40830
-
40831
- _saveInputCheckedState(el); // Don't trigger start event when an element is been dragged, otherwise the evt.oldindex always wrong when set option.group.
40832
-
40833
-
40678
+ el = this.el,
40679
+ options = this.options,
40680
+ preventOnFilter = options.preventOnFilter,
40681
+ type = evt.type,
40682
+ touch = evt.touches && evt.touches[0] || evt.pointerType && evt.pointerType === 'touch' && evt,
40683
+ target = (touch || evt).target,
40684
+ originalTarget = evt.target.shadowRoot && (evt.path && evt.path[0] || evt.composedPath && evt.composedPath()[0]) || target,
40685
+ filter = options.filter;
40686
+ _saveInputCheckedState(el);
40687
+
40688
+ // Don't trigger start event when an element is been dragged, otherwise the evt.oldindex always wrong when set option.group.
40834
40689
  if (dragEl) {
40835
40690
  return;
40836
40691
  }
40837
-
40838
40692
  if (/mousedown|pointerdown/.test(type) && evt.button !== 0 || options.disabled) {
40839
40693
  return; // only left button and enabled
40840
- } // cancel dnd if original target is content editable
40841
-
40694
+ }
40842
40695
 
40696
+ // cancel dnd if original target is content editable
40843
40697
  if (originalTarget.isContentEditable) {
40844
40698
  return;
40845
- } // Safari ignores further event handling after mousedown
40846
-
40699
+ }
40847
40700
 
40701
+ // Safari ignores further event handling after mousedown
40848
40702
  if (!this.nativeDraggable && Safari && target && target.tagName.toUpperCase() === 'SELECT') {
40849
40703
  return;
40850
40704
  }
40851
-
40852
40705
  target = closest(target, options.draggable, el, false);
40853
-
40854
40706
  if (target && target.animated) {
40855
40707
  return;
40856
40708
  }
40857
-
40858
40709
  if (lastDownEl === target) {
40859
40710
  // Ignoring duplicate `down`
40860
40711
  return;
40861
- } // Get the index of the dragged element within its parent
40862
-
40712
+ }
40863
40713
 
40714
+ // Get the index of the dragged element within its parent
40864
40715
  oldIndex = index(target);
40865
- oldDraggableIndex = index(target, options.draggable); // Check filter
40716
+ oldDraggableIndex = index(target, options.draggable);
40866
40717
 
40718
+ // Check filter
40867
40719
  if (typeof filter === 'function') {
40868
40720
  if (filter.call(this, evt, target, this)) {
40869
40721
  _dispatchEvent({
@@ -40874,7 +40726,6 @@ Sortable.prototype =
40874
40726
  toEl: el,
40875
40727
  fromEl: el
40876
40728
  });
40877
-
40878
40729
  pluginEvent('filter', _this, {
40879
40730
  evt: evt
40880
40731
  });
@@ -40884,7 +40735,6 @@ Sortable.prototype =
40884
40735
  } else if (filter) {
40885
40736
  filter = filter.split(',').some(function (criteria) {
40886
40737
  criteria = closest(originalTarget, criteria.trim(), el, false);
40887
-
40888
40738
  if (criteria) {
40889
40739
  _dispatchEvent({
40890
40740
  sortable: _this,
@@ -40894,40 +40744,30 @@ Sortable.prototype =
40894
40744
  fromEl: el,
40895
40745
  toEl: el
40896
40746
  });
40897
-
40898
40747
  pluginEvent('filter', _this, {
40899
40748
  evt: evt
40900
40749
  });
40901
40750
  return true;
40902
40751
  }
40903
40752
  });
40904
-
40905
40753
  if (filter) {
40906
40754
  preventOnFilter && evt.cancelable && evt.preventDefault();
40907
40755
  return; // cancel dnd
40908
40756
  }
40909
40757
  }
40910
-
40911
40758
  if (options.handle && !closest(originalTarget, options.handle, el, false)) {
40912
40759
  return;
40913
- } // Prepare `dragstart`
40914
-
40760
+ }
40915
40761
 
40762
+ // Prepare `dragstart`
40916
40763
  this._prepareDragStart(evt, touch, target);
40917
40764
  },
40918
- _prepareDragStart: function _prepareDragStart(
40919
- /** Event */
40920
- evt,
40921
- /** Touch */
40922
- touch,
40923
- /** HTMLElement */
40924
- target) {
40765
+ _prepareDragStart: function _prepareDragStart( /** Event */evt, /** Touch */touch, /** HTMLElement */target) {
40925
40766
  var _this = this,
40926
- el = _this.el,
40927
- options = _this.options,
40928
- ownerDocument = el.ownerDocument,
40929
- dragStartFn;
40930
-
40767
+ el = _this.el,
40768
+ options = _this.options,
40769
+ ownerDocument = el.ownerDocument,
40770
+ dragStartFn;
40931
40771
  if (target && !dragEl && target.parentNode === el) {
40932
40772
  var dragRect = getRect$1(target);
40933
40773
  rootEl = el;
@@ -40947,41 +40787,36 @@ Sortable.prototype =
40947
40787
  this._lastX = (touch || evt).clientX;
40948
40788
  this._lastY = (touch || evt).clientY;
40949
40789
  dragEl.style['will-change'] = 'all';
40950
-
40951
40790
  dragStartFn = function dragStartFn() {
40952
40791
  pluginEvent('delayEnded', _this, {
40953
40792
  evt: evt
40954
40793
  });
40955
-
40956
40794
  if (Sortable.eventCanceled) {
40957
40795
  _this._onDrop();
40958
-
40959
40796
  return;
40960
- } // Delayed drag has been triggered
40797
+ }
40798
+ // Delayed drag has been triggered
40961
40799
  // we can re-enable the events: touchmove/mousemove
40962
-
40963
-
40964
40800
  _this._disableDelayedDragEvents();
40965
-
40966
40801
  if (!FireFox && _this.nativeDraggable) {
40967
40802
  dragEl.draggable = true;
40968
- } // Bind the events: dragstart/dragend
40969
-
40970
-
40971
- _this._triggerDragStart(evt, touch); // Drag start event
40803
+ }
40972
40804
 
40805
+ // Bind the events: dragstart/dragend
40806
+ _this._triggerDragStart(evt, touch);
40973
40807
 
40808
+ // Drag start event
40974
40809
  _dispatchEvent({
40975
40810
  sortable: _this,
40976
40811
  name: 'choose',
40977
40812
  originalEvent: evt
40978
- }); // Chosen item
40979
-
40813
+ });
40980
40814
 
40815
+ // Chosen item
40981
40816
  toggleClass$1(dragEl, options.chosenClass, true);
40982
- }; // Disable "draggable"
40983
-
40817
+ };
40984
40818
 
40819
+ // Disable "draggable"
40985
40820
  options.ignore.split(',').forEach(function (criteria) {
40986
40821
  find$2(dragEl, criteria.trim(), _disableDraggable);
40987
40822
  });
@@ -40990,27 +40825,26 @@ Sortable.prototype =
40990
40825
  on(ownerDocument, 'touchmove', nearestEmptyInsertDetectEvent);
40991
40826
  on(ownerDocument, 'mouseup', _this._onDrop);
40992
40827
  on(ownerDocument, 'touchend', _this._onDrop);
40993
- on(ownerDocument, 'touchcancel', _this._onDrop); // Make dragEl draggable (must be before delay for FireFox)
40828
+ on(ownerDocument, 'touchcancel', _this._onDrop);
40994
40829
 
40830
+ // Make dragEl draggable (must be before delay for FireFox)
40995
40831
  if (FireFox && this.nativeDraggable) {
40996
40832
  this.options.touchStartThreshold = 4;
40997
40833
  dragEl.draggable = true;
40998
40834
  }
40999
-
41000
40835
  pluginEvent('delayStart', this, {
41001
40836
  evt: evt
41002
- }); // Delay is impossible for native DnD in Edge or IE
40837
+ });
41003
40838
 
40839
+ // Delay is impossible for native DnD in Edge or IE
41004
40840
  if (options.delay && (!options.delayOnTouchOnly || touch) && (!this.nativeDraggable || !(Edge || IE11OrLess))) {
41005
40841
  if (Sortable.eventCanceled) {
41006
40842
  this._onDrop();
41007
-
41008
40843
  return;
41009
- } // If the user moves the pointer or let go the click or touch
40844
+ }
40845
+ // If the user moves the pointer or let go the click or touch
41010
40846
  // before the delay has been reached:
41011
40847
  // disable the delayed drag
41012
-
41013
-
41014
40848
  on(ownerDocument, 'mouseup', _this._disableDelayedDrag);
41015
40849
  on(ownerDocument, 'touchend', _this._disableDelayedDrag);
41016
40850
  on(ownerDocument, 'touchcancel', _this._disableDelayedDrag);
@@ -41023,11 +40857,8 @@ Sortable.prototype =
41023
40857
  }
41024
40858
  }
41025
40859
  },
41026
- _delayedDragTouchMoveHandler: function _delayedDragTouchMoveHandler(
41027
- /** TouchEvent|PointerEvent **/
41028
- e) {
40860
+ _delayedDragTouchMoveHandler: function _delayedDragTouchMoveHandler( /** TouchEvent|PointerEvent **/e) {
41029
40861
  var touch = e.touches ? e.touches[0] : e;
41030
-
41031
40862
  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))) {
41032
40863
  this._disableDelayedDrag();
41033
40864
  }
@@ -41035,7 +40866,6 @@ Sortable.prototype =
41035
40866
  _disableDelayedDrag: function _disableDelayedDrag() {
41036
40867
  dragEl && _disableDraggable(dragEl);
41037
40868
  clearTimeout(this._dragStartTimer);
41038
-
41039
40869
  this._disableDelayedDragEvents();
41040
40870
  },
41041
40871
  _disableDelayedDragEvents: function _disableDelayedDragEvents() {
@@ -41047,13 +40877,8 @@ Sortable.prototype =
41047
40877
  off(ownerDocument, 'touchmove', this._delayedDragTouchMoveHandler);
41048
40878
  off(ownerDocument, 'pointermove', this._delayedDragTouchMoveHandler);
41049
40879
  },
41050
- _triggerDragStart: function _triggerDragStart(
41051
- /** Event */
41052
- evt,
41053
- /** Touch */
41054
- touch) {
40880
+ _triggerDragStart: function _triggerDragStart( /** Event */evt, /** Touch */touch) {
41055
40881
  touch = touch || evt.pointerType == 'touch' && evt;
41056
-
41057
40882
  if (!this.nativeDraggable || touch) {
41058
40883
  if (this.options.supportPointer) {
41059
40884
  on(document, 'pointermove', this._onTouchMove);
@@ -41066,7 +40891,6 @@ Sortable.prototype =
41066
40891
  on(dragEl, 'dragend', this);
41067
40892
  on(rootEl, 'dragstart', this._onDragStart);
41068
40893
  }
41069
-
41070
40894
  try {
41071
40895
  if (document.selection) {
41072
40896
  // Timeout neccessary for IE9
@@ -41079,25 +40903,23 @@ Sortable.prototype =
41079
40903
  } catch (err) {}
41080
40904
  },
41081
40905
  _dragStarted: function _dragStarted(fallback, evt) {
41082
-
41083
40906
  awaitingDragStarted = false;
41084
-
41085
40907
  if (rootEl && dragEl) {
41086
40908
  pluginEvent('dragStarted', this, {
41087
40909
  evt: evt
41088
40910
  });
41089
-
41090
40911
  if (this.nativeDraggable) {
41091
40912
  on(document, 'dragover', _checkOutsideTargetEl);
41092
40913
  }
40914
+ var options = this.options;
41093
40915
 
41094
- var options = this.options; // Apply effect
41095
-
40916
+ // Apply effect
41096
40917
  !fallback && toggleClass$1(dragEl, options.dragClass, false);
41097
40918
  toggleClass$1(dragEl, options.ghostClass, true);
41098
40919
  Sortable.active = this;
41099
- fallback && this._appendGhost(); // Drag start event
40920
+ fallback && this._appendGhost();
41100
40921
 
40922
+ // Drag start event
41101
40923
  _dispatchEvent({
41102
40924
  sortable: this,
41103
40925
  name: 'start',
@@ -41111,20 +40933,15 @@ Sortable.prototype =
41111
40933
  if (touchEvt) {
41112
40934
  this._lastX = touchEvt.clientX;
41113
40935
  this._lastY = touchEvt.clientY;
41114
-
41115
40936
  _hideGhostForTarget();
41116
-
41117
40937
  var target = document.elementFromPoint(touchEvt.clientX, touchEvt.clientY);
41118
40938
  var parent = target;
41119
-
41120
40939
  while (target && target.shadowRoot) {
41121
40940
  target = target.shadowRoot.elementFromPoint(touchEvt.clientX, touchEvt.clientY);
41122
40941
  if (target === parent) break;
41123
40942
  parent = target;
41124
40943
  }
41125
-
41126
40944
  dragEl.parentNode[expando]._isOutsideThisEl(target);
41127
-
41128
40945
  if (parent) {
41129
40946
  do {
41130
40947
  if (parent[expando]) {
@@ -41135,44 +40952,37 @@ Sortable.prototype =
41135
40952
  target: target,
41136
40953
  rootEl: parent
41137
40954
  });
41138
-
41139
40955
  if (inserted && !this.options.dragoverBubble) {
41140
40956
  break;
41141
40957
  }
41142
40958
  }
41143
-
41144
40959
  target = parent; // store last element
41145
40960
  }
41146
- /* jshint boss:true */
41147
- while (parent = parent.parentNode);
40961
+ /* jshint boss:true */ while (parent = parent.parentNode);
41148
40962
  }
41149
-
41150
40963
  _unhideGhostForTarget();
41151
40964
  }
41152
40965
  },
41153
- _onTouchMove: function _onTouchMove(
41154
- /**TouchEvent*/
41155
- evt) {
40966
+ _onTouchMove: function _onTouchMove( /**TouchEvent*/evt) {
41156
40967
  if (tapEvt) {
41157
40968
  var options = this.options,
41158
- fallbackTolerance = options.fallbackTolerance,
41159
- fallbackOffset = options.fallbackOffset,
41160
- touch = evt.touches ? evt.touches[0] : evt,
41161
- ghostMatrix = ghostEl && matrix(ghostEl, true),
41162
- scaleX = ghostEl && ghostMatrix && ghostMatrix.a,
41163
- scaleY = ghostEl && ghostMatrix && ghostMatrix.d,
41164
- relativeScrollOffset = PositionGhostAbsolutely && ghostRelativeParent && getRelativeScrollOffset(ghostRelativeParent),
41165
- dx = (touch.clientX - tapEvt.clientX + fallbackOffset.x) / (scaleX || 1) + (relativeScrollOffset ? relativeScrollOffset[0] - ghostRelativeParentInitialScroll[0] : 0) / (scaleX || 1),
41166
- dy = (touch.clientY - tapEvt.clientY + fallbackOffset.y) / (scaleY || 1) + (relativeScrollOffset ? relativeScrollOffset[1] - ghostRelativeParentInitialScroll[1] : 0) / (scaleY || 1); // only set the status to dragging, when we are actually dragging
41167
-
40969
+ fallbackTolerance = options.fallbackTolerance,
40970
+ fallbackOffset = options.fallbackOffset,
40971
+ touch = evt.touches ? evt.touches[0] : evt,
40972
+ ghostMatrix = ghostEl && matrix(ghostEl, true),
40973
+ scaleX = ghostEl && ghostMatrix && ghostMatrix.a,
40974
+ scaleY = ghostEl && ghostMatrix && ghostMatrix.d,
40975
+ relativeScrollOffset = PositionGhostAbsolutely && ghostRelativeParent && getRelativeScrollOffset(ghostRelativeParent),
40976
+ dx = (touch.clientX - tapEvt.clientX + fallbackOffset.x) / (scaleX || 1) + (relativeScrollOffset ? relativeScrollOffset[0] - ghostRelativeParentInitialScroll[0] : 0) / (scaleX || 1),
40977
+ dy = (touch.clientY - tapEvt.clientY + fallbackOffset.y) / (scaleY || 1) + (relativeScrollOffset ? relativeScrollOffset[1] - ghostRelativeParentInitialScroll[1] : 0) / (scaleY || 1);
40978
+
40979
+ // only set the status to dragging, when we are actually dragging
41168
40980
  if (!Sortable.active && !awaitingDragStarted) {
41169
40981
  if (fallbackTolerance && Math.max(Math.abs(touch.clientX - this._lastX), Math.abs(touch.clientY - this._lastY)) < fallbackTolerance) {
41170
40982
  return;
41171
40983
  }
41172
-
41173
40984
  this._onDragStart(evt, true);
41174
40985
  }
41175
-
41176
40986
  if (ghostEl) {
41177
40987
  if (ghostMatrix) {
41178
40988
  ghostMatrix.e += dx - (lastDx || 0);
@@ -41187,7 +40997,6 @@ Sortable.prototype =
41187
40997
  f: dy
41188
40998
  };
41189
40999
  }
41190
-
41191
41000
  var cssMatrix = "matrix(".concat(ghostMatrix.a, ",").concat(ghostMatrix.b, ",").concat(ghostMatrix.c, ",").concat(ghostMatrix.d, ",").concat(ghostMatrix.e, ",").concat(ghostMatrix.f, ")");
41192
41001
  css$2(ghostEl, 'webkitTransform', cssMatrix);
41193
41002
  css$2(ghostEl, 'mozTransform', cssMatrix);
@@ -41197,7 +41006,6 @@ Sortable.prototype =
41197
41006
  lastDy = dy;
41198
41007
  touchEvt = touch;
41199
41008
  }
41200
-
41201
41009
  evt.cancelable && evt.preventDefault();
41202
41010
  }
41203
41011
  },
@@ -41206,17 +41014,16 @@ Sortable.prototype =
41206
41014
  // Not being adjusted for
41207
41015
  if (!ghostEl) {
41208
41016
  var container = this.options.fallbackOnBody ? document.body : rootEl,
41209
- rect = getRect$1(dragEl, true, PositionGhostAbsolutely, true, container),
41210
- options = this.options; // Position absolutely
41017
+ rect = getRect$1(dragEl, true, PositionGhostAbsolutely, true, container),
41018
+ options = this.options;
41211
41019
 
41020
+ // Position absolutely
41212
41021
  if (PositionGhostAbsolutely) {
41213
41022
  // Get relatively positioned parent
41214
41023
  ghostRelativeParent = container;
41215
-
41216
41024
  while (css$2(ghostRelativeParent, 'position') === 'static' && css$2(ghostRelativeParent, 'transform') === 'none' && ghostRelativeParent !== document) {
41217
41025
  ghostRelativeParent = ghostRelativeParent.parentNode;
41218
41026
  }
41219
-
41220
41027
  if (ghostRelativeParent !== document.body && ghostRelativeParent !== document.documentElement) {
41221
41028
  if (ghostRelativeParent === document) ghostRelativeParent = getWindowScrollingElement();
41222
41029
  rect.top += ghostRelativeParent.scrollTop;
@@ -41224,10 +41031,8 @@ Sortable.prototype =
41224
41031
  } else {
41225
41032
  ghostRelativeParent = getWindowScrollingElement();
41226
41033
  }
41227
-
41228
41034
  ghostRelativeParentInitialScroll = getRelativeScrollOffset(ghostRelativeParent);
41229
41035
  }
41230
-
41231
41036
  ghostEl = dragEl.cloneNode(true);
41232
41037
  toggleClass$1(ghostEl, options.ghostClass, false);
41233
41038
  toggleClass$1(ghostEl, options.fallbackClass, true);
@@ -41245,61 +41050,50 @@ Sortable.prototype =
41245
41050
  css$2(ghostEl, 'zIndex', '100000');
41246
41051
  css$2(ghostEl, 'pointerEvents', 'none');
41247
41052
  Sortable.ghost = ghostEl;
41248
- container.appendChild(ghostEl); // Set transform-origin
41053
+ container.appendChild(ghostEl);
41249
41054
 
41055
+ // Set transform-origin
41250
41056
  css$2(ghostEl, 'transform-origin', tapDistanceLeft / parseInt(ghostEl.style.width) * 100 + '% ' + tapDistanceTop / parseInt(ghostEl.style.height) * 100 + '%');
41251
41057
  }
41252
41058
  },
41253
- _onDragStart: function _onDragStart(
41254
- /**Event*/
41255
- evt,
41256
- /**boolean*/
41257
- fallback) {
41059
+ _onDragStart: function _onDragStart( /**Event*/evt, /**boolean*/fallback) {
41258
41060
  var _this = this;
41259
-
41260
41061
  var dataTransfer = evt.dataTransfer;
41261
41062
  var options = _this.options;
41262
41063
  pluginEvent('dragStart', this, {
41263
41064
  evt: evt
41264
41065
  });
41265
-
41266
41066
  if (Sortable.eventCanceled) {
41267
41067
  this._onDrop();
41268
-
41269
41068
  return;
41270
41069
  }
41271
-
41272
41070
  pluginEvent('setupClone', this);
41273
-
41274
41071
  if (!Sortable.eventCanceled) {
41275
41072
  cloneEl = clone(dragEl);
41073
+ cloneEl.removeAttribute("id");
41276
41074
  cloneEl.draggable = false;
41277
41075
  cloneEl.style['will-change'] = '';
41278
-
41279
41076
  this._hideClone();
41280
-
41281
41077
  toggleClass$1(cloneEl, this.options.chosenClass, false);
41282
41078
  Sortable.clone = cloneEl;
41283
- } // #1143: IFrame support workaround
41284
-
41079
+ }
41285
41080
 
41081
+ // #1143: IFrame support workaround
41286
41082
  _this.cloneId = _nextTick(function () {
41287
41083
  pluginEvent('clone', _this);
41288
41084
  if (Sortable.eventCanceled) return;
41289
-
41290
41085
  if (!_this.options.removeCloneOnHide) {
41291
41086
  rootEl.insertBefore(cloneEl, dragEl);
41292
41087
  }
41293
-
41294
41088
  _this._hideClone();
41295
-
41296
41089
  _dispatchEvent({
41297
41090
  sortable: _this,
41298
41091
  name: 'clone'
41299
41092
  });
41300
41093
  });
41301
- !fallback && toggleClass$1(dragEl, options.dragClass, true); // Set proper drop events
41094
+ !fallback && toggleClass$1(dragEl, options.dragClass, true);
41302
41095
 
41096
+ // Set proper drop events
41303
41097
  if (fallback) {
41304
41098
  ignoreNextClick = true;
41305
41099
  _this._loopId = setInterval(_this._emulateDragOver, 50);
@@ -41308,47 +41102,40 @@ Sortable.prototype =
41308
41102
  off(document, 'mouseup', _this._onDrop);
41309
41103
  off(document, 'touchend', _this._onDrop);
41310
41104
  off(document, 'touchcancel', _this._onDrop);
41311
-
41312
41105
  if (dataTransfer) {
41313
41106
  dataTransfer.effectAllowed = 'move';
41314
41107
  options.setData && options.setData.call(_this, dataTransfer, dragEl);
41315
41108
  }
41109
+ on(document, 'drop', _this);
41316
41110
 
41317
- on(document, 'drop', _this); // #1276 fix:
41318
-
41111
+ // #1276 fix:
41319
41112
  css$2(dragEl, 'transform', 'translateZ(0)');
41320
41113
  }
41321
-
41322
41114
  awaitingDragStarted = true;
41323
41115
  _this._dragStartId = _nextTick(_this._dragStarted.bind(_this, fallback, evt));
41324
41116
  on(document, 'selectstart', _this);
41325
41117
  moved = true;
41326
-
41327
41118
  if (Safari) {
41328
41119
  css$2(document.body, 'user-select', 'none');
41329
41120
  }
41330
41121
  },
41331
41122
  // Returns true - if no further action is needed (either inserted or another condition)
41332
- _onDragOver: function _onDragOver(
41333
- /**Event*/
41334
- evt) {
41123
+ _onDragOver: function _onDragOver( /**Event*/evt) {
41335
41124
  var el = this.el,
41336
- target = evt.target,
41337
- dragRect,
41338
- targetRect,
41339
- revert,
41340
- options = this.options,
41341
- group = options.group,
41342
- activeSortable = Sortable.active,
41343
- isOwner = activeGroup === group,
41344
- canSort = options.sort,
41345
- fromSortable = putSortable || activeSortable,
41346
- vertical,
41347
- _this = this,
41348
- completedFired = false;
41349
-
41125
+ target = evt.target,
41126
+ dragRect,
41127
+ targetRect,
41128
+ revert,
41129
+ options = this.options,
41130
+ group = options.group,
41131
+ activeSortable = Sortable.active,
41132
+ isOwner = activeGroup === group,
41133
+ canSort = options.sort,
41134
+ fromSortable = putSortable || activeSortable,
41135
+ vertical,
41136
+ _this = this,
41137
+ completedFired = false;
41350
41138
  if (_silent) return;
41351
-
41352
41139
  function dragOverEvent(name, extra) {
41353
41140
  pluginEvent(name, _this, _objectSpread2$1({
41354
41141
  evt: evt,
@@ -41366,25 +41153,22 @@ Sortable.prototype =
41366
41153
  },
41367
41154
  changed: changed
41368
41155
  }, extra));
41369
- } // Capture animation state
41370
-
41156
+ }
41371
41157
 
41158
+ // Capture animation state
41372
41159
  function capture() {
41373
41160
  dragOverEvent('dragOverAnimationCapture');
41374
-
41375
41161
  _this.captureAnimationState();
41376
-
41377
41162
  if (_this !== fromSortable) {
41378
41163
  fromSortable.captureAnimationState();
41379
41164
  }
41380
- } // Return invocation when dragEl is inserted (or completed)
41381
-
41165
+ }
41382
41166
 
41167
+ // Return invocation when dragEl is inserted (or completed)
41383
41168
  function completed(insertion) {
41384
41169
  dragOverEvent('dragOverCompleted', {
41385
41170
  insertion: insertion
41386
41171
  });
41387
-
41388
41172
  if (insertion) {
41389
41173
  // Clones must be hidden before folding animation to capture dragRectAbsolute properly
41390
41174
  if (isOwner) {
@@ -41392,57 +41176,51 @@ Sortable.prototype =
41392
41176
  } else {
41393
41177
  activeSortable._showClone(_this);
41394
41178
  }
41395
-
41396
41179
  if (_this !== fromSortable) {
41397
41180
  // Set ghost class to new sortable's ghost class
41398
41181
  toggleClass$1(dragEl, putSortable ? putSortable.options.ghostClass : activeSortable.options.ghostClass, false);
41399
41182
  toggleClass$1(dragEl, options.ghostClass, true);
41400
41183
  }
41401
-
41402
41184
  if (putSortable !== _this && _this !== Sortable.active) {
41403
41185
  putSortable = _this;
41404
41186
  } else if (_this === Sortable.active && putSortable) {
41405
41187
  putSortable = null;
41406
- } // Animation
41407
-
41188
+ }
41408
41189
 
41190
+ // Animation
41409
41191
  if (fromSortable === _this) {
41410
41192
  _this._ignoreWhileAnimating = target;
41411
41193
  }
41412
-
41413
41194
  _this.animateAll(function () {
41414
41195
  dragOverEvent('dragOverAnimationComplete');
41415
41196
  _this._ignoreWhileAnimating = null;
41416
41197
  });
41417
-
41418
41198
  if (_this !== fromSortable) {
41419
41199
  fromSortable.animateAll();
41420
41200
  fromSortable._ignoreWhileAnimating = null;
41421
41201
  }
41422
- } // Null lastTarget if it is not inside a previously swapped element
41423
-
41202
+ }
41424
41203
 
41204
+ // Null lastTarget if it is not inside a previously swapped element
41425
41205
  if (target === dragEl && !dragEl.animated || target === el && !target.animated) {
41426
41206
  lastTarget = null;
41427
- } // no bubbling and not fallback
41428
-
41207
+ }
41429
41208
 
41209
+ // no bubbling and not fallback
41430
41210
  if (!options.dragoverBubble && !evt.rootEl && target !== document) {
41431
- dragEl.parentNode[expando]._isOutsideThisEl(evt.target); // Do not detect for empty insert if already inserted
41432
-
41211
+ dragEl.parentNode[expando]._isOutsideThisEl(evt.target);
41433
41212
 
41213
+ // Do not detect for empty insert if already inserted
41434
41214
  !insertion && nearestEmptyInsertDetectEvent(evt);
41435
41215
  }
41436
-
41437
41216
  !options.dragoverBubble && evt.stopPropagation && evt.stopPropagation();
41438
41217
  return completedFired = true;
41439
- } // Call when dragEl has been inserted
41440
-
41218
+ }
41441
41219
 
41220
+ // Call when dragEl has been inserted
41442
41221
  function changed() {
41443
41222
  newIndex = index(dragEl);
41444
41223
  newDraggableIndex = index(dragEl, options.draggable);
41445
-
41446
41224
  _dispatchEvent({
41447
41225
  sortable: _this,
41448
41226
  name: 'change',
@@ -41452,37 +41230,27 @@ Sortable.prototype =
41452
41230
  originalEvent: evt
41453
41231
  });
41454
41232
  }
41455
-
41456
41233
  if (evt.preventDefault !== void 0) {
41457
41234
  evt.cancelable && evt.preventDefault();
41458
41235
  }
41459
-
41460
41236
  target = closest(target, options.draggable, el, true);
41461
41237
  dragOverEvent('dragOver');
41462
41238
  if (Sortable.eventCanceled) return completedFired;
41463
-
41464
41239
  if (dragEl.contains(evt.target) || target.animated && target.animatingX && target.animatingY || _this._ignoreWhileAnimating === target) {
41465
41240
  return completed(false);
41466
41241
  }
41467
-
41468
41242
  ignoreNextClick = false;
41469
-
41470
41243
  if (activeSortable && !options.disabled && (isOwner ? canSort || (revert = parentEl !== rootEl) // Reverting item into the original list
41471
41244
  : putSortable === this || (this.lastPutMode = activeGroup.checkPull(this, activeSortable, dragEl, evt)) && group.checkPut(this, activeSortable, dragEl, evt))) {
41472
41245
  vertical = this._getDirection(evt, target) === 'vertical';
41473
41246
  dragRect = getRect$1(dragEl);
41474
41247
  dragOverEvent('dragOverValid');
41475
41248
  if (Sortable.eventCanceled) return completedFired;
41476
-
41477
41249
  if (revert) {
41478
41250
  parentEl = rootEl; // actualization
41479
-
41480
41251
  capture();
41481
-
41482
41252
  this._hideClone();
41483
-
41484
41253
  dragOverEvent('revert');
41485
-
41486
41254
  if (!Sortable.eventCanceled) {
41487
41255
  if (nextEl) {
41488
41256
  rootEl.insertBefore(dragEl, nextEl);
@@ -41490,31 +41258,32 @@ Sortable.prototype =
41490
41258
  rootEl.appendChild(dragEl);
41491
41259
  }
41492
41260
  }
41493
-
41494
41261
  return completed(true);
41495
41262
  }
41496
-
41497
41263
  var elLastChild = lastChild(el, options.draggable);
41498
-
41499
41264
  if (!elLastChild || _ghostIsLast(evt, vertical, this) && !elLastChild.animated) {
41500
41265
  // Insert to end of list
41266
+
41501
41267
  // If already at end of list: Do not insert
41502
41268
  if (elLastChild === dragEl) {
41503
41269
  return completed(false);
41504
- } // if there is a last element, it is the target
41505
-
41270
+ }
41506
41271
 
41272
+ // if there is a last element, it is the target
41507
41273
  if (elLastChild && el === evt.target) {
41508
41274
  target = elLastChild;
41509
41275
  }
41510
-
41511
41276
  if (target) {
41512
41277
  targetRect = getRect$1(target);
41513
41278
  }
41514
-
41515
41279
  if (_onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, !!target) !== false) {
41516
41280
  capture();
41517
- el.appendChild(dragEl);
41281
+ if (elLastChild && elLastChild.nextSibling) {
41282
+ // the last draggable element is not the last node
41283
+ el.insertBefore(dragEl, elLastChild.nextSibling);
41284
+ } else {
41285
+ el.appendChild(dragEl);
41286
+ }
41518
41287
  parentEl = el; // actualization
41519
41288
 
41520
41289
  changed();
@@ -41523,14 +41292,11 @@ Sortable.prototype =
41523
41292
  } else if (elLastChild && _ghostIsFirst(evt, vertical, this)) {
41524
41293
  // Insert to start of list
41525
41294
  var firstChild = getChild(el, 0, options, true);
41526
-
41527
41295
  if (firstChild === dragEl) {
41528
41296
  return completed(false);
41529
41297
  }
41530
-
41531
41298
  target = firstChild;
41532
41299
  targetRect = getRect$1(target);
41533
-
41534
41300
  if (_onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, false) !== false) {
41535
41301
  capture();
41536
41302
  el.insertBefore(dragEl, firstChild);
@@ -41542,82 +41308,68 @@ Sortable.prototype =
41542
41308
  } else if (target.parentNode === el) {
41543
41309
  targetRect = getRect$1(target);
41544
41310
  var direction = 0,
41545
- targetBeforeFirstSwap,
41546
- differentLevel = dragEl.parentNode !== el,
41547
- differentRowCol = !_dragElInRowColumn(dragEl.animated && dragEl.toRect || dragRect, target.animated && target.toRect || targetRect, vertical),
41548
- side1 = vertical ? 'top' : 'left',
41549
- scrolledPastTop = isScrolledPast(target, 'top', 'top') || isScrolledPast(dragEl, 'top', 'top'),
41550
- scrollBefore = scrolledPastTop ? scrolledPastTop.scrollTop : void 0;
41551
-
41311
+ targetBeforeFirstSwap,
41312
+ differentLevel = dragEl.parentNode !== el,
41313
+ differentRowCol = !_dragElInRowColumn(dragEl.animated && dragEl.toRect || dragRect, target.animated && target.toRect || targetRect, vertical),
41314
+ side1 = vertical ? 'top' : 'left',
41315
+ scrolledPastTop = isScrolledPast(target, 'top', 'top') || isScrolledPast(dragEl, 'top', 'top'),
41316
+ scrollBefore = scrolledPastTop ? scrolledPastTop.scrollTop : void 0;
41552
41317
  if (lastTarget !== target) {
41553
41318
  targetBeforeFirstSwap = targetRect[side1];
41554
41319
  pastFirstInvertThresh = false;
41555
41320
  isCircumstantialInvert = !differentRowCol && options.invertSwap || differentLevel;
41556
41321
  }
41557
-
41558
41322
  direction = _getSwapDirection(evt, target, targetRect, vertical, differentRowCol ? 1 : options.swapThreshold, options.invertedSwapThreshold == null ? options.swapThreshold : options.invertedSwapThreshold, isCircumstantialInvert, lastTarget === target);
41559
41323
  var sibling;
41560
-
41561
41324
  if (direction !== 0) {
41562
41325
  // Check if target is beside dragEl in respective direction (ignoring hidden elements)
41563
41326
  var dragIndex = index(dragEl);
41564
-
41565
41327
  do {
41566
41328
  dragIndex -= direction;
41567
41329
  sibling = parentEl.children[dragIndex];
41568
41330
  } while (sibling && (css$2(sibling, 'display') === 'none' || sibling === ghostEl));
41569
- } // If dragEl is already beside target: Do not insert
41570
-
41571
-
41331
+ }
41332
+ // If dragEl is already beside target: Do not insert
41572
41333
  if (direction === 0 || sibling === target) {
41573
41334
  return completed(false);
41574
41335
  }
41575
-
41576
41336
  lastTarget = target;
41577
41337
  lastDirection = direction;
41578
41338
  var nextSibling = target.nextElementSibling,
41579
- after = false;
41339
+ after = false;
41580
41340
  after = direction === 1;
41581
-
41582
41341
  var moveVector = _onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, after);
41583
-
41584
41342
  if (moveVector !== false) {
41585
41343
  if (moveVector === 1 || moveVector === -1) {
41586
41344
  after = moveVector === 1;
41587
41345
  }
41588
-
41589
41346
  _silent = true;
41590
41347
  setTimeout(_unsilent, 30);
41591
41348
  capture();
41592
-
41593
41349
  if (after && !nextSibling) {
41594
41350
  el.appendChild(dragEl);
41595
41351
  } else {
41596
41352
  target.parentNode.insertBefore(dragEl, after ? nextSibling : target);
41597
- } // Undo chrome's scroll adjustment (has no effect on other browsers)
41598
-
41353
+ }
41599
41354
 
41355
+ // Undo chrome's scroll adjustment (has no effect on other browsers)
41600
41356
  if (scrolledPastTop) {
41601
41357
  scrollBy(scrolledPastTop, 0, scrollBefore - scrolledPastTop.scrollTop);
41602
41358
  }
41603
-
41604
41359
  parentEl = dragEl.parentNode; // actualization
41605
- // must be done before animation
41606
41360
 
41361
+ // must be done before animation
41607
41362
  if (targetBeforeFirstSwap !== undefined && !isCircumstantialInvert) {
41608
41363
  targetMoveDistance = Math.abs(targetBeforeFirstSwap - getRect$1(target)[side1]);
41609
41364
  }
41610
-
41611
41365
  changed();
41612
41366
  return completed(true);
41613
41367
  }
41614
41368
  }
41615
-
41616
41369
  if (el.contains(dragEl)) {
41617
41370
  return completed(false);
41618
41371
  }
41619
41372
  }
41620
-
41621
41373
  return false;
41622
41374
  },
41623
41375
  _ignoreWhileAnimating: null,
@@ -41637,83 +41389,69 @@ Sortable.prototype =
41637
41389
  off(ownerDocument, 'touchcancel', this._onDrop);
41638
41390
  off(document, 'selectstart', this);
41639
41391
  },
41640
- _onDrop: function _onDrop(
41641
- /**Event*/
41642
- evt) {
41392
+ _onDrop: function _onDrop( /**Event*/evt) {
41643
41393
  var el = this.el,
41644
- options = this.options; // Get the index of the dragged element within its parent
41394
+ options = this.options;
41645
41395
 
41396
+ // Get the index of the dragged element within its parent
41646
41397
  newIndex = index(dragEl);
41647
41398
  newDraggableIndex = index(dragEl, options.draggable);
41648
41399
  pluginEvent('drop', this, {
41649
41400
  evt: evt
41650
41401
  });
41651
- parentEl = dragEl && dragEl.parentNode; // Get again after plugin event
41402
+ parentEl = dragEl && dragEl.parentNode;
41652
41403
 
41404
+ // Get again after plugin event
41653
41405
  newIndex = index(dragEl);
41654
41406
  newDraggableIndex = index(dragEl, options.draggable);
41655
-
41656
41407
  if (Sortable.eventCanceled) {
41657
41408
  this._nulling();
41658
-
41659
41409
  return;
41660
41410
  }
41661
-
41662
41411
  awaitingDragStarted = false;
41663
41412
  isCircumstantialInvert = false;
41664
41413
  pastFirstInvertThresh = false;
41665
41414
  clearInterval(this._loopId);
41666
41415
  clearTimeout(this._dragStartTimer);
41667
-
41668
41416
  _cancelNextTick(this.cloneId);
41417
+ _cancelNextTick(this._dragStartId);
41669
41418
 
41670
- _cancelNextTick(this._dragStartId); // Unbind events
41671
-
41672
-
41419
+ // Unbind events
41673
41420
  if (this.nativeDraggable) {
41674
41421
  off(document, 'drop', this);
41675
41422
  off(el, 'dragstart', this._onDragStart);
41676
41423
  }
41677
-
41678
41424
  this._offMoveEvents();
41679
-
41680
41425
  this._offUpEvents();
41681
-
41682
41426
  if (Safari) {
41683
41427
  css$2(document.body, 'user-select', '');
41684
41428
  }
41685
-
41686
41429
  css$2(dragEl, 'transform', '');
41687
-
41688
41430
  if (evt) {
41689
41431
  if (moved) {
41690
41432
  evt.cancelable && evt.preventDefault();
41691
41433
  !options.dropBubble && evt.stopPropagation();
41692
41434
  }
41693
-
41694
41435
  ghostEl && ghostEl.parentNode && ghostEl.parentNode.removeChild(ghostEl);
41695
-
41696
41436
  if (rootEl === parentEl || putSortable && putSortable.lastPutMode !== 'clone') {
41697
41437
  // Remove clone(s)
41698
41438
  cloneEl && cloneEl.parentNode && cloneEl.parentNode.removeChild(cloneEl);
41699
41439
  }
41700
-
41701
41440
  if (dragEl) {
41702
41441
  if (this.nativeDraggable) {
41703
41442
  off(dragEl, 'dragend', this);
41704
41443
  }
41705
-
41706
41444
  _disableDraggable(dragEl);
41445
+ dragEl.style['will-change'] = '';
41707
41446
 
41708
- dragEl.style['will-change'] = ''; // Remove classes
41447
+ // Remove classes
41709
41448
  // ghostClass is added in dragStarted
41710
-
41711
41449
  if (moved && !awaitingDragStarted) {
41712
41450
  toggleClass$1(dragEl, putSortable ? putSortable.options.ghostClass : this.options.ghostClass, false);
41713
41451
  }
41452
+ toggleClass$1(dragEl, this.options.chosenClass, false);
41714
41453
 
41715
- toggleClass$1(dragEl, this.options.chosenClass, false); // Drag stop event
41716
-
41454
+ // Drag stop event
41717
41455
  _dispatchEvent({
41718
41456
  sortable: this,
41719
41457
  name: 'unchoose',
@@ -41722,7 +41460,6 @@ Sortable.prototype =
41722
41460
  newDraggableIndex: null,
41723
41461
  originalEvent: evt
41724
41462
  });
41725
-
41726
41463
  if (rootEl !== parentEl) {
41727
41464
  if (newIndex >= 0) {
41728
41465
  // Add event
@@ -41732,17 +41469,17 @@ Sortable.prototype =
41732
41469
  toEl: parentEl,
41733
41470
  fromEl: rootEl,
41734
41471
  originalEvent: evt
41735
- }); // Remove event
41736
-
41472
+ });
41737
41473
 
41474
+ // Remove event
41738
41475
  _dispatchEvent({
41739
41476
  sortable: this,
41740
41477
  name: 'remove',
41741
41478
  toEl: parentEl,
41742
41479
  originalEvent: evt
41743
- }); // drag from one list and drop into another
41744
-
41480
+ });
41745
41481
 
41482
+ // drag from one list and drop into another
41746
41483
  _dispatchEvent({
41747
41484
  rootEl: parentEl,
41748
41485
  name: 'sort',
@@ -41750,7 +41487,6 @@ Sortable.prototype =
41750
41487
  fromEl: rootEl,
41751
41488
  originalEvent: evt
41752
41489
  });
41753
-
41754
41490
  _dispatchEvent({
41755
41491
  sortable: this,
41756
41492
  name: 'sort',
@@ -41758,7 +41494,6 @@ Sortable.prototype =
41758
41494
  originalEvent: evt
41759
41495
  });
41760
41496
  }
41761
-
41762
41497
  putSortable && putSortable.save();
41763
41498
  } else {
41764
41499
  if (newIndex !== oldIndex) {
@@ -41770,7 +41505,6 @@ Sortable.prototype =
41770
41505
  toEl: parentEl,
41771
41506
  originalEvent: evt
41772
41507
  });
41773
-
41774
41508
  _dispatchEvent({
41775
41509
  sortable: this,
41776
41510
  name: 'sort',
@@ -41780,27 +41514,24 @@ Sortable.prototype =
41780
41514
  }
41781
41515
  }
41782
41516
  }
41783
-
41784
41517
  if (Sortable.active) {
41785
41518
  /* jshint eqnull:true */
41786
41519
  if (newIndex == null || newIndex === -1) {
41787
41520
  newIndex = oldIndex;
41788
41521
  newDraggableIndex = oldDraggableIndex;
41789
41522
  }
41790
-
41791
41523
  _dispatchEvent({
41792
41524
  sortable: this,
41793
41525
  name: 'end',
41794
41526
  toEl: parentEl,
41795
41527
  originalEvent: evt
41796
- }); // Save sorting
41797
-
41528
+ });
41798
41529
 
41530
+ // Save sorting
41799
41531
  this.save();
41800
41532
  }
41801
41533
  }
41802
41534
  }
41803
-
41804
41535
  this._nulling();
41805
41536
  },
41806
41537
  _nulling: function _nulling() {
@@ -41811,65 +41542,52 @@ Sortable.prototype =
41811
41542
  });
41812
41543
  savedInputChecked.length = lastDx = lastDy = 0;
41813
41544
  },
41814
- handleEvent: function handleEvent(
41815
- /**Event*/
41816
- evt) {
41545
+ handleEvent: function handleEvent( /**Event*/evt) {
41817
41546
  switch (evt.type) {
41818
41547
  case 'drop':
41819
41548
  case 'dragend':
41820
41549
  this._onDrop(evt);
41821
-
41822
41550
  break;
41823
-
41824
41551
  case 'dragenter':
41825
41552
  case 'dragover':
41826
41553
  if (dragEl) {
41827
41554
  this._onDragOver(evt);
41828
-
41829
41555
  _globalDragOver(evt);
41830
41556
  }
41831
-
41832
41557
  break;
41833
-
41834
41558
  case 'selectstart':
41835
41559
  evt.preventDefault();
41836
41560
  break;
41837
41561
  }
41838
41562
  },
41839
-
41840
- /**
41841
- * Serializes the item into an array of string.
41842
- * @returns {String[]}
41563
+ /**
41564
+ * Serializes the item into an array of string.
41565
+ * @returns {String[]}
41843
41566
  */
41844
41567
  toArray: function toArray() {
41845
41568
  var order = [],
41846
- el,
41847
- children = this.el.children,
41848
- i = 0,
41849
- n = children.length,
41850
- options = this.options;
41851
-
41569
+ el,
41570
+ children = this.el.children,
41571
+ i = 0,
41572
+ n = children.length,
41573
+ options = this.options;
41852
41574
  for (; i < n; i++) {
41853
41575
  el = children[i];
41854
-
41855
41576
  if (closest(el, options.draggable, this.el, false)) {
41856
41577
  order.push(el.getAttribute(options.dataIdAttr) || _generateId(el));
41857
41578
  }
41858
41579
  }
41859
-
41860
41580
  return order;
41861
41581
  },
41862
-
41863
- /**
41864
- * Sorts the elements according to the array.
41865
- * @param {String[]} order order of the items
41582
+ /**
41583
+ * Sorts the elements according to the array.
41584
+ * @param {String[]} order order of the items
41866
41585
  */
41867
41586
  sort: function sort(order, useAnimation) {
41868
41587
  var items = {},
41869
- rootEl = this.el;
41588
+ rootEl = this.el;
41870
41589
  this.toArray().forEach(function (id, i) {
41871
41590
  var el = rootEl.children[i];
41872
-
41873
41591
  if (closest(el, this.options.draggable, rootEl, false)) {
41874
41592
  items[id] = el;
41875
41593
  }
@@ -41883,53 +41601,46 @@ Sortable.prototype =
41883
41601
  });
41884
41602
  useAnimation && this.animateAll();
41885
41603
  },
41886
-
41887
- /**
41888
- * Save the current sorting
41604
+ /**
41605
+ * Save the current sorting
41889
41606
  */
41890
41607
  save: function save() {
41891
41608
  var store = this.options.store;
41892
41609
  store && store.set && store.set(this);
41893
41610
  },
41894
-
41895
- /**
41896
- * 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.
41897
- * @param {HTMLElement} el
41898
- * @param {String} [selector] default: `options.draggable`
41899
- * @returns {HTMLElement|null}
41611
+ /**
41612
+ * 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.
41613
+ * @param {HTMLElement} el
41614
+ * @param {String} [selector] default: `options.draggable`
41615
+ * @returns {HTMLElement|null}
41900
41616
  */
41901
41617
  closest: function closest$1(el, selector) {
41902
41618
  return closest(el, selector || this.options.draggable, this.el, false);
41903
41619
  },
41904
-
41905
- /**
41906
- * Set/get option
41907
- * @param {string} name
41908
- * @param {*} [value]
41909
- * @returns {*}
41620
+ /**
41621
+ * Set/get option
41622
+ * @param {string} name
41623
+ * @param {*} [value]
41624
+ * @returns {*}
41910
41625
  */
41911
41626
  option: function option(name, value) {
41912
41627
  var options = this.options;
41913
-
41914
41628
  if (value === void 0) {
41915
41629
  return options[name];
41916
41630
  } else {
41917
41631
  var modifiedValue = PluginManager.modifyOption(this, name, value);
41918
-
41919
41632
  if (typeof modifiedValue !== 'undefined') {
41920
41633
  options[name] = modifiedValue;
41921
41634
  } else {
41922
41635
  options[name] = value;
41923
41636
  }
41924
-
41925
41637
  if (name === 'group') {
41926
41638
  _prepareGroup(options);
41927
41639
  }
41928
41640
  }
41929
41641
  },
41930
-
41931
- /**
41932
- * Destroy
41642
+ /**
41643
+ * Destroy
41933
41644
  */
41934
41645
  destroy: function destroy() {
41935
41646
  pluginEvent('destroy', this);
@@ -41938,21 +41649,16 @@ Sortable.prototype =
41938
41649
  off(el, 'mousedown', this._onTapStart);
41939
41650
  off(el, 'touchstart', this._onTapStart);
41940
41651
  off(el, 'pointerdown', this._onTapStart);
41941
-
41942
41652
  if (this.nativeDraggable) {
41943
41653
  off(el, 'dragover', this);
41944
41654
  off(el, 'dragenter', this);
41945
- } // Remove draggable attributes
41946
-
41947
-
41655
+ }
41656
+ // Remove draggable attributes
41948
41657
  Array.prototype.forEach.call(el.querySelectorAll('[draggable]'), function (el) {
41949
41658
  el.removeAttribute('draggable');
41950
41659
  });
41951
-
41952
41660
  this._onDrop();
41953
-
41954
41661
  this._disableDelayedDragEvents();
41955
-
41956
41662
  sortables.splice(sortables.indexOf(this.el), 1);
41957
41663
  this.el = el = null;
41958
41664
  },
@@ -41961,25 +41667,22 @@ Sortable.prototype =
41961
41667
  pluginEvent('hideClone', this);
41962
41668
  if (Sortable.eventCanceled) return;
41963
41669
  css$2(cloneEl, 'display', 'none');
41964
-
41965
41670
  if (this.options.removeCloneOnHide && cloneEl.parentNode) {
41966
41671
  cloneEl.parentNode.removeChild(cloneEl);
41967
41672
  }
41968
-
41969
41673
  cloneHidden = true;
41970
41674
  }
41971
41675
  },
41972
41676
  _showClone: function _showClone(putSortable) {
41973
41677
  if (putSortable.lastPutMode !== 'clone') {
41974
41678
  this._hideClone();
41975
-
41976
41679
  return;
41977
41680
  }
41978
-
41979
41681
  if (cloneHidden) {
41980
41682
  pluginEvent('showClone', this);
41981
- if (Sortable.eventCanceled) return; // show clone at dragEl or original position
41683
+ if (Sortable.eventCanceled) return;
41982
41684
 
41685
+ // show clone at dragEl or original position
41983
41686
  if (dragEl.parentNode == rootEl && !this.options.group.revertClone) {
41984
41687
  rootEl.insertBefore(cloneEl, dragEl);
41985
41688
  } else if (nextEl) {
@@ -41987,33 +41690,26 @@ Sortable.prototype =
41987
41690
  } else {
41988
41691
  rootEl.appendChild(cloneEl);
41989
41692
  }
41990
-
41991
41693
  if (this.options.group.revertClone) {
41992
41694
  this.animate(dragEl, cloneEl);
41993
41695
  }
41994
-
41995
41696
  css$2(cloneEl, 'display', '');
41996
41697
  cloneHidden = false;
41997
41698
  }
41998
41699
  }
41999
41700
  };
42000
-
42001
- function _globalDragOver(
42002
- /**Event*/
42003
- evt) {
41701
+ function _globalDragOver( /**Event*/evt) {
42004
41702
  if (evt.dataTransfer) {
42005
41703
  evt.dataTransfer.dropEffect = 'move';
42006
41704
  }
42007
-
42008
41705
  evt.cancelable && evt.preventDefault();
42009
41706
  }
42010
-
42011
41707
  function _onMove(fromEl, toEl, dragEl, dragRect, targetEl, targetRect, originalEvent, willInsertAfter) {
42012
41708
  var evt,
42013
- sortable = fromEl[expando],
42014
- onMoveFn = sortable.options.onMove,
42015
- retVal; // Support for new CustomEvent feature
42016
-
41709
+ sortable = fromEl[expando],
41710
+ onMoveFn = sortable.options.onMove,
41711
+ retVal;
41712
+ // Support for new CustomEvent feature
42017
41713
  if (window.CustomEvent && !IE11OrLess && !Edge) {
42018
41714
  evt = new CustomEvent('move', {
42019
41715
  bubbles: true,
@@ -42023,7 +41719,6 @@ function _onMove(fromEl, toEl, dragEl, dragRect, targetEl, targetRect, originalE
42023
41719
  evt = document.createEvent('Event');
42024
41720
  evt.initEvent('move', true, true);
42025
41721
  }
42026
-
42027
41722
  evt.to = toEl;
42028
41723
  evt.from = fromEl;
42029
41724
  evt.dragged = dragEl;
@@ -42033,41 +41728,35 @@ function _onMove(fromEl, toEl, dragEl, dragRect, targetEl, targetRect, originalE
42033
41728
  evt.willInsertAfter = willInsertAfter;
42034
41729
  evt.originalEvent = originalEvent;
42035
41730
  fromEl.dispatchEvent(evt);
42036
-
42037
41731
  if (onMoveFn) {
42038
41732
  retVal = onMoveFn.call(sortable, evt, originalEvent);
42039
41733
  }
42040
-
42041
41734
  return retVal;
42042
41735
  }
42043
-
42044
41736
  function _disableDraggable(el) {
42045
41737
  el.draggable = false;
42046
41738
  }
42047
-
42048
41739
  function _unsilent() {
42049
41740
  _silent = false;
42050
41741
  }
42051
-
42052
41742
  function _ghostIsFirst(evt, vertical, sortable) {
42053
- var rect = getRect$1(getChild(sortable.el, 0, sortable.options, true));
41743
+ var firstElRect = getRect$1(getChild(sortable.el, 0, sortable.options, true));
41744
+ var childContainingRect = getChildContainingRectFromElement(sortable.el, sortable.options, ghostEl);
42054
41745
  var spacer = 10;
42055
- return vertical ? evt.clientX < rect.left - spacer || evt.clientY < rect.top && evt.clientX < rect.right : evt.clientY < rect.top - spacer || evt.clientY < rect.bottom && evt.clientX < rect.left;
41746
+ 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;
42056
41747
  }
42057
-
42058
41748
  function _ghostIsLast(evt, vertical, sortable) {
42059
- var rect = getRect$1(lastChild(sortable.el, sortable.options.draggable));
41749
+ var lastElRect = getRect$1(lastChild(sortable.el, sortable.options.draggable));
41750
+ var childContainingRect = getChildContainingRectFromElement(sortable.el, sortable.options, ghostEl);
42060
41751
  var spacer = 10;
42061
- return vertical ? evt.clientX > rect.right + spacer || evt.clientX <= rect.right && evt.clientY > rect.bottom && evt.clientX >= rect.left : evt.clientX > rect.right && evt.clientY > rect.top || evt.clientX <= rect.right && evt.clientY > rect.bottom + spacer;
41752
+ 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;
42062
41753
  }
42063
-
42064
41754
  function _getSwapDirection(evt, target, targetRect, vertical, swapThreshold, invertedSwapThreshold, invertSwap, isLastTarget) {
42065
41755
  var mouseOnAxis = vertical ? evt.clientY : evt.clientX,
42066
- targetLength = vertical ? targetRect.height : targetRect.width,
42067
- targetS1 = vertical ? targetRect.top : targetRect.left,
42068
- targetS2 = vertical ? targetRect.bottom : targetRect.right,
42069
- invert = false;
42070
-
41756
+ targetLength = vertical ? targetRect.height : targetRect.width,
41757
+ targetS1 = vertical ? targetRect.top : targetRect.left,
41758
+ targetS2 = vertical ? targetRect.bottom : targetRect.right,
41759
+ invert = false;
42071
41760
  if (!invertSwap) {
42072
41761
  // Never invert or create dragEl shadow when target movemenet causes mouse to move past the end of regular swapThreshold
42073
41762
  if (isLastTarget && targetMoveDistance < targetLength * swapThreshold) {
@@ -42077,7 +41766,6 @@ function _getSwapDirection(evt, target, targetRect, vertical, swapThreshold, inv
42077
41766
  // past first invert threshold, do not restrict inverted threshold to dragEl shadow
42078
41767
  pastFirstInvertThresh = true;
42079
41768
  }
42080
-
42081
41769
  if (!pastFirstInvertThresh) {
42082
41770
  // dragEl shadow (target move distance shadow)
42083
41771
  if (lastDirection === 1 ? mouseOnAxis < targetS1 + targetMoveDistance // over dragEl shadow
@@ -42094,26 +41782,22 @@ function _getSwapDirection(evt, target, targetRect, vertical, swapThreshold, inv
42094
41782
  }
42095
41783
  }
42096
41784
  }
42097
-
42098
41785
  invert = invert || invertSwap;
42099
-
42100
41786
  if (invert) {
42101
41787
  // Invert of regular
42102
41788
  if (mouseOnAxis < targetS1 + targetLength * invertedSwapThreshold / 2 || mouseOnAxis > targetS2 - targetLength * invertedSwapThreshold / 2) {
42103
41789
  return mouseOnAxis > targetS1 + targetLength / 2 ? 1 : -1;
42104
41790
  }
42105
41791
  }
42106
-
42107
41792
  return 0;
42108
41793
  }
42109
- /**
42110
- * Gets the direction dragEl must be swapped relative to target in order to make it
42111
- * seem that dragEl has been "inserted" into that element's position
42112
- * @param {HTMLElement} target The target whose position dragEl is being inserted at
42113
- * @return {Number} Direction dragEl must be swapped
42114
- */
42115
-
42116
41794
 
41795
+ /**
41796
+ * Gets the direction dragEl must be swapped relative to target in order to make it
41797
+ * seem that dragEl has been "inserted" into that element's position
41798
+ * @param {HTMLElement} target The target whose position dragEl is being inserted at
41799
+ * @return {Number} Direction dragEl must be swapped
41800
+ */
42117
41801
  function _getInsertDirection(target) {
42118
41802
  if (index(dragEl) < index(target)) {
42119
41803
  return 1;
@@ -42121,55 +41805,48 @@ function _getInsertDirection(target) {
42121
41805
  return -1;
42122
41806
  }
42123
41807
  }
42124
- /**
42125
- * Generate id
42126
- * @param {HTMLElement} el
42127
- * @returns {String}
42128
- * @private
42129
- */
42130
-
42131
41808
 
41809
+ /**
41810
+ * Generate id
41811
+ * @param {HTMLElement} el
41812
+ * @returns {String}
41813
+ * @private
41814
+ */
42132
41815
  function _generateId(el) {
42133
41816
  var str = el.tagName + el.className + el.src + el.href + el.textContent,
42134
- i = str.length,
42135
- sum = 0;
42136
-
41817
+ i = str.length,
41818
+ sum = 0;
42137
41819
  while (i--) {
42138
41820
  sum += str.charCodeAt(i);
42139
41821
  }
42140
-
42141
41822
  return sum.toString(36);
42142
41823
  }
42143
-
42144
41824
  function _saveInputCheckedState(root) {
42145
41825
  savedInputChecked.length = 0;
42146
41826
  var inputs = root.getElementsByTagName('input');
42147
41827
  var idx = inputs.length;
42148
-
42149
41828
  while (idx--) {
42150
41829
  var el = inputs[idx];
42151
41830
  el.checked && savedInputChecked.push(el);
42152
41831
  }
42153
41832
  }
42154
-
42155
41833
  function _nextTick(fn) {
42156
41834
  return setTimeout(fn, 0);
42157
41835
  }
42158
-
42159
41836
  function _cancelNextTick(id) {
42160
41837
  return clearTimeout(id);
42161
- } // Fixed #973:
42162
-
41838
+ }
42163
41839
 
41840
+ // Fixed #973:
42164
41841
  if (documentExists) {
42165
41842
  on(document, 'touchmove', function (evt) {
42166
41843
  if ((Sortable.active || awaitingDragStarted) && evt.cancelable) {
42167
41844
  evt.preventDefault();
42168
41845
  }
42169
41846
  });
42170
- } // Export utils
42171
-
41847
+ }
42172
41848
 
41849
+ // Export utils
42173
41850
  Sortable.utils = {
42174
41851
  on: on,
42175
41852
  off: off,
@@ -42189,59 +41866,54 @@ Sortable.utils = {
42189
41866
  detectDirection: _detectDirection,
42190
41867
  getChild: getChild
42191
41868
  };
42192
- /**
42193
- * Get the Sortable instance of an element
42194
- * @param {HTMLElement} element The element
42195
- * @return {Sortable|undefined} The instance of Sortable
42196
- */
42197
41869
 
41870
+ /**
41871
+ * Get the Sortable instance of an element
41872
+ * @param {HTMLElement} element The element
41873
+ * @return {Sortable|undefined} The instance of Sortable
41874
+ */
42198
41875
  Sortable.get = function (element) {
42199
41876
  return element[expando];
42200
41877
  };
42201
- /**
42202
- * Mount a plugin to Sortable
42203
- * @param {...SortablePlugin|SortablePlugin[]} plugins Plugins being mounted
42204
- */
42205
-
42206
41878
 
41879
+ /**
41880
+ * Mount a plugin to Sortable
41881
+ * @param {...SortablePlugin|SortablePlugin[]} plugins Plugins being mounted
41882
+ */
42207
41883
  Sortable.mount = function () {
42208
41884
  for (var _len = arguments.length, plugins = new Array(_len), _key = 0; _key < _len; _key++) {
42209
41885
  plugins[_key] = arguments[_key];
42210
41886
  }
42211
-
42212
41887
  if (plugins[0].constructor === Array) plugins = plugins[0];
42213
41888
  plugins.forEach(function (plugin) {
42214
41889
  if (!plugin.prototype || !plugin.prototype.constructor) {
42215
41890
  throw "Sortable: Mounted plugin must be a constructor function, not ".concat({}.toString.call(plugin));
42216
41891
  }
42217
-
42218
41892
  if (plugin.utils) Sortable.utils = _objectSpread2$1(_objectSpread2$1({}, Sortable.utils), plugin.utils);
42219
41893
  PluginManager.mount(plugin);
42220
41894
  });
42221
41895
  };
42222
- /**
42223
- * Create sortable instance
42224
- * @param {HTMLElement} el
42225
- * @param {Object} [options]
42226
- */
42227
-
42228
41896
 
41897
+ /**
41898
+ * Create sortable instance
41899
+ * @param {HTMLElement} el
41900
+ * @param {Object} [options]
41901
+ */
42229
41902
  Sortable.create = function (el, options) {
42230
41903
  return new Sortable(el, options);
42231
- }; // Export
42232
-
41904
+ };
42233
41905
 
41906
+ // Export
42234
41907
  Sortable.version = version$1;
42235
41908
 
42236
41909
  var autoScrolls = [],
42237
- scrollEl,
42238
- scrollRootEl,
42239
- scrolling = false,
42240
- lastAutoScrollX,
42241
- lastAutoScrollY,
42242
- touchEvt$1,
42243
- pointerElemChangedInterval;
42244
-
41910
+ scrollEl,
41911
+ scrollRootEl,
41912
+ scrolling = false,
41913
+ lastAutoScrollX,
41914
+ lastAutoScrollY,
41915
+ touchEvt$1,
41916
+ pointerElemChangedInterval;
42245
41917
  function AutoScrollPlugin() {
42246
41918
  function AutoScroll() {
42247
41919
  this.defaults = {
@@ -42250,19 +41922,18 @@ function AutoScrollPlugin() {
42250
41922
  scrollSensitivity: 30,
42251
41923
  scrollSpeed: 10,
42252
41924
  bubbleScroll: true
42253
- }; // Bind all private methods
41925
+ };
42254
41926
 
41927
+ // Bind all private methods
42255
41928
  for (var fn in this) {
42256
41929
  if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {
42257
41930
  this[fn] = this[fn].bind(this);
42258
41931
  }
42259
41932
  }
42260
41933
  }
42261
-
42262
41934
  AutoScroll.prototype = {
42263
41935
  dragStarted: function dragStarted(_ref) {
42264
41936
  var originalEvent = _ref.originalEvent;
42265
-
42266
41937
  if (this.sortable.nativeDraggable) {
42267
41938
  on(document, 'dragover', this._handleAutoScroll);
42268
41939
  } else {
@@ -42277,7 +41948,6 @@ function AutoScrollPlugin() {
42277
41948
  },
42278
41949
  dragOverCompleted: function dragOverCompleted(_ref2) {
42279
41950
  var originalEvent = _ref2.originalEvent;
42280
-
42281
41951
  // For when bubbling is canceled and using fallback (fallback 'touchmove' always reached)
42282
41952
  if (!this.options.dragOverBubble && !originalEvent.rootEl) {
42283
41953
  this._handleAutoScroll(originalEvent);
@@ -42291,7 +41961,6 @@ function AutoScrollPlugin() {
42291
41961
  off(document, 'touchmove', this._handleFallbackAutoScroll);
42292
41962
  off(document, 'mousemove', this._handleFallbackAutoScroll);
42293
41963
  }
42294
-
42295
41964
  clearPointerElemChangedInterval();
42296
41965
  clearAutoScrolls();
42297
41966
  cancelThrottle();
@@ -42305,31 +41974,29 @@ function AutoScrollPlugin() {
42305
41974
  },
42306
41975
  _handleAutoScroll: function _handleAutoScroll(evt, fallback) {
42307
41976
  var _this = this;
42308
-
42309
41977
  var x = (evt.touches ? evt.touches[0] : evt).clientX,
42310
- y = (evt.touches ? evt.touches[0] : evt).clientY,
42311
- elem = document.elementFromPoint(x, y);
42312
- touchEvt$1 = evt; // IE does not seem to have native autoscroll,
41978
+ y = (evt.touches ? evt.touches[0] : evt).clientY,
41979
+ elem = document.elementFromPoint(x, y);
41980
+ touchEvt$1 = evt;
41981
+
41982
+ // IE does not seem to have native autoscroll,
42313
41983
  // Edge's autoscroll seems too conditional,
42314
41984
  // MACOS Safari does not have autoscroll,
42315
41985
  // Firefox and Chrome are good
42316
-
42317
41986
  if (fallback || this.options.forceAutoScrollFallback || Edge || IE11OrLess || Safari) {
42318
- autoScroll(evt, this.options, elem, fallback); // Listener for pointer element change
41987
+ autoScroll(evt, this.options, elem, fallback);
42319
41988
 
41989
+ // Listener for pointer element change
42320
41990
  var ogElemScroller = getParentAutoScrollElement(elem, true);
42321
-
42322
41991
  if (scrolling && (!pointerElemChangedInterval || x !== lastAutoScrollX || y !== lastAutoScrollY)) {
42323
- pointerElemChangedInterval && clearPointerElemChangedInterval(); // Detect for pointer elem change, emulating native DnD behaviour
42324
-
41992
+ pointerElemChangedInterval && clearPointerElemChangedInterval();
41993
+ // Detect for pointer elem change, emulating native DnD behaviour
42325
41994
  pointerElemChangedInterval = setInterval(function () {
42326
41995
  var newElem = getParentAutoScrollElement(document.elementFromPoint(x, y), true);
42327
-
42328
41996
  if (newElem !== ogElemScroller) {
42329
41997
  ogElemScroller = newElem;
42330
41998
  clearAutoScrolls();
42331
41999
  }
42332
-
42333
42000
  autoScroll(evt, _this.options, newElem, fallback);
42334
42001
  }, 10);
42335
42002
  lastAutoScrollX = x;
@@ -42341,7 +42008,6 @@ function AutoScrollPlugin() {
42341
42008
  clearAutoScrolls();
42342
42009
  return;
42343
42010
  }
42344
-
42345
42011
  autoScroll(evt, this.options, getParentAutoScrollElement(elem, false), false);
42346
42012
  }
42347
42013
  }
@@ -42351,60 +42017,54 @@ function AutoScrollPlugin() {
42351
42017
  initializeByDefault: true
42352
42018
  });
42353
42019
  }
42354
-
42355
42020
  function clearAutoScrolls() {
42356
42021
  autoScrolls.forEach(function (autoScroll) {
42357
42022
  clearInterval(autoScroll.pid);
42358
42023
  });
42359
42024
  autoScrolls = [];
42360
42025
  }
42361
-
42362
42026
  function clearPointerElemChangedInterval() {
42363
42027
  clearInterval(pointerElemChangedInterval);
42364
42028
  }
42365
-
42366
42029
  var autoScroll = throttle$1(function (evt, options, rootEl, isFallback) {
42367
42030
  // Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=505521
42368
42031
  if (!options.scroll) return;
42369
42032
  var x = (evt.touches ? evt.touches[0] : evt).clientX,
42370
- y = (evt.touches ? evt.touches[0] : evt).clientY,
42371
- sens = options.scrollSensitivity,
42372
- speed = options.scrollSpeed,
42373
- winScroller = getWindowScrollingElement();
42033
+ y = (evt.touches ? evt.touches[0] : evt).clientY,
42034
+ sens = options.scrollSensitivity,
42035
+ speed = options.scrollSpeed,
42036
+ winScroller = getWindowScrollingElement();
42374
42037
  var scrollThisInstance = false,
42375
- scrollCustomFn; // New scroll root, set scrollEl
42038
+ scrollCustomFn;
42376
42039
 
42040
+ // New scroll root, set scrollEl
42377
42041
  if (scrollRootEl !== rootEl) {
42378
42042
  scrollRootEl = rootEl;
42379
42043
  clearAutoScrolls();
42380
42044
  scrollEl = options.scroll;
42381
42045
  scrollCustomFn = options.scrollFn;
42382
-
42383
42046
  if (scrollEl === true) {
42384
42047
  scrollEl = getParentAutoScrollElement(rootEl, true);
42385
42048
  }
42386
42049
  }
42387
-
42388
42050
  var layersOut = 0;
42389
42051
  var currentParent = scrollEl;
42390
-
42391
42052
  do {
42392
42053
  var el = currentParent,
42393
- rect = getRect$1(el),
42394
- top = rect.top,
42395
- bottom = rect.bottom,
42396
- left = rect.left,
42397
- right = rect.right,
42398
- width = rect.width,
42399
- height = rect.height,
42400
- canScrollX = void 0,
42401
- canScrollY = void 0,
42402
- scrollWidth = el.scrollWidth,
42403
- scrollHeight = el.scrollHeight,
42404
- elCSS = css$2(el),
42405
- scrollPosX = el.scrollLeft,
42406
- scrollPosY = el.scrollTop;
42407
-
42054
+ rect = getRect$1(el),
42055
+ top = rect.top,
42056
+ bottom = rect.bottom,
42057
+ left = rect.left,
42058
+ right = rect.right,
42059
+ width = rect.width,
42060
+ height = rect.height,
42061
+ canScrollX = void 0,
42062
+ canScrollY = void 0,
42063
+ scrollWidth = el.scrollWidth,
42064
+ scrollHeight = el.scrollHeight,
42065
+ elCSS = css$2(el),
42066
+ scrollPosX = el.scrollLeft,
42067
+ scrollPosY = el.scrollTop;
42408
42068
  if (el === winScroller) {
42409
42069
  canScrollX = width < scrollWidth && (elCSS.overflowX === 'auto' || elCSS.overflowX === 'scroll' || elCSS.overflowX === 'visible');
42410
42070
  canScrollY = height < scrollHeight && (elCSS.overflowY === 'auto' || elCSS.overflowY === 'scroll' || elCSS.overflowY === 'visible');
@@ -42412,10 +42072,8 @@ var autoScroll = throttle$1(function (evt, options, rootEl, isFallback) {
42412
42072
  canScrollX = width < scrollWidth && (elCSS.overflowX === 'auto' || elCSS.overflowX === 'scroll');
42413
42073
  canScrollY = height < scrollHeight && (elCSS.overflowY === 'auto' || elCSS.overflowY === 'scroll');
42414
42074
  }
42415
-
42416
42075
  var vx = canScrollX && (Math.abs(right - x) <= sens && scrollPosX + width < scrollWidth) - (Math.abs(left - x) <= sens && !!scrollPosX);
42417
42076
  var vy = canScrollY && (Math.abs(bottom - y) <= sens && scrollPosY + height < scrollHeight) - (Math.abs(top - y) <= sens && !!scrollPosY);
42418
-
42419
42077
  if (!autoScrolls[layersOut]) {
42420
42078
  for (var i = 0; i <= layersOut; i++) {
42421
42079
  if (!autoScrolls[i]) {
@@ -42423,61 +42081,51 @@ var autoScroll = throttle$1(function (evt, options, rootEl, isFallback) {
42423
42081
  }
42424
42082
  }
42425
42083
  }
42426
-
42427
42084
  if (autoScrolls[layersOut].vx != vx || autoScrolls[layersOut].vy != vy || autoScrolls[layersOut].el !== el) {
42428
42085
  autoScrolls[layersOut].el = el;
42429
42086
  autoScrolls[layersOut].vx = vx;
42430
42087
  autoScrolls[layersOut].vy = vy;
42431
42088
  clearInterval(autoScrolls[layersOut].pid);
42432
-
42433
42089
  if (vx != 0 || vy != 0) {
42434
42090
  scrollThisInstance = true;
42435
42091
  /* jshint loopfunc:true */
42436
-
42437
42092
  autoScrolls[layersOut].pid = setInterval(function () {
42438
42093
  // emulate drag over during autoscroll (fallback), emulating native DnD behaviour
42439
42094
  if (isFallback && this.layer === 0) {
42440
42095
  Sortable.active._onTouchMove(touchEvt$1); // To move ghost if it is positioned absolutely
42441
-
42442
42096
  }
42443
-
42444
42097
  var scrollOffsetY = autoScrolls[this.layer].vy ? autoScrolls[this.layer].vy * speed : 0;
42445
42098
  var scrollOffsetX = autoScrolls[this.layer].vx ? autoScrolls[this.layer].vx * speed : 0;
42446
-
42447
42099
  if (typeof scrollCustomFn === 'function') {
42448
42100
  if (scrollCustomFn.call(Sortable.dragged.parentNode[expando], scrollOffsetX, scrollOffsetY, evt, touchEvt$1, autoScrolls[this.layer].el) !== 'continue') {
42449
42101
  return;
42450
42102
  }
42451
42103
  }
42452
-
42453
42104
  scrollBy(autoScrolls[this.layer].el, scrollOffsetX, scrollOffsetY);
42454
42105
  }.bind({
42455
42106
  layer: layersOut
42456
42107
  }), 24);
42457
42108
  }
42458
42109
  }
42459
-
42460
42110
  layersOut++;
42461
42111
  } while (options.bubbleScroll && currentParent !== winScroller && (currentParent = getParentAutoScrollElement(currentParent, false)));
42462
-
42463
42112
  scrolling = scrollThisInstance; // in case another function catches scrolling as false in between when it is not
42464
42113
  }, 30);
42465
42114
 
42466
42115
  var drop = function drop(_ref) {
42467
42116
  var originalEvent = _ref.originalEvent,
42468
- putSortable = _ref.putSortable,
42469
- dragEl = _ref.dragEl,
42470
- activeSortable = _ref.activeSortable,
42471
- dispatchSortableEvent = _ref.dispatchSortableEvent,
42472
- hideGhostForTarget = _ref.hideGhostForTarget,
42473
- unhideGhostForTarget = _ref.unhideGhostForTarget;
42117
+ putSortable = _ref.putSortable,
42118
+ dragEl = _ref.dragEl,
42119
+ activeSortable = _ref.activeSortable,
42120
+ dispatchSortableEvent = _ref.dispatchSortableEvent,
42121
+ hideGhostForTarget = _ref.hideGhostForTarget,
42122
+ unhideGhostForTarget = _ref.unhideGhostForTarget;
42474
42123
  if (!originalEvent) return;
42475
42124
  var toSortable = putSortable || activeSortable;
42476
42125
  hideGhostForTarget();
42477
42126
  var touch = originalEvent.changedTouches && originalEvent.changedTouches.length ? originalEvent.changedTouches[0] : originalEvent;
42478
42127
  var target = document.elementFromPoint(touch.clientX, touch.clientY);
42479
42128
  unhideGhostForTarget();
42480
-
42481
42129
  if (toSortable && !toSortable.el.contains(target)) {
42482
42130
  dispatchSortableEvent('spill');
42483
42131
  this.onSpill({
@@ -42486,9 +42134,7 @@ var drop = function drop(_ref) {
42486
42134
  });
42487
42135
  }
42488
42136
  };
42489
-
42490
42137
  function Revert() {}
42491
-
42492
42138
  Revert.prototype = {
42493
42139
  startIndex: null,
42494
42140
  dragStart: function dragStart(_ref2) {
@@ -42497,40 +42143,32 @@ Revert.prototype = {
42497
42143
  },
42498
42144
  onSpill: function onSpill(_ref3) {
42499
42145
  var dragEl = _ref3.dragEl,
42500
- putSortable = _ref3.putSortable;
42146
+ putSortable = _ref3.putSortable;
42501
42147
  this.sortable.captureAnimationState();
42502
-
42503
42148
  if (putSortable) {
42504
42149
  putSortable.captureAnimationState();
42505
42150
  }
42506
-
42507
42151
  var nextSibling = getChild(this.sortable.el, this.startIndex, this.options);
42508
-
42509
42152
  if (nextSibling) {
42510
42153
  this.sortable.el.insertBefore(dragEl, nextSibling);
42511
42154
  } else {
42512
42155
  this.sortable.el.appendChild(dragEl);
42513
42156
  }
42514
-
42515
42157
  this.sortable.animateAll();
42516
-
42517
42158
  if (putSortable) {
42518
42159
  putSortable.animateAll();
42519
42160
  }
42520
42161
  },
42521
42162
  drop: drop
42522
42163
  };
42523
-
42524
42164
  _extends(Revert, {
42525
42165
  pluginName: 'revertOnSpill'
42526
42166
  });
42527
-
42528
42167
  function Remove() {}
42529
-
42530
42168
  Remove.prototype = {
42531
42169
  onSpill: function onSpill(_ref4) {
42532
42170
  var dragEl = _ref4.dragEl,
42533
- putSortable = _ref4.putSortable;
42171
+ putSortable = _ref4.putSortable;
42534
42172
  var parentSortable = putSortable || this.sortable;
42535
42173
  parentSortable.captureAnimationState();
42536
42174
  dragEl.parentNode && dragEl.parentNode.removeChild(dragEl);
@@ -42538,7 +42176,6 @@ Remove.prototype = {
42538
42176
  },
42539
42177
  drop: drop
42540
42178
  };
42541
-
42542
42179
  _extends(Remove, {
42543
42180
  pluginName: 'removeOnSpill'
42544
42181
  });
@@ -114967,22 +114604,21 @@ Add an image for each feature.`, 'Create a new content showcasing a photo galler
114967
114604
  // Hide element tool
114968
114605
  this.elmTool.hide();
114969
114606
 
114970
- // // destroy
114971
- // if(this.sortableOnCanvas) {
114972
- // this.sortableOnCanvas.forEach(obj=>{
114973
- // if(obj) {
114974
- // obj.destroy();
114975
- // }
114976
- // });
114977
- // let dummies = this.doc.querySelectorAll('.block-dummy');
114978
- // dummies.forEach(elm=>elm.parentNode.removeChild(elm));
114979
- // }
114980
-
114981
- // if(this.sortableOnPage) this.sortableOnPage.destroy();
114607
+ // destroy (extra)
114608
+ if (this.sortableOnCanvas) {
114609
+ this.sortableOnCanvas.forEach(obj => {
114610
+ if (obj) {
114611
+ obj.destroy();
114612
+ }
114613
+ });
114614
+ let dummies = this.doc.querySelectorAll('.block-dummy');
114615
+ dummies.forEach(elm => elm.parentNode.removeChild(elm));
114616
+ this.sortableOnCanvas = [];
114617
+ }
114618
+ if (this.sortableOnPage) this.sortableOnPage.destroy();
114982
114619
  }
114983
114620
  }
114984
114621
  });
114985
-
114986
114622
  this.sortableObjects.push(sortableObject);
114987
114623
  builder.setAttribute('data-sort', true);
114988
114624
  }
@@ -118037,14 +117673,13 @@ Add an image for each feature.`, 'Create a new content showcasing a photo galler
118037
117673
  boxes = this.doc.querySelectorAll(this.blockContainer);
118038
117674
  }
118039
117675
  boxes.forEach(box => {
118040
- // box.insertAdjacentHTML('afterbegin', `
118041
- // <div class="is-block block-dummy" style="top: 0%; left: 0%; width: 100%; height: 20%;background:#eee;opacity:0"></div>
118042
- // <div class="is-block block-dummy" style="top: 20%; left: 0%; width: 100%; height: 20%;background:#eee;opacity:0"></div>
118043
- // <div class="is-block block-dummy" style="top: 40%; left: 0%; width: 100%; height: 20%;background:#eee;opacity:0"></div>
118044
- // <div class="is-block block-dummy" style="top: 60%; left: 0%; width: 100%; height: 20%;background:#eee;opacity:0"></div>
118045
- // <div class="is-block block-dummy" style="top: 80%; left: 0%; width: 100%; height: 20%;background:#eee;opacity:0"></div>
118046
- // `);
118047
-
117676
+ box.insertAdjacentHTML('afterbegin', `
117677
+ <div class="is-block block-dummy" style="top: 0%; left: 0%; width: 100%; height: 20%;background:#eee;opacity:0"></div>
117678
+ <div class="is-block block-dummy" style="top: 20%; left: 0%; width: 100%; height: 20%;background:#eee;opacity:0"></div>
117679
+ <div class="is-block block-dummy" style="top: 40%; left: 0%; width: 100%; height: 20%;background:#eee;opacity:0"></div>
117680
+ <div class="is-block block-dummy" style="top: 60%; left: 0%; width: 100%; height: 20%;background:#eee;opacity:0"></div>
117681
+ <div class="is-block block-dummy" style="top: 80%; left: 0%; width: 100%; height: 20%;background:#eee;opacity:0"></div>
117682
+ `);
118048
117683
  const obj = new Sortable(box, {
118049
117684
  scroll: true,
118050
117685
  group: 'shared',
@@ -118303,6 +117938,18 @@ Add an image for each feature.`, 'Create a new content showcasing a photo galler
118303
117938
  // //Trigger Render event
118304
117939
  // this.opts.onRender();
118305
117940
 
117941
+ // destroy (new)
117942
+ if (this.sortableOnCanvas) {
117943
+ this.sortableOnCanvas.forEach(obj => {
117944
+ if (obj) {
117945
+ obj.destroy();
117946
+ }
117947
+ });
117948
+ let dummies = this.doc.querySelectorAll('.block-dummy');
117949
+ dummies.forEach(elm => elm.parentNode.removeChild(elm));
117950
+ this.sortableOnCanvas = [];
117951
+ }
117952
+ if (this.sortableOnPage) this.sortableOnPage.destroy();
118306
117953
  return;
118307
117954
  }
118308
117955
  if (itemEl.getAttribute('data-id')) {