@crystaldesign/web-planner-logic 26.3.0-beta.8 → 26.3.0-rc.0

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 (92) hide show
  1. package/build/cjs/{DivaBoxPlanner-79175554.js → DivaBoxPlanner-185e3d91.js} +32 -57
  2. package/build/cjs/{DivaStandardPlanner-dd42a0a9.js → DivaStandardPlanner-e3bb84bd.js} +28 -6
  3. package/build/cjs/{DoorPlanner-90472b69.js → DoorPlanner-eabb345c.js} +1 -1
  4. package/build/cjs/{Host3DSignalR-867a94ef.js → Host3DSignalR-572a3770.js} +1 -1
  5. package/build/cjs/{LiviqueWWSHandler-316e06ff.js → LiviqueWWSHandler-f12ccd19.js} +1 -1
  6. package/build/cjs/{PfisterWWSHandler-93e12209.js → PfisterWWSHandler-06c52e7b.js} +1 -1
  7. package/build/cjs/{PlannerHandler2D-6c5cc33b.js → PlannerHandler2D-640d5871.js} +154 -25
  8. package/build/cjs/{SeriousBasketHandler-bfa89b28.js → SeriousBasketHandler-93c02d45.js} +1 -1
  9. package/build/cjs/{ShelfPlanner-bdfb41c4.js → ShelfPlanner-a7f6daa9.js} +1 -1
  10. package/build/cjs/{StandardWWSHandler-cb2098fc.js → StandardWWSHandler-307bad5a.js} +1 -1
  11. package/build/cjs/{index-d0f2d17b.js → index-f7a97168.js} +4610 -4182
  12. package/build/cjs/index.js +2 -1
  13. package/build/esm/{DivaBoxPlanner-91f62b7e.js → DivaBoxPlanner-f6fb057e.js} +32 -57
  14. package/build/esm/{DivaStandardPlanner-ff91bdbd.js → DivaStandardPlanner-bcc97f9c.js} +28 -6
  15. package/build/esm/{DoorPlanner-2acf1760.js → DoorPlanner-f38ec7e4.js} +1 -1
  16. package/build/esm/{Host3DSignalR-f44b6c1c.js → Host3DSignalR-9da79a1b.js} +1 -1
  17. package/build/esm/{LiviqueWWSHandler-e3d42585.js → LiviqueWWSHandler-40f0b3ac.js} +1 -1
  18. package/build/esm/{PfisterWWSHandler-5458def6.js → PfisterWWSHandler-a647f961.js} +1 -1
  19. package/build/esm/{PlannerHandler2D-2dde982f.js → PlannerHandler2D-a21266d5.js} +153 -25
  20. package/build/esm/{SeriousBasketHandler-b9b7b268.js → SeriousBasketHandler-dc0cc1fa.js} +1 -1
  21. package/build/esm/{ShelfPlanner-2513adfd.js → ShelfPlanner-b11b96a2.js} +1 -1
  22. package/build/esm/{StandardWWSHandler-fe06015c.js → StandardWWSHandler-020fae77.js} +1 -1
  23. package/build/esm/{index-03958637.js → index-2eec9e88.js} +4610 -4182
  24. package/build/esm/index.js +1 -1
  25. package/build/types/web-planner-logic/src/index.d.ts +3 -2
  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/Configuration.d.ts.map +1 -1
  36. package/build/types/web-planner-logic/src/interface/ConfiguratorStructureDataType.d.ts +1 -1
  37. package/build/types/web-planner-logic/src/interface/ConfiguratorStructureDataType.d.ts.map +1 -1
  38. package/build/types/web-planner-logic/src/interface/CoreTypes/index.d.ts +2 -0
  39. package/build/types/web-planner-logic/src/interface/CoreTypes/index.d.ts.map +1 -1
  40. package/build/types/web-planner-logic/src/interface/DivaCatalogDataType.d.ts +1 -0
  41. package/build/types/web-planner-logic/src/interface/DivaCatalogDataType.d.ts.map +1 -1
  42. package/build/types/web-planner-logic/src/interface/OptionTypes/CatalogOptionDataTypes.d.ts +1 -0
  43. package/build/types/web-planner-logic/src/interface/OptionTypes/CatalogOptionDataTypes.d.ts.map +1 -1
  44. package/build/types/web-planner-logic/src/interface/Planner/DockingPointDataType.d.ts +8 -0
  45. package/build/types/web-planner-logic/src/interface/Planner/DockingPointDataType.d.ts.map +1 -1
  46. package/build/types/web-planner-logic/src/interface/ViewTypes/index.d.ts +2 -1
  47. package/build/types/web-planner-logic/src/interface/ViewTypes/index.d.ts.map +1 -1
  48. package/build/types/web-planner-logic/src/logic/Article/DivaArticle.d.ts +1 -1
  49. package/build/types/web-planner-logic/src/logic/Article/DivaArticle.d.ts.map +1 -1
  50. package/build/types/web-planner-logic/src/logic/Article/Engine/IDMArticleEngine.d.ts.map +1 -1
  51. package/build/types/web-planner-logic/src/logic/ConfigTree/DivaConfigTree.d.ts +1 -0
  52. package/build/types/web-planner-logic/src/logic/ConfigTree/DivaConfigTree.d.ts.map +1 -1
  53. package/build/types/web-planner-logic/src/logic/ConfigTree/DivaConfigTreeHandler.d.ts.map +1 -1
  54. package/build/types/web-planner-logic/src/logic/ConfigTree/SummaryHandler.d.ts.map +1 -1
  55. package/build/types/web-planner-logic/src/logic/DivaApiHandler.d.ts +3 -4
  56. package/build/types/web-planner-logic/src/logic/DivaApiHandler.d.ts.map +1 -1
  57. package/build/types/web-planner-logic/src/logic/DivaCatalogHandler.d.ts.map +1 -1
  58. package/build/types/web-planner-logic/src/logic/DivaWebPlanner.d.ts +4 -1
  59. package/build/types/web-planner-logic/src/logic/DivaWebPlanner.d.ts.map +1 -1
  60. package/build/types/web-planner-logic/src/logic/Planner/BoxPlanner/BoxPlannerGrid.d.ts +4 -4
  61. package/build/types/web-planner-logic/src/logic/Planner/BoxPlanner/BoxPlannerGrid.d.ts.map +1 -1
  62. package/build/types/web-planner-logic/src/logic/Planner/BoxPlanner/ConstructionRulesHandler.d.ts +1 -2
  63. package/build/types/web-planner-logic/src/logic/Planner/BoxPlanner/ConstructionRulesHandler.d.ts.map +1 -1
  64. package/build/types/web-planner-logic/src/logic/Planner/BoxPlanner/DivaBoxPlanner.d.ts.map +1 -1
  65. package/build/types/web-planner-logic/src/logic/Planner/DivaPlannerHandler.d.ts +2 -6
  66. package/build/types/web-planner-logic/src/logic/Planner/DivaPlannerHandler.d.ts.map +1 -1
  67. package/build/types/web-planner-logic/src/logic/Planner/DivaStandardPlanner.d.ts +2 -6
  68. package/build/types/web-planner-logic/src/logic/Planner/DivaStandardPlanner.d.ts.map +1 -1
  69. package/build/types/web-planner-logic/src/logic/Planner/PlannerUtils/PlannerHandler2D.d.ts.map +1 -1
  70. package/build/types/web-planner-logic/src/logic/Planner/PlannerUtils/SVGUtils.d.ts +22 -0
  71. package/build/types/web-planner-logic/src/logic/Planner/PlannerUtils/SVGUtils.d.ts.map +1 -1
  72. package/build/types/web-planner-logic/src/logic/Planner/Rendering/PlannerHandler3D.d.ts +0 -6
  73. package/build/types/web-planner-logic/src/logic/Planner/Rendering/PlannerHandler3D.d.ts.map +1 -1
  74. package/build/types/web-planner-logic/src/logic/Set/DivaSet.d.ts +3 -0
  75. package/build/types/web-planner-logic/src/logic/Set/DivaSet.d.ts.map +1 -1
  76. package/build/types/web-planner-logic/src/logic/Set/DivaSetHandler.d.ts +6 -1
  77. package/build/types/web-planner-logic/src/logic/Set/DivaSetHandler.d.ts.map +1 -1
  78. package/build/types/web-planner-logic/src/model/Articles/Article/IDMCatalogArticle.d.ts.map +1 -1
  79. package/build/types/web-planner-logic/src/model/Catalog/CatalogData.d.ts +1 -0
  80. package/build/types/web-planner-logic/src/model/Catalog/CatalogData.d.ts.map +1 -1
  81. package/build/types/web-planner-logic/src/model/Catalog/DivaCatalogData.d.ts +1 -1
  82. package/build/types/web-planner-logic/src/model/Catalog/DivaCatalogData.d.ts.map +1 -1
  83. package/build/types/web-planner-logic/src/model/Options/ArticleOptionData.d.ts +1 -0
  84. package/build/types/web-planner-logic/src/model/Options/ArticleOptionData.d.ts.map +1 -1
  85. package/build/types/web-planner-logic/src/model/Options/CatalogOptionData.d.ts +1 -0
  86. package/build/types/web-planner-logic/src/model/Options/CatalogOptionData.d.ts.map +1 -1
  87. package/build/types/web-planner-logic/src/model/Planner/BoundingBox.d.ts +11 -3
  88. package/build/types/web-planner-logic/src/model/Planner/BoundingBox.d.ts.map +1 -1
  89. package/build/types/web-planner-logic/src/model/Planner/PlannerElementData.d.ts +14 -3
  90. package/build/types/web-planner-logic/src/model/Planner/PlannerElementData.d.ts.map +1 -1
  91. package/build/types/web-planner-logic/src/model/Planner/PlannerInteractionData.d.ts.map +1 -1
  92. 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-d0f2d17b.js');
