@crystaldesign/web-planner-logic 26.3.0-beta.22 → 26.3.0-beta.24

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 (46) hide show
  1. package/build/cjs/{DivaBoxPlanner-b9203013.js → DivaBoxPlanner-3fac7bbb.js} +2 -2
  2. package/build/cjs/{DivaStandardPlanner-d7d92797.js → DivaStandardPlanner-71c14135.js} +28 -6
  3. package/build/cjs/{DoorPlanner-15711c77.js → DoorPlanner-005f30c4.js} +1 -1
  4. package/build/cjs/{Host3DSignalR-c1a8bd75.js → Host3DSignalR-9bb1426e.js} +1 -1
  5. package/build/cjs/{LiviqueWWSHandler-c473a6e8.js → LiviqueWWSHandler-0ee829a1.js} +1 -1
  6. package/build/cjs/{PfisterWWSHandler-4626d021.js → PfisterWWSHandler-09845f11.js} +1 -1
  7. package/build/cjs/{PlannerHandler2D-5c34f53d.js → PlannerHandler2D-c163fcb3.js} +154 -25
  8. package/build/cjs/{SeriousBasketHandler-d4080265.js → SeriousBasketHandler-5814c287.js} +1 -1
  9. package/build/cjs/{ShelfPlanner-ab2ea058.js → ShelfPlanner-4e9d225b.js} +1 -1
  10. package/build/cjs/{StandardWWSHandler-aa3e5268.js → StandardWWSHandler-4094a581.js} +1 -1
  11. package/build/cjs/{index-3189a45d.js → index-93af4c3b.js} +304 -106
  12. package/build/cjs/index.js +1 -1
  13. package/build/esm/{DivaBoxPlanner-0fcca16f.js → DivaBoxPlanner-898d6a0b.js} +2 -2
  14. package/build/esm/{DivaStandardPlanner-667e0a34.js → DivaStandardPlanner-7d01638d.js} +28 -6
  15. package/build/esm/{DoorPlanner-bf6b34fe.js → DoorPlanner-6d699497.js} +1 -1
  16. package/build/esm/{Host3DSignalR-c3ad5cf9.js → Host3DSignalR-5231aee4.js} +1 -1
  17. package/build/esm/{LiviqueWWSHandler-53bca392.js → LiviqueWWSHandler-fe2f6517.js} +1 -1
  18. package/build/esm/{PfisterWWSHandler-e5937dd6.js → PfisterWWSHandler-86dfcb1e.js} +1 -1
  19. package/build/esm/{PlannerHandler2D-f1917cec.js → PlannerHandler2D-704588ba.js} +153 -25
  20. package/build/esm/{SeriousBasketHandler-6beb6cd1.js → SeriousBasketHandler-1d1b7804.js} +1 -1
  21. package/build/esm/{ShelfPlanner-443399fe.js → ShelfPlanner-40bc17a4.js} +1 -1
  22. package/build/esm/{StandardWWSHandler-3baa1505.js → StandardWWSHandler-f98d9071.js} +1 -1
  23. package/build/esm/{index-b3e34122.js → index-a692e3ee.js} +304 -106
  24. package/build/esm/index.js +1 -1
  25. package/build/types/web-planner-logic/src/interface/DivaCatalogDataType.d.ts +1 -0
  26. package/build/types/web-planner-logic/src/interface/DivaCatalogDataType.d.ts.map +1 -1
  27. package/build/types/web-planner-logic/src/interface/Planner/DockingPointDataType.d.ts +8 -0
  28. package/build/types/web-planner-logic/src/interface/Planner/DockingPointDataType.d.ts.map +1 -1
  29. package/build/types/web-planner-logic/src/logic/DivaWebPlanner.d.ts +3 -0
  30. package/build/types/web-planner-logic/src/logic/DivaWebPlanner.d.ts.map +1 -1
  31. package/build/types/web-planner-logic/src/logic/Planner/DivaPlannerHandler.d.ts +2 -6
  32. package/build/types/web-planner-logic/src/logic/Planner/DivaPlannerHandler.d.ts.map +1 -1
  33. package/build/types/web-planner-logic/src/logic/Planner/DivaStandardPlanner.d.ts +2 -6
  34. package/build/types/web-planner-logic/src/logic/Planner/DivaStandardPlanner.d.ts.map +1 -1
  35. package/build/types/web-planner-logic/src/logic/Planner/PlannerUtils/PlannerHandler2D.d.ts.map +1 -1
  36. package/build/types/web-planner-logic/src/logic/Planner/PlannerUtils/SVGUtils.d.ts +22 -0
  37. package/build/types/web-planner-logic/src/logic/Planner/PlannerUtils/SVGUtils.d.ts.map +1 -1
  38. package/build/types/web-planner-logic/src/logic/Set/DivaSetHandler.d.ts +3 -0
  39. package/build/types/web-planner-logic/src/logic/Set/DivaSetHandler.d.ts.map +1 -1
  40. package/build/types/web-planner-logic/src/model/Catalog/CatalogData.d.ts +1 -0
  41. package/build/types/web-planner-logic/src/model/Catalog/CatalogData.d.ts.map +1 -1
  42. package/build/types/web-planner-logic/src/model/Planner/BoundingBox.d.ts +11 -3
  43. package/build/types/web-planner-logic/src/model/Planner/BoundingBox.d.ts.map +1 -1
  44. package/build/types/web-planner-logic/src/model/Planner/PlannerElementData.d.ts +14 -3
  45. package/build/types/web-planner-logic/src/model/Planner/PlannerElementData.d.ts.map +1 -1
  46. 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-3189a45d.js');
8
+ var index = require('./index-93af4c3b.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-5c34f53d.js');
12
+ var PlannerHandler2D = require('./PlannerHandler2D-c163fcb3.js');
13
13
  require('@babel/runtime/helpers/objectWithoutProperties');
14
14
  require('axios');
15
15
  require('@crystaldesign/basket-model');
@@ -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-3189a45d.js');
8
+ var index = require('./index-93af4c3b.js');
9
9
  var DivaUtils = require('@crystaldesign/diva-utils');
10
- var PlannerHandler2D = require('./PlannerHandler2D-5c34f53d.js');
10
+ var PlannerHandler2D = require('./PlannerHandler2D-c163fcb3.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-3189a45d.js');
6
+ require('./index-93af4c3b.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-3189a45d.js');
8
+ var index = require('./index-93af4c3b.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-3189a45d.js');
5
+ require('./index-93af4c3b.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-3189a45d.js');
5
+ var index = require('./index-93af4c3b.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-3189a45d.js');
8
+ var index = require('./index-93af4c3b.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-3189a45d.js');
6
+ var index = require('./index-93af4c3b.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-3189a45d.js');
9
+ var index = require('./index-93af4c3b.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-3189a45d.js');
5
+ require('./index-93af4c3b.js');
6
6
  require('@babel/runtime/helpers/slicedToArray');
7
7
  require('@babel/runtime/helpers/asyncToGenerator');
8
8
  require('@babel/runtime/helpers/defineProperty');