@crystaldesign/web-planner-logic 26.13.0-rc.0 → 26.13.0-rc.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (60) hide show
  1. package/build/cjs/{DivaBoxPlanner-7f6bd584.js → DivaBoxPlanner-53fb3ae5.js} +2 -2
  2. package/build/cjs/{DivaStandardPlanner-77c603dc.js → DivaStandardPlanner-b46f6267.js} +66 -11
  3. package/build/cjs/{DoorPlanner-5de2bbf0.js → DoorPlanner-f51953f5.js} +1 -1
  4. package/build/cjs/{Host3DSignalR-26b95303.js → Host3DSignalR-c88d4538.js} +1 -1
  5. package/build/cjs/{LiviqueWWSHandler-1e419862.js → LiviqueWWSHandler-3b045813.js} +1 -1
  6. package/build/cjs/{PfisterWWSHandler-b2f7a5ec.js → PfisterWWSHandler-00f45372.js} +1 -1
  7. package/build/cjs/{PlannerHandler2D-ff734c3e.js → PlannerHandler2D-adc38873.js} +1 -1
  8. package/build/cjs/{SeriousBasketHandler-e54bd31b.js → SeriousBasketHandler-1d1b2acd.js} +1 -1
  9. package/build/cjs/{ShelfPlanner-08e15d16.js → ShelfPlanner-58864389.js} +1 -1
  10. package/build/cjs/{StandardWWSHandler-0e7b20dc.js → StandardWWSHandler-7e217e62.js} +1 -1
  11. package/build/cjs/{index-5dd5fb4b.js → index-efedc2df.js} +295 -140
  12. package/build/cjs/index.js +1 -1
  13. package/build/esm/{DivaBoxPlanner-6ac448b4.js → DivaBoxPlanner-45eb016b.js} +2 -2
  14. package/build/esm/{DivaStandardPlanner-abd9609d.js → DivaStandardPlanner-4758f866.js} +66 -11
  15. package/build/esm/{DoorPlanner-fde32e61.js → DoorPlanner-a4579229.js} +1 -1
  16. package/build/esm/{Host3DSignalR-0f97c7f3.js → Host3DSignalR-bc058311.js} +1 -1
  17. package/build/esm/{LiviqueWWSHandler-9ee5b7cb.js → LiviqueWWSHandler-b19f7c65.js} +1 -1
  18. package/build/esm/{PfisterWWSHandler-b9699549.js → PfisterWWSHandler-1629a131.js} +1 -1
  19. package/build/esm/{PlannerHandler2D-8d963e77.js → PlannerHandler2D-bbc10b09.js} +1 -1
  20. package/build/esm/{SeriousBasketHandler-40e7e46c.js → SeriousBasketHandler-d5097836.js} +1 -1
  21. package/build/esm/{ShelfPlanner-69cbb2c1.js → ShelfPlanner-1bf7c5b9.js} +1 -1
  22. package/build/esm/{StandardWWSHandler-dbf02663.js → StandardWWSHandler-514c6ac8.js} +1 -1
  23. package/build/esm/{index-88148ccc.js → index-c5450f2e.js} +295 -140
  24. package/build/esm/index.js +1 -1
  25. package/build/types/web-planner-logic/src/interface/DivaCatalogDataType.d.ts +1 -0
  26. package/build/types/web-planner-logic/src/interface/DivaCatalogDataType.d.ts.map +1 -1
  27. package/build/types/web-planner-logic/src/interface/IDM/ArticleApi.d.ts +1 -1
  28. package/build/types/web-planner-logic/src/interface/ShelfPlanner/plannerData.d.ts +4 -0
  29. package/build/types/web-planner-logic/src/interface/ShelfPlanner/plannerData.d.ts.map +1 -1
  30. package/build/types/web-planner-logic/src/logic/Article/DivaArticle.d.ts.map +1 -1
  31. package/build/types/web-planner-logic/src/logic/Basket/DivaBasketHandler.d.ts +4 -0
  32. package/build/types/web-planner-logic/src/logic/Basket/DivaBasketHandler.d.ts.map +1 -1
  33. package/build/types/web-planner-logic/src/logic/ConfigTree/DivaConfigTreeHandler.d.ts.map +1 -1
  34. package/build/types/web-planner-logic/src/logic/ConfigTree/Shelfplanner/ShelfPlannerGrid.d.ts.map +1 -1
  35. package/build/types/web-planner-logic/src/logic/DivaWebPlanner.d.ts +5 -0
  36. package/build/types/web-planner-logic/src/logic/DivaWebPlanner.d.ts.map +1 -1
  37. package/build/types/web-planner-logic/src/logic/Planner/DivaPlannerHandler.d.ts +2 -0
  38. package/build/types/web-planner-logic/src/logic/Planner/DivaPlannerHandler.d.ts.map +1 -1
  39. package/build/types/web-planner-logic/src/logic/Planner/DivaStandardPlanner.d.ts +8 -0
  40. package/build/types/web-planner-logic/src/logic/Planner/DivaStandardPlanner.d.ts.map +1 -1
  41. package/build/types/web-planner-logic/src/logic/Planner/Rendering/PlannerHandler3D.d.ts +8 -0
  42. package/build/types/web-planner-logic/src/logic/Planner/Rendering/PlannerHandler3D.d.ts.map +1 -1
  43. package/build/types/web-planner-logic/src/logic/Planner/Rendering/types.d.ts +4 -0
  44. package/build/types/web-planner-logic/src/logic/Planner/Rendering/types.d.ts.map +1 -1
  45. package/build/types/web-planner-logic/src/logic/Set/DivaSetHandler.d.ts +5 -0
  46. package/build/types/web-planner-logic/src/logic/Set/DivaSetHandler.d.ts.map +1 -1
  47. package/build/types/web-planner-logic/src/model/Catalog/CatalogData.d.ts +2 -0
  48. package/build/types/web-planner-logic/src/model/Catalog/CatalogData.d.ts.map +1 -1
  49. package/build/types/web-planner-logic/src/model/Properties/propertySchemaRegistry.d.ts.map +1 -1
  50. package/build/types/web-planner-logic/src/test/dragKeepsDockingRules.test.d.ts +2 -0
  51. package/build/types/web-planner-logic/src/test/dragKeepsDockingRules.test.d.ts.map +1 -0
  52. package/build/types/web-planner-logic/src/test/dragTransOrder.test.d.ts +3 -0
  53. package/build/types/web-planner-logic/src/test/dragTransOrder.test.d.ts.map +1 -0
  54. package/build/types/web-planner-logic/src/test/hidingRenderScript.test.d.ts +2 -0
  55. package/build/types/web-planner-logic/src/test/hidingRenderScript.test.d.ts.map +1 -0
  56. package/build/types/web-planner-logic/src/test/idmPlacementTypeGroup.test.d.ts +2 -0
  57. package/build/types/web-planner-logic/src/test/idmPlacementTypeGroup.test.d.ts.map +1 -0
  58. package/build/types/web-planner-logic/src/test/shelfPlannerGroup.test.d.ts +2 -0
  59. package/build/types/web-planner-logic/src/test/shelfPlannerGroup.test.d.ts.map +1 -0
  60. package/package.json +3 -3
