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