@crystaldesign/web-planner-logic 26.11.0-beta.2 → 26.11.0-beta.21

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 (108) hide show
  1. package/build/cjs/{DivaBoxPlanner-68cc1bd1.js → DivaBoxPlanner-051e3b01.js} +134 -47
  2. package/build/cjs/{DivaStandardPlanner-d44ae0e7.js → DivaStandardPlanner-40846a4f.js} +340 -190
  3. package/build/cjs/{DoorPlanner-1719cbe1.js → DoorPlanner-51477bb2.js} +3 -1
  4. package/build/cjs/{Host3DSignalR-a456221e.js → Host3DSignalR-72511b72.js} +41 -24
  5. package/build/cjs/{LiviqueWWSHandler-f2afb4eb.js → LiviqueWWSHandler-fbfeeb05.js} +3 -1
  6. package/build/cjs/{PfisterWWSHandler-8f522ab6.js → PfisterWWSHandler-a7ac983b.js} +3 -1
  7. package/build/cjs/PlannerHandler2D-e2c83aec.js +544 -0
  8. package/build/cjs/{SeriousBasketHandler-b39f0556.js → SeriousBasketHandler-60853c54.js} +3 -1
  9. package/build/cjs/{ShelfPlanner-1dde2d7c.js → ShelfPlanner-a901f6da.js} +262 -148
  10. package/build/cjs/{StandardWWSHandler-62ec343d.js → StandardWWSHandler-3a8a3685.js} +3 -1
  11. package/build/cjs/{index-d63749e4.js → index-7d87a838.js} +15132 -13899
  12. package/build/cjs/index.js +13 -2
  13. package/build/esm/{DivaBoxPlanner-a347ef5d.js → DivaBoxPlanner-a76550ee.js} +134 -47
  14. package/build/esm/{DivaStandardPlanner-a8f0d722.js → DivaStandardPlanner-56c260dc.js} +339 -190
  15. package/build/esm/{DoorPlanner-60c065e5.js → DoorPlanner-a40a4342.js} +3 -1
  16. package/build/esm/{Host3DSignalR-0c7e84a7.js → Host3DSignalR-6f824d99.js} +41 -24
  17. package/build/esm/{LiviqueWWSHandler-3df03404.js → LiviqueWWSHandler-2f1189d0.js} +3 -1
  18. package/build/esm/{PfisterWWSHandler-28b609ef.js → PfisterWWSHandler-81238c20.js} +3 -1
  19. package/build/esm/PlannerHandler2D-d93ae013.js +526 -0
  20. package/build/esm/{SeriousBasketHandler-276a8035.js → SeriousBasketHandler-bca9210d.js} +3 -1
  21. package/build/esm/{ShelfPlanner-7380b831.js → ShelfPlanner-539f1b08.js} +262 -148
  22. package/build/esm/{StandardWWSHandler-1d13f6a3.js → StandardWWSHandler-cdc4c837.js} +3 -1
  23. package/build/esm/{index-358c0a3c.js → index-b755400a.js} +15128 -13899
  24. package/build/esm/index.js +3 -1
  25. package/build/types/web-planner-logic/src/index.d.ts +8 -3
  26. package/build/types/web-planner-logic/src/index.d.ts.map +1 -1
  27. package/build/types/web-planner-logic/src/interface/Articles/ArticleDataType.d.ts +13 -0
  28. package/build/types/web-planner-logic/src/interface/Articles/ArticleDataType.d.ts.map +1 -1
  29. package/build/types/web-planner-logic/src/interface/Articles/ArticleInfoType.d.ts +13 -0
  30. package/build/types/web-planner-logic/src/interface/Articles/ArticleInfoType.d.ts.map +1 -1
  31. package/build/types/web-planner-logic/src/interface/Articles/CatalogArticleDataType.d.ts +3 -0
  32. package/build/types/web-planner-logic/src/interface/Articles/CatalogArticleDataType.d.ts.map +1 -1
  33. package/build/types/web-planner-logic/src/interface/DivaCatalogDataType.d.ts +5 -0
  34. package/build/types/web-planner-logic/src/interface/DivaCatalogDataType.d.ts.map +1 -1
  35. package/build/types/web-planner-logic/src/interface/IDM/ArticleApi.d.ts +19 -18
  36. package/build/types/web-planner-logic/src/interface/IDM/ArticleApi.d.ts.map +1 -1
  37. package/build/types/web-planner-logic/src/interface/Planner/ISaveSetPlanner.d.ts +37 -0
  38. package/build/types/web-planner-logic/src/interface/Planner/ISaveSetPlanner.d.ts.map +1 -1
  39. package/build/types/web-planner-logic/src/interface/ShelfPlanner/ShelfAccessoiresView.d.ts +5 -0
  40. package/build/types/web-planner-logic/src/interface/ShelfPlanner/ShelfAccessoiresView.d.ts.map +1 -1
  41. package/build/types/web-planner-logic/src/interface/webPlannerParams/WebPlannerParamsType.d.ts +46 -2
  42. package/build/types/web-planner-logic/src/interface/webPlannerParams/WebPlannerParamsType.d.ts.map +1 -1
  43. package/build/types/web-planner-logic/src/logic/Article/DivaArticle.d.ts.map +1 -1
  44. package/build/types/web-planner-logic/src/logic/Article/Engine/ArticleEngine.d.ts +4 -0
  45. package/build/types/web-planner-logic/src/logic/Article/Engine/ArticleEngine.d.ts.map +1 -1
  46. package/build/types/web-planner-logic/src/logic/Article/Engine/IDMArticleEngine.d.ts +12 -2
  47. package/build/types/web-planner-logic/src/logic/Article/Engine/IDMArticleEngine.d.ts.map +1 -1
  48. package/build/types/web-planner-logic/src/logic/ConfigTree/Shelfplanner/ShelfPlanner.d.ts +20 -0
  49. package/build/types/web-planner-logic/src/logic/ConfigTree/Shelfplanner/ShelfPlanner.d.ts.map +1 -1
  50. package/build/types/web-planner-logic/src/logic/ConfigTree/Shelfplanner/ShelfPlannerGrid.d.ts +31 -1
  51. package/build/types/web-planner-logic/src/logic/ConfigTree/Shelfplanner/ShelfPlannerGrid.d.ts.map +1 -1
  52. package/build/types/web-planner-logic/src/logic/DivaApiHandler.d.ts +25 -0
  53. package/build/types/web-planner-logic/src/logic/DivaApiHandler.d.ts.map +1 -1
  54. package/build/types/web-planner-logic/src/logic/DivaCatalogHandler.d.ts +1 -0
  55. package/build/types/web-planner-logic/src/logic/DivaCatalogHandler.d.ts.map +1 -1
  56. package/build/types/web-planner-logic/src/logic/DivaWebPlanner.d.ts +149 -95
  57. package/build/types/web-planner-logic/src/logic/DivaWebPlanner.d.ts.map +1 -1
  58. package/build/types/web-planner-logic/src/logic/Planner/BoxPlanner/ConstructionRulesHandler.d.ts +19 -0
  59. package/build/types/web-planner-logic/src/logic/Planner/BoxPlanner/ConstructionRulesHandler.d.ts.map +1 -1
  60. package/build/types/web-planner-logic/src/logic/Planner/BoxPlanner/DivaBoxPlanner.d.ts +15 -1
  61. package/build/types/web-planner-logic/src/logic/Planner/BoxPlanner/DivaBoxPlanner.d.ts.map +1 -1
  62. package/build/types/web-planner-logic/src/logic/Planner/DivaPlannerHandler.d.ts +11 -1
  63. package/build/types/web-planner-logic/src/logic/Planner/DivaPlannerHandler.d.ts.map +1 -1
  64. package/build/types/web-planner-logic/src/logic/Planner/DivaStandardPlanner.d.ts +28 -1
  65. package/build/types/web-planner-logic/src/logic/Planner/DivaStandardPlanner.d.ts.map +1 -1
  66. package/build/types/web-planner-logic/src/logic/Planner/PlannerUtils/DockingPointHandler.d.ts +9 -114
  67. package/build/types/web-planner-logic/src/logic/Planner/PlannerUtils/DockingPointHandler.d.ts.map +1 -1
  68. package/build/types/web-planner-logic/src/logic/Planner/PlannerUtils/PlannerHandler2D.d.ts +5 -7
  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 +5 -6
  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/Host3DSignalR.d.ts.map +1 -1
  73. package/build/types/web-planner-logic/src/logic/Planner/Rendering/PlannerHandler3D.d.ts +17 -1
  74. package/build/types/web-planner-logic/src/logic/Planner/Rendering/PlannerHandler3D.d.ts.map +1 -1
  75. package/build/types/web-planner-logic/src/logic/Set/DivaSet.d.ts +2 -2
  76. package/build/types/web-planner-logic/src/logic/Set/DivaSet.d.ts.map +1 -1
  77. package/build/types/web-planner-logic/src/logic/Set/DivaSetHandler.d.ts +31 -3
  78. package/build/types/web-planner-logic/src/logic/Set/DivaSetHandler.d.ts.map +1 -1
  79. package/build/types/web-planner-logic/src/logic/Set/catalogXml/articleGeo.d.ts +9 -0
  80. package/build/types/web-planner-logic/src/logic/Set/catalogXml/articleGeo.d.ts.map +1 -0
  81. package/build/types/web-planner-logic/src/logic/Set/catalogXml/parseCatalogXml.d.ts +12 -0
  82. package/build/types/web-planner-logic/src/logic/Set/catalogXml/parseCatalogXml.d.ts.map +1 -0
  83. package/build/types/web-planner-logic/src/logic/Set/catalogXml/types.d.ts +66 -0
  84. package/build/types/web-planner-logic/src/logic/Set/catalogXml/types.d.ts.map +1 -0
  85. package/build/types/web-planner-logic/src/logic/bootMark.d.ts +71 -0
  86. package/build/types/web-planner-logic/src/logic/bootMark.d.ts.map +1 -0
  87. package/build/types/web-planner-logic/src/model/Articles/Article/CatalogArticleData.d.ts +1 -0
  88. package/build/types/web-planner-logic/src/model/Articles/Article/CatalogArticleData.d.ts.map +1 -1
  89. package/build/types/web-planner-logic/src/model/Articles/Article/IDMCatalogArticle.d.ts +11 -0
  90. package/build/types/web-planner-logic/src/model/Articles/Article/IDMCatalogArticle.d.ts.map +1 -1
  91. package/build/types/web-planner-logic/src/model/Catalog/CatalogData.d.ts +13 -0
  92. package/build/types/web-planner-logic/src/model/Catalog/CatalogData.d.ts.map +1 -1
  93. package/build/types/web-planner-logic/src/model/Catalog/IDMCatalogData.d.ts.map +1 -1
  94. package/build/types/web-planner-logic/src/model/Planner/DockingPoint.d.ts +1 -44
  95. package/build/types/web-planner-logic/src/model/Planner/DockingPoint.d.ts.map +1 -1
  96. package/build/types/web-planner-logic/src/model/Planner/PlannerElementData.d.ts +6 -1
  97. package/build/types/web-planner-logic/src/model/Planner/PlannerElementData.d.ts.map +1 -1
  98. package/build/types/web-planner-logic/src/test/engineFeatureDefaults.test.d.ts +2 -0
  99. package/build/types/web-planner-logic/src/test/engineFeatureDefaults.test.d.ts.map +1 -0
  100. package/build/types/web-planner-logic/src/test/idmPlannerPaletteView.test.d.ts +2 -0
  101. package/build/types/web-planner-logic/src/test/idmPlannerPaletteView.test.d.ts.map +1 -0
  102. package/build/types/web-planner-logic/src/test/parseSvgOltGeometry.test.d.ts +2 -0
  103. package/build/types/web-planner-logic/src/test/parseSvgOltGeometry.test.d.ts.map +1 -0
  104. package/build/types/web-planner-logic/src/test/stretchGoldenMaster.test.d.ts +2 -0
  105. package/build/types/web-planner-logic/src/test/stretchGoldenMaster.test.d.ts.map +1 -0
  106. package/package.json +5 -5
  107. package/build/cjs/PlannerHandler2D-dbe1d858.js +0 -2470
  108. package/build/esm/PlannerHandler2D-f8657005.js +0 -2455
