svelte-dnd-action 0.9.17 → 0.9.18

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.
package/dist/index.js CHANGED
@@ -1235,7 +1235,7 @@
1235
1235
  * @param {HTMLElement} dragTarget
1236
1236
  */
1237
1237
 
1238
- function hideOriginalDragTarget(dragTarget) {
1238
+ function hideElement(dragTarget) {
1239
1239
  dragTarget.style.display = "none";
1240
1240
  dragTarget.style.position = "fixed";
1241
1241
  dragTarget.style.zIndex = "-5";
@@ -1338,7 +1338,8 @@
1338
1338
  var isWorkingOnPreviousDrag = false;
1339
1339
  var finalizingPreviousDrag = false;
1340
1340
  var unlockOriginDzMinDimensions;
1341
- var isDraggedOutsideOfAnyDz = false; // a map from type to a set of drop-zones
1341
+ var isDraggedOutsideOfAnyDz = false;
1342
+ var scheduledForRemovalAfterDrop = []; // a map from type to a set of drop-zones
1342
1343
 
1343
1344
  var typeToDropZones = new Map(); // important - this is needed because otherwise the config that would be used for everyone is the config of the element that created the event listeners
1344
1345
 
@@ -1674,12 +1675,37 @@
1674
1675
  draggedEl.style.transform = "translate3d(".concat(newTransform.x, "px, ").concat(newTransform.y, "px, 0)");
1675
1676
  window.setTimeout(callback, dropAnimationDurationMs);
1676
1677
  }
1678
+
1679
+ function scheduleDZForRemovalAfterDrop(dz, destroy) {
1680
+ scheduledForRemovalAfterDrop.push({
1681
+ dz: dz,
1682
+ destroy: destroy
1683
+ });
1684
+ window.requestAnimationFrame(function () {
1685
+ hideElement(dz);
1686
+ document.body.appendChild(dz);
1687
+ });
1688
+ }
1677
1689
  /* cleanup */
1678
1690
 
1679
1691
 
1680
1692
  function cleanupPostDrop() {
1681
1693
  draggedEl.remove();
1682
1694
  originalDragTarget.remove();
1695
+
1696
+ if (scheduledForRemovalAfterDrop.length) {
1697
+ printDebug(function () {
1698
+ return ["will destroy zones that were removed during drag", scheduledForRemovalAfterDrop];
1699
+ });
1700
+ scheduledForRemovalAfterDrop.forEach(function (_ref) {
1701
+ var dz = _ref.dz,
1702
+ destroy = _ref.destroy;
1703
+ destroy();
1704
+ dz.remove();
1705
+ });
1706
+ scheduledForRemovalAfterDrop = [];
1707
+ }
1708
+
1683
1709
  draggedEl = undefined;
1684
1710
  originalDragTarget = undefined;
1685
1711
  draggedElData = undefined;
@@ -1827,7 +1853,7 @@
1827
1853
 
1828
1854
  draggedEl.focus();
1829
1855
  watchDraggedElement();
1830
- hideOriginalDragTarget(originalDragTarget);
1856
+ hideElement(originalDragTarget);
1831
1857
  originDropZoneRoot.appendChild(originalDragTarget);
1832
1858
  } else {
1833
1859
  window.requestAnimationFrame(keepOriginalElementInDom);
@@ -1866,27 +1892,27 @@
1866
1892
  });
1867
1893
  }
1868
1894
 
