@crystaldesign/web-planner-logic 26.3.0-beta.4 → 26.3.0-beta.41

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 (103) hide show
  1. package/build/cjs/{DivaBoxPlanner-60c15c9e.js → DivaBoxPlanner-f80250d0.js} +14 -44
  2. package/build/cjs/{DivaStandardPlanner-4ef1a282.js → DivaStandardPlanner-c5105be2.js} +28 -6
  3. package/build/cjs/{DoorPlanner-0bd9ff7d.js → DoorPlanner-b4bce492.js} +1 -1
  4. package/build/cjs/{Host3DSignalR-c1b2845d.js → Host3DSignalR-4e9f5df7.js} +1 -1
  5. package/build/cjs/{LiviqueWWSHandler-91667eb6.js → LiviqueWWSHandler-7cd7311b.js} +1 -1
  6. package/build/cjs/{PfisterWWSHandler-41f002bb.js → PfisterWWSHandler-cbc777bc.js} +1 -1
  7. package/build/cjs/{PlannerHandler2D-aa10f38d.js → PlannerHandler2D-7f6212c4.js} +154 -25
  8. package/build/cjs/{SeriousBasketHandler-2828d981.js → SeriousBasketHandler-ebf721a1.js} +1 -1
  9. package/build/cjs/{ShelfPlanner-fe876b5e.js → ShelfPlanner-571a645a.js} +1 -1
  10. package/build/cjs/{StandardWWSHandler-b275174b.js → StandardWWSHandler-bc5d8354.js} +1 -1
  11. package/build/cjs/{index-c3717ccf.js → index-4cf893d9.js} +4893 -4097
  12. package/build/cjs/index.js +2 -1
  13. package/build/esm/{DivaBoxPlanner-d2f25c2a.js → DivaBoxPlanner-f93993b1.js} +14 -44
  14. package/build/esm/{DivaStandardPlanner-eab1c47a.js → DivaStandardPlanner-132930c0.js} +28 -6
  15. package/build/esm/{DoorPlanner-f2ad2238.js → DoorPlanner-44e816b2.js} +1 -1
  16. package/build/esm/{Host3DSignalR-05a8dfbc.js → Host3DSignalR-4e70c280.js} +1 -1
  17. package/build/esm/{LiviqueWWSHandler-48b69465.js → LiviqueWWSHandler-21b02bcc.js} +1 -1
  18. package/build/esm/{PfisterWWSHandler-39ec9c16.js → PfisterWWSHandler-ddb63edf.js} +1 -1
  19. package/build/esm/{PlannerHandler2D-98c545f6.js → PlannerHandler2D-326119ab.js} +153 -25
  20. package/build/esm/{SeriousBasketHandler-46f94655.js → SeriousBasketHandler-0c90ea1c.js} +1 -1
  21. package/build/esm/{ShelfPlanner-a76a48d2.js → ShelfPlanner-234539e3.js} +1 -1
  22. package/build/esm/{StandardWWSHandler-07da1d66.js → StandardWWSHandler-d0ed512b.js} +1 -1
  23. package/build/esm/{index-9b142052.js → index-7c6a8b68.js} +4893 -4097
  24. package/build/esm/index.js +1 -1
  25. package/build/types/web-planner-logic/src/index.d.ts +5 -3
  26. package/build/types/web-planner-logic/src/index.d.ts.map +1 -1
  27. package/build/types/web-planner-logic/src/interface/API/AiImageResult.d.ts +1 -0
  28. package/build/types/web-planner-logic/src/interface/API/AiImageResult.d.ts.map +1 -1
  29. package/build/types/web-planner-logic/src/interface/API/Checkout.d.ts +17 -2
  30. package/build/types/web-planner-logic/src/interface/API/Checkout.d.ts.map +1 -1
  31. package/build/types/web-planner-logic/src/interface/API/TemplateConfigType.d.ts +2 -2
  32. package/build/types/web-planner-logic/src/interface/API/TemplateConfigType.d.ts.map +1 -1
  33. package/build/types/web-planner-logic/src/interface/API/ViewConfigDataType.d.ts +2 -0
  34. package/build/types/web-planner-logic/src/interface/API/ViewConfigDataType.d.ts.map +1 -1
  35. package/build/types/web-planner-logic/src/interface/ArticleOptionStateType.d.ts +10 -0
  36. package/build/types/web-planner-logic/src/interface/ArticleOptionStateType.d.ts.map +1 -1
  37. package/build/types/web-planner-logic/src/interface/Articles/ArticleDataType.d.ts +22 -0
  38. package/build/types/web-planner-logic/src/interface/Articles/ArticleDataType.d.ts.map +1 -1
  39. package/build/types/web-planner-logic/src/interface/Configuration.d.ts +2 -0
  40. package/build/types/web-planner-logic/src/interface/Configuration.d.ts.map +1 -1
  41. package/build/types/web-planner-logic/src/interface/ConfiguratorStructureDataType.d.ts +1 -1
  42. package/build/types/web-planner-logic/src/interface/ConfiguratorStructureDataType.d.ts.map +1 -1
  43. package/build/types/web-planner-logic/src/interface/CoreTypes/index.d.ts +2 -0
  44. package/build/types/web-planner-logic/src/interface/CoreTypes/index.d.ts.map +1 -1
  45. package/build/types/web-planner-logic/src/interface/DivaCatalogDataType.d.ts +1 -0
  46. package/build/types/web-planner-logic/src/interface/DivaCatalogDataType.d.ts.map +1 -1
  47. package/build/types/web-planner-logic/src/interface/OptionTypes/ArticleOptionValueView.d.ts +5 -0
  48. package/build/types/web-planner-logic/src/interface/OptionTypes/ArticleOptionValueView.d.ts.map +1 -1
  49. package/build/types/web-planner-logic/src/interface/OptionTypes/CatalogOptionDataTypes.d.ts +1 -0
  50. package/build/types/web-planner-logic/src/interface/OptionTypes/CatalogOptionDataTypes.d.ts.map +1 -1
  51. package/build/types/web-planner-logic/src/interface/Planner/DockingPointDataType.d.ts +8 -0
  52. package/build/types/web-planner-logic/src/interface/Planner/DockingPointDataType.d.ts.map +1 -1
  53. package/build/types/web-planner-logic/src/interface/ViewTypes/index.d.ts +2 -1
  54. package/build/types/web-planner-logic/src/interface/ViewTypes/index.d.ts.map +1 -1
  55. package/build/types/web-planner-logic/src/logic/Article/ArticleOptionState.d.ts +3 -1
  56. package/build/types/web-planner-logic/src/logic/Article/ArticleOptionState.d.ts.map +1 -1
  57. package/build/types/web-planner-logic/src/logic/Article/DivaArticle.d.ts +7 -2
  58. package/build/types/web-planner-logic/src/logic/Article/DivaArticle.d.ts.map +1 -1
  59. package/build/types/web-planner-logic/src/logic/Article/Engine/DivaArticleEngine.d.ts +1 -0
  60. package/build/types/web-planner-logic/src/logic/Article/Engine/DivaArticleEngine.d.ts.map +1 -1
  61. package/build/types/web-planner-logic/src/logic/Article/Engine/IDMArticleEngine.d.ts +5 -3
  62. package/build/types/web-planner-logic/src/logic/Article/Engine/IDMArticleEngine.d.ts.map +1 -1
  63. package/build/types/web-planner-logic/src/logic/ConfigTree/DivaConfigTree.d.ts +1 -0
  64. package/build/types/web-planner-logic/src/logic/ConfigTree/DivaConfigTree.d.ts.map +1 -1
  65. package/build/types/web-planner-logic/src/logic/ConfigTree/DivaConfigTreeHandler.d.ts +5 -0
  66. package/build/types/web-planner-logic/src/logic/ConfigTree/DivaConfigTreeHandler.d.ts.map +1 -1
  67. package/build/types/web-planner-logic/src/logic/ConfigTree/SummaryHandler.d.ts.map +1 -1
  68. package/build/types/web-planner-logic/src/logic/DivaApiHandler.d.ts +3 -4
  69. package/build/types/web-planner-logic/src/logic/DivaApiHandler.d.ts.map +1 -1
  70. package/build/types/web-planner-logic/src/logic/DivaCatalogHandler.d.ts.map +1 -1
  71. package/build/types/web-planner-logic/src/logic/DivaWebPlanner.d.ts +4 -1
  72. package/build/types/web-planner-logic/src/logic/DivaWebPlanner.d.ts.map +1 -1
  73. package/build/types/web-planner-logic/src/logic/Planner/BoxPlanner/BoxPlannerGrid.d.ts.map +1 -1
  74. package/build/types/web-planner-logic/src/logic/Planner/BoxPlanner/ConstructionRulesHandler.d.ts +0 -1
  75. package/build/types/web-planner-logic/src/logic/Planner/BoxPlanner/ConstructionRulesHandler.d.ts.map +1 -1
  76. package/build/types/web-planner-logic/src/logic/Planner/DivaPlannerHandler.d.ts +2 -6
  77. package/build/types/web-planner-logic/src/logic/Planner/DivaPlannerHandler.d.ts.map +1 -1
  78. package/build/types/web-planner-logic/src/logic/Planner/DivaStandardPlanner.d.ts +2 -6
  79. package/build/types/web-planner-logic/src/logic/Planner/DivaStandardPlanner.d.ts.map +1 -1
  80. package/build/types/web-planner-logic/src/logic/Planner/PlannerUtils/PlannerHandler2D.d.ts.map +1 -1
  81. package/build/types/web-planner-logic/src/logic/Planner/PlannerUtils/SVGUtils.d.ts +22 -0
  82. package/build/types/web-planner-logic/src/logic/Planner/PlannerUtils/SVGUtils.d.ts.map +1 -1
  83. package/build/types/web-planner-logic/src/logic/Planner/Rendering/PlannerHandler3D.d.ts +0 -6
  84. package/build/types/web-planner-logic/src/logic/Planner/Rendering/PlannerHandler3D.d.ts.map +1 -1
  85. package/build/types/web-planner-logic/src/logic/Set/DivaSet.d.ts +8 -0
  86. package/build/types/web-planner-logic/src/logic/Set/DivaSet.d.ts.map +1 -1
  87. package/build/types/web-planner-logic/src/logic/Set/DivaSetHandler.d.ts +6 -1
  88. package/build/types/web-planner-logic/src/logic/Set/DivaSetHandler.d.ts.map +1 -1
  89. package/build/types/web-planner-logic/src/model/Articles/Article/IDMCatalogArticle.d.ts.map +1 -1
  90. package/build/types/web-planner-logic/src/model/Catalog/CatalogData.d.ts +1 -0
  91. package/build/types/web-planner-logic/src/model/Catalog/CatalogData.d.ts.map +1 -1
  92. package/build/types/web-planner-logic/src/model/Catalog/DivaCatalogData.d.ts +1 -1
  93. package/build/types/web-planner-logic/src/model/Catalog/DivaCatalogData.d.ts.map +1 -1
  94. package/build/types/web-planner-logic/src/model/Options/ArticleOptionData.d.ts +1 -0
  95. package/build/types/web-planner-logic/src/model/Options/ArticleOptionData.d.ts.map +1 -1
  96. package/build/types/web-planner-logic/src/model/Options/CatalogOptionData.d.ts +1 -0
  97. package/build/types/web-planner-logic/src/model/Options/CatalogOptionData.d.ts.map +1 -1
  98. package/build/types/web-planner-logic/src/model/Planner/BoundingBox.d.ts +11 -3
  99. package/build/types/web-planner-logic/src/model/Planner/BoundingBox.d.ts.map +1 -1
  100. package/build/types/web-planner-logic/src/model/Planner/PlannerElementData.d.ts +14 -3
  101. package/build/types/web-planner-logic/src/model/Planner/PlannerElementData.d.ts.map +1 -1
  102. package/build/types/web-planner-logic/src/model/Planner/PlannerInteractionData.d.ts.map +1 -1
  103. package/package.json +2 -2