@@ -0,0 +1,526 @@
1
+ import _asyncToGenerator from '@babel/runtime/helpers/asyncToGenerator';
2
+ import _classCallCheck from '@babel/runtime/helpers/classCallCheck';
3
+ import _createClass from '@babel/runtime/helpers/createClass';
4
+ import _defineProperty from '@babel/runtime/helpers/defineProperty';
5
+ import _regeneratorRuntime from '@babel/runtime/regenerator';
6
+ import { c as Vector2 } from './index-b755400a.js';
7
+ import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
8
+ import _toConsumableArray from '@babel/runtime/helpers/toConsumableArray';
9
+ import DivaUtils, { DivaError } from '@crystaldesign/diva-utils';
10
+ import { parseXml, serializeXml, removeMask, stretchArticleSvg, DockingPointHandler as DockingPointHandler$1, polygonEdgesIntersect, polygonInsidePolygon, getOlfGeometry, getOltGeometry, getRootSize, getMinBorder } from '@crystaldesign/planner-2d-core';
11
+ import _possibleConstructorReturn from '@babel/runtime/helpers/possibleConstructorReturn';
12
+ import _getPrototypeOf from '@babel/runtime/helpers/getPrototypeOf';
13
+ import _get from '@babel/runtime/helpers/get';
14
+ import _inherits from '@babel/runtime/helpers/inherits';
15
+
16
+ function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
17
+ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
18
+ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
19
+ var LOG$1 = DivaUtils.initLog('Planner', 'WEB-PLANNER-LOGIC');
20
+ var SVGUtils = /*#__PURE__*/function () {
21
+ function SVGUtils() {
22
+ _classCallCheck(this, SVGUtils);
23
+ }
24
+ /**
25
+ * This function removes all VIF and OLF information from the SVG. This is used for displaying only the OLT information
26
+ * @param content The svg with OLF and OLT
27
+ * @returns SVG with only OLT information
28
+ */
29
+ return _createClass(SVGUtils, [{
30
+ key: "removeOLFFromSvg",
31
+ value: function removeOLFFromSvg(content) {
32
+ var xmlDocument = parseXml(content);
33
+ var vifObjs = xmlDocument.evaluate("//*[starts-with(@id,'VIF')]", xmlDocument, null, 7, null);
34
+ if (vifObjs.snapshotLength > 0) {
35
+ for (var i = 0; i < vifObjs.snapshotLength; i++) {
36
+ var _parentElement;
37
+ (_parentElement = vifObjs.snapshotItem(i).parentElement) === null || _parentElement === void 0 || _parentElement.removeChild(vifObjs.snapshotItem(i));
38
+ }
39
+ }
40
+ var olfObjs = xmlDocument.evaluate("//*[starts-with(@id,'OLF')]", xmlDocument, null, 7, null);
41
+ if (olfObjs.snapshotLength > 0) {
42
+ for (var i = 0; i < olfObjs.snapshotLength; i++) {
43
+ var _parentElement2;
44
+ (_parentElement2 = olfObjs.snapshotItem(i).parentElement) === null || _parentElement2 === void 0 || _parentElement2.removeChild(olfObjs.snapshotItem(i));
45
+ }
46
+ }
47
+ return serializeXml(xmlDocument);
48
+ }
49
+
50
+ /**
51
+ * This function returns the DPs of an svg
52
+ * @param content The svg with OLF and OLT
53
+ * @returns SVG with only OLT information
54
+ */
55
+ }, {
56
+ key: "getDPsInSVG",
57
+ value: function getDPsInSVG(content) {
58
+ var dockingpointsSvgLine = [];
59
+ var xmlDocument = parseXml(content);
60
+ var dpObjs = xmlDocument.evaluate("//*[starts-with(@id,'AV')]", xmlDocument, null, 7, null);
61
+ if (dpObjs.snapshotLength > 0) {
62
+ for (var i = 0; i < dpObjs.snapshotLength; i++) {
63
+ var obj = dpObjs.snapshotItem(i);
64
+ if ((obj === null || obj === void 0 ? void 0 : obj.nodeName) === 'line') {
65
+ dockingpointsSvgLine.push({
66
+ x1: Number(obj.getAttribute('x1')),
67
+ y1: Number(obj.getAttribute('y1')),
68
+ x2: Number(obj.getAttribute('x2')),
69
+ y2: Number(obj.getAttribute('y2')),
70
+ dockingName: obj.getAttribute('id'),
71
+ dockingType: obj.getAttribute('id').substring(0, 3)
72
+ });
73
+ } else {
74
+ throw new Error('nodename type: ' + obj.nodeName + ' not implemented');
75
+ }
76
+ }
77
+ }
78
+ dockingpointsSvgLine.sort(function (a, b) {
79
+ if (a.dockingType === 'AVL') return -1;
80
+ if (a.dockingType === 'AVR' && ['AVR', 'AVC', 'AVU', 'AVO', 'AVS', 'AVN'].includes(b.dockingType)) return -1;
81
+ return 0;
82
+ });
83
+ return dockingpointsSvgLine;
84
+ }
85
+
86
+ /**
87
+ * This function returns the DPs of an svg
88
+ * @param content The svg with OLF and OLT
89
+ * @returns SVG with only OLT information
90
+ */
91
+ }, {
92
+ key: "getPointOfPoligonById",
93
+ value: function getPointOfPoligonById(content, id) {
94
+ var points = [];
95
+ var xmlDocument = parseXml(content);
96
+ var dpObjs = xmlDocument.evaluate("//*[starts-with(@id,'" + id + "')]", xmlDocument, null, 7, null);
97
+ if (dpObjs.snapshotLength > 1 || dpObjs.snapshotLength == 0) return undefined;
98
+ for (var i = 0; i < dpObjs.snapshotLength; i++) {
99
+ var obj = dpObjs.snapshotItem(i);
100
+ if ((obj === null || obj === void 0 ? void 0 : obj.nodeName) === 'polygon') {
101
+ var pointsAsString = obj.getAttribute('points');
102
+ if (pointsAsString) {
103
+ var pointsFromString = pointsAsString.split(' ');
104
+ for (var j = 0; j < pointsFromString.length; j++) {
105
+ var xandY = pointsFromString[j].split(',');
106
+ if (xandY.length !== 2) continue;
107
+ points.push(new Vector2(Number(xandY[0]), Number(xandY[1])));
108
+ }
109
+ } else {
110
+ return undefined;
111
+ }
112
+ }
113
+ }
114
+ return points;
115
+ }
116
+ }, {
117
+ key: "getBoundingBoxOfPoints",
118
+ value: function getBoundingBoxOfPoints(points) {
119
+ var xArr = points.map(function (c) {
120
+ return c.x;
121
+ });
122
+ var yArr = points.map(function (c) {
123
+ return c.y;
124
+ });
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;
131
+ return {
132
+ width: width,
133
+ height: height,
134
+ minX: minX,
135
+ minY: minY
136
+ };
137
+ }
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 xmlDocument = parseXml(content);
147
+ var olfObjs = xmlDocument.evaluate("//*[starts-with(@id,'OLF')]", xmlDocument, null, 7, null);
148
+ for (var i = 0; i < olfObjs.snapshotLength; i++) {
149
+ var obj = olfObjs.snapshotItem(i);
150
+ if ((obj === null || obj === void 0 ? void 0 : obj.nodeName) === 'rect') {
151
+ var _obj$getAttribute, _obj$getAttribute2, _obj$getAttribute3, _obj$getAttribute4;
152
+ var x = parseFloat((_obj$getAttribute = obj.getAttribute('x')) !== null && _obj$getAttribute !== void 0 ? _obj$getAttribute : '0');
153
+ var y = parseFloat((_obj$getAttribute2 = obj.getAttribute('y')) !== null && _obj$getAttribute2 !== void 0 ? _obj$getAttribute2 : '0');
154
+ var width = parseFloat((_obj$getAttribute3 = obj.getAttribute('width')) !== null && _obj$getAttribute3 !== void 0 ? _obj$getAttribute3 : '0');
155
+ var height = parseFloat((_obj$getAttribute4 = obj.getAttribute('height')) !== null && _obj$getAttribute4 !== void 0 ? _obj$getAttribute4 : '0');
156
+ return {
157
+ minX: x,
158
+ minY: y,
159
+ width: width,
160
+ height: height
161
+ };
162
+ }
163
+ if ((obj === null || obj === void 0 ? void 0 : obj.nodeName) === 'polygon') {
164
+ var pts = obj.getAttribute('points');
165
+ if (pts) {
166
+ var points = pts.split(/\s+/).reduce(function (acc, p) {
167
+ var _p$split = p.split(','),
168
+ _p$split2 = _slicedToArray(_p$split, 2),
169
+ x = _p$split2[0],
170
+ y = _p$split2[1];
171
+ if (x != null && y != null) acc.push(new Vector2(Number(x), Number(y)));
172
+ return acc;
173
+ }, []);
174
+ if (points.length) {
175
+ var bbox = this.getBoundingBoxOfPoints(points);
176
+ return {
177
+ minX: bbox.minX,
178
+ minY: bbox.minY,
179
+ width: bbox.width,
180
+ height: bbox.height
181
+ };
182
+ }
183
+ }
184
+ }
185
+ }
186
+ return undefined;
187
+ }
188
+
189
+ /**
190
+ * Returns OLT geometry (x, y, width, height) from SVG attributes - untransformed coords.
191
+ * Iterates through matches to find first rect/polygon (handles Illustrator group wrappers).
192
+ */
193
+ }, {
194
+ key: "getOLTGeometryFromSvg",
195
+ value: function getOLTGeometryFromSvg(content) {
196
+ var xmlDocument = parseXml(content);
197
+ var oltObjs = xmlDocument.evaluate("//*[starts-with(@id,'OLT')]", xmlDocument, null, 7, null);
198
+ for (var i = 0; i < oltObjs.snapshotLength; i++) {
199
+ var obj = oltObjs.snapshotItem(i);
200
+ if ((obj === null || obj === void 0 ? void 0 : obj.nodeName) === 'rect') {
201
+ var _obj$getAttribute5, _obj$getAttribute6, _obj$getAttribute7, _obj$getAttribute8;
202
+ var x = parseFloat((_obj$getAttribute5 = obj.getAttribute('x')) !== null && _obj$getAttribute5 !== void 0 ? _obj$getAttribute5 : '0');
203
+ var y = parseFloat((_obj$getAttribute6 = obj.getAttribute('y')) !== null && _obj$getAttribute6 !== void 0 ? _obj$getAttribute6 : '0');
204
+ var width = parseFloat((_obj$getAttribute7 = obj.getAttribute('width')) !== null && _obj$getAttribute7 !== void 0 ? _obj$getAttribute7 : '0');
205
+ var height = parseFloat((_obj$getAttribute8 = obj.getAttribute('height')) !== null && _obj$getAttribute8 !== void 0 ? _obj$getAttribute8 : '0');
206
+ return {
207
+ x: x,
208
+ y: y,
209
+ width: width,
210
+ height: height
211
+ };
212
+ }
213
+ if ((obj === null || obj === void 0 ? void 0 : obj.nodeName) === 'polygon') {
214
+ var pts = obj.getAttribute('points');
215
+ if (pts) {
216
+ var points = pts.split(/\s+/).reduce(function (acc, p) {
217
+ var _p$split3 = p.split(','),
218
+ _p$split4 = _slicedToArray(_p$split3, 2),
219
+ x = _p$split4[0],
220
+ y = _p$split4[1];
221
+ if (x != null && y != null) acc.push(new Vector2(Number(x), Number(y)));
222
+ return acc;
223
+ }, []);
224
+ if (points.length) {
225
+ var bbox = this.getBoundingBoxOfPoints(points);
226
+ return {
227
+ x: bbox.minX,
228
+ y: bbox.minY,
229
+ width: bbox.width,
230
+ height: bbox.height
231
+ };
232
+ }
233
+ }
234
+ }
235
+ }
236
+ return undefined;
237
+ }
238
+
239
+ /**
240
+ * This function looks if the svg has a Mask HTML element. If so it removes all masks from SVG
241
+ * @param content
242
+ */
243
+ }, {
244
+ key: "removeMaskFromSvg",
245
+ value: function removeMaskFromSvg(content) {
246
+ return removeMask(content);
247
+ }
248
+
249
+ /**
250
+ * Stretches the SVG to the target OLT size and passes the result to the callback.
251
+ * @param svgSourceUrl optional URL / path of the loaded SVG for diagnostics
252
+ */
253
+ }, {
254
+ key: "ccCheckStretchAreas",
255
+ value: function ccCheckStretchAreas(content, newWidthCM, newHeightCM, useglobalSvgScale, svgMinBorderXVal, svgMinBorderYVal, callback, svgSourceUrl) {
256
+ var result = stretchArticleSvg(content, newWidthCM, newHeightCM, {
257
+ useGlobalScale: useglobalSvgScale,
258
+ minBorderX: svgMinBorderXVal,
259
+ minBorderY: svgMinBorderYVal
260
+ });
261
+ var _iterator = _createForOfIteratorHelper(result.warnings),
262
+ _step;
263
+ try {
264
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
265
+ var warning = _step.value;
266
+ LOG$1.warn('[SVGUtils] ccCheckStretchAreas: ' + warning + (svgSourceUrl ? ' (svg: ' + svgSourceUrl + ')' : ''));
267
+ }
268
+ } catch (err) {
269
+ _iterator.e(err);
270
+ } finally {
271
+ _iterator.f();
272
+ }
273
+ callback(result.svg);
274
+ return result.sizes;
275
+ }
276
+ }]);
277
+ }();
278
+
279
+ function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
280
+ function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
281
+ function _superPropGet(t, e, o, r) { var p = _get(_getPrototypeOf(1 & r ? t.prototype : t), e, o); return 2 & r && "function" == typeof p ? function (t) { return p.apply(o, t); } : p; }
282
+
283
+ /** Legacy minBorder parameter shape still used by this package's callers. */
284
+ /** Docking point handler that additionally accepts the legacy minBorder shape. */
285
+ var DockingPointHandler = /*#__PURE__*/function (_CoreDockingPointHand) {
286
+ function DockingPointHandler() {
287
+ _classCallCheck(this, DockingPointHandler);
288
+ return _callSuper(this, DockingPointHandler, arguments);
289
+ }
290
+ _inherits(DockingPointHandler, _CoreDockingPointHand);
291
+ return _createClass(DockingPointHandler, [{
292
+ key: "initDockingPointsFromSvg",
293
+ value: function initDockingPointsFromSvg(plannerElement, dockingVectors, minBorder, plannerConfig) {
294
+ var normalized = 'minX' in minBorder ? minBorder : {
295
+ minX: minBorder.svgMinXVal,
296
+ minY: minBorder.svgMinYVal
297
+ };
298
+ _superPropGet(DockingPointHandler, "initDockingPointsFromSvg", this, 3)([plannerElement, dockingVectors, normalized, plannerConfig]);
299
+ }
300
+ }]);
301
+ }(DockingPointHandler$1);
302
+ var dockingPointHandlerInst = new DockingPointHandler();
303
+
304
+ var LOG = DivaUtils.initLog('Planner', 'WEB-PLANNER-LOGIC');
305
+
306
+ /**
307
+ * Loads and parses the article SVGs of planner elements and computes element collisions.
308
+ * Runs headless; the fabric shapes for the visible 2D canvas are built by the render layer from SvgData.
309
+ */
310
+ var PlannerHandler2D = /*#__PURE__*/function () {
311
+ function PlannerHandler2D() {
312
+ _classCallCheck(this, PlannerHandler2D);
313
+ _defineProperty(this, "svgUtils", void 0);
314
+ this.svgUtils = new SVGUtils();
315
+ }
316
+ /**
317
+ * This function computes the collision between two elements.
318
+ * First it computes the collision with the bounding box. Only if these collide - we compute the collision between the OLF Polygons
319
+ * @param element1
320
+ * @param element2
321
+ */
322
+ return _createClass(PlannerHandler2D, [{
323
+ key: "checkCollision",
324
+ value: function checkCollision(element1, element2, checkCollisionForDifferentLayers) {
325
+ DivaUtils.startSpanOfApm('PlannerHandler2D checkCollision');
326
+ if (element1.Layer != element2.Layer && (!checkCollisionForDifferentLayers.includes(Number(element1.Layer)) || !checkCollisionForDifferentLayers.includes(Number(element2.Layer)))) {
327
+ DivaUtils.endSpanOfApm('PlannerHandler2D checkCollision');
328
+ return false;
329
+ }
330
+ var bboxPoints1 = element1.getWorld2DBBoxOutline();
331
+ var bboxPoints2 = element2.getWorld2DBBoxOutline();
332
+ if (polygonEdgesIntersect(bboxPoints1, bboxPoints2)) {
333
+ if (!element1.HasOLTPolygon && !element1.HasOLFPolygon) {
334
+ LOG.error(new DivaError('checkCollision PlannerHandler2D - The element with id: ' + element1.getElementId() + ' has no OLT AND no OLF', {
335
+ code: 'WC_0012'
336
+ }));
337
+ DivaUtils.endSpanOfApm('PlannerHandler2D checkCollision');
338
+ return false;
339
+ } else if (!element2.HasOLTPolygon && !element2.HasOLFPolygon) {
340
+ LOG.error(new DivaError('checkCollision PlannerHandler2D - The element with id: ' + element2.getElementId() + ' has no OLT AND no OLF', {
341
+ code: 'WC_0012'
342
+ }));
343
+ DivaUtils.endSpanOfApm('PlannerHandler2D checkCollision');
344
+ return false;
345
+ }
346
+ var detailPolygon1 = element1.HasOLFPolygon ? element1.getOLFPolygonWorldPos() : element1.getOLTPolygonWorldPos();
347
+ var detailPolygon2 = element2.HasOLFPolygon ? element2.getOLFPolygonWorldPos() : element2.getOLTPolygonWorldPos();
348
+ DivaUtils.endSpanOfApm('PlannerHandler2D checkCollision');
349
+ return polygonEdgesIntersect(detailPolygon1, detailPolygon2);
350
+ } else {
351
+ DivaUtils.endSpanOfApm('PlannerHandler2D checkCollision');
352
+ return polygonInsidePolygon(bboxPoints1, bboxPoints2); //wenn sie sich nicht überschneiden untersuche, ob ein Polygon genau innerhalb des anderen liegt
353
+ }
354
+ }
355
+ }, {
356
+ key: "parseSvg",
357
+ value: function parseSvg(plannerElement, svgXml, minBorderSVG, plannerconfig, sizes) {
358
+ var _oltGeo$width, _oltGeo$height;
359
+ svgXml = this.svgUtils.removeMaskFromSvg(svgXml); //Correct mask attributes
360
+ dockingPointHandlerInst.initDockingPointsFromSvg(plannerElement, this.svgUtils.getDPsInSVG(svgXml), minBorderSVG, plannerconfig);
361
+ var oltPoints = this.svgUtils.getPointOfPoligonById(svgXml, 'OLT');
362
+ if (!(oltPoints !== null && oltPoints !== void 0 && oltPoints.length)) {
363
+ LOG.warn('no olt fount in svg for element' + plannerElement.ArticleCodex + ' with id ' + plannerElement.getElementId());
364
+ }
365
+ plannerElement.OLTPolygon = oltPoints;
366
+ var olf = this.svgUtils.getPointOfPoligonById(svgXml, 'OLF');
367
+ var olfGeo = getOlfGeometry(svgXml);
368
+ if (olf !== null && olf !== void 0 && olf.length) {
369
+ var _olfGeo$width, _olfGeo$height;
370
+ var olfBBox = this.svgUtils.getBoundingBoxOfPoints(olf);
371
+ // Prefer getOlfGeometry for dims - single source of truth, handles split(/\s+/) correctly
372
+ var olfW = (_olfGeo$width = olfGeo === null || olfGeo === void 0 ? void 0 : olfGeo.width) !== null && _olfGeo$width !== void 0 ? _olfGeo$width : olfBBox.width;
373
+ var olfD = (_olfGeo$height = olfGeo === null || olfGeo === void 0 ? void 0 : olfGeo.height) !== null && _olfGeo$height !== void 0 ? _olfGeo$height : olfBBox.height;
374
+ plannerElement.setupOLF(olf, olfW, olfD);
375
+ } else {
376
+ if (olfGeo) {
377
+ 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)];
378
+ plannerElement.setupOLF(olfRectPoints, olfGeo.width, olfGeo.height);
379
+ } else if (sizes !== null && sizes !== void 0 && sizes.heightOLF, sizes !== null && sizes !== void 0 && sizes.widthOLF) {
380
+ plannerElement.setupOLF(olf, sizes === null || sizes === void 0 ? void 0 : sizes.widthOLF, sizes === null || sizes === void 0 ? void 0 : sizes.heightOLF);
381
+ } else {
382
+ plannerElement.clearOLF();
383
+ }
384
+ }
385
+
386
+ // Assign unconditionally: parseSvg re-runs per measure change, so keeping the previous SVG's OLT box would offset docked neighbours.
387
+ var oltGeo = getOltGeometry(svgXml);
388
+ plannerElement.OLTWidth = (_oltGeo$width = oltGeo === null || oltGeo === void 0 ? void 0 : oltGeo.width) !== null && _oltGeo$width !== void 0 ? _oltGeo$width : 0;
389
+ plannerElement.OLTDepth = (_oltGeo$height = oltGeo === null || oltGeo === void 0 ? void 0 : oltGeo.height) !== null && _oltGeo$height !== void 0 ? _oltGeo$height : 0;
390
+ plannerElement.OLTLeft = oltGeo && olfGeo ? oltGeo.x - olfGeo.minX : 0;
391
+ plannerElement.OLTTop = oltGeo && olfGeo ? oltGeo.y - olfGeo.minY : 0;
392
+ if (plannerElement.DoSetWidthFromSVG || plannerElement.DoSetDepthFromSVG) {
393
+ // The ROOT size, not the ink bounds: an article whose drawing does not fill its canvas must still report the canvas size.
394
+ var rootSize = getRootSize(svgXml);
395
+ if (plannerElement.DoSetWidthFromSVG && rootSize !== null && rootSize !== void 0 && rootSize.width) plannerElement.WidthFromSVG = rootSize.width / DivaUtils.UnitRecalc;
396
+ // since the svg is always top down perspective height in 2D represents depth in 2D planner and 3D
397
+ if (plannerElement.DoSetDepthFromSVG && rootSize !== null && rootSize !== void 0 && rootSize.height) plannerElement.DepthFromSVG = rootSize.height / DivaUtils.UnitRecalc;
398
+ }
399
+ plannerElement.SvgData = svgXml;
400
+ // Clearing marks the shapes stale - the render layer rebuilds them from SvgData.
401
+ plannerElement.cleanShapeOLF2D();
402
+ plannerElement.cleanShapeOLT2D();
403
+ }
404
+ }, {
405
+ key: "getMinBorderSVG",
406
+ value: function getMinBorderSVG(svgXml) {
407
+ var minBorder = getMinBorder(svgXml);
408
+ return {
409
+ svgMinXVal: minBorder.minX,
410
+ svgMinYVal: minBorder.minY
411
+ };
412
+ }
413
+ /*
414
+ This function is used to load the SVG of the element and set everything up.
415
+ */
416
+ }, {
417
+ key: "loadSVG",
418
+ value: (function () {
419
+ var _loadSVG = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(plannerElement, set) {
420
+ var _this = this;
421
+ var svgFile, svgContentXML, svgContent, result, svgNewWidth, svgNewDepth, sizes, minBoderSVG, svgSourceUrl, correctedContent;
422
+ return _regeneratorRuntime.wrap(function _callee$(_context) {
423
+ while (1) switch (_context.prev = _context.next) {
424
+ case 0:
425
+ svgFile = plannerElement.SvgFileName;
426
+ if (svgFile) {
427
+ _context.next = 3;
428
+ break;
429
+ }
430
+ return _context.abrupt("return", false);
431
+ case 3:
432
+ if (!set.CatalogData.isIDMFormat) {
433
+ _context.next = 9;
434
+ break;
435
+ }
436
+ _context.next = 6;
437
+ return set.api.fetchData(svgFile, {
438
+ method: 'GET',
439
+ config: {},
440
+ data: {}
441
+ });
442
+ case 6:
443
+ svgContentXML = _context.sent;
444
+ _context.next = 16;
445
+ break;
446
+ case 9:
447
+ _context.next = 11;
448
+ return set.api.getDataCache(this.getSVGUrl(svgFile, set.CatalogData.mediaUrl), undefined, set.CatalogData.accountSessionGuid);
449
+ case 11:
450
+ result = _context.sent;
451
+ if (!result.Error) {
452
+ _context.next = 14;
453
+ break;
454
+ }
455
+ throw new Error(result.Error);
456
+ case 14:
457
+ if (result.Result.toLowerCase() == 'success') {
458
+ svgContent = result.Content;
459
+ }
460
+ svgContentXML = DivaUtils.decodeBase64(svgContent);
461
+ case 16:
462
+ if (!svgContentXML) {
463
+ LOG.error(new DivaError('Fehler beim laden des SVGs ', {
464
+ code: 'WC_0009',
465
+ custom: {
466
+ svgFile: svgFile
467
+ }
468
+ }));
469
+ }
470
+ plannerElement.svgBefore = svgContentXML;
471
+ svgNewWidth = plannerElement.Width;
472
+ svgNewDepth = plannerElement.Depth;
473
+ //fix for "kissen" that didnt had a depth but do have a height https://app.asana.com/0/1201426433314773/1201432109700389
474
+ if (svgNewDepth === -1 && plannerElement.Height !== -1) svgNewDepth = plannerElement.Height;
475
+ if (!(svgNewWidth != undefined && svgNewWidth > 0 && svgNewDepth != undefined && svgNewDepth > 0)) {
476
+ _context.next = 31;
477
+ break;
478
+ }
479
+ minBoderSVG = this.getMinBorderSVG(svgContentXML);
480
+ svgSourceUrl = set.CatalogData.isIDMFormat ? svgFile : "".concat(set.CatalogData.mediaUrl, "pln_").concat(svgFile);
481
+ correctedContent = '';
482
+ _context.next = 27;
483
+ return new Promise(function (resolve, reject) {
484
+ sizes = _this.svgUtils.ccCheckStretchAreas(svgContentXML, svgNewWidth, svgNewDepth, set.CatalogData.useGlobalSVGScale, minBoderSVG.svgMinXVal, minBoderSVG.svgMinYVal, function (_correctedContent) {
485
+ correctedContent = _correctedContent;
486
+ resolve();
487
+ }, svgSourceUrl);
488
+ });
489
+ case 27:
490
+ plannerElement.svgAfter = correctedContent;
491
+ this.parseSvg(plannerElement, correctedContent, minBoderSVG, set.CatalogData.getPlannerConfig(), sizes);
492
+ _context.next = 33;
493
+ break;
494
+ case 31:
495
+ plannerElement.svgAfter = svgContentXML;
496
+ this.parseSvg(plannerElement, svgContentXML, {
497
+ svgMinXVal: 0,
498
+ svgMinYVal: 0
499
+ }, set.CatalogData.getPlannerConfig());
500
+ case 33:
501
+ return _context.abrupt("return", true);
502
+ case 34:
503
+ case "end":
504
+ return _context.stop();
505
+ }
506
+ }, _callee, this);
507
+ }));
508
+ function loadSVG(_x, _x2) {
509
+ return _loadSVG.apply(this, arguments);
510
+ }
511
+ return loadSVG;
512
+ }())
513
+ }, {
514
+ key: "getSVGUrl",
515
+ value: function getSVGUrl(svgFile, mediaUrl) {
516
+ var url = mediaUrl + 'pln_' + svgFile;
517
+ //Split url
518
+ var index = url.indexOf('/files/');
519
+ url = url.substring(index);
520
+ return 'function=GetFileAsString' + '&fileUrl=' + encodeURIComponent(url);
521
+ }
522
+ }]);
523
+ }();
524
+ var handler2D = new PlannerHandler2D();
525
+
526
+ export { dockingPointHandlerInst as d, handler2D as h };
@@ -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-358c0a3c.js';
4
+ import { s as summaryHandlerInstance } from './index-b755400a.js';
5
5
  import DivaUtils from '@crystaldesign/diva-utils';
6
6
  import '@babel/runtime/helpers/slicedToArray';
7
7
  import '@babel/runtime/helpers/asyncToGenerator';
@@ -11,12 +11,14 @@ import '@babel/runtime/helpers/toConsumableArray';
11
11
  import 'axios';
12
12
  import '@crystaldesign/basket-model';
13
13
  import '@babel/runtime/helpers/typeof';
14
+ import 'fast-xml-parser';
14
15
  import '@babel/runtime/helpers/possibleConstructorReturn';
15
16
  import '@babel/runtime/helpers/getPrototypeOf';
16
17
  import '@babel/runtime/helpers/inherits';
17
18
  import '@babel/runtime/helpers/wrapNativeSuper';
18
19
  import '@crystaldesign/basket-handler';
19
20
  import 'socket.io-client';
21
+ import '@crystaldesign/planner-2d-core';
20
22
 
21
23
  //Der in einem Set gemergte Optionsbaum
22
24
  var MAIN_COLOR_OPTIONCODEX = 'OPTBE_BOX'; // this field indicates the the main Color. This main color is used in the PDF