@@ -5,11 +5,11 @@ var _classCallCheck = require('@babel/runtime/helpers/classCallCheck');
5
5
  var _createClass = require('@babel/runtime/helpers/createClass');
6
6
  var _defineProperty = require('@babel/runtime/helpers/defineProperty');
7
7
  var _regeneratorRuntime = require('@babel/runtime/regenerator');
8
- var index = require('./index-5dd5fb4b.js');
8
+ var index = require('./index-efedc2df.js');
9
9
  var DivaUtils = require('@crystaldesign/diva-utils');
10
10
  var _toConsumableArray = require('@babel/runtime/helpers/toConsumableArray');
11
11
  var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
12
- var PlannerHandler2D = require('./PlannerHandler2D-ff734c3e.js');
12
+ var PlannerHandler2D = require('./PlannerHandler2D-adc38873.js');
13
13
  require('@babel/runtime/helpers/objectWithoutProperties');
14
14
  require('axios');
15
15
  require('@babel/runtime/helpers/typeof');
@@ -7,10 +7,10 @@ var _createClass = require('@babel/runtime/helpers/createClass');
7
7
  var _defineProperty = require('@babel/runtime/helpers/defineProperty');
8
8
  var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
9
9
  var _regeneratorRuntime = require('@babel/runtime/regenerator');
10
- var index = require('./index-5dd5fb4b.js');
10
+ var index = require('./index-efedc2df.js');
11
11
  var DivaUtils = require('@crystaldesign/diva-utils');
12
12
  var plannerCore = require('@crystaldesign/planner-core');
