@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
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var index = require('./index-c3717ccf.js');
5
+ var index = require('./index-4cf893d9.js');
6
6
  require('@babel/runtime/helpers/slicedToArray');
7
7
  require('@babel/runtime/helpers/asyncToGenerator');
8
8
  require('@babel/runtime/helpers/classCallCheck');
@@ -25,6 +25,7 @@ exports.Cell = index.Cell;
25
25
  exports.DivaArticle = index.DivaArticle;
26
26
  exports.DivaBasketHandler = index.DivaBasketHandler;
27
27
  exports.DivaCatalogData = index.DivaCatalogData;
28
+ exports.DivaSetHandler = index.setHandlerInstance;
28
29
  exports.DockingPoint = index.DockingPoint;
29
30
  exports.Grid = index.Grid;
30
31
  exports.OptionCatalogData = index.OptionCatalogData;
@@ -3,11 +3,11 @@ import _classCallCheck from '@babel/runtime/helpers/classCallCheck';
3
3
  import _createClass from '@babel/runtime/helpers/createClass';
4
4
  import _defineProperty from '@babel/runtime/helpers/defineProperty';
5
5
  import _regeneratorRuntime from '@babel/runtime/regenerator';
6
- import { c as Vector2, V as Vector3, P as PlannerElementData, B as BoundingBox } from './index-9b142052.js';
6
+ import { c as Vector2, V as Vector3, P as PlannerElementData, B as BoundingBox } from './index-7c6a8b68.js';
7
7
  import DivaUtils, { DivaError, md5 } from '@crystaldesign/diva-utils';
8
8
  import _toConsumableArray from '@babel/runtime/helpers/toConsumableArray';
9
9
  import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
10
- import { d as dockingPointHandlerInst, h as handler2D } from './PlannerHandler2D-98c545f6.js';
10
+ import { d as dockingPointHandlerInst, h as handler2D } from './PlannerHandler2D-326119ab.js';
11
11
  import '@babel/runtime/helpers/objectWithoutProperties';
12
12
  import 'axios';
13
13
  import '@crystaldesign/basket-model';
@@ -3132,7 +3132,7 @@ var ConstructionRulesHandler = /*#__PURE__*/function () {
3132
3132
  retailArticleRules: constructionRule.retailArticleRules
3133
3133
  };
3134
3134
  }