1869
- function configure(_ref) {
1870
- var _ref$items = _ref.items,
1871
- items = _ref$items === void 0 ? undefined : _ref$items,
1872
- _ref$flipDurationMs = _ref.flipDurationMs,
1873
- dropAnimationDurationMs = _ref$flipDurationMs === void 0 ? 0 : _ref$flipDurationMs,
1874
- _ref$type = _ref.type,
1875
- newType = _ref$type === void 0 ? DEFAULT_DROP_ZONE_TYPE : _ref$type,
1876
- _ref$dragDisabled = _ref.dragDisabled,
1877
- dragDisabled = _ref$dragDisabled === void 0 ? false : _ref$dragDisabled,
1878
- _ref$morphDisabled = _ref.morphDisabled,
1879
- morphDisabled = _ref$morphDisabled === void 0 ? false : _ref$morphDisabled,
1880
- _ref$dropFromOthersDi = _ref.dropFromOthersDisabled,
1881
- dropFromOthersDisabled = _ref$dropFromOthersDi === void 0 ? false : _ref$dropFromOthersDi,
1882
- _ref$dropTargetStyle = _ref.dropTargetStyle,
1883
- dropTargetStyle = _ref$dropTargetStyle === void 0 ? DEFAULT_DROP_TARGET_STYLE : _ref$dropTargetStyle,
1884
- _ref$dropTargetClasse = _ref.dropTargetClasses,
1885
- dropTargetClasses = _ref$dropTargetClasse === void 0 ? [] : _ref$dropTargetClasse,
1886
- _ref$transformDragged = _ref.transformDraggedElement,
1887
- transformDraggedElement = _ref$transformDragged === void 0 ? function () {} : _ref$transformDragged,
1888
- _ref$centreDraggedOnC = _ref.centreDraggedOnCursor,
1889
- centreDraggedOnCursor = _ref$centreDraggedOnC === void 0 ? false : _ref$centreDraggedOnC;
1895
+ function configure(_ref2) {
1896
+ var _ref2$items = _ref2.items,
1897
+ items = _ref2$items === void 0 ? undefined : _ref2$items,
1898
+ _ref2$flipDurationMs = _ref2.flipDurationMs,
1899
+ dropAnimationDurationMs = _ref2$flipDurationMs === void 0 ? 0 : _ref2$flipDurationMs,
1900
+ _ref2$type = _ref2.type,
1901
+ newType = _ref2$type === void 0 ? DEFAULT_DROP_ZONE_TYPE : _ref2$type,
1902
+ _ref2$dragDisabled = _ref2.dragDisabled,
1903
+ dragDisabled = _ref2$dragDisabled === void 0 ? false : _ref2$dragDisabled,
1904
+ _ref2$morphDisabled = _ref2.morphDisabled,
1905
+ morphDisabled = _ref2$morphDisabled === void 0 ? false : _ref2$morphDisabled,
1906
+ _ref2$dropFromOthersD = _ref2.dropFromOthersDisabled,
1907
+ dropFromOthersDisabled = _ref2$dropFromOthersD === void 0 ? false : _ref2$dropFromOthersD,
1908
+ _ref2$dropTargetStyle = _ref2.dropTargetStyle,
1909
+ dropTargetStyle = _ref2$dropTargetStyle === void 0 ? DEFAULT_DROP_TARGET_STYLE : _ref2$dropTargetStyle,
1910
+ _ref2$dropTargetClass = _ref2.dropTargetClasses,
1911
+ dropTargetClasses = _ref2$dropTargetClass === void 0 ? [] : _ref2$dropTargetClass,
1912
+ _ref2$transformDragge = _ref2.transformDraggedElement,
1913
+ transformDraggedElement = _ref2$transformDragge === void 0 ? function () {} : _ref2$transformDragge,
1914
+ _ref2$centreDraggedOn = _ref2.centreDraggedOnCursor,
1915
+ centreDraggedOnCursor = _ref2$centreDraggedOn === void 0 ? false : _ref2$centreDraggedOn;
1890
1916
  config.dropAnimationDurationMs = dropAnimationDurationMs;
1891
1917
 
1892
1918
  if (config.type && newType !== config.type) {
@@ -1989,11 +2015,22 @@
1989
2015
  configure(newOptions);
1990
2016
  },
1991
2017
  destroy: function destroy() {
1992
- printDebug(function () {
1993
- return "pointer dndzone will destroy";
1994
- });
1995
- unregisterDropZone(node, config.type);
1996
- dzToConfig["delete"](node);
2018
+ function destroyDz() {
2019
+ printDebug(function () {
2020
+ return "pointer dndzone will destroy";
2021
+ });
2022
+ unregisterDropZone(node, dzToConfig.get(node).type);
2023
+ dzToConfig["delete"](node);
2024
+ }
2025
+
2026
+ if (isWorkingOnPreviousDrag) {
2027
+ printDebug(function () {
2028
+ return "pointer dndzone will be scheduled for destruction";
2029
+ });
2030
+ scheduleDZForRemovalAfterDrop(node, destroyDz);
2031
+ } else {
2032
+ destroyDz();
2033
+ }
1997
2034
  }
1998
2035
  };
1999
2036
  }