13
- var PlannerHandler2D = require('./PlannerHandler2D-ff734c3e.js');
13
+ var PlannerHandler2D = require('./PlannerHandler2D-adc38873.js');
14
14
  require('@babel/runtime/helpers/objectWithoutProperties');
15
15
  require('axios');
16
16
  require('@babel/runtime/helpers/typeof');
@@ -83,6 +83,15 @@ var PATH_STEP = 2;
83
83
  var DEPTH_NOISE = 1e-6;
84
84
  /** cm within which a dragged guest snaps into a free place of a slot that takes it. */
85
85
  var SLOT_SNAP_DISTANCE = 20;
86
+ /**
87
+ * cm within which a group dragged in a room docks (between the docking points), at least the viewer's own docking
88
+ * distance: as far as a slot snap reaches. The bodies block the drag at contact and a pointer moves several cm per event,
89
+ * so the group is mostly pushed into the element it docks to; it has to dock from such a pose, not only from the few cm
90
+ * before contact.
91
+ */
92
+ var ROOM_DOCK_SNAP_DISTANCE = SLOT_SNAP_DISTANCE;
93
+ /** cm between two docking points that meet at a dock pose (the float noise of the docked transform). */
94
+ var DOCK_CONTACT_DISTANCE = 0.1;
86
95
  /** cm within which a drag counts as back at its start (the float noise of the summed moves). */
87
96
  var START_NOISE = 1e-6;
88
97
  var toFloorRect = function toFloorRect(block, pose) {
@@ -1694,13 +1703,14 @@ var DivaStandardPlanner = /*#__PURE__*/function () {
1694
1703
  };
1695
1704
  }
1696
1705
 