8
+ var index = require('./index-f7a97168.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-6c5cc33b.js');
12
+ var PlannerHandler2D = require('./PlannerHandler2D-640d5871.js');
13
13
  require('@babel/runtime/helpers/objectWithoutProperties');
14
14
  require('axios');
15
15
  require('@crystaldesign/basket-model');
@@ -2162,7 +2162,7 @@ var ConstructionRulesHandler = /*#__PURE__*/function () {
2162
2162
  //If rule == dir only correct this element if it is the target
2163
2163
 
2164
2164
  if (rule.dir == 'TOP' && boxPlannerGrid.getElementHasBottomElement(allElementIds[i])) {
2165
- var bottomElements = boxPlannerGrid.getBottomElements(allElementIds[i]);
2165
+ var bottomElements = boxPlannerGrid.getBottomElements(allElementIds[i], rule.onlyDirectNeighbor);
2166
2166
  for (var bElemNr = 0; bElemNr < bottomElements.length; bElemNr++) {
2167
2167
  if (targetElements.indexOf(bottomElements[bElemNr].getElementId()) >= 0) {
2168
2168
  doCheckRule = true;
@@ -2170,7 +2170,7 @@ var ConstructionRulesHandler = /*#__PURE__*/function () {
2170
2170
  }
2171
2171
  }
2172
2172
  if (rule.dir == 'DOWN' && boxPlannerGrid.getElementHasTopElement(allElementIds[i])) {
2173
- var topElements = boxPlannerGrid.getTopElements(allElementIds[i]);
2173
+ var topElements = boxPlannerGrid.getTopElements(allElementIds[i], rule.onlyDirectNeighbor);
2174
2174
  for (var tElemNr = 0; tElemNr < topElements.length; tElemNr++) {
2175
2175
  if (targetElements.indexOf(topElements[tElemNr].getElementId()) >= 0) {
2176
2176
  doCheckRule = true;
@@ -2179,7 +2179,7 @@ var ConstructionRulesHandler = /*#__PURE__*/function () {
2179
2179
  }
2180
2180
  if (rule.dir == 'LEFT_RIGHT') {
2181
2181
  if (boxPlannerGrid.getElementHasLeftElement(allElementIds[i])) {
2182
- var allLeftElements = boxPlannerGrid.getLeftElements(allElementIds[i]);
2182
+ var allLeftElements = boxPlannerGrid.getLeftElements(allElementIds[i], rule.onlyDirectNeighbor);
2183
2183
  for (var lElemNr = 0; lElemNr < allLeftElements.length; lElemNr++) {
2184
2184
  if (targetElements.indexOf(allLeftElements[lElemNr].getElementId()) >= 0) {
2185
2185
  doCheckRule = true;
@@ -2187,7 +2187,7 @@ var ConstructionRulesHandler = /*#__PURE__*/function () {
2187
2187
  }
2188
2188
  }
2189
2189
  if (boxPlannerGrid.getElementHasRightElement(allElementIds[i])) {
2190
- var allRightElements = boxPlannerGrid.getRightElements(allElementIds[i]);
2190
+ var allRightElements = boxPlannerGrid.getRightElements(allElementIds[i], rule.onlyDirectNeighbor);
2191
2191
  for (var rElemNr = 0; rElemNr < allRightElements.length; rElemNr++) {
2192
2192
  if (targetElements.indexOf(allRightElements[rElemNr].getElementId()) >= 0) {
2193
2193
  doCheckRule = true;
@@ -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
  }
@@ -3447,7 +3417,8 @@ var ConstructionRulesHandler = /*#__PURE__*/function () {
3447
3417
  }, {
3448
3418
  key: "getForceWholePlanningSameHeight",
3449
3419
  value: function getForceWholePlanningSameHeight() {
3450
- return this.constructionRules.forceWholePlanningSameHeight;
3420
+ var _this$constructionRul2;
3421
+ return !!((_this$constructionRul2 = this.constructionRules) !== null && _this$constructionRul2 !== void 0 && _this$constructionRul2.forceWholePlanningSameHeight);
3451
3422
  }
3452
3423
  }]);
3453
3424
  }();
@@ -3897,7 +3868,7 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
3897
3868
  */
3898
3869
  }, {
3899
3870
  key: "getTopElements",
3900
- value: function getTopElements(elementId) {
3871
+ value: function getTopElements(elementId, onlyDirectNeighbor) {
3901
3872
  var _curGrid$plannedEleme;
3902
3873
  var result = this.getCellsInGridByElementId(elementId);
3903
3874
  var curGrid = result.backside ? this.generalPlanningState.grids[1].matrix : this.generalPlanningState.grids[0].matrix;
@@ -3909,6 +3880,7 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
3909
3880
  var element = topElement.plannedElement;
3910
3881
  if (!element) break;
3911
3882
  neighborPlannerElements.push(this.plannerElements.get(element.elementId));
3883
+ if (onlyDirectNeighbor) break;
3912
3884
  topElement = curGrid[element.area.fromX][element.area.toY];
3913
3885
  }
3914
3886
  return neighborPlannerElements;
@@ -3968,7 +3940,7 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
3968
3940
  */
3969
3941
  }, {
3970
3942
  key: "getBottomElements",
3971
- value: function getBottomElements(elementId) {
3943
+ value: function getBottomElements(elementId, onlyDirectNeighbor) {
3972
3944
  var _curGrid$plannedEleme2;
3973
3945
  var result = this.getCellsInGridByElementId(elementId);
3974
3946
  var curGrid = result.backside ? this.generalPlanningState.grids[1].matrix : this.generalPlanningState.grids[0].matrix;
@@ -3981,6 +3953,7 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
3981
3953
  var element = topElement.plannedElement;
3982
3954
  if (!element) break;
3983
3955
  neighborPlannerElements.push(this.plannerElements.get(element.elementId));
3956
+ if (onlyDirectNeighbor) break;
3984
3957
  topElement = (_curGrid$element$area = curGrid[element.area.fromX]) === null || _curGrid$element$area === void 0 ? void 0 : _curGrid$element$area[element.area.fromY - 1];
3985
3958
  }
3986
3959
  return neighborPlannerElements;
@@ -4011,7 +3984,7 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4011
3984
  */
4012
3985
  }, {
4013
3986
  key: "getRightElements",
4014
- value: function getRightElements(elementId) {
3987
+ value: function getRightElements(elementId, onlyDirectNeighbor) {
4015
3988
  var result = this.getCellsInGridByElementId(elementId);
4016
3989
  var curGrid = result.backside ? this.generalPlanningState.grids[1].matrix : this.generalPlanningState.grids[0].matrix;
4017
3990
  var rightElements = [];
@@ -4025,6 +3998,7 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4025
3998
  if (cell && _elementId2 && rightElementIds.indexOf(_elementId2) == -1) {
4026
3999
  rightElementIds.push(_elementId2);
4027
4000
  rightElements.push(this.plannerElements.get(_elementId2));
4001
+ if (onlyDirectNeighbor) break;
4028
4002
  }
4029
4003
  }
4030
4004
  return rightElements;
@@ -4054,7 +4028,7 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4054
4028
  */
4055
4029
  }, {
4056
4030
  key: "getLeftElements",
4057
- value: function getLeftElements(elementId) {
4031
+ value: function getLeftElements(elementId, onlyDirectNeighbor) {
4058
4032
  var result = this.getCellsInGridByElementId(elementId);
4059
4033
  var curGrid = result.backside ? this.generalPlanningState.grids[1].matrix : this.generalPlanningState.grids[0].matrix;
4060
4034
  var rightElements = [];
@@ -4068,6 +4042,7 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4068
4042
  if (cell && _elementId3 && rightElementIds.indexOf(_elementId3) == -1) {
4069
4043
  rightElementIds.push(_elementId3);
4070
4044
  rightElements.push(this.plannerElements.get(_elementId3));
4045
+ if (onlyDirectNeighbor) break;
4071
4046
  }
4072
4047
  }
4073
4048
  return rightElements;
@@ -4204,6 +4179,7 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4204
4179
  var endHeight = 0;
4205
4180
  for (var y = 0; y < currentRow.length;) {
4206
4181
  var cell = currentRow[y];
4182
+ if (!cell || !cell.plannedElement) continue;
4207
4183
  if (cell.index.y < res.startRowIndex) startHeight = Math.round((startHeight + cell.plannedElement.size.height) * 1000) / 1000;
4208
4184
  if (cell.index.y < res.endRowIndex) endHeight = Math.round((endHeight + cell.plannedElement.size.height) * 1000) / 1000;
4209
4185
  y = cell.plannedElement.area.toY;
@@ -4217,7 +4193,7 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4217
4193
  for (var x = plannedElement.area.toX; x < curGrid.length;) {
4218
4194
  var _neighbourRow$0$plann, _neighbourRow$0$plann2;
4219
4195
  var neighbourRow = curGrid[x];
4220
- for (var _y = 0; _y < neighbourRow.length;) {
4196
+ for (var _y = 0; _y < (neighbourRow === null || neighbourRow === void 0 ? void 0 : neighbourRow.length);) {
4221
4197
  var _cell5$plannedElement, _cell5$plannedElement2;
4222
4198
  var _cell5 = neighbourRow[_y];
4223
4199
  if (neighbours.includes(_cell5)) continue;
@@ -4239,11 +4215,11 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4239
4215
  case 'LEFT':
4240
4216
  for (var _x2 = plannedElement.area.fromX - 1; _x2 >= 0;) {
4241
4217
  var _neighbourRow = curGrid[_x2];
4242
- for (var _y2 = 0; _y2 < _neighbourRow.length;) {
4218
+ for (var _y2 = 0; _y2 < (_neighbourRow === null || _neighbourRow === void 0 ? void 0 : _neighbourRow.length);) {
4243
4219
  var _cell6$plannedElement, _cell6$plannedElement2;
4244
4220
  var _cell6 = _neighbourRow[_y2];
4245
4221
  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);
4222
+ 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
4223
  neighbourSize = Math.round((neighbourSize + _cell6.plannedElement.size.height) * 1000) / 1000;
4248
4224
  _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
4225
  }
@@ -4864,13 +4840,12 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4864
4840
  _cell.plannedElement.area.toY += diff.y;
4865
4841
  }
4866
4842
  }
4867
- } else if (diff.x != 0 && diff.x > free) {
4843
+ } else if (diff.x != 0 && (diff.x > free || diff.x < 0)) {
4868
4844
  // if there is enough free space on the right no need to move
4869
4845
  for (var _x6 = cell.plannedElement.area.fromX; _x6 < grid.length; _x6++) {
4870
4846
  for (var _y5 = cell.plannedElement.area.fromY; _y5 < cell.plannedElement.area.toY; _y5++) {
4871
4847
  var _cell9 = grid[_x6][_y5];
4872
4848
  if (!_cell9 || _cell9.plannedElement.elementId == elementId) continue; //already corrected
4873
-
4874
4849
  _cell9.index.x += diff.x;
4875
4850
  _cell9.plannedElement.area.fromX += diff.x;
4876
4851
  _cell9.plannedElement.area.toX += diff.x;
@@ -4887,7 +4862,7 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4887
4862
  var cell = plannedCells[idx];
4888
4863
  var area = cell.plannedElement.area;
4889
4864
  if (newGrid.find(function (x) {
4890
- return x.find(function (y) {
4865
+ return x && x.find(function (y) {
4891
4866
  var _y$plannedElement3, _cell$plannedElement9;
4892
4867
  return (y === null || y === void 0 || (_y$plannedElement3 = y.plannedElement) === null || _y$plannedElement3 === void 0 ? void 0 : _y$plannedElement3.elementId) == ((_cell$plannedElement9 = cell.plannedElement) === null || _cell$plannedElement9 === void 0 ? void 0 : _cell$plannedElement9.elementId);
4893
4868
  });
@@ -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-d0f2d17b.js');
8
+ var index = require('./index-f7a97168.js');
9
9
  var DivaUtils = require('@crystaldesign/diva-utils');
10
- var PlannerHandler2D = require('./PlannerHandler2D-6c5cc33b.js');
10
+ var PlannerHandler2D = require('./PlannerHandler2D-640d5871.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-d0f2d17b.js');
6
+ require('./index-f7a97168.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-d0f2d17b.js');
8
+ var index = require('./index-f7a97168.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-d0f2d17b.js');
5
+ require('./index-f7a97168.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-d0f2d17b.js');
5
+ var index = require('./index-f7a97168.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-d0f2d17b.js');
8
+ var index = require('./index-f7a97168.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-d0f2d17b.js');
6
+ var index = require('./index-f7a97168.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-d0f2d17b.js');
9
+ var index = require('./index-f7a97168.js');
10
10
  var DivaUtils = require('@crystaldesign/diva-utils');
11
11
  require('@babel/runtime/helpers/slicedToArray');
12
12
  require('@babel/runtime/helpers/objectWithoutProperties');