@@ -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-c3717ccf.js');
8
+ var index = require('./index-4cf893d9.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-aa10f38d.js');
12
+ var PlannerHandler2D = require('./PlannerHandler2D-7f6212c4.js');
13
13
  require('@babel/runtime/helpers/objectWithoutProperties');
14
14
  require('axios');
15
15
  require('@crystaldesign/basket-model');
@@ -3145,7 +3145,7 @@ var ConstructionRulesHandler = /*#__PURE__*/function () {
3145
3145
  retailArticleRules: constructionRule.retailArticleRules
3146
3146
  };
3147
3147
  }
3148
- } else if (constructionRule.range == "singular") {
3148
+ } else if (constructionRule.range == 'singular') {
3149
3149
  var _allValid = false;
3150
3150
  //Do check if all Elements satify the rules
3151
3151
  for (var j = 0; j < allElements.length; j++) {
@@ -3182,35 +3182,6 @@ var ConstructionRulesHandler = /*#__PURE__*/function () {
3182
3182
  return this.constructionRulesLoaded;
3183
3183
  }
3184
3184
 
3185
- /* This is a hardcoded System4/Quadro functionality
3186
- * we need a aussenblech on the side of every door side
3187
- * but not if the neighbor door has the same shared side -> then we do not
3188
- * need any
3189
- */
3190
- }, {
3191
- key: "correctAussenblech",
3192
- value: function correctAussenblech(boxPlannerGrid, optionHandler, curElementId) {
3193
- if (boxPlannerGrid.getForceSingleCellPerElement()) {
3194
- var right = boxPlannerGrid.getNeighborElements(curElementId, "RIGHT");
3195
- var left = boxPlannerGrid.getNeighborElements(curElementId, "LEFT");
3196
- var curopt = this.getOptionVal(curElementId, "OPTTUER", optionHandler);
3197
- if (right.length > 0 && curopt) {
3198
- var rightopt = this.getOptionVal(right[0].ElementId, "OPTTUER", optionHandler);
3199
- if (rightopt && rightopt == 'OPVLINKS' && curopt == 'OPVRECHTS') {
3200
- optionHandler.get(curElementId).set('OPTAUSSENBLECH_RECHTS', 'OPVOHNE');
3201
- optionHandler.get(curElementId).set('OPTAUSSENBLECH_LINKS', 'OPVOHNE');
3202
- }
3203
- }
3204
- if (left.length > 0 && curopt) {
3205
- var leftopt = this.getOptionVal(left[0].ElementId, "OPTTUER", optionHandler);
3206
- if (leftopt && leftopt == 'OPVRECHTS' && curopt == 'OPVLINKS') {
3207
- optionHandler.get(curElementId).set('OPTAUSSENBLECH_LINKS', 'OPVOHNE');
3208
- optionHandler.get(curElementId).set('OPTAUSSENBLECH_RECHTS', 'OPVOHNE');
3209
- }
3210
- }
3211
- }
3212
- }
3213
-
3214
3185
  //Die gleiche Option kann sowohl nach rechts als auch nach oben gesetzt werden (Rahmen rechts oben). Wenn das der Fall ist, darf wenn es rechts keinen Nachbarn gibt nicht mit doShow überschrieben werden, wenn es vorher bei TOP versteckt wurde
3215
3186
  //Deshalb darf es nicht angeschalten werden, wenn es in der gleichen Runde ausgeschalten wurde
3216
3187
  /*
@@ -3359,13 +3330,13 @@ var ConstructionRulesHandler = /*#__PURE__*/function () {
3359
3330
  i = 0;
3360
3331
  case 55:
3361
3332
  if (!(i < boxPlannerGrid.getColumnCount())) {
3362
- _context.next = 69;
3333
+ _context.next = 68;
3363
3334
  break;
3364
3335
  }
3365
3336
  j = 0;
3366
3337
  case 57:
3367
3338
  if (!(j < boxPlannerGrid.getRowCount(i, false))) {
3368
- _context.next = 66;
3339
+ _context.next = 65;
3369
3340
  break;
3370
3341
  }
3371
3342
  _elementId2 = (_boxPlannerGrid$getPl4 = boxPlannerGrid.getPlannerElementAtGridPos(i, j, false)) === null || _boxPlannerGrid$getPl4 === void 0 ? void 0 : _boxPlannerGrid$getPl4.getElementId();
@@ -3373,27 +3344,26 @@ var ConstructionRulesHandler = /*#__PURE__*/function () {
3373
3344
  _context.next = 61;
3374
3345
  break;
3375
3346
  }
3376
- return _context.abrupt("continue", 63);
3347
+ return _context.abrupt("continue", 62);
3377
3348
  case 61:
3378
3349
  this.correctBack(boxPlannerGrid, optionHandler, _elementId2);
3379
- this.correctAussenblech(boxPlannerGrid, optionHandler, _elementId2);
3380
- case 63:
3350
+ case 62:
3381
3351
  j++;
3382
3352
  _context.next = 57;
3383
3353
  break;
3384
- case 66:
3354
+ case 65:
3385
3355
  i++;
3386
3356
  _context.next = 55;
3387
3357
  break;
3388
- case 69:
3358
+ case 68:
3389
3359
  doChangeRetailArticleNumbers = this.doChangeRetailArticleNumbers(boxPlannerGrid, optionHandler);
3390
- _context.next = 72;
3360
+ _context.next = 71;
3391
3361
  return this.updateCfgValuesByPlanner(optionHandler, undefined, this.constructionRules.partlistRules.bundleRules, doChangeRetailArticleNumbers);
3392
- case 72:
3362
+ case 71:
3393
3363
  LOG$2.debug('BoxPlanner updateOptionLogic - Duration after setting Option Values of all Articles: ' + (new Date().getTime() - startTime));
3394
3364
  LOG$2.debug('BoxPlanner updateOptionLogic - Duration after setting updating configurator: ' + (new Date().getTime() - startTime));
3395
3365
  return _context.abrupt("return", resultMessage);
3396
- case 75:
3366
+ case 74:
3397
3367
  case "end":
3398
3368
  return _context.stop();
3399
3369
  }
@@ -4204,6 +4174,7 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4204
4174
  var endHeight = 0;
4205
4175
  for (var y = 0; y < currentRow.length;) {
4206
4176
  var cell = currentRow[y];
4177
+ if (!cell.plannedElement) continue;
4207
4178
  if (cell.index.y < res.startRowIndex) startHeight = Math.round((startHeight + cell.plannedElement.size.height) * 1000) / 1000;
4208
4179
  if (cell.index.y < res.endRowIndex) endHeight = Math.round((endHeight + cell.plannedElement.size.height) * 1000) / 1000;
4209
4180
  y = cell.plannedElement.area.toY;
@@ -4243,7 +4214,7 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4243
4214
  var _cell6$plannedElement, _cell6$plannedElement2;
4244
4215
  var _cell6 = _neighbourRow[_y2];
4245
4216
  if (neighbours.includes(_cell6)) continue;
4246
- if (plannedElement.area.fromY == _y2 && this.gridSetupParams.forceSingleCellPerElement && plannedElement.area.toX == _x2) neighbours.push(_cell6);else if (clean && !this.gridSetupParams.forceSingleCellPerElement && neighbourSize == startHeight) neighbours.push(_cell6);else if (!clean && neighbourSize >= startHeight && neighbourSize <= endHeight) neighbours.push(_cell6);
4217
+ if (plannedElement.area.fromY == _y2 && this.gridSetupParams.forceSingleCellPerElement && plannedElement.area.fromX - 1 == _x2) neighbours.push(_cell6);else if (clean && !this.gridSetupParams.forceSingleCellPerElement && neighbourSize == startHeight) neighbours.push(_cell6);else if (!clean && neighbourSize >= startHeight && neighbourSize <= endHeight) neighbours.push(_cell6);
4247
4218
  neighbourSize = Math.round((neighbourSize + _cell6.plannedElement.size.height) * 1000) / 1000;
4248
4219
  _y2 = (_cell6$plannedElement = (_cell6$plannedElement2 = _cell6.plannedElement) === null || _cell6$plannedElement2 === void 0 ? void 0 : _cell6$plannedElement2.area.toY) !== null && _cell6$plannedElement !== void 0 ? _cell6$plannedElement : _y2 + 1;
4249
4220
  }
@@ -4870,7 +4841,6 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4870
4841
  for (var _y5 = cell.plannedElement.area.fromY; _y5 < cell.plannedElement.area.toY; _y5++) {
4871
4842
  var _cell9 = grid[_x6][_y5];
4872
4843
  if (!_cell9 || _cell9.plannedElement.elementId == elementId) continue; //already corrected
4873
-
4874
4844
  _cell9.index.x += diff.x;
4875
4845
  _cell9.plannedElement.area.fromX += diff.x;
4876
4846
  _cell9.plannedElement.area.toX += diff.x;
@@ -5,9 +5,9 @@ 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-c3717ccf.js');
8
+ var index = require('./index-4cf893d9.js');
9
9
  var DivaUtils = require('@crystaldesign/diva-utils');
10
- var PlannerHandler2D = require('./PlannerHandler2D-aa10f38d.js');
10
+ var PlannerHandler2D = require('./PlannerHandler2D-7f6212c4.js');
11
11
  require('@babel/runtime/helpers/slicedToArray');
12
12
  require('@babel/runtime/helpers/objectWithoutProperties');
13
13
  require('@babel/runtime/helpers/toConsumableArray');
@@ -227,15 +227,29 @@ var DivaStandardPlanner = /*#__PURE__*/function () {
227
227
  var refDockingPoint = refElement.getDockingPointById(dockingPoint.OnDP.DpId);
228
228
  if (refDockingPoint == undefined) return updateConfig;
229
229
  var worldPosNewElement = new index.Vector3(0, 0, 0);
230
+ var worldPosNewElementIgnoreOLF = new index.Vector3(0, 0, 0);
231
+
232
+ // DP LocalWorldPos is OLF-corner-relative when HasOLFPolygon (from SVG). Convert to OLT-corner-relative for WorldPosCornerIgnoreOLF.
233
+ var refDPLocalOlt = refElement.HasOLFPolygon ? new index.Vector2(refDockingPoint.LocalWorldPos.x - refElement.getOltLeft(), refDockingPoint.LocalWorldPos.z - refElement.getOltTop()) : new index.Vector2(refDockingPoint.LocalWorldPos.x, refDockingPoint.LocalWorldPos.z);
234
+ var newDPLocalOlt = plannerElement.HasOLFPolygon ? new index.Vector2(dockingPoint.LocalWorldPos.x - plannerElement.getOltLeft(), dockingPoint.LocalWorldPos.z - plannerElement.getOltTop()) : new index.Vector2(dockingPoint.LocalWorldPos.x, dockingPoint.LocalWorldPos.z);
230
235
  var rotatedLocalRefDP = new index.Vector2(refDockingPoint.LocalWorldPos.x, refDockingPoint.LocalWorldPos.z);
231
236
  rotatedLocalRefDP = index.Vector2.rotateOrigin(rotatedLocalRefDP, refElement.RotDeg);
232
237
  var angleToRot = refElement.RotDeg + refDockingPoint.RotDeg - dockingPoint.RotDeg;
233
238
  plannerElement.RotDeg = angleToRot;
239
+ var refWorldPosCor = refElement.WorldPosCorner;
240
+ // For ref without OLF: use same corner for both alignments (no OLF/OLT split; WorldPosCornerIgnoreOLF getter also does this).
241
+ var refWorldPosCorIgnoreOLF = refElement.HasOLFPolygon ? refElement.WorldPosCornerIgnoreOLF : refWorldPosCor;
234
242
  var rotatedLocalDP2D = index.Vector2.rotateOrigin(new index.Vector2(dockingPoint.LocalWorldPos.x, dockingPoint.LocalWorldPos.z), angleToRot);
235
- worldPosNewElement.x = refElement.WorldPosCorner.x + rotatedLocalRefDP.x - rotatedLocalDP2D.x;
236
- worldPosNewElement.y = refElement.WorldPosCorner.y + refDockingPoint.LocalWorldPos.y - dockingPoint.LocalWorldPos.y;
237
- worldPosNewElement.z = refElement.WorldPosCorner.z + rotatedLocalRefDP.y - rotatedLocalDP2D.y;
243
+ worldPosNewElement.x = refWorldPosCor.x + rotatedLocalRefDP.x - rotatedLocalDP2D.x;
244
+ worldPosNewElement.y = refWorldPosCor.y + refDockingPoint.LocalWorldPos.y - dockingPoint.LocalWorldPos.y;
245
+ worldPosNewElement.z = refWorldPosCor.z + rotatedLocalRefDP.y - rotatedLocalDP2D.y;
246
+ var rotatedRefDPOlt = index.Vector2.rotateOrigin(refDPLocalOlt, refElement.RotDeg);
247
+ var rotatedNewDPOlt = index.Vector2.rotateOrigin(newDPLocalOlt, angleToRot);
248
+ worldPosNewElementIgnoreOLF.x = refWorldPosCorIgnoreOLF.x + rotatedRefDPOlt.x - rotatedNewDPOlt.x;
249
+ worldPosNewElementIgnoreOLF.z = refWorldPosCorIgnoreOLF.z + rotatedRefDPOlt.y - rotatedNewDPOlt.y;
250
+ worldPosNewElementIgnoreOLF.y = refWorldPosCorIgnoreOLF.y + refDockingPoint.LocalWorldPos.y - dockingPoint.LocalWorldPos.y;
238
251
  plannerElement.WorldPosCorner = worldPosNewElement;
252
+ plannerElement.WorldPosCornerIgnoreOLF = worldPosNewElementIgnoreOLF;
239
253
  updateConfig = this.set.onDockingChanged(plannerElement.ElementId, refElement.ElementId, 'DOCK', dockingPoint.Type);
240
254
  var data = this.set.getPlannerData(plannerElement.ElementId);
241
255
  plannerElement.updatePlannerData(data);
@@ -1804,16 +1818,24 @@ var DivaStandardPlanner = /*#__PURE__*/function () {
1804
1818
  var width = this.plannerBoundingBox.getWidth(catalog.PlannerMeasureDigits);
1805
1819
  var depth = this.plannerBoundingBox.getDepth(catalog.PlannerMeasureDigits);
1806
1820
  var height = this.plannerBoundingBox.getHeight(catalog.PlannerMeasureDigits);
1821
+ var widthIgnoreOLF = this.plannerBoundingBox.getWidth(catalog.PlannerMeasureDigits, true);
1822
+ var depthIgnoreOLF = this.plannerBoundingBox.getDepth(catalog.PlannerMeasureDigits, true);
1823
+ var heightIgnoreOLF = this.plannerBoundingBox.getHeight(catalog.PlannerMeasureDigits, true);
1824
+ var olfDefined = widthIgnoreOLF !== width || depthIgnoreOLF !== depth || heightIgnoreOLF !== height;
1807
1825
  return {
1808
1826
  width: width,
1809
1827
  height: height,
1810
- depth: depth
1828
+ depth: depth,
1829
+ widthIgnoreOLF: olfDefined ? widthIgnoreOLF : undefined,
1830
+ depthIgnoreOLF: olfDefined ? depthIgnoreOLF : undefined,
1831
+ heightIgnoreOLF: olfDefined ? heightIgnoreOLF : undefined
1811
1832
  };
1812
1833
  }
1813
1834
  }, {
1814
1835
  key: "updatePlannerBoundingBox",
1815
1836
  value: function updatePlannerBoundingBox() {
1816
1837
  this.plannerBoundingBox.calcPlannerBoundingBox(this.getAllPlannerElements());
1838
+ this.plannerBoundingBox.calcPlannerBoundingBoxIgnoreOLF(this.getAllPlannerElements());
1817
1839
  }
1818
1840
  }, {
1819
1841
  key: "getCatalogData",
@@ -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-c3717ccf.js');
6
+ require('./index-4cf893d9.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-c3717ccf.js');
8
+ var index = require('./index-4cf893d9.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-c3717ccf.js');
5
+ require('./index-4cf893d9.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-c3717ccf.js');
5
+ var index = require('./index-4cf893d9.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,8 @@ 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-c3717ccf.js');
8
+ var index = require('./index-4cf893d9.js');
9
+ var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
9
10
  var _toConsumableArray = require('@babel/runtime/helpers/toConsumableArray');
10
11
  var fabric = require('fabric');
11
12
  var DivaUtils = require('@crystaldesign/diva-utils');
@@ -18,6 +19,7 @@ var _classCallCheck__default = /*#__PURE__*/_interopDefaultLegacy(_classCallChec
18
19
  var _createClass__default = /*#__PURE__*/_interopDefaultLegacy(_createClass);
19
20
  var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);
20
21
  var _regeneratorRuntime__default = /*#__PURE__*/_interopDefaultLegacy(_regeneratorRuntime);
22
+ var _slicedToArray__default = /*#__PURE__*/_interopDefaultLegacy(_slicedToArray);
21
23
  var _toConsumableArray__default = /*#__PURE__*/_interopDefaultLegacy(_toConsumableArray);
22
24
  var DivaUtils__default = /*#__PURE__*/_interopDefaultLegacy(DivaUtils);
23
25
  var serialize__default = /*#__PURE__*/_interopDefaultLegacy(serialize);
@@ -134,18 +136,122 @@ var SVGUtils = /*#__PURE__*/function () {
134
136
  var yArr = points.map(function (c) {
135
137
  return c.y;
136
138
  });
137
- var l = Math.min.apply(Math, _toConsumableArray__default["default"](xArr));
138
- var r = Math.max.apply(Math, _toConsumableArray__default["default"](xArr));
139
- var b = Math.min.apply(Math, _toConsumableArray__default["default"](yArr));
140
- var t = Math.max.apply(Math, _toConsumableArray__default["default"](yArr));
141
- var width = r - l;
142
- var height = t - b;
139
+ var minX = Math.min.apply(Math, _toConsumableArray__default["default"](xArr));
140
+ var maxX = Math.max.apply(Math, _toConsumableArray__default["default"](xArr));
141
+ var minY = Math.min.apply(Math, _toConsumableArray__default["default"](yArr));
142
+ var maxY = Math.max.apply(Math, _toConsumableArray__default["default"](yArr));
143
+ var width = maxX - minX;
144
+ var height = maxY - minY;
143
145
  return {
144
146
  width: width,
145
- height: height
147
+ height: height,
148
+ minX: minX,
149
+ minY: minY
146
150
  };
147
151
  }
148
152
 
153
+ /**
154
+ * Returns OLF geometry (minX, minY, width, height) from SVG - supports rect and polygon.
155
+ * Iterates through matches to find first rect/polygon (handles Illustrator group wrappers).
156
+ */
157
+ }, {
158
+ key: "getOLFGeometryFromSvg",
159
+ value: function getOLFGeometryFromSvg(content) {
160
+ var parser = new DOMParser();
161
+ var xmlDocument = parser.parseFromString(content, 'application/xml');
162
+ var olfObjs = xmlDocument.evaluate("//*[starts-with(@id,'OLF')]", xmlDocument, null, 7, null);
163
+ for (var i = 0; i < olfObjs.snapshotLength; i++) {
164
+ var obj = olfObjs.snapshotItem(i);
165
+ if ((obj === null || obj === void 0 ? void 0 : obj.nodeName) === 'rect') {
166
+ var _obj$getAttribute, _obj$getAttribute2, _obj$getAttribute3, _obj$getAttribute4;
167
+ var x = parseFloat((_obj$getAttribute = obj.getAttribute('x')) !== null && _obj$getAttribute !== void 0 ? _obj$getAttribute : '0');
168
+ var y = parseFloat((_obj$getAttribute2 = obj.getAttribute('y')) !== null && _obj$getAttribute2 !== void 0 ? _obj$getAttribute2 : '0');
169
+ var width = parseFloat((_obj$getAttribute3 = obj.getAttribute('width')) !== null && _obj$getAttribute3 !== void 0 ? _obj$getAttribute3 : '0');
170
+ var height = parseFloat((_obj$getAttribute4 = obj.getAttribute('height')) !== null && _obj$getAttribute4 !== void 0 ? _obj$getAttribute4 : '0');
171
+ return {
172
+ minX: x,
173
+ minY: y,
174
+ width: width,
175
+ height: height
176
+ };
177
+ }
178
+ if ((obj === null || obj === void 0 ? void 0 : obj.nodeName) === 'polygon') {
179
+ var pts = obj.getAttribute('points');
180
+ if (pts) {
181
+ var points = pts.split(/\s+/).reduce(function (acc, p) {
182
+ var _p$split = p.split(','),
183
+ _p$split2 = _slicedToArray__default["default"](_p$split, 2),
184
+ x = _p$split2[0],
185
+ y = _p$split2[1];
186
+ if (x != null && y != null) acc.push(new index.Vector2(Number(x), Number(y)));
187
+ return acc;
188
+ }, []);
189
+ if (points.length) {
190
+ var bbox = this.getBoundingBoxOfPoints(points);
191
+ return {
192
+ minX: bbox.minX,
193
+ minY: bbox.minY,
194
+ width: bbox.width,
195
+ height: bbox.height
196
+ };
197
+ }
198
+ }
199
+ }
200
+ }
201
+ return undefined;
202
+ }
203
+
204
+ /**
205
+ * Returns OLT geometry (x, y, width, height) from SVG attributes - untransformed coords.
206
+ * Iterates through matches to find first rect/polygon (handles Illustrator group wrappers).
207
+ */
208
+ }, {
209
+ key: "getOLTGeometryFromSvg",
210
+ value: function getOLTGeometryFromSvg(content) {
211
+ var parser = new DOMParser();
212
+ var xmlDocument = parser.parseFromString(content, 'application/xml');
213
+ var oltObjs = xmlDocument.evaluate("//*[starts-with(@id,'OLT')]", xmlDocument, null, 7, null);
214
+ for (var i = 0; i < oltObjs.snapshotLength; i++) {
215
+ var obj = oltObjs.snapshotItem(i);
216
+ if ((obj === null || obj === void 0 ? void 0 : obj.nodeName) === 'rect') {
217
+ var _obj$getAttribute5, _obj$getAttribute6, _obj$getAttribute7, _obj$getAttribute8;
218
+ var x = parseFloat((_obj$getAttribute5 = obj.getAttribute('x')) !== null && _obj$getAttribute5 !== void 0 ? _obj$getAttribute5 : '0');
219
+ var y = parseFloat((_obj$getAttribute6 = obj.getAttribute('y')) !== null && _obj$getAttribute6 !== void 0 ? _obj$getAttribute6 : '0');
220
+ var width = parseFloat((_obj$getAttribute7 = obj.getAttribute('width')) !== null && _obj$getAttribute7 !== void 0 ? _obj$getAttribute7 : '0');
221
+ var height = parseFloat((_obj$getAttribute8 = obj.getAttribute('height')) !== null && _obj$getAttribute8 !== void 0 ? _obj$getAttribute8 : '0');
222
+ return {
223
+ x: x,
224
+ y: y,
225
+ width: width,
226
+ height: height
227
+ };
228
+ }
229
+ if ((obj === null || obj === void 0 ? void 0 : obj.nodeName) === 'polygon') {
230
+ var pts = obj.getAttribute('points');
231
+ if (pts) {
232
+ var points = pts.split(/\s+/).reduce(function (acc, p) {
233
+ var _p$split3 = p.split(','),
234
+ _p$split4 = _slicedToArray__default["default"](_p$split3, 2),
235
+ x = _p$split4[0],
236
+ y = _p$split4[1];
237
+ if (x != null && y != null) acc.push(new index.Vector2(Number(x), Number(y)));
238
+ return acc;
239
+ }, []);
240
+ if (points.length) {
241
+ var bbox = this.getBoundingBoxOfPoints(points);
242
+ return {
243
+ x: bbox.minX,
244
+ y: bbox.minY,
245
+ width: bbox.width,
246
+ height: bbox.height
247
+ };
248
+ }
249
+ }
250
+ }
251
+ }
252
+ return undefined;
253
+ }
254
+
149
255
  /**
150
256
  * This function looks if the svg has a Mask HTML element. If so it removes all masks from SVG
151
257
  * @param content
@@ -2069,15 +2175,24 @@ var PlannerHandler2D = /*#__PURE__*/function () {
2069
2175
  }
2070
2176
  plannerElement.OLTPolygon = oltPoints;
2071
2177
  var olf = this.svgUtils.getPointOfPoligonById(svgXml, 'OLF');
2178
+ var olfGeoEarly = this.svgUtils.getOLFGeometryFromSvg(svgXml);
2072
2179
  if (olf !== null && olf !== void 0 && olf.length) {
2073
- var _this$svgUtils$getBou = this.svgUtils.getBoundingBoxOfPoints(olf),
2074
- widthOlf = _this$svgUtils$getBou.width,
2075
- heightOlf = _this$svgUtils$getBou.height;
2076
- plannerElement.setupOLF(olf, widthOlf, heightOlf);
2077
- } else if (sizes !== null && sizes !== void 0 && sizes.heightOLF, sizes !== null && sizes !== void 0 && sizes.widthOLF) {
2078
- plannerElement.setupOLF(olf, sizes === null || sizes === void 0 ? void 0 : sizes.widthOLF, sizes === null || sizes === void 0 ? void 0 : sizes.heightOLF);
2180
+ var _olfGeoEarly$width, _olfGeoEarly$height;
2181
+ var olfBBox = this.svgUtils.getBoundingBoxOfPoints(olf);
2182
+ // Prefer getOLFGeometryFromSvg for dims - single source of truth, handles split(/\s+/) correctly
2183
+ var olfW = (_olfGeoEarly$width = olfGeoEarly === null || olfGeoEarly === void 0 ? void 0 : olfGeoEarly.width) !== null && _olfGeoEarly$width !== void 0 ? _olfGeoEarly$width : olfBBox.width;
2184
+ var olfD = (_olfGeoEarly$height = olfGeoEarly === null || olfGeoEarly === void 0 ? void 0 : olfGeoEarly.height) !== null && _olfGeoEarly$height !== void 0 ? _olfGeoEarly$height : olfBBox.height;
2185
+ plannerElement.setupOLF(olf, olfW, olfD);
2079
2186
  } else {
2080
- plannerElement.clearOLF();
2187
+ var olfGeo = this.svgUtils.getOLFGeometryFromSvg(svgXml);
2188
+ if (olfGeo) {
2189
+ var olfRectPoints = [new index.Vector2(olfGeo.minX, olfGeo.minY), new index.Vector2(olfGeo.minX + olfGeo.width, olfGeo.minY), new index.Vector2(olfGeo.minX + olfGeo.width, olfGeo.minY + olfGeo.height), new index.Vector2(olfGeo.minX, olfGeo.minY + olfGeo.height)];
2190
+ plannerElement.setupOLF(olfRectPoints, olfGeo.width, olfGeo.height);
2191
+ } else if (sizes !== null && sizes !== void 0 && sizes.heightOLF, sizes !== null && sizes !== void 0 && sizes.widthOLF) {
2192
+ plannerElement.setupOLF(olf, sizes === null || sizes === void 0 ? void 0 : sizes.widthOLF, sizes === null || sizes === void 0 ? void 0 : sizes.heightOLF);
2193
+ } else {
2194
+ plannerElement.clearOLF();
2195
+ }
2081
2196
  }
2082
2197
 
2083
2198
  //if we are running in node js dont do fabric stuff
@@ -2102,8 +2217,6 @@ var PlannerHandler2D = /*#__PURE__*/function () {
2102
2217
  break;
2103
2218
  case 'OLT':
2104
2219
  object.stroke = 'none';
2105
- oltTop = object.top;
2106
- oltLeft = object.left;
2107
2220
  oltWidth = object.width;
2108
2221
  oltDepth = object.height;
2109
2222
  break;
@@ -2111,6 +2224,16 @@ var PlannerHandler2D = /*#__PURE__*/function () {
2111
2224
  }
2112
2225
  olfObjects.push(object);
2113
2226
  }
2227
+ // oltLeft/oltTop/oltWidth/oltDepth from SVG attributes (untransformed) - Fabric values wrong for transformed rects
2228
+ var olfGeo = that.svgUtils.getOLFGeometryFromSvg(svgXml);
2229
+ var oltGeo = that.svgUtils.getOLTGeometryFromSvg(svgXml);
2230
+ if (olfGeo && oltGeo) {
2231
+ oltLeft = oltGeo.x - olfGeo.minX;
2232
+ oltTop = oltGeo.y - olfGeo.minY;
2233
+ oltWidth = oltGeo.width;
2234
+ oltDepth = oltGeo.height;
2235
+ }
2236
+
2114
2237
  //hier wird definitv fabric.js Element erstellt
2115
2238
  var fabricShapeOLF = fabric.fabric.util.groupSVGElements(olfObjects, options);
2116
2239
  fabricShapeOLF.set({
@@ -2137,14 +2260,20 @@ var PlannerHandler2D = /*#__PURE__*/function () {
2137
2260
  plannerElement.SvgData = svgXml;
2138
2261
  fabric.fabric.loadSVGFromString(svgXmlOLT, function (objectsOLT, optionsOLT) {
2139
2262
  plannerElement.cleanShapeOLT2D();
2140
- for (var objNo = 0; objNo < objects.length; objNo++) {
2141
- var object = objects[objNo];
2142
- var objID;
2143
- if (object.id) {
2144
- objID = object.id.toString();
2145
- if (objID.startsWith('OLT')) {
2146
- optionsOLT.height = object.height;
2147
- optionsOLT.width = object.width;
2263
+ if (oltGeo) {
2264
+ optionsOLT.width = oltGeo.width;
2265
+ optionsOLT.height = oltGeo.height;
2266
+ } else {
2267
+ for (var objNo = 0; objNo < objects.length; objNo++) {
2268
+ var object = objects[objNo];
2269
+ var objID;
2270
+ if (object.id) {
2271
+ objID = object.id.toString();
2272
+ if (objID.startsWith('OLT')) {
2273
+ optionsOLT.height = object.height;
2274
+ optionsOLT.width = object.width;
2275
+ break;
2276
+ }
2148
2277
  }
2149
2278
  }
2150
2279
  }
@@ -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-c3717ccf.js');
6
+ var index = require('./index-4cf893d9.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-c3717ccf.js');
9
+ var index = require('./index-4cf893d9.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-c3717ccf.js');
5
+ require('./index-4cf893d9.js');
6
6
  require('@babel/runtime/helpers/slicedToArray');
7
7
  require('@babel/runtime/helpers/asyncToGenerator');
8
8
  require('@babel/runtime/helpers/defineProperty');