1697
- // The group follows the grabbed element rigidly to the wall or inside-room pose of the raw centre, also where it runs
1698
- // into an obstacle: what it runs into there is kept as `blockedBy` (the viewer shows the drag blocked, a release there
1699
- // goes back to the start). A forced group that fits on no wall is kept inside the room like a free one. Back at the
1700
- // start (a cancel, a blocked release) it stands exactly where it started, nothing snaps.
1706
+ // The group follows the grabbed element rigidly to the wall or inside-room pose of the raw centre, and from there onto
1707
+ // a dock within ROOM_DOCK_SNAP_DISTANCE, also where it runs into an obstacle: what it runs into there is kept as
1708
+ // `blockedBy` (the viewer shows the drag blocked, a release there goes back to the start). A forced group that fits on
1709
+ // no wall is kept inside the room like a free one. Back at the start (a cancel, a blocked release) it stands exactly
1710
+ // where it started, nothing snaps.
1701
1711
  }, {
1702
1712
  key: "updateRoomDrag",
1703
- value: function updateRoomDrag(room, drag, deltaMove) {
1713
+ value: function updateRoomDrag(room, drag, deltaMove, autoDockingDistance) {
1704
1714
  drag.dx += deltaMove.x;
1705
1715
  drag.dz += deltaMove.z;
1706
1716
  var _drag$start2 = drag.start,
@@ -1719,12 +1729,19 @@ var DivaStandardPlanner = /*#__PURE__*/function () {
1719
1729
  center: drag.start.center,
1720
1730
  rotDeg: rotDeg
1721
1731
  };
1722
- var wanted = atStart ? startPose : slotPose !== null && slotPose !== void 0 ? slotPose : wallPose && (drag.wallMode === 'forced' || snapsToWall) ? wallPose : insidePose(block, {
1732
+ var placed = atStart ? startPose : slotPose !== null && slotPose !== void 0 ? slotPose : wallPose && (drag.wallMode === 'forced' || snapsToWall) ? wallPose : insidePose(block, {
1723
1733
  center: rawCenter,
1724
1734
  rotDeg: rotDeg
1725
1735
  }, room);
1726
- drag.blockedBy = this.blockersAt(drag, wanted);
1727
- index.moveGroupRigidly([].concat(_toConsumableArray__default["default"](drag.members), _toConsumableArray__default["default"](drag.followers)), drag.current, wanted);
1736
+ var group = [].concat(_toConsumableArray__default["default"](drag.members), _toConsumableArray__default["default"](drag.followers));
1737
+ index.moveGroupRigidly(group, drag.current, placed);
1738
+ // Pushed against the element it docks to, the group touches it docked instead of standing blocked in it, so the
1739
+ // release docks it (see snapToDock).
1740
+ var reach = autoDockingDistance === 0 ? 0 : Math.max(autoDockingDistance, ROOM_DOCK_SNAP_DISTANCE);
1741
+ var dock = atStart || slotPose ? undefined : this.getDockSnapPose(drag, placed, reach);
1742
+ var wanted = dock !== null && dock !== void 0 ? dock : placed;
1743
+ index.moveGroupRigidly(group, placed, wanted);
1744
+ drag.blockedBy = dock ? [] : this.blockersAt(drag, wanted);
1728
1745
  drag.current = wanted;
1729
1746
  drag.slotSnapped = !!slotPose;
1730
1747
  // A pair that overlapped at the start may only come apart, never go back in.
@@ -1737,6 +1754,44 @@ var DivaStandardPlanner = /*#__PURE__*/function () {
1737
1754
  });
1738
1755
  }
1739
1756
 
1757
+ /**
1758
+ * The pose of the group, standing at `pose`, where the grabbed element docks onto the nearest dock outside the group and
1759
+ * its guests (see findDockSnap), where nothing blocks it; undefined when no dock is that near, or the room rule would
1760
+ * move the docked group or something blocks it there that it does not dock to: then the group stays where the pointer
1761
+ * has it. Docked elements may reach into each other as members of a group do (a side panel standing out of the
1762
+ * outline), so every element the group docks to at that pose (both neighbours of a gap it fills) does not block.
1763
+ */
1764
+ }, {
1765
+ key: "getDockSnapPose",
1766
+ value: function getDockSnapPose(drag, pose, autoDockingDistance) {
1767
+ var element = this.plannerElements.get(drag.elementId);
1768
+ var group = [].concat(_toConsumableArray__default["default"](drag.members), _toConsumableArray__default["default"](drag.followers));
1769
+ var unitIds = group.map(function (member) {
1770
+ return member.ElementId;
1771
+ });
1772
+ var snap = element && this.findDockSnap(element, autoDockingDistance, unitIds);
1773
+ if (!element || !snap) return undefined;
1774
+ var _this$snapMove = this.snapMove(element, snap),
1775
+ from = _this$snapMove.from,
1776
+ to = _this$snapMove.to;
1777
+ var docked = movePose(pose, from, to);
1778
+ if (!this.getKeptPose(drag, docked)) return undefined;
1779
+ index.moveGroupRigidly(group, pose, docked);
1780
+ var others = this.getAllPlannerElements().filter(function (other) {
1781
+ return !unitIds.includes(other.ElementId);
1782
+ });
1783
+ var dockedTo = new Set(group.flatMap(function (member) {
1784
+ return _toConsumableArray__default["default"](PlannerHandler2D.dockingPointHandlerInst.searchDockableElementsInArea(member, others, DOCK_CONTACT_DISTANCE).values()).map(function (pair) {
1785
+ return pair.targetDP.ElementId;
1786
+ });
1787
+ }));
1788
+ index.moveGroupRigidly(group, docked, pose);
1789
+ var docksTo = function docksTo(obstacle) {
1790
+ return obstacle.setId === undefined && obstacle.elementId !== undefined && dockedTo.has(obstacle.elementId);
1791
+ };
1792
+ return this.blockersAt(drag, docked).every(docksTo) ? docked : undefined;
1793
+ }
1794
+
1740
1795
  // The unit moved rigidly onto the nearest dock of `element` outside it (see findDockSnap), else with `slots` into the
1741
1796
  // nearest free slot place (see findSlotSnap).
1742
1797
  }, {
@@ -3491,7 +3546,7 @@ var DivaStandardPlanner = /*#__PURE__*/function () {
3491
3546
  if (room && roomDrag && !roomDrag.rotating && transState == 'UPDATE' && roomDrag.members.some(function (member) {
3492
3547
  return member.ElementId == elementId;
3493
3548
  })) {
3494
- if (elementId == roomDrag.elementId) this.updateRoomDrag(room, roomDrag, deltaMove);
3549
+ if (elementId == roomDrag.elementId) this.updateRoomDrag(room, roomDrag, deltaMove, autoDockingDistance);
3495
3550
  return false;
3496
3551
  }
3497
3552
  if (this.plannerElements.has(elementId)) {
@@ -3,7 +3,7 @@
3
3
  var _classCallCheck = require('@babel/runtime/helpers/classCallCheck');
4
4
  var _createClass = require('@babel/runtime/helpers/createClass');
5
5
  var _defineProperty = require('@babel/runtime/helpers/defineProperty');
6
- require('./index-5dd5fb4b.js');
6
+ require('./index-efedc2df.js');
7
7
  var DivaUtils = require('@crystaldesign/diva-utils');
8
8
  require('@babel/runtime/helpers/slicedToArray');
9
9
  require('@babel/runtime/helpers/asyncToGenerator');
@@ -5,7 +5,7 @@ var _classCallCheck = require('@babel/runtime/helpers/classCallCheck');
5
5
  var _createClass = require('@babel/runtime/helpers/createClass');
6
6
  var _defineProperty = require('@babel/runtime/helpers/defineProperty');
7
7
  var _regeneratorRuntime = require('@babel/runtime/regenerator');
8
- var index = require('./index-5dd5fb4b.js');
8
+ var index = require('./index-efedc2df.js');
9
9
  var DivaUtils = require('@crystaldesign/diva-utils');
10
10
  var signalr = require('@microsoft/signalr');
11
11
  var io = require('socket.io-client');
@@ -2,7 +2,7 @@
2
2
 
3
3
  var _classCallCheck = require('@babel/runtime/helpers/classCallCheck');
4
4
  var _createClass = require('@babel/runtime/helpers/createClass');
5
- require('./index-5dd5fb4b.js');
5
+ require('./index-efedc2df.js');
6
6
  require('@babel/runtime/helpers/slicedToArray');
7
7
  require('@babel/runtime/helpers/asyncToGenerator');
8
8
  require('@babel/runtime/helpers/defineProperty');
@@ -2,7 +2,7 @@
2
2
 
3
3
  var _classCallCheck = require('@babel/runtime/helpers/classCallCheck');
4
4
  var _createClass = require('@babel/runtime/helpers/createClass');
5
- var index = require('./index-5dd5fb4b.js');
5
+ var index = require('./index-efedc2df.js');
6
6
  var basketModel = require('@crystaldesign/basket-model');
7
7
  var DivaUtils = require('@crystaldesign/diva-utils');
8
8
  require('@babel/runtime/helpers/slicedToArray');
@@ -5,7 +5,7 @@ var _classCallCheck = require('@babel/runtime/helpers/classCallCheck');
5
5
  var _createClass = require('@babel/runtime/helpers/createClass');
6
6
  var _defineProperty = require('@babel/runtime/helpers/defineProperty');
7
7
  var _regeneratorRuntime = require('@babel/runtime/regenerator');
8
- var index = require('./index-5dd5fb4b.js');
8
+ var index = require('./index-efedc2df.js');
9
9
  var _possibleConstructorReturn = require('@babel/runtime/helpers/possibleConstructorReturn');
10
10
  var _getPrototypeOf = require('@babel/runtime/helpers/getPrototypeOf');
11
11
  var _get = require('@babel/runtime/helpers/get');
@@ -3,7 +3,7 @@
3
3
  var _classCallCheck = require('@babel/runtime/helpers/classCallCheck');
4
4
  var _createClass = require('@babel/runtime/helpers/createClass');
5
5
  var _defineProperty = require('@babel/runtime/helpers/defineProperty');
6
- var index = require('./index-5dd5fb4b.js');
6
+ var index = require('./index-efedc2df.js');
7
7
  var DivaUtils = require('@crystaldesign/diva-utils');
8
8
  require('@babel/runtime/helpers/slicedToArray');
9
9
  require('@babel/runtime/helpers/asyncToGenerator');
@@ -6,7 +6,7 @@ var _classCallCheck = require('@babel/runtime/helpers/classCallCheck');
6
6
  var _createClass = require('@babel/runtime/helpers/createClass');
7
7
  var _defineProperty = require('@babel/runtime/helpers/defineProperty');
8
8
  var _regeneratorRuntime = require('@babel/runtime/regenerator');
9
- var index = require('./index-5dd5fb4b.js');
9
+ var index = require('./index-efedc2df.js');
10
10
  var DivaUtils = require('@crystaldesign/diva-utils');
11
11
  require('@babel/runtime/helpers/slicedToArray');
12
12
  require('@babel/runtime/helpers/objectWithoutProperties');
@@ -2,7 +2,7 @@
2
2
 
3
3
  var _classCallCheck = require('@babel/runtime/helpers/classCallCheck');
4
4
  var _createClass = require('@babel/runtime/helpers/createClass');
5
- require('./index-5dd5fb4b.js');
5
+ require('./index-efedc2df.js');
6
6
  require('@babel/runtime/helpers/slicedToArray');
7
7
  require('@babel/runtime/helpers/asyncToGenerator');
8
8
  require('@babel/runtime/helpers/defineProperty');