3135
- } else if (constructionRule.range == "singular") {
3135
+ } else if (constructionRule.range == 'singular') {
3136
3136
  var _allValid = false;
3137
3137
  //Do check if all Elements satify the rules
3138
3138
  for (var j = 0; j < allElements.length; j++) {
@@ -3169,35 +3169,6 @@ var ConstructionRulesHandler = /*#__PURE__*/function () {
3169
3169
  return this.constructionRulesLoaded;
3170
3170
  }
3171
3171
 
3172
- /* This is a hardcoded System4/Quadro functionality
3173
- * we need a aussenblech on the side of every door side
3174
- * but not if the neighbor door has the same shared side -> then we do not
3175
- * need any
3176
- */
3177
- }, {
3178
- key: "correctAussenblech",
3179
- value: function correctAussenblech(boxPlannerGrid, optionHandler, curElementId) {
3180
- if (boxPlannerGrid.getForceSingleCellPerElement()) {
3181
- var right = boxPlannerGrid.getNeighborElements(curElementId, "RIGHT");
3182
- var left = boxPlannerGrid.getNeighborElements(curElementId, "LEFT");
3183
- var curopt = this.getOptionVal(curElementId, "OPTTUER", optionHandler);
3184
- if (right.length > 0 && curopt) {
3185
- var rightopt = this.getOptionVal(right[0].ElementId, "OPTTUER", optionHandler);
3186
- if (rightopt && rightopt == 'OPVLINKS' && curopt == 'OPVRECHTS') {
3187
- optionHandler.get(curElementId).set('OPTAUSSENBLECH_RECHTS', 'OPVOHNE');
3188
- optionHandler.get(curElementId).set('OPTAUSSENBLECH_LINKS', 'OPVOHNE');
3189
- }
3190
- }
3191
- if (left.length > 0 && curopt) {
3192
- var leftopt = this.getOptionVal(left[0].ElementId, "OPTTUER", optionHandler);
3193
- if (leftopt && leftopt == 'OPVRECHTS' && curopt == 'OPVLINKS') {
3194
- optionHandler.get(curElementId).set('OPTAUSSENBLECH_LINKS', 'OPVOHNE');
3195
- optionHandler.get(curElementId).set('OPTAUSSENBLECH_RECHTS', 'OPVOHNE');
3196
- }
3197
- }
3198
- }
3199
- }
3200
-
3201
3172
  //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
3202
3173
  //Deshalb darf es nicht angeschalten werden, wenn es in der gleichen Runde ausgeschalten wurde
3203
3174
  /*
@@ -3346,13 +3317,13 @@ var ConstructionRulesHandler = /*#__PURE__*/function () {
3346
3317
  i = 0;
3347
3318
  case 55:
3348
3319
  if (!(i < boxPlannerGrid.getColumnCount())) {
3349
- _context.next = 69;
3320
+ _context.next = 68;
3350
3321
  break;
3351
3322
  }
3352
3323
  j = 0;
3353
3324
  case 57:
3354
3325
  if (!(j < boxPlannerGrid.getRowCount(i, false))) {
3355
- _context.next = 66;
3326
+ _context.next = 65;
3356
3327
  break;
3357
3328
  }
3358
3329
  _elementId2 = (_boxPlannerGrid$getPl4 = boxPlannerGrid.getPlannerElementAtGridPos(i, j, false)) === null || _boxPlannerGrid$getPl4 === void 0 ? void 0 : _boxPlannerGrid$getPl4.getElementId();
@@ -3360,27 +3331,26 @@ var ConstructionRulesHandler = /*#__PURE__*/function () {
3360
3331
  _context.next = 61;
3361
3332
  break;
3362
3333
  }
3363
- return _context.abrupt("continue", 63);
3334
+ return _context.abrupt("continue", 62);
3364
3335
  case 61:
3365
3336
  this.correctBack(boxPlannerGrid, optionHandler, _elementId2);
3366
- this.correctAussenblech(boxPlannerGrid, optionHandler, _elementId2);
3367
- case 63:
3337
+ case 62:
3368
3338
  j++;
3369
3339
  _context.next = 57;
3370
3340
  break;
3371
- case 66:
3341
+ case 65:
3372
3342
  i++;
3373
3343
  _context.next = 55;
3374
3344
  break;
3375
- case 69:
3345
+ case 68:
3376
3346
  doChangeRetailArticleNumbers = this.doChangeRetailArticleNumbers(boxPlannerGrid, optionHandler);
3377
- _context.next = 72;
3347
+ _context.next = 71;
3378
3348
  return this.updateCfgValuesByPlanner(optionHandler, undefined, this.constructionRules.partlistRules.bundleRules, doChangeRetailArticleNumbers);
3379
- case 72:
3349
+ case 71:
3380
3350
  LOG$2.debug('BoxPlanner updateOptionLogic - Duration after setting Option Values of all Articles: ' + (new Date().getTime() - startTime));
3381
3351
  LOG$2.debug('BoxPlanner updateOptionLogic - Duration after setting updating configurator: ' + (new Date().getTime() - startTime));
3382
3352
  return _context.abrupt("return", resultMessage);
3383
- case 75:
3353
+ case 74:
3384
3354
  case "end":
3385
3355
  return _context.stop();
3386
3356
  }
@@ -4191,6 +4161,7 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4191
4161
  var endHeight = 0;
4192
4162
  for (var y = 0; y < currentRow.length;) {
4193
4163
  var cell = currentRow[y];
4164
+ if (!cell.plannedElement) continue;
4194
4165
  if (cell.index.y < res.startRowIndex) startHeight = Math.round((startHeight + cell.plannedElement.size.height) * 1000) / 1000;
4195
4166
  if (cell.index.y < res.endRowIndex) endHeight = Math.round((endHeight + cell.plannedElement.size.height) * 1000) / 1000;
4196
4167
  y = cell.plannedElement.area.toY;
@@ -4230,7 +4201,7 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4230
4201
  var _cell6$plannedElement, _cell6$plannedElement2;
4231
4202
  var _cell6 = _neighbourRow[_y2];
4232
4203
  if (neighbours.includes(_cell6)) continue;
4233
- 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);
4204
+ 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);
4234
4205
  neighbourSize = Math.round((neighbourSize + _cell6.plannedElement.size.height) * 1000) / 1000;
4235
4206
  _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;
4236
4207
  }