package/dist/index.mjs CHANGED
@@ -1229,7 +1229,7 @@ function styleDraggable(draggableEl, dragDisabled) {
1229
1229
  * @param {HTMLElement} dragTarget
1230
1230
  */
1231
1231
 
1232
- function hideOriginalDragTarget(dragTarget) {
1232
+ function hideElement(dragTarget) {
1233
1233
  dragTarget.style.display = "none";
1234
1234
  dragTarget.style.position = "fixed";
1235
1235
  dragTarget.style.zIndex = "-5";
@@ -1332,7 +1332,8 @@ var currentMousePosition;
1332
1332
  var isWorkingOnPreviousDrag = false;
1333
1333
  var finalizingPreviousDrag = false;
1334
1334
  var unlockOriginDzMinDimensions;
1335
- var isDraggedOutsideOfAnyDz = false; // a map from type to a set of drop-zones
1335
+ var isDraggedOutsideOfAnyDz = false;
1336
+ var scheduledForRemovalAfterDrop = []; // a map from type to a set of drop-zones
1336
1337
 
1337
1338
  var typeToDropZones = new Map(); // important - this is needed because otherwise the config that would be used for everyone is the config of the element that created the event listeners
1338
1339
 
@@ -1668,12 +1669,37 @@ function animateDraggedToFinalPosition(shadowElIdx, callback) {
1668
1669
  draggedEl.style.transform = "translate3d(".concat(newTransform.x, "px, ").concat(newTransform.y, "px, 0)");
1669
1670
  window.setTimeout(callback, dropAnimationDurationMs);
1670
1671
  }
1672
+
1673
+ function scheduleDZForRemovalAfterDrop(dz, destroy) {
1674
+ scheduledForRemovalAfterDrop.push({
1675
+ dz: dz,
1676
+ destroy: destroy
1677
+ });
1678
+ window.requestAnimationFrame(function () {
1679
+ hideElement(dz);
1680
+ document.body.appendChild(dz);
1681
+ });
1682
+ }
1671
1683
  /* cleanup */
1672
1684
 
1673
1685
 
1674
1686
  function cleanupPostDrop() {
1675
1687
  draggedEl.remove();
1676
1688
  originalDragTarget.remove();
1689
+
1690
+ if (scheduledForRemovalAfterDrop.length) {
1691
+ printDebug(function () {
1692
+ return ["will destroy zones that were removed during drag", scheduledForRemovalAfterDrop];
1693
+ });
1694
+ scheduledForRemovalAfterDrop.forEach(function (_ref) {
1695
+ var dz = _ref.dz,
1696
+ destroy = _ref.destroy;
1697
+ destroy();
1698
+ dz.remove();
1699
+ });
1700
+ scheduledForRemovalAfterDrop = [];
1701
+ }
1702
+
1677
1703
  draggedEl = undefined;
1678
1704
  originalDragTarget = undefined;
1679
1705
  draggedElData = undefined;
@@ -1821,7 +1847,7 @@ function dndzone(node, options) {
1821
1847
 
1822
1848
  draggedEl.focus();
1823
1849
  watchDraggedElement();
1824
- hideOriginalDragTarget(originalDragTarget);
1850
+ hideElement(originalDragTarget);
1825
1851
  originDropZoneRoot.appendChild(originalDragTarget);
1826
1852
  } else {
1827
1853
  window.requestAnimationFrame(keepOriginalElementInDom);
@@ -1860,27 +1886,27 @@ function dndzone(node, options) {
1860
1886
  });
1861
1887
  }
1862
1888
 
1863
- function configure(_ref) {
1864
- var _ref$items = _ref.items,
1865
- items = _ref$items === void 0 ? undefined : _ref$items,
1866
- _ref$flipDurationMs = _ref.flipDurationMs,
1867
- dropAnimationDurationMs = _ref$flipDurationMs === void 0 ? 0 : _ref$flipDurationMs,
1868
- _ref$type = _ref.type,
1869
- newType = _ref$type === void 0 ? DEFAULT_DROP_ZONE_TYPE : _ref$type,
1870
- _ref$dragDisabled = _ref.dragDisabled,
1871
- dragDisabled = _ref$dragDisabled === void 0 ? false : _ref$dragDisabled,
1872
- _ref$morphDisabled = _ref.morphDisabled,
1873
- morphDisabled = _ref$morphDisabled === void 0 ? false : _ref$morphDisabled,
1874
- _ref$dropFromOthersDi = _ref.dropFromOthersDisabled,
1875
- dropFromOthersDisabled = _ref$dropFromOthersDi === void 0 ? false : _ref$dropFromOthersDi,
1876
- _ref$dropTargetStyle = _ref.dropTargetStyle,
1877
- dropTargetStyle = _ref$dropTargetStyle === void 0 ? DEFAULT_DROP_TARGET_STYLE : _ref$dropTargetStyle,
1878
- _ref$dropTargetClasse = _ref.dropTargetClasses,
1879
- dropTargetClasses = _ref$dropTargetClasse === void 0 ? [] : _ref$dropTargetClasse,
1880
- _ref$transformDragged = _ref.transformDraggedElement,
1881
- transformDraggedElement = _ref$transformDragged === void 0 ? function () {} : _ref$transformDragged,
1882
- _ref$centreDraggedOnC = _ref.centreDraggedOnCursor,
1883
- centreDraggedOnCursor = _ref$centreDraggedOnC === void 0 ? false : _ref$centreDraggedOnC;
1889
+ function configure(_ref2) {
1890
+ var _ref2$items = _ref2.items,
1891
+ items = _ref2$items === void 0 ? undefined : _ref2$items,
1892
+ _ref2$flipDurationMs = _ref2.flipDurationMs,
1893
+ dropAnimationDurationMs = _ref2$flipDurationMs === void 0 ? 0 : _ref2$flipDurationMs,
1894
+ _ref2$type = _ref2.type,
1895
+ newType = _ref2$type === void 0 ? DEFAULT_DROP_ZONE_TYPE : _ref2$type,
1896
+ _ref2$dragDisabled = _ref2.dragDisabled,
1897
+ dragDisabled = _ref2$dragDisabled === void 0 ? false : _ref2$dragDisabled,
1898
+ _ref2$morphDisabled = _ref2.morphDisabled,
1899
+ morphDisabled = _ref2$morphDisabled === void 0 ? false : _ref2$morphDisabled,
1900
+ _ref2$dropFromOthersD = _ref2.dropFromOthersDisabled,
1901
+ dropFromOthersDisabled = _ref2$dropFromOthersD === void 0 ? false : _ref2$dropFromOthersD,
1902
+ _ref2$dropTargetStyle = _ref2.dropTargetStyle,
1903
+ dropTargetStyle = _ref2$dropTargetStyle === void 0 ? DEFAULT_DROP_TARGET_STYLE : _ref2$dropTargetStyle,
1904
+ _ref2$dropTargetClass = _ref2.dropTargetClasses,
1905
+ dropTargetClasses = _ref2$dropTargetClass === void 0 ? [] : _ref2$dropTargetClass,
1906
+ _ref2$transformDragge = _ref2.transformDraggedElement,
1907
+ transformDraggedElement = _ref2$transformDragge === void 0 ? function () {} : _ref2$transformDragge,
1908
+ _ref2$centreDraggedOn = _ref2.centreDraggedOnCursor,
1909
+ centreDraggedOnCursor = _ref2$centreDraggedOn === void 0 ? false : _ref2$centreDraggedOn;
1884
1910
  config.dropAnimationDurationMs = dropAnimationDurationMs;
1885
1911
 
1886
1912
  if (config.type && newType !== config.type) {
@@ -1983,11 +2009,22 @@ function dndzone(node, options) {
1983
2009
  configure(newOptions);
1984
2010
  },
1985
2011
  destroy: function destroy() {
1986
- printDebug(function () {
1987
- return "pointer dndzone will destroy";
1988
- });
1989
- unregisterDropZone(node, config.type);
1990
- dzToConfig["delete"](node);
2012
+ function destroyDz() {
2013
+ printDebug(function () {
2014
+ return "pointer dndzone will destroy";
2015
+ });
2016
+ unregisterDropZone(node, dzToConfig.get(node).type);
2017
+ dzToConfig["delete"](node);
2018
+ }
2019
+
2020
+ if (isWorkingOnPreviousDrag) {
2021
+ printDebug(function () {
2022
+ return "pointer dndzone will be scheduled for destruction";
2023
+ });
2024
+ scheduleDZForRemovalAfterDrop(node, destroyDz);
2025
+ } else {
2026
+ destroyDz();
2027
+ }
1991
2028
  }
1992
2029
  };
1993
2030
  }
package/package.json CHANGED
@@ -40,7 +40,7 @@
40
40
  "dist"
41
41
  ],
42
42
  "description": "*An awesome drag and drop library for Svelte 3 (not using the browser's built-in dnd, thanks god): Rich animations, nested containers, touch support and more *",
43
- "version": "0.9.17",
43
+ "version": "0.9.18",
44
44
  "repository": {
45
45
  "type": "git",
46
46
  "url": "git+https://github.com/isaacHagoel/svelte-dnd-action.git"
@@ -136,7 +136,7 @@ export function styleDraggable(draggableEl, dragDisabled) {
136
136
  * Hides the provided element so that it can stay in the dom without interrupting
137
137
  * @param {HTMLElement} dragTarget
138
138
  */
139
- export function hideOriginalDragTarget(dragTarget) {
139
+ export function hideElement(dragTarget) {
140
140
  dragTarget.style.display = "none";
141
141
  dragTarget.style.position = "fixed";
142
142
  dragTarget.style.zIndex = "-5";
@@ -13,7 +13,7 @@ import {armWindowScroller, disarmWindowScroller} from "./helpers/windowScroller"
13
13
  import {
14
14
  createDraggedElementFrom,
15
15
  decorateShadowEl,
16
- hideOriginalDragTarget,
16
+ hideElement,
17
17
  morphDraggedElementToBeLike,
18
18
  moveDraggedElementToWasDroppedState,
19
19
  preventShrinking,
@@ -55,6 +55,7 @@ let isWorkingOnPreviousDrag = false;
55
55
  let finalizingPreviousDrag = false;
56
56
  let unlockOriginDzMinDimensions;
57
57
  let isDraggedOutsideOfAnyDz = false;
58
+ let scheduledForRemovalAfterDrop = [];
58
59
 
59
60
  // a map from type to a set of drop-zones
60
61
  const typeToDropZones = new Map();
@@ -280,10 +281,25 @@ function animateDraggedToFinalPosition(shadowElIdx, callback) {
280
281
  window.setTimeout(callback, dropAnimationDurationMs);
281
282
  }
282
283
 
284
+ function scheduleDZForRemovalAfterDrop(dz, destroy) {
285
+ scheduledForRemovalAfterDrop.push({dz, destroy});
286
+ window.requestAnimationFrame(() => {
287
+ hideElement(dz);
288
+ document.body.appendChild(dz);
289
+ });
290
+ }
283
291
  /* cleanup */
284
292
  function cleanupPostDrop() {
285
293
  draggedEl.remove();
286
294
  originalDragTarget.remove();
295
+ if (scheduledForRemovalAfterDrop.length) {
296
+ printDebug(() => ["will destroy zones that were removed during drag", scheduledForRemovalAfterDrop]);
297
+ scheduledForRemovalAfterDrop.forEach(({dz, destroy}) => {
298
+ destroy();
299
+ dz.remove();
300
+ })
301
+ scheduledForRemovalAfterDrop = [];
302
+ }
287
303
  draggedEl = undefined;
288
304
  originalDragTarget = undefined;
289
305
  draggedElData = undefined;
@@ -398,7 +414,7 @@ export function dndzone(node, options) {
398
414
  // to prevent the outline from disappearing
399
415
  draggedEl.focus();
400
416
  watchDraggedElement();
401
- hideOriginalDragTarget(originalDragTarget);
417
+ hideElement(originalDragTarget);
402
418
  originDropZoneRoot.appendChild(originalDragTarget);
403
419
  } else {
404
420
  window.requestAnimationFrame(keepOriginalElementInDom);
@@ -529,9 +545,17 @@ export function dndzone(node, options) {
529
545
  configure(newOptions);
530
546
  },
531
547
  destroy: () => {
532
- printDebug(() => "pointer dndzone will destroy");
533
- unregisterDropZone(node, config.type);
534
- dzToConfig.delete(node);
548
+ function destroyDz() {
549
+ printDebug(() => "pointer dndzone will destroy");
550
+ unregisterDropZone(node, dzToConfig.get(node).type);
551
+ dzToConfig.delete(node);
552
+ }
553
+ if (isWorkingOnPreviousDrag) {
554
+ printDebug(() => "pointer dndzone will be scheduled for destruction");
555
+ scheduleDZForRemovalAfterDrop(node, destroyDz);
556
+ } else {
557
+ destroyDz();
558
+ }
535
559
  }
536
560
  };
537
561
  }