microboard-temp 0.5.78 → 0.5.80
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/cjs/browser.js +64 -1
- package/dist/cjs/index.js +64 -1
- package/dist/cjs/node.js +64 -1
- package/dist/esm/browser.js +64 -1
- package/dist/esm/index.js +64 -1
- package/dist/esm/node.js +64 -1
- package/package.json +1 -1
package/dist/cjs/browser.js
CHANGED
|
@@ -36934,11 +36934,74 @@ function reconstructPath(node2) {
|
|
|
36934
36934
|
}
|
|
36935
36935
|
return path2.reverse();
|
|
36936
36936
|
}
|
|
36937
|
+
function createHookWaypoints(startPoint, endPoint, start, end, startDir, endDir) {
|
|
36938
|
+
if (!startDir || !endDir || start.pointType === "Board" || end.pointType === "Board") {
|
|
36939
|
+
return [];
|
|
36940
|
+
}
|
|
36941
|
+
const startMbr = start.item.getMbr();
|
|
36942
|
+
const endMbr = end.item.getMbr();
|
|
36943
|
+
if (startDir === "right" && endDir === "left" && startPoint.x > endPoint.x) {
|
|
36944
|
+
const midY = (startPoint.y + endPoint.y) / 2;
|
|
36945
|
+
return [new Point(startPoint.x, midY), new Point(endPoint.x, midY)];
|
|
36946
|
+
}
|
|
36947
|
+
if (startDir === "left" && endDir === "right" && startPoint.x < endPoint.x) {
|
|
36948
|
+
const midY = (startPoint.y + endPoint.y) / 2;
|
|
36949
|
+
return [new Point(startPoint.x, midY), new Point(endPoint.x, midY)];
|
|
36950
|
+
}
|
|
36951
|
+
if (startDir === "bottom" && endDir === "top" && startPoint.y > endPoint.y) {
|
|
36952
|
+
const midX = (startPoint.x + endPoint.x) / 2;
|
|
36953
|
+
return [new Point(midX, startPoint.y), new Point(midX, endPoint.y)];
|
|
36954
|
+
}
|
|
36955
|
+
if (startDir === "top" && endDir === "bottom" && startPoint.y < endPoint.y) {
|
|
36956
|
+
const midX = (startPoint.x + endPoint.x) / 2;
|
|
36957
|
+
return [new Point(midX, startPoint.y), new Point(midX, endPoint.y)];
|
|
36958
|
+
}
|
|
36959
|
+
if ((startDir === "right" || startDir === "left") && (endDir === "top" || endDir === "bottom")) {
|
|
36960
|
+
let needsHook = false;
|
|
36961
|
+
if (startDir === "right" && startPoint.x > endMbr.right) {
|
|
36962
|
+
if (endDir === "top" && endPoint.y < startMbr.top)
|
|
36963
|
+
needsHook = true;
|
|
36964
|
+
if (endDir === "bottom" && endPoint.y > startMbr.bottom)
|
|
36965
|
+
needsHook = true;
|
|
36966
|
+
}
|
|
36967
|
+
if (startDir === "left" && startPoint.x < endMbr.left) {
|
|
36968
|
+
if (endDir === "top" && endPoint.y < startMbr.top)
|
|
36969
|
+
needsHook = true;
|
|
36970
|
+
if (endDir === "bottom" && endPoint.y > startMbr.bottom)
|
|
36971
|
+
needsHook = true;
|
|
36972
|
+
}
|
|
36973
|
+
if (needsHook) {
|
|
36974
|
+
return [new Point(endPoint.x, startPoint.y)];
|
|
36975
|
+
}
|
|
36976
|
+
}
|
|
36977
|
+
if ((startDir === "top" || startDir === "bottom") && (endDir === "right" || endDir === "left")) {
|
|
36978
|
+
let needsHook = false;
|
|
36979
|
+
if (startDir === "top" && startPoint.y < endMbr.top) {
|
|
36980
|
+
if (endDir === "right" && endPoint.x > startMbr.right)
|
|
36981
|
+
needsHook = true;
|
|
36982
|
+
if (endDir === "left" && endPoint.x < startMbr.left)
|
|
36983
|
+
needsHook = true;
|
|
36984
|
+
}
|
|
36985
|
+
if (startDir === "bottom" && startPoint.y > endMbr.bottom) {
|
|
36986
|
+
if (endDir === "right" && endPoint.x > startMbr.right)
|
|
36987
|
+
needsHook = true;
|
|
36988
|
+
if (endDir === "left" && endPoint.x < startMbr.left)
|
|
36989
|
+
needsHook = true;
|
|
36990
|
+
}
|
|
36991
|
+
if (needsHook) {
|
|
36992
|
+
return [new Point(startPoint.x, endPoint.y)];
|
|
36993
|
+
}
|
|
36994
|
+
}
|
|
36995
|
+
return [];
|
|
36996
|
+
}
|
|
36937
36997
|
function findOrthogonalPath(start, end, obstacles, toVisitPoints = []) {
|
|
36938
36998
|
const { grid, newStart, newEnd } = createGrid(start, end, toVisitPoints);
|
|
36939
36999
|
const startPoint = newStart || start;
|
|
36940
37000
|
const endPoint = newEnd || end;
|
|
36941
|
-
const
|
|
37001
|
+
const startDir = getPointerDirection(start);
|
|
37002
|
+
const endDir = getPointerDirection(end);
|
|
37003
|
+
const hookWaypoints = createHookWaypoints(startPoint, endPoint, start, end, startDir, endDir);
|
|
37004
|
+
const points = [startPoint, ...hookWaypoints, ...toVisitPoints, endPoint];
|
|
36942
37005
|
const pathPoints = findPathPoints(points, grid, obstacles, newStart, newEnd);
|
|
36943
37006
|
return {
|
|
36944
37007
|
lines: getLines(pathPoints),
|
package/dist/cjs/index.js
CHANGED
|
@@ -36934,11 +36934,74 @@ function reconstructPath(node2) {
|
|
|
36934
36934
|
}
|
|
36935
36935
|
return path2.reverse();
|
|
36936
36936
|
}
|
|
36937
|
+
function createHookWaypoints(startPoint, endPoint, start, end, startDir, endDir) {
|
|
36938
|
+
if (!startDir || !endDir || start.pointType === "Board" || end.pointType === "Board") {
|
|
36939
|
+
return [];
|
|
36940
|
+
}
|
|
36941
|
+
const startMbr = start.item.getMbr();
|
|
36942
|
+
const endMbr = end.item.getMbr();
|
|
36943
|
+
if (startDir === "right" && endDir === "left" && startPoint.x > endPoint.x) {
|
|
36944
|
+
const midY = (startPoint.y + endPoint.y) / 2;
|
|
36945
|
+
return [new Point(startPoint.x, midY), new Point(endPoint.x, midY)];
|
|
36946
|
+
}
|
|
36947
|
+
if (startDir === "left" && endDir === "right" && startPoint.x < endPoint.x) {
|
|
36948
|
+
const midY = (startPoint.y + endPoint.y) / 2;
|
|
36949
|
+
return [new Point(startPoint.x, midY), new Point(endPoint.x, midY)];
|
|
36950
|
+
}
|
|
36951
|
+
if (startDir === "bottom" && endDir === "top" && startPoint.y > endPoint.y) {
|
|
36952
|
+
const midX = (startPoint.x + endPoint.x) / 2;
|
|
36953
|
+
return [new Point(midX, startPoint.y), new Point(midX, endPoint.y)];
|
|
36954
|
+
}
|
|
36955
|
+
if (startDir === "top" && endDir === "bottom" && startPoint.y < endPoint.y) {
|
|
36956
|
+
const midX = (startPoint.x + endPoint.x) / 2;
|
|
36957
|
+
return [new Point(midX, startPoint.y), new Point(midX, endPoint.y)];
|
|
36958
|
+
}
|
|
36959
|
+
if ((startDir === "right" || startDir === "left") && (endDir === "top" || endDir === "bottom")) {
|
|
36960
|
+
let needsHook = false;
|
|
36961
|
+
if (startDir === "right" && startPoint.x > endMbr.right) {
|
|
36962
|
+
if (endDir === "top" && endPoint.y < startMbr.top)
|
|
36963
|
+
needsHook = true;
|
|
36964
|
+
if (endDir === "bottom" && endPoint.y > startMbr.bottom)
|
|
36965
|
+
needsHook = true;
|
|
36966
|
+
}
|
|
36967
|
+
if (startDir === "left" && startPoint.x < endMbr.left) {
|
|
36968
|
+
if (endDir === "top" && endPoint.y < startMbr.top)
|
|
36969
|
+
needsHook = true;
|
|
36970
|
+
if (endDir === "bottom" && endPoint.y > startMbr.bottom)
|
|
36971
|
+
needsHook = true;
|
|
36972
|
+
}
|
|
36973
|
+
if (needsHook) {
|
|
36974
|
+
return [new Point(endPoint.x, startPoint.y)];
|
|
36975
|
+
}
|
|
36976
|
+
}
|
|
36977
|
+
if ((startDir === "top" || startDir === "bottom") && (endDir === "right" || endDir === "left")) {
|
|
36978
|
+
let needsHook = false;
|
|
36979
|
+
if (startDir === "top" && startPoint.y < endMbr.top) {
|
|
36980
|
+
if (endDir === "right" && endPoint.x > startMbr.right)
|
|
36981
|
+
needsHook = true;
|
|
36982
|
+
if (endDir === "left" && endPoint.x < startMbr.left)
|
|
36983
|
+
needsHook = true;
|
|
36984
|
+
}
|
|
36985
|
+
if (startDir === "bottom" && startPoint.y > endMbr.bottom) {
|
|
36986
|
+
if (endDir === "right" && endPoint.x > startMbr.right)
|
|
36987
|
+
needsHook = true;
|
|
36988
|
+
if (endDir === "left" && endPoint.x < startMbr.left)
|
|
36989
|
+
needsHook = true;
|
|
36990
|
+
}
|
|
36991
|
+
if (needsHook) {
|
|
36992
|
+
return [new Point(startPoint.x, endPoint.y)];
|
|
36993
|
+
}
|
|
36994
|
+
}
|
|
36995
|
+
return [];
|
|
36996
|
+
}
|
|
36937
36997
|
function findOrthogonalPath(start, end, obstacles, toVisitPoints = []) {
|
|
36938
36998
|
const { grid, newStart, newEnd } = createGrid(start, end, toVisitPoints);
|
|
36939
36999
|
const startPoint = newStart || start;
|
|
36940
37000
|
const endPoint = newEnd || end;
|
|
36941
|
-
const
|
|
37001
|
+
const startDir = getPointerDirection(start);
|
|
37002
|
+
const endDir = getPointerDirection(end);
|
|
37003
|
+
const hookWaypoints = createHookWaypoints(startPoint, endPoint, start, end, startDir, endDir);
|
|
37004
|
+
const points = [startPoint, ...hookWaypoints, ...toVisitPoints, endPoint];
|
|
36942
37005
|
const pathPoints = findPathPoints(points, grid, obstacles, newStart, newEnd);
|
|
36943
37006
|
return {
|
|
36944
37007
|
lines: getLines(pathPoints),
|
package/dist/cjs/node.js
CHANGED
|
@@ -39407,11 +39407,74 @@ function reconstructPath(node2) {
|
|
|
39407
39407
|
}
|
|
39408
39408
|
return path2.reverse();
|
|
39409
39409
|
}
|
|
39410
|
+
function createHookWaypoints(startPoint, endPoint, start, end, startDir, endDir) {
|
|
39411
|
+
if (!startDir || !endDir || start.pointType === "Board" || end.pointType === "Board") {
|
|
39412
|
+
return [];
|
|
39413
|
+
}
|
|
39414
|
+
const startMbr = start.item.getMbr();
|
|
39415
|
+
const endMbr = end.item.getMbr();
|
|
39416
|
+
if (startDir === "right" && endDir === "left" && startPoint.x > endPoint.x) {
|
|
39417
|
+
const midY = (startPoint.y + endPoint.y) / 2;
|
|
39418
|
+
return [new Point(startPoint.x, midY), new Point(endPoint.x, midY)];
|
|
39419
|
+
}
|
|
39420
|
+
if (startDir === "left" && endDir === "right" && startPoint.x < endPoint.x) {
|
|
39421
|
+
const midY = (startPoint.y + endPoint.y) / 2;
|
|
39422
|
+
return [new Point(startPoint.x, midY), new Point(endPoint.x, midY)];
|
|
39423
|
+
}
|
|
39424
|
+
if (startDir === "bottom" && endDir === "top" && startPoint.y > endPoint.y) {
|
|
39425
|
+
const midX = (startPoint.x + endPoint.x) / 2;
|
|
39426
|
+
return [new Point(midX, startPoint.y), new Point(midX, endPoint.y)];
|
|
39427
|
+
}
|
|
39428
|
+
if (startDir === "top" && endDir === "bottom" && startPoint.y < endPoint.y) {
|
|
39429
|
+
const midX = (startPoint.x + endPoint.x) / 2;
|
|
39430
|
+
return [new Point(midX, startPoint.y), new Point(midX, endPoint.y)];
|
|
39431
|
+
}
|
|
39432
|
+
if ((startDir === "right" || startDir === "left") && (endDir === "top" || endDir === "bottom")) {
|
|
39433
|
+
let needsHook = false;
|
|
39434
|
+
if (startDir === "right" && startPoint.x > endMbr.right) {
|
|
39435
|
+
if (endDir === "top" && endPoint.y < startMbr.top)
|
|
39436
|
+
needsHook = true;
|
|
39437
|
+
if (endDir === "bottom" && endPoint.y > startMbr.bottom)
|
|
39438
|
+
needsHook = true;
|
|
39439
|
+
}
|
|
39440
|
+
if (startDir === "left" && startPoint.x < endMbr.left) {
|
|
39441
|
+
if (endDir === "top" && endPoint.y < startMbr.top)
|
|
39442
|
+
needsHook = true;
|
|
39443
|
+
if (endDir === "bottom" && endPoint.y > startMbr.bottom)
|
|
39444
|
+
needsHook = true;
|
|
39445
|
+
}
|
|
39446
|
+
if (needsHook) {
|
|
39447
|
+
return [new Point(endPoint.x, startPoint.y)];
|
|
39448
|
+
}
|
|
39449
|
+
}
|
|
39450
|
+
if ((startDir === "top" || startDir === "bottom") && (endDir === "right" || endDir === "left")) {
|
|
39451
|
+
let needsHook = false;
|
|
39452
|
+
if (startDir === "top" && startPoint.y < endMbr.top) {
|
|
39453
|
+
if (endDir === "right" && endPoint.x > startMbr.right)
|
|
39454
|
+
needsHook = true;
|
|
39455
|
+
if (endDir === "left" && endPoint.x < startMbr.left)
|
|
39456
|
+
needsHook = true;
|
|
39457
|
+
}
|
|
39458
|
+
if (startDir === "bottom" && startPoint.y > endMbr.bottom) {
|
|
39459
|
+
if (endDir === "right" && endPoint.x > startMbr.right)
|
|
39460
|
+
needsHook = true;
|
|
39461
|
+
if (endDir === "left" && endPoint.x < startMbr.left)
|
|
39462
|
+
needsHook = true;
|
|
39463
|
+
}
|
|
39464
|
+
if (needsHook) {
|
|
39465
|
+
return [new Point(startPoint.x, endPoint.y)];
|
|
39466
|
+
}
|
|
39467
|
+
}
|
|
39468
|
+
return [];
|
|
39469
|
+
}
|
|
39410
39470
|
function findOrthogonalPath(start, end, obstacles, toVisitPoints = []) {
|
|
39411
39471
|
const { grid, newStart, newEnd } = createGrid(start, end, toVisitPoints);
|
|
39412
39472
|
const startPoint = newStart || start;
|
|
39413
39473
|
const endPoint = newEnd || end;
|
|
39414
|
-
const
|
|
39474
|
+
const startDir = getPointerDirection(start);
|
|
39475
|
+
const endDir = getPointerDirection(end);
|
|
39476
|
+
const hookWaypoints = createHookWaypoints(startPoint, endPoint, start, end, startDir, endDir);
|
|
39477
|
+
const points = [startPoint, ...hookWaypoints, ...toVisitPoints, endPoint];
|
|
39415
39478
|
const pathPoints = findPathPoints(points, grid, obstacles, newStart, newEnd);
|
|
39416
39479
|
return {
|
|
39417
39480
|
lines: getLines(pathPoints),
|
package/dist/esm/browser.js
CHANGED
|
@@ -36779,11 +36779,74 @@ function reconstructPath(node2) {
|
|
|
36779
36779
|
}
|
|
36780
36780
|
return path2.reverse();
|
|
36781
36781
|
}
|
|
36782
|
+
function createHookWaypoints(startPoint, endPoint, start, end, startDir, endDir) {
|
|
36783
|
+
if (!startDir || !endDir || start.pointType === "Board" || end.pointType === "Board") {
|
|
36784
|
+
return [];
|
|
36785
|
+
}
|
|
36786
|
+
const startMbr = start.item.getMbr();
|
|
36787
|
+
const endMbr = end.item.getMbr();
|
|
36788
|
+
if (startDir === "right" && endDir === "left" && startPoint.x > endPoint.x) {
|
|
36789
|
+
const midY = (startPoint.y + endPoint.y) / 2;
|
|
36790
|
+
return [new Point(startPoint.x, midY), new Point(endPoint.x, midY)];
|
|
36791
|
+
}
|
|
36792
|
+
if (startDir === "left" && endDir === "right" && startPoint.x < endPoint.x) {
|
|
36793
|
+
const midY = (startPoint.y + endPoint.y) / 2;
|
|
36794
|
+
return [new Point(startPoint.x, midY), new Point(endPoint.x, midY)];
|
|
36795
|
+
}
|
|
36796
|
+
if (startDir === "bottom" && endDir === "top" && startPoint.y > endPoint.y) {
|
|
36797
|
+
const midX = (startPoint.x + endPoint.x) / 2;
|
|
36798
|
+
return [new Point(midX, startPoint.y), new Point(midX, endPoint.y)];
|
|
36799
|
+
}
|
|
36800
|
+
if (startDir === "top" && endDir === "bottom" && startPoint.y < endPoint.y) {
|
|
36801
|
+
const midX = (startPoint.x + endPoint.x) / 2;
|
|
36802
|
+
return [new Point(midX, startPoint.y), new Point(midX, endPoint.y)];
|
|
36803
|
+
}
|
|
36804
|
+
if ((startDir === "right" || startDir === "left") && (endDir === "top" || endDir === "bottom")) {
|
|
36805
|
+
let needsHook = false;
|
|
36806
|
+
if (startDir === "right" && startPoint.x > endMbr.right) {
|
|
36807
|
+
if (endDir === "top" && endPoint.y < startMbr.top)
|
|
36808
|
+
needsHook = true;
|
|
36809
|
+
if (endDir === "bottom" && endPoint.y > startMbr.bottom)
|
|
36810
|
+
needsHook = true;
|
|
36811
|
+
}
|
|
36812
|
+
if (startDir === "left" && startPoint.x < endMbr.left) {
|
|
36813
|
+
if (endDir === "top" && endPoint.y < startMbr.top)
|
|
36814
|
+
needsHook = true;
|
|
36815
|
+
if (endDir === "bottom" && endPoint.y > startMbr.bottom)
|
|
36816
|
+
needsHook = true;
|
|
36817
|
+
}
|
|
36818
|
+
if (needsHook) {
|
|
36819
|
+
return [new Point(endPoint.x, startPoint.y)];
|
|
36820
|
+
}
|
|
36821
|
+
}
|
|
36822
|
+
if ((startDir === "top" || startDir === "bottom") && (endDir === "right" || endDir === "left")) {
|
|
36823
|
+
let needsHook = false;
|
|
36824
|
+
if (startDir === "top" && startPoint.y < endMbr.top) {
|
|
36825
|
+
if (endDir === "right" && endPoint.x > startMbr.right)
|
|
36826
|
+
needsHook = true;
|
|
36827
|
+
if (endDir === "left" && endPoint.x < startMbr.left)
|
|
36828
|
+
needsHook = true;
|
|
36829
|
+
}
|
|
36830
|
+
if (startDir === "bottom" && startPoint.y > endMbr.bottom) {
|
|
36831
|
+
if (endDir === "right" && endPoint.x > startMbr.right)
|
|
36832
|
+
needsHook = true;
|
|
36833
|
+
if (endDir === "left" && endPoint.x < startMbr.left)
|
|
36834
|
+
needsHook = true;
|
|
36835
|
+
}
|
|
36836
|
+
if (needsHook) {
|
|
36837
|
+
return [new Point(startPoint.x, endPoint.y)];
|
|
36838
|
+
}
|
|
36839
|
+
}
|
|
36840
|
+
return [];
|
|
36841
|
+
}
|
|
36782
36842
|
function findOrthogonalPath(start, end, obstacles, toVisitPoints = []) {
|
|
36783
36843
|
const { grid, newStart, newEnd } = createGrid(start, end, toVisitPoints);
|
|
36784
36844
|
const startPoint = newStart || start;
|
|
36785
36845
|
const endPoint = newEnd || end;
|
|
36786
|
-
const
|
|
36846
|
+
const startDir = getPointerDirection(start);
|
|
36847
|
+
const endDir = getPointerDirection(end);
|
|
36848
|
+
const hookWaypoints = createHookWaypoints(startPoint, endPoint, start, end, startDir, endDir);
|
|
36849
|
+
const points = [startPoint, ...hookWaypoints, ...toVisitPoints, endPoint];
|
|
36787
36850
|
const pathPoints = findPathPoints(points, grid, obstacles, newStart, newEnd);
|
|
36788
36851
|
return {
|
|
36789
36852
|
lines: getLines(pathPoints),
|
package/dist/esm/index.js
CHANGED
|
@@ -36772,11 +36772,74 @@ function reconstructPath(node2) {
|
|
|
36772
36772
|
}
|
|
36773
36773
|
return path2.reverse();
|
|
36774
36774
|
}
|
|
36775
|
+
function createHookWaypoints(startPoint, endPoint, start, end, startDir, endDir) {
|
|
36776
|
+
if (!startDir || !endDir || start.pointType === "Board" || end.pointType === "Board") {
|
|
36777
|
+
return [];
|
|
36778
|
+
}
|
|
36779
|
+
const startMbr = start.item.getMbr();
|
|
36780
|
+
const endMbr = end.item.getMbr();
|
|
36781
|
+
if (startDir === "right" && endDir === "left" && startPoint.x > endPoint.x) {
|
|
36782
|
+
const midY = (startPoint.y + endPoint.y) / 2;
|
|
36783
|
+
return [new Point(startPoint.x, midY), new Point(endPoint.x, midY)];
|
|
36784
|
+
}
|
|
36785
|
+
if (startDir === "left" && endDir === "right" && startPoint.x < endPoint.x) {
|
|
36786
|
+
const midY = (startPoint.y + endPoint.y) / 2;
|
|
36787
|
+
return [new Point(startPoint.x, midY), new Point(endPoint.x, midY)];
|
|
36788
|
+
}
|
|
36789
|
+
if (startDir === "bottom" && endDir === "top" && startPoint.y > endPoint.y) {
|
|
36790
|
+
const midX = (startPoint.x + endPoint.x) / 2;
|
|
36791
|
+
return [new Point(midX, startPoint.y), new Point(midX, endPoint.y)];
|
|
36792
|
+
}
|
|
36793
|
+
if (startDir === "top" && endDir === "bottom" && startPoint.y < endPoint.y) {
|
|
36794
|
+
const midX = (startPoint.x + endPoint.x) / 2;
|
|
36795
|
+
return [new Point(midX, startPoint.y), new Point(midX, endPoint.y)];
|
|
36796
|
+
}
|
|
36797
|
+
if ((startDir === "right" || startDir === "left") && (endDir === "top" || endDir === "bottom")) {
|
|
36798
|
+
let needsHook = false;
|
|
36799
|
+
if (startDir === "right" && startPoint.x > endMbr.right) {
|
|
36800
|
+
if (endDir === "top" && endPoint.y < startMbr.top)
|
|
36801
|
+
needsHook = true;
|
|
36802
|
+
if (endDir === "bottom" && endPoint.y > startMbr.bottom)
|
|
36803
|
+
needsHook = true;
|
|
36804
|
+
}
|
|
36805
|
+
if (startDir === "left" && startPoint.x < endMbr.left) {
|
|
36806
|
+
if (endDir === "top" && endPoint.y < startMbr.top)
|
|
36807
|
+
needsHook = true;
|
|
36808
|
+
if (endDir === "bottom" && endPoint.y > startMbr.bottom)
|
|
36809
|
+
needsHook = true;
|
|
36810
|
+
}
|
|
36811
|
+
if (needsHook) {
|
|
36812
|
+
return [new Point(endPoint.x, startPoint.y)];
|
|
36813
|
+
}
|
|
36814
|
+
}
|
|
36815
|
+
if ((startDir === "top" || startDir === "bottom") && (endDir === "right" || endDir === "left")) {
|
|
36816
|
+
let needsHook = false;
|
|
36817
|
+
if (startDir === "top" && startPoint.y < endMbr.top) {
|
|
36818
|
+
if (endDir === "right" && endPoint.x > startMbr.right)
|
|
36819
|
+
needsHook = true;
|
|
36820
|
+
if (endDir === "left" && endPoint.x < startMbr.left)
|
|
36821
|
+
needsHook = true;
|
|
36822
|
+
}
|
|
36823
|
+
if (startDir === "bottom" && startPoint.y > endMbr.bottom) {
|
|
36824
|
+
if (endDir === "right" && endPoint.x > startMbr.right)
|
|
36825
|
+
needsHook = true;
|
|
36826
|
+
if (endDir === "left" && endPoint.x < startMbr.left)
|
|
36827
|
+
needsHook = true;
|
|
36828
|
+
}
|
|
36829
|
+
if (needsHook) {
|
|
36830
|
+
return [new Point(startPoint.x, endPoint.y)];
|
|
36831
|
+
}
|
|
36832
|
+
}
|
|
36833
|
+
return [];
|
|
36834
|
+
}
|
|
36775
36835
|
function findOrthogonalPath(start, end, obstacles, toVisitPoints = []) {
|
|
36776
36836
|
const { grid, newStart, newEnd } = createGrid(start, end, toVisitPoints);
|
|
36777
36837
|
const startPoint = newStart || start;
|
|
36778
36838
|
const endPoint = newEnd || end;
|
|
36779
|
-
const
|
|
36839
|
+
const startDir = getPointerDirection(start);
|
|
36840
|
+
const endDir = getPointerDirection(end);
|
|
36841
|
+
const hookWaypoints = createHookWaypoints(startPoint, endPoint, start, end, startDir, endDir);
|
|
36842
|
+
const points = [startPoint, ...hookWaypoints, ...toVisitPoints, endPoint];
|
|
36780
36843
|
const pathPoints = findPathPoints(points, grid, obstacles, newStart, newEnd);
|
|
36781
36844
|
return {
|
|
36782
36845
|
lines: getLines(pathPoints),
|
package/dist/esm/node.js
CHANGED
|
@@ -39240,11 +39240,74 @@ function reconstructPath(node2) {
|
|
|
39240
39240
|
}
|
|
39241
39241
|
return path2.reverse();
|
|
39242
39242
|
}
|
|
39243
|
+
function createHookWaypoints(startPoint, endPoint, start, end, startDir, endDir) {
|
|
39244
|
+
if (!startDir || !endDir || start.pointType === "Board" || end.pointType === "Board") {
|
|
39245
|
+
return [];
|
|
39246
|
+
}
|
|
39247
|
+
const startMbr = start.item.getMbr();
|
|
39248
|
+
const endMbr = end.item.getMbr();
|
|
39249
|
+
if (startDir === "right" && endDir === "left" && startPoint.x > endPoint.x) {
|
|
39250
|
+
const midY = (startPoint.y + endPoint.y) / 2;
|
|
39251
|
+
return [new Point(startPoint.x, midY), new Point(endPoint.x, midY)];
|
|
39252
|
+
}
|
|
39253
|
+
if (startDir === "left" && endDir === "right" && startPoint.x < endPoint.x) {
|
|
39254
|
+
const midY = (startPoint.y + endPoint.y) / 2;
|
|
39255
|
+
return [new Point(startPoint.x, midY), new Point(endPoint.x, midY)];
|
|
39256
|
+
}
|
|
39257
|
+
if (startDir === "bottom" && endDir === "top" && startPoint.y > endPoint.y) {
|
|
39258
|
+
const midX = (startPoint.x + endPoint.x) / 2;
|
|
39259
|
+
return [new Point(midX, startPoint.y), new Point(midX, endPoint.y)];
|
|
39260
|
+
}
|
|
39261
|
+
if (startDir === "top" && endDir === "bottom" && startPoint.y < endPoint.y) {
|
|
39262
|
+
const midX = (startPoint.x + endPoint.x) / 2;
|
|
39263
|
+
return [new Point(midX, startPoint.y), new Point(midX, endPoint.y)];
|
|
39264
|
+
}
|
|
39265
|
+
if ((startDir === "right" || startDir === "left") && (endDir === "top" || endDir === "bottom")) {
|
|
39266
|
+
let needsHook = false;
|
|
39267
|
+
if (startDir === "right" && startPoint.x > endMbr.right) {
|
|
39268
|
+
if (endDir === "top" && endPoint.y < startMbr.top)
|
|
39269
|
+
needsHook = true;
|
|
39270
|
+
if (endDir === "bottom" && endPoint.y > startMbr.bottom)
|
|
39271
|
+
needsHook = true;
|
|
39272
|
+
}
|
|
39273
|
+
if (startDir === "left" && startPoint.x < endMbr.left) {
|
|
39274
|
+
if (endDir === "top" && endPoint.y < startMbr.top)
|
|
39275
|
+
needsHook = true;
|
|
39276
|
+
if (endDir === "bottom" && endPoint.y > startMbr.bottom)
|
|
39277
|
+
needsHook = true;
|
|
39278
|
+
}
|
|
39279
|
+
if (needsHook) {
|
|
39280
|
+
return [new Point(endPoint.x, startPoint.y)];
|
|
39281
|
+
}
|
|
39282
|
+
}
|
|
39283
|
+
if ((startDir === "top" || startDir === "bottom") && (endDir === "right" || endDir === "left")) {
|
|
39284
|
+
let needsHook = false;
|
|
39285
|
+
if (startDir === "top" && startPoint.y < endMbr.top) {
|
|
39286
|
+
if (endDir === "right" && endPoint.x > startMbr.right)
|
|
39287
|
+
needsHook = true;
|
|
39288
|
+
if (endDir === "left" && endPoint.x < startMbr.left)
|
|
39289
|
+
needsHook = true;
|
|
39290
|
+
}
|
|
39291
|
+
if (startDir === "bottom" && startPoint.y > endMbr.bottom) {
|
|
39292
|
+
if (endDir === "right" && endPoint.x > startMbr.right)
|
|
39293
|
+
needsHook = true;
|
|
39294
|
+
if (endDir === "left" && endPoint.x < startMbr.left)
|
|
39295
|
+
needsHook = true;
|
|
39296
|
+
}
|
|
39297
|
+
if (needsHook) {
|
|
39298
|
+
return [new Point(startPoint.x, endPoint.y)];
|
|
39299
|
+
}
|
|
39300
|
+
}
|
|
39301
|
+
return [];
|
|
39302
|
+
}
|
|
39243
39303
|
function findOrthogonalPath(start, end, obstacles, toVisitPoints = []) {
|
|
39244
39304
|
const { grid, newStart, newEnd } = createGrid(start, end, toVisitPoints);
|
|
39245
39305
|
const startPoint = newStart || start;
|
|
39246
39306
|
const endPoint = newEnd || end;
|
|
39247
|
-
const
|
|
39307
|
+
const startDir = getPointerDirection(start);
|
|
39308
|
+
const endDir = getPointerDirection(end);
|
|
39309
|
+
const hookWaypoints = createHookWaypoints(startPoint, endPoint, start, end, startDir, endDir);
|
|
39310
|
+
const points = [startPoint, ...hookWaypoints, ...toVisitPoints, endPoint];
|
|
39248
39311
|
const pathPoints = findPathPoints(points, grid, obstacles, newStart, newEnd);
|
|
39249
39312
|
return {
|
|
39250
39313
|
lines: getLines(pathPoints),
|