@@ -4857,7 +4828,6 @@ var BoxPlannerGrid = /*#__PURE__*/function () {
4857
4828
  for (var _y5 = cell.plannedElement.area.fromY; _y5 < cell.plannedElement.area.toY; _y5++) {
4858
4829
  var _cell9 = grid[_x6][_y5];
4859
4830
  if (!_cell9 || _cell9.plannedElement.elementId == elementId) continue; //already corrected
4860
-
4861
4831
  _cell9.index.x += diff.x;
4862
4832
  _cell9.plannedElement.area.fromX += diff.x;
4863
4833
  _cell9.plannedElement.area.toX += diff.x;
@@ -3,9 +3,9 @@ import _classCallCheck from '@babel/runtime/helpers/classCallCheck';
3
3
  import _createClass from '@babel/runtime/helpers/createClass';
4
4
  import _defineProperty from '@babel/runtime/helpers/defineProperty';
5
5
  import _regeneratorRuntime from '@babel/runtime/regenerator';
6
- import { V as Vector3, c as Vector2, P as PlannerElementData, B as BoundingBox } from './index-9b142052.js';
6
+ import { V as Vector3, c as Vector2, P as PlannerElementData, B as BoundingBox } from './index-7c6a8b68.js';
7
7
  import DivaUtils, { DivaError, md5 } from '@crystaldesign/diva-utils';
8
- import { d as dockingPointHandlerInst, h as handler2D } from './PlannerHandler2D-98c545f6.js';
8
+ import { d as dockingPointHandlerInst, h as handler2D } from './PlannerHandler2D-326119ab.js';
9
9
  import '@babel/runtime/helpers/slicedToArray';
10
10
  import '@babel/runtime/helpers/objectWithoutProperties';
11
11
  import '@babel/runtime/helpers/toConsumableArray';
@@ -216,15 +216,29 @@ var DivaStandardPlanner = /*#__PURE__*/function () {
216
216
  var refDockingPoint = refElement.getDockingPointById(dockingPoint.OnDP.DpId);
217
217
  if (refDockingPoint == undefined) return updateConfig;
218
218
  var worldPosNewElement = new Vector3(0, 0, 0);
219
+ var worldPosNewElementIgnoreOLF = new Vector3(0, 0, 0);
220
+
221
+ // DP LocalWorldPos is OLF-corner-relative when HasOLFPolygon (from SVG). Convert to OLT-corner-relative for WorldPosCornerIgnoreOLF.
222
+ var refDPLocalOlt = refElement.HasOLFPolygon ? new Vector2(refDockingPoint.LocalWorldPos.x - refElement.getOltLeft(), refDockingPoint.LocalWorldPos.z - refElement.getOltTop()) : new Vector2(refDockingPoint.LocalWorldPos.x, refDockingPoint.LocalWorldPos.z);
223
+ var newDPLocalOlt = plannerElement.HasOLFPolygon ? new Vector2(dockingPoint.LocalWorldPos.x - plannerElement.getOltLeft(), dockingPoint.LocalWorldPos.z - plannerElement.getOltTop()) : new Vector2(dockingPoint.LocalWorldPos.x, dockingPoint.LocalWorldPos.z);
219
224
  var rotatedLocalRefDP = new Vector2(refDockingPoint.LocalWorldPos.x, refDockingPoint.LocalWorldPos.z);
220
225
  rotatedLocalRefDP = Vector2.rotateOrigin(rotatedLocalRefDP, refElement.RotDeg);
221
226
  var angleToRot = refElement.RotDeg + refDockingPoint.RotDeg - dockingPoint.RotDeg;
222
227
  plannerElement.RotDeg = angleToRot;
228
+ var refWorldPosCor = refElement.WorldPosCorner;
229
+ // For ref without OLF: use same corner for both alignments (no OLF/OLT split; WorldPosCornerIgnoreOLF getter also does this).
230
+ var refWorldPosCorIgnoreOLF = refElement.HasOLFPolygon ? refElement.WorldPosCornerIgnoreOLF : refWorldPosCor;
223
231
  var rotatedLocalDP2D = Vector2.rotateOrigin(new Vector2(dockingPoint.LocalWorldPos.x, dockingPoint.LocalWorldPos.z), angleToRot);
224
- worldPosNewElement.x = refElement.WorldPosCorner.x + rotatedLocalRefDP.x - rotatedLocalDP2D.x;
225
- worldPosNewElement.y = refElement.WorldPosCorner.y + refDockingPoint.LocalWorldPos.y - dockingPoint.LocalWorldPos.y;
226
- worldPosNewElement.z = refElement.WorldPosCorner.z + rotatedLocalRefDP.y - rotatedLocalDP2D.y;
232
+ worldPosNewElement.x = refWorldPosCor.x + rotatedLocalRefDP.x - rotatedLocalDP2D.x;
233
+ worldPosNewElement.y = refWorldPosCor.y + refDockingPoint.LocalWorldPos.y - dockingPoint.LocalWorldPos.y;
234
+ worldPosNewElement.z = refWorldPosCor.z + rotatedLocalRefDP.y - rotatedLocalDP2D.y;
235
+ var rotatedRefDPOlt = Vector2.rotateOrigin(refDPLocalOlt, refElement.RotDeg);
236
+ var rotatedNewDPOlt = Vector2.rotateOrigin(newDPLocalOlt, angleToRot);
237
+ worldPosNewElementIgnoreOLF.x = refWorldPosCorIgnoreOLF.x + rotatedRefDPOlt.x - rotatedNewDPOlt.x;
238
+ worldPosNewElementIgnoreOLF.z = refWorldPosCorIgnoreOLF.z + rotatedRefDPOlt.y - rotatedNewDPOlt.y;
239
+ worldPosNewElementIgnoreOLF.y = refWorldPosCorIgnoreOLF.y + refDockingPoint.LocalWorldPos.y - dockingPoint.LocalWorldPos.y;
227
240
  plannerElement.WorldPosCorner = worldPosNewElement;
241
+ plannerElement.WorldPosCornerIgnoreOLF = worldPosNewElementIgnoreOLF;
228
242
  updateConfig = this.set.onDockingChanged(plannerElement.ElementId, refElement.ElementId, 'DOCK', dockingPoint.Type);
229
243
  var data = this.set.getPlannerData(plannerElement.ElementId);
230
244
  plannerElement.updatePlannerData(data);
@@ -1793,16 +1807,24 @@ var DivaStandardPlanner = /*#__PURE__*/function () {
1793
1807
  var width = this.plannerBoundingBox.getWidth(catalog.PlannerMeasureDigits);
1794
1808
  var depth = this.plannerBoundingBox.getDepth(catalog.PlannerMeasureDigits);
1795
1809
  var height = this.plannerBoundingBox.getHeight(catalog.PlannerMeasureDigits);
1810
+ var widthIgnoreOLF = this.plannerBoundingBox.getWidth(catalog.PlannerMeasureDigits, true);
1811
+ var depthIgnoreOLF = this.plannerBoundingBox.getDepth(catalog.PlannerMeasureDigits, true);
1812
+ var heightIgnoreOLF = this.plannerBoundingBox.getHeight(catalog.PlannerMeasureDigits, true);
1813
+ var olfDefined = widthIgnoreOLF !== width || depthIgnoreOLF !== depth || heightIgnoreOLF !== height;
1796
1814
  return {
1797
1815
  width: width,
1798
1816
  height: height,
1799
- depth: depth
1817
+ depth: depth,
1818
+ widthIgnoreOLF: olfDefined ? widthIgnoreOLF : undefined,
1819
+ depthIgnoreOLF: olfDefined ? depthIgnoreOLF : undefined,
1820
+ heightIgnoreOLF: olfDefined ? heightIgnoreOLF : undefined
1800
1821
  };
1801
1822
  }
1802
1823
  }, {
1803
1824
  key: "updatePlannerBoundingBox",
1804
1825
  value: function updatePlannerBoundingBox() {
1805
1826
  this.plannerBoundingBox.calcPlannerBoundingBox(this.getAllPlannerElements());
1827
+ this.plannerBoundingBox.calcPlannerBoundingBoxIgnoreOLF(this.getAllPlannerElements());
1806
1828
  }
1807
1829
  }, {
1808
1830
  key: "getCatalogData",
@@ -1,7 +1,7 @@
1
1
  import _classCallCheck from '@babel/runtime/helpers/classCallCheck';
2
2
  import _createClass from '@babel/runtime/helpers/createClass';
3
3
  import _defineProperty from '@babel/runtime/helpers/defineProperty';
4
- import './index-9b142052.js';
4
+ import './index-7c6a8b68.js';
5
5
  import DivaUtils from '@crystaldesign/diva-utils';
6
6
  import '@babel/runtime/helpers/slicedToArray';
7
7
  import '@babel/runtime/helpers/asyncToGenerator';
@@ -3,7 +3,7 @@ import _classCallCheck from '@babel/runtime/helpers/classCallCheck';
3
3
  import _createClass from '@babel/runtime/helpers/createClass';
4
4
  import _defineProperty from '@babel/runtime/helpers/defineProperty';
5
5
  import _regeneratorRuntime from '@babel/runtime/regenerator';
6
- import { R as Rendering, H as HQRenderScript } from './index-9b142052.js';
6
+ import { R as Rendering, H as HQRenderScript } from './index-7c6a8b68.js';
7
7
  import DivaUtils, { DivaError } from '@crystaldesign/diva-utils';
8
8
  import { HubConnectionBuilder, LogLevel } from '@microsoft/signalr';
9
9
  import io from 'socket.io-client';
@@ -1,6 +1,6 @@
1
1
  import _classCallCheck from '@babel/runtime/helpers/classCallCheck';
2
2
  import _createClass from '@babel/runtime/helpers/createClass';
3
- import './index-9b142052.js';
3
+ import './index-7c6a8b68.js';
4
4
  import '@babel/runtime/helpers/slicedToArray';
5
5
  import '@babel/runtime/helpers/asyncToGenerator';
6
6
  import '@babel/runtime/helpers/defineProperty';
@@ -1,6 +1,6 @@
1
1
  import _classCallCheck from '@babel/runtime/helpers/classCallCheck';
2
2
  import _createClass from '@babel/runtime/helpers/createClass';
3
- import { a as articleHandlerInstance } from './index-9b142052.js';
3
+ import { a as articleHandlerInstance } from './index-7c6a8b68.js';
4
4
  import { SAPOrderLineData } from '@crystaldesign/basket-model';
5
5
  import DivaUtils, { DivaError } from '@crystaldesign/diva-utils';
6
6
  import '@babel/runtime/helpers/slicedToArray';
@@ -3,7 +3,8 @@ import _classCallCheck from '@babel/runtime/helpers/classCallCheck';
3
3
  import _createClass from '@babel/runtime/helpers/createClass';
4
4
  import _defineProperty from '@babel/runtime/helpers/defineProperty';
5
5
  import _regeneratorRuntime from '@babel/runtime/regenerator';
6
- import { c as Vector2, D as DockingPoint, V as Vector3 } from './index-9b142052.js';
6
+ import { c as Vector2, D as DockingPoint, V as Vector3 } from './index-7c6a8b68.js';
7
+ import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
7
8
  import _toConsumableArray from '@babel/runtime/helpers/toConsumableArray';
8
9
  import { fabric } from 'fabric';
9
10
  import DivaUtils, { DivaError } from '@crystaldesign/diva-utils';
@@ -121,18 +122,122 @@ var SVGUtils = /*#__PURE__*/function () {
121
122
  var yArr = points.map(function (c) {
122
123
  return c.y;
123
124
  });
124
- var l = Math.min.apply(Math, _toConsumableArray(xArr));
125
- var r = Math.max.apply(Math, _toConsumableArray(xArr));
126
- var b = Math.min.apply(Math, _toConsumableArray(yArr));
127
- var t = Math.max.apply(Math, _toConsumableArray(yArr));
128
- var width = r - l;
129
- var height = t - b;
125
+ var minX = Math.min.apply(Math, _toConsumableArray(xArr));
126
+ var maxX = Math.max.apply(Math, _toConsumableArray(xArr));
127
+ var minY = Math.min.apply(Math, _toConsumableArray(yArr));
128
+ var maxY = Math.max.apply(Math, _toConsumableArray(yArr));
129
+ var width = maxX - minX;
130
+ var height = maxY - minY;
130
131
  return {
131
132
  width: width,
132
- height: height
133
+ height: height,
134
+ minX: minX,
135
+ minY: minY
133
136
  };
134
137
  }
135
138
 
139
+ /**
140
+ * Returns OLF geometry (minX, minY, width, height) from SVG - supports rect and polygon.
141
+ * Iterates through matches to find first rect/polygon (handles Illustrator group wrappers).
142
+ */
143
+ }, {
144
+ key: "getOLFGeometryFromSvg",
145
+ value: function getOLFGeometryFromSvg(content) {
146
+ var parser = new DOMParser();
147
+ var xmlDocument = parser.parseFromString(content, 'application/xml');
148
+ var olfObjs = xmlDocument.evaluate("//*[starts-with(@id,'OLF')]", xmlDocument, null, 7, null);
149
+ for (var i = 0; i < olfObjs.snapshotLength; i++) {
150
+ var obj = olfObjs.snapshotItem(i);
151
+ if ((obj === null || obj === void 0 ? void 0 : obj.nodeName) === 'rect') {
152
+ var _obj$getAttribute, _obj$getAttribute2, _obj$getAttribute3, _obj$getAttribute4;
153
+ var x = parseFloat((_obj$getAttribute = obj.getAttribute('x')) !== null && _obj$getAttribute !== void 0 ? _obj$getAttribute : '0');
154
+ var y = parseFloat((_obj$getAttribute2 = obj.getAttribute('y')) !== null && _obj$getAttribute2 !== void 0 ? _obj$getAttribute2 : '0');
155
+ var width = parseFloat((_obj$getAttribute3 = obj.getAttribute('width')) !== null && _obj$getAttribute3 !== void 0 ? _obj$getAttribute3 : '0');
156
+ var height = parseFloat((_obj$getAttribute4 = obj.getAttribute('height')) !== null && _obj$getAttribute4 !== void 0 ? _obj$getAttribute4 : '0');
157
+ return {
158
+ minX: x,
159
+ minY: y,
160
+ width: width,
161
+ height: height
162
+ };
163
+ }
164
+ if ((obj === null || obj === void 0 ? void 0 : obj.nodeName) === 'polygon') {
165
+ var pts = obj.getAttribute('points');
166
+ if (pts) {
167
+ var points = pts.split(/\s+/).reduce(function (acc, p) {
168
+ var _p$split = p.split(','),
169
+ _p$split2 = _slicedToArray(_p$split, 2),
170
+ x = _p$split2[0],
171
+ y = _p$split2[1];
172
+ if (x != null && y != null) acc.push(new Vector2(Number(x), Number(y)));
173
+ return acc;
174
+ }, []);
175
+ if (points.length) {
176
+ var bbox = this.getBoundingBoxOfPoints(points);
177
+ return {
178
+ minX: bbox.minX,
179
+ minY: bbox.minY,
180
+ width: bbox.width,
181
+ height: bbox.height
182
+ };
183
+ }
184
+ }
185
+ }
186
+ }
187
+ return undefined;
188
+ }
189
+
190
+ /**
191
+ * Returns OLT geometry (x, y, width, height) from SVG attributes - untransformed coords.
192
+ * Iterates through matches to find first rect/polygon (handles Illustrator group wrappers).
193
+ */
194
+ }, {
195
+ key: "getOLTGeometryFromSvg",
196
+ value: function getOLTGeometryFromSvg(content) {
197
+ var parser = new DOMParser();
198
+ var xmlDocument = parser.parseFromString(content, 'application/xml');
199
+ var oltObjs = xmlDocument.evaluate("//*[starts-with(@id,'OLT')]", xmlDocument, null, 7, null);
200
+ for (var i = 0; i < oltObjs.snapshotLength; i++) {
201
+ var obj = oltObjs.snapshotItem(i);
202
+ if ((obj === null || obj === void 0 ? void 0 : obj.nodeName) === 'rect') {
203
+ var _obj$getAttribute5, _obj$getAttribute6, _obj$getAttribute7, _obj$getAttribute8;
204
+ var x = parseFloat((_obj$getAttribute5 = obj.getAttribute('x')) !== null && _obj$getAttribute5 !== void 0 ? _obj$getAttribute5 : '0');
205
+ var y = parseFloat((_obj$getAttribute6 = obj.getAttribute('y')) !== null && _obj$getAttribute6 !== void 0 ? _obj$getAttribute6 : '0');
206
+ var width = parseFloat((_obj$getAttribute7 = obj.getAttribute('width')) !== null && _obj$getAttribute7 !== void 0 ? _obj$getAttribute7 : '0');
207
+ var height = parseFloat((_obj$getAttribute8 = obj.getAttribute('height')) !== null && _obj$getAttribute8 !== void 0 ? _obj$getAttribute8 : '0');
208
+ return {
209
+ x: x,
210
+ y: y,
211
+ width: width,
212
+ height: height
213
+ };
214
+ }
215
+ if ((obj === null || obj === void 0 ? void 0 : obj.nodeName) === 'polygon') {
216
+ var pts = obj.getAttribute('points');
217
+ if (pts) {
218
+ var points = pts.split(/\s+/).reduce(function (acc, p) {
219
+ var _p$split3 = p.split(','),
220
+ _p$split4 = _slicedToArray(_p$split3, 2),
221
+ x = _p$split4[0],
222
+ y = _p$split4[1];
223
+ if (x != null && y != null) acc.push(new Vector2(Number(x), Number(y)));
224
+ return acc;
225
+ }, []);
226
+ if (points.length) {
227
+ var bbox = this.getBoundingBoxOfPoints(points);
228
+ return {
229
+ x: bbox.minX,
230
+ y: bbox.minY,
231
+ width: bbox.width,
232
+ height: bbox.height
233
+ };
234
+ }
235
+ }
236
+ }
237
+ }
238
+ return undefined;
239
+ }
240
+
136
241
  /**
137
242
  * This function looks if the svg has a Mask HTML element. If so it removes all masks from SVG
138
243
  * @param content
@@ -2056,15 +2161,24 @@ var PlannerHandler2D = /*#__PURE__*/function () {
2056
2161
  }
2057
2162
  plannerElement.OLTPolygon = oltPoints;
2058
2163
  var olf = this.svgUtils.getPointOfPoligonById(svgXml, 'OLF');
2164
+ var olfGeoEarly = this.svgUtils.getOLFGeometryFromSvg(svgXml);
2059
2165
  if (olf !== null && olf !== void 0 && olf.length) {
2060
- var _this$svgUtils$getBou = this.svgUtils.getBoundingBoxOfPoints(olf),
2061
- widthOlf = _this$svgUtils$getBou.width,
2062
- heightOlf = _this$svgUtils$getBou.height;
2063
- plannerElement.setupOLF(olf, widthOlf, heightOlf);
2064
- } else if (sizes !== null && sizes !== void 0 && sizes.heightOLF, sizes !== null && sizes !== void 0 && sizes.widthOLF) {
2065
- plannerElement.setupOLF(olf, sizes === null || sizes === void 0 ? void 0 : sizes.widthOLF, sizes === null || sizes === void 0 ? void 0 : sizes.heightOLF);
2166
+ var _olfGeoEarly$width, _olfGeoEarly$height;
2167
+ var olfBBox = this.svgUtils.getBoundingBoxOfPoints(olf);
2168
+ // Prefer getOLFGeometryFromSvg for dims - single source of truth, handles split(/\s+/) correctly
2169
+ var olfW = (_olfGeoEarly$width = olfGeoEarly === null || olfGeoEarly === void 0 ? void 0 : olfGeoEarly.width) !== null && _olfGeoEarly$width !== void 0 ? _olfGeoEarly$width : olfBBox.width;
2170
+ var olfD = (_olfGeoEarly$height = olfGeoEarly === null || olfGeoEarly === void 0 ? void 0 : olfGeoEarly.height) !== null && _olfGeoEarly$height !== void 0 ? _olfGeoEarly$height : olfBBox.height;
2171
+ plannerElement.setupOLF(olf, olfW, olfD);
2066
2172
  } else {
2067
- plannerElement.clearOLF();
2173
+ var olfGeo = this.svgUtils.getOLFGeometryFromSvg(svgXml);
2174
+ if (olfGeo) {
2175
+ var olfRectPoints = [new Vector2(olfGeo.minX, olfGeo.minY), new Vector2(olfGeo.minX + olfGeo.width, olfGeo.minY), new Vector2(olfGeo.minX + olfGeo.width, olfGeo.minY + olfGeo.height), new Vector2(olfGeo.minX, olfGeo.minY + olfGeo.height)];
2176
+ plannerElement.setupOLF(olfRectPoints, olfGeo.width, olfGeo.height);
2177
+ } else if (sizes !== null && sizes !== void 0 && sizes.heightOLF, sizes !== null && sizes !== void 0 && sizes.widthOLF) {
2178
+ plannerElement.setupOLF(olf, sizes === null || sizes === void 0 ? void 0 : sizes.widthOLF, sizes === null || sizes === void 0 ? void 0 : sizes.heightOLF);
2179
+ } else {
2180
+ plannerElement.clearOLF();
2181
+ }
2068
2182
  }
2069
2183
 
2070
2184
  //if we are running in node js dont do fabric stuff
@@ -2089,8 +2203,6 @@ var PlannerHandler2D = /*#__PURE__*/function () {
2089
2203
  break;
2090
2204
  case 'OLT':
2091
2205
  object.stroke = 'none';
2092
- oltTop = object.top;
2093
- oltLeft = object.left;
2094
2206
  oltWidth = object.width;
2095
2207
  oltDepth = object.height;
2096
2208
  break;
@@ -2098,6 +2210,16 @@ var PlannerHandler2D = /*#__PURE__*/function () {
2098
2210
  }
2099
2211
  olfObjects.push(object);
2100
2212
  }
2213
+ // oltLeft/oltTop/oltWidth/oltDepth from SVG attributes (untransformed) - Fabric values wrong for transformed rects
2214
+ var olfGeo = that.svgUtils.getOLFGeometryFromSvg(svgXml);
2215
+ var oltGeo = that.svgUtils.getOLTGeometryFromSvg(svgXml);
2216
+ if (olfGeo && oltGeo) {
2217
+ oltLeft = oltGeo.x - olfGeo.minX;
2218
+ oltTop = oltGeo.y - olfGeo.minY;
2219
+ oltWidth = oltGeo.width;
2220
+ oltDepth = oltGeo.height;
2221
+ }
2222
+
2101
2223
  //hier wird definitv fabric.js Element erstellt
2102
2224
  var fabricShapeOLF = fabric.util.groupSVGElements(olfObjects, options);
2103
2225
  fabricShapeOLF.set({
@@ -2124,14 +2246,20 @@ var PlannerHandler2D = /*#__PURE__*/function () {
2124
2246
  plannerElement.SvgData = svgXml;
2125
2247
  fabric.loadSVGFromString(svgXmlOLT, function (objectsOLT, optionsOLT) {
2126
2248
  plannerElement.cleanShapeOLT2D();
2127
- for (var objNo = 0; objNo < objects.length; objNo++) {
2128
- var object = objects[objNo];
2129
- var objID;
2130
- if (object.id) {
2131
- objID = object.id.toString();
2132
- if (objID.startsWith('OLT')) {
2133
- optionsOLT.height = object.height;
2134
- optionsOLT.width = object.width;
2249
+ if (oltGeo) {
2250
+ optionsOLT.width = oltGeo.width;
2251
+ optionsOLT.height = oltGeo.height;
2252
+ } else {
2253
+ for (var objNo = 0; objNo < objects.length; objNo++) {
2254
+ var object = objects[objNo];
2255
+ var objID;
2256
+ if (object.id) {
2257
+ objID = object.id.toString();
2258
+ if (objID.startsWith('OLT')) {
2259
+ optionsOLT.height = object.height;
2260
+ optionsOLT.width = object.width;
2261
+ break;
2262
+ }
2135
2263
  }
2136
2264
  }
2137
2265
  }
@@ -1,7 +1,7 @@
1
1
  import _classCallCheck from '@babel/runtime/helpers/classCallCheck';
2
2
  import _createClass from '@babel/runtime/helpers/createClass';
3
3
  import _defineProperty from '@babel/runtime/helpers/defineProperty';
4
- import { s as summaryHandlerInstance } from './index-9b142052.js';
4
+ import { s as summaryHandlerInstance } from './index-7c6a8b68.js';
5
5
  import DivaUtils from '@crystaldesign/diva-utils';
6
6
  import '@babel/runtime/helpers/slicedToArray';
7
7
  import '@babel/runtime/helpers/asyncToGenerator';
@@ -4,7 +4,7 @@ import _classCallCheck from '@babel/runtime/helpers/classCallCheck';
4
4
  import _createClass from '@babel/runtime/helpers/createClass';
5
5
  import _defineProperty from '@babel/runtime/helpers/defineProperty';
6
6
  import _regeneratorRuntime from '@babel/runtime/regenerator';
7
- import { G as Grid, b as setHandlerInstance, a as articleHandlerInstance } from './index-9b142052.js';
7
+ import { G as Grid, b as setHandlerInstance, a as articleHandlerInstance } from './index-7c6a8b68.js';
8
8
  import DivaUtils from '@crystaldesign/diva-utils';
9
9
  import '@babel/runtime/helpers/slicedToArray';
10
10
  import '@babel/runtime/helpers/objectWithoutProperties';
@@ -1,6 +1,6 @@
1
1
  import _classCallCheck from '@babel/runtime/helpers/classCallCheck';
2
2
  import _createClass from '@babel/runtime/helpers/createClass';
3
- import './index-9b142052.js';
3
+ import './index-7c6a8b68.js';
4
4
  import '@babel/runtime/helpers/slicedToArray';
5
5
  import '@babel/runtime/helpers/asyncToGenerator';
6
6
  import '@babel/runtime/helpers/defineProperty';