svelte-dnd-action 0.9.47 → 0.9.49

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
@@ -807,11 +807,11 @@
807
807
  return false;
808
808
  }
809
809
  var distances = calcInnerDistancesBetweenPointAndSidesOfElement(pointer, elementToScroll);
810
+ var isAlreadyScrolling = !!scrollingInfo.directionObj;
810
811
  if (distances === null) {
811
- resetScrolling();
812
+ if (isAlreadyScrolling) resetScrolling();
812
813
  return false;
813
814
  }
814
- var isAlreadyScrolling = !!scrollingInfo.directionObj;
815
815
  var scrollingVertically = false,
816
816
  scrollingHorizontally = false;
817
817
  // vertical
@@ -912,7 +912,8 @@
912
912
  return getDepth(dz2) - getDepth(dz1);
913
913
  });
914
914
  var _makeScroller = makeScroller(),
915
- scrollIfNeeded = _makeScroller.scrollIfNeeded;
915
+ scrollIfNeeded = _makeScroller.scrollIfNeeded,
916
+ resetScrolling = _makeScroller.resetScrolling;
916
917
 
917
918
  /**
918
919
  * @return {boolean} - was any container scrolled
@@ -936,6 +937,9 @@
936
937
  return {
937
938
  multiScrollIfNeeded: scrollingContainersSet.size > 0 ? tick : function () {
938
939
  return false;
940
+ },
941
+ destroy: function destroy() {
942
+ return resetScrolling();
939
943
  }
940
944
  };
941
945
  }
@@ -1028,7 +1032,9 @@
1028
1032
  var clonedCanvas = clonedCanvases[_i];
1029
1033
  clonedCanvas.width = canvas.width;
1030
1034
  clonedCanvas.height = canvas.height;
1031
- clonedCanvas.getContext("2d").drawImage(canvas, 0, 0);
1035
+ if (canvas.width > 0 && canvas.height > 0) {
1036
+ clonedCanvas.getContext("2d").drawImage(canvas, 0, 0);
1037
+ }
1032
1038
  }
1033
1039
  }
1034
1040
  return cloned;
@@ -1294,6 +1300,7 @@
1294
1300
  var unlockOriginDzMinDimensions;
1295
1301
  var isDraggedOutsideOfAnyDz = false;
1296
1302
  var scheduledForRemovalAfterDrop = [];
1303
+ var multiScroller;
1297
1304
 
1298
1305
  // a map from type to a set of drop-zones
1299
1306
  var typeToDropZones = new Map();
@@ -1350,7 +1357,7 @@
1350
1357
  return dzToConfig.get(dz).dropAnimationDurationMs;
1351
1358
  })));
1352
1359
  var observationIntervalMs = setIntervalMs === 0 ? DISABLED_OBSERVATION_INTERVAL_MS : Math.max(setIntervalMs, MIN_OBSERVATION_INTERVAL_MS); // if setIntervalMs is 0 it goes to 20, otherwise it is max between it and min observation.
1353
- var multiScroller = createMultiScroller(dropZones, function () {
1360
+ multiScroller = createMultiScroller(dropZones, function () {
1354
1361
  return currentMousePosition;
1355
1362
  });
1356
1363
  observe(draggedEl, dropZones, observationIntervalMs * 1.07, multiScroller);
@@ -1375,6 +1382,8 @@
1375
1382
  _iterator2.f();
1376
1383
  }
1377
1384
  window.removeEventListener(DRAGGED_LEFT_DOCUMENT_EVENT_NAME, handleDrop);
1385
+ multiScroller.destroy();
1386
+ multiScroller = undefined;
1378
1387
  unobserve();
1379
1388
  }
1380
1389
  function findShadowElementIdx(items) {
package/dist/index.mjs CHANGED
@@ -801,11 +801,11 @@ function makeScroller() {
801
801
  return false;
802
802
  }
803
803
  var distances = calcInnerDistancesBetweenPointAndSidesOfElement(pointer, elementToScroll);
804
+ var isAlreadyScrolling = !!scrollingInfo.directionObj;
804
805
  if (distances === null) {
805
- resetScrolling();
806
+ if (isAlreadyScrolling) resetScrolling();
806
807
  return false;
807
808
  }
808
- var isAlreadyScrolling = !!scrollingInfo.directionObj;
809
809
  var scrollingVertically = false,
810
810
  scrollingHorizontally = false;
811
811
  // vertical
@@ -906,7 +906,8 @@ function createMultiScroller() {
906
906
  return getDepth(dz2) - getDepth(dz1);
907
907
  });
908
908
  var _makeScroller = makeScroller(),
909
- scrollIfNeeded = _makeScroller.scrollIfNeeded;
909
+ scrollIfNeeded = _makeScroller.scrollIfNeeded,
910
+ resetScrolling = _makeScroller.resetScrolling;
910
911
 
911
912
  /**
912
913
  * @return {boolean} - was any container scrolled
@@ -930,6 +931,9 @@ function createMultiScroller() {
930
931
  return {
931
932
  multiScrollIfNeeded: scrollingContainersSet.size > 0 ? tick : function () {
932
933
  return false;
934
+ },
935
+ destroy: function destroy() {
936
+ return resetScrolling();
933
937
  }
934
938
  };
935
939
  }
@@ -1022,7 +1026,9 @@ function svelteNodeClone(el) {
1022
1026
  var clonedCanvas = clonedCanvases[_i];
1023
1027
  clonedCanvas.width = canvas.width;
1024
1028
  clonedCanvas.height = canvas.height;
1025
- clonedCanvas.getContext("2d").drawImage(canvas, 0, 0);
1029
+ if (canvas.width > 0 && canvas.height > 0) {
1030
+ clonedCanvas.getContext("2d").drawImage(canvas, 0, 0);
1031
+ }
1026
1032
  }
1027
1033
  }
1028
1034
  return cloned;
@@ -1288,6 +1294,7 @@ var finalizingPreviousDrag = false;
1288
1294
  var unlockOriginDzMinDimensions;
1289
1295
  var isDraggedOutsideOfAnyDz = false;
1290
1296
  var scheduledForRemovalAfterDrop = [];
1297
+ var multiScroller;
1291
1298
 
1292
1299
  // a map from type to a set of drop-zones
1293
1300
  var typeToDropZones = new Map();
@@ -1344,7 +1351,7 @@ function watchDraggedElement() {
1344
1351
  return dzToConfig.get(dz).dropAnimationDurationMs;
1345
1352
  })));
1346
1353
  var observationIntervalMs = setIntervalMs === 0 ? DISABLED_OBSERVATION_INTERVAL_MS : Math.max(setIntervalMs, MIN_OBSERVATION_INTERVAL_MS); // if setIntervalMs is 0 it goes to 20, otherwise it is max between it and min observation.
1347
- var multiScroller = createMultiScroller(dropZones, function () {
1354
+ multiScroller = createMultiScroller(dropZones, function () {
1348
1355
  return currentMousePosition;
1349
1356
  });
1350
1357
  observe(draggedEl, dropZones, observationIntervalMs * 1.07, multiScroller);
@@ -1369,6 +1376,8 @@ function unWatchDraggedElement() {
1369
1376
  _iterator2.f();
1370
1377
  }
1371
1378
  window.removeEventListener(DRAGGED_LEFT_DOCUMENT_EVENT_NAME, handleDrop);
1379
+ multiScroller.destroy();
1380
+ multiScroller = undefined;
1372
1381
  unobserve();
1373
1382
  }
1374
1383
  function findShadowElementIdx(items) {
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "svelte-dnd-action",
3
3
  "description": "*An awesome drag and drop library for Svelte 3 and 4 (not using the browser's built-in dnd, thanks god): Rich animations, nested containers, touch support and more *",
4
- "version": "0.9.47",
4
+ "version": "0.9.49",
5
5
  "repository": {
6
6
  "type": "git",
7
7
  "url": "git+https://github.com/isaacHagoel/svelte-dnd-action.git"
@@ -16,7 +16,7 @@ export function createMultiScroller(baseElementsForScrolling = [], getPointerPos
16
16
  printDebug(() => "creating multi-scroller");
17
17
  const scrollingContainersSet = findRelevantScrollContainers(baseElementsForScrolling);
18
18
  const scrollingContainersDeepToShallow = Array.from(scrollingContainersSet).sort((dz1, dz2) => getDepth(dz2) - getDepth(dz1));
19
- const {scrollIfNeeded} = makeScroller();
19
+ const {scrollIfNeeded, resetScrolling} = makeScroller();
20
20
 
21
21
  /**
22
22
  * @return {boolean} - was any container scrolled
@@ -38,7 +38,8 @@ export function createMultiScroller(baseElementsForScrolling = [], getPointerPos
38
38
  return false;
39
39
  }
40
40
  return {
41
- multiScrollIfNeeded: scrollingContainersSet.size > 0 ? tick : () => false
41
+ multiScrollIfNeeded: scrollingContainersSet.size > 0 ? tick : () => false,
42
+ destroy: () => resetScrolling()
42
43
  };
43
44
  }
44
45
 
@@ -35,11 +35,11 @@ export function makeScroller() {
35
35
  return false;
36
36
  }
37
37
  const distances = calcInnerDistancesBetweenPointAndSidesOfElement(pointer, elementToScroll);
38
+ const isAlreadyScrolling = !!scrollingInfo.directionObj;
38
39
  if (distances === null) {
39
- resetScrolling();
40
+ if (isAlreadyScrolling) resetScrolling();
40
41
  return false;
41
42
  }
42
- const isAlreadyScrolling = !!scrollingInfo.directionObj;
43
43
  let [scrollingVertically, scrollingHorizontally] = [false, false];
44
44
  // vertical
45
45
  if (elementToScroll.scrollHeight > elementToScroll.clientHeight) {
@@ -38,7 +38,9 @@ export function svelteNodeClone(el) {
38
38
  const clonedCanvas = clonedCanvases[i];
39
39
  clonedCanvas.width = canvas.width;
40
40
  clonedCanvas.height = canvas.height;
41
- clonedCanvas.getContext("2d").drawImage(canvas, 0, 0);
41
+ if (canvas.width > 0 && canvas.height > 0) {
42
+ clonedCanvas.getContext("2d").drawImage(canvas, 0, 0);
43
+ }
42
44
  }
43
45
  }
44
46
 
@@ -58,6 +58,7 @@ let finalizingPreviousDrag = false;
58
58
  let unlockOriginDzMinDimensions;
59
59
  let isDraggedOutsideOfAnyDz = false;
60
60
  let scheduledForRemovalAfterDrop = [];
61
+ let multiScroller;
61
62
 
62
63
  // a map from type to a set of drop-zones
63
64
  const typeToDropZones = new Map();
@@ -100,7 +101,7 @@ function watchDraggedElement() {
100
101
  // it is important that we don't have an interval that is faster than the flip duration because it can cause elements to jump bach and forth
101
102
  const setIntervalMs = Math.max(...Array.from(dropZones.keys()).map(dz => dzToConfig.get(dz).dropAnimationDurationMs));
102
103
  const observationIntervalMs = setIntervalMs === 0 ? DISABLED_OBSERVATION_INTERVAL_MS : Math.max(setIntervalMs, MIN_OBSERVATION_INTERVAL_MS); // if setIntervalMs is 0 it goes to 20, otherwise it is max between it and min observation.
103
- const multiScroller = createMultiScroller(dropZones, () => currentMousePosition);
104
+ multiScroller = createMultiScroller(dropZones, () => currentMousePosition);
104
105
  observe(draggedEl, dropZones, observationIntervalMs * 1.07, multiScroller);
105
106
  }
106
107
  function unWatchDraggedElement() {
@@ -112,6 +113,8 @@ function unWatchDraggedElement() {
112
113
  dz.removeEventListener(DRAGGED_OVER_INDEX_EVENT_NAME, handleDraggedIsOverIndex);
113
114
  }
114
115
  window.removeEventListener(DRAGGED_LEFT_DOCUMENT_EVENT_NAME, handleDrop);
116
+ multiScroller.destroy();
117
+ multiScroller = undefined;
115
118
  unobserve();
116
119
  }
117
120