kitchen-simulator 4.0.2-react-18 → 4.0.2

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 (188) hide show
  1. package/README.md +3 -0
  2. package/es/AppContext.js +1 -1
  3. package/es/LiteKitchenConfigurator.js +165 -107
  4. package/es/LiteRenderer.js +161 -129
  5. package/es/actions/export.js +25 -12
  6. package/es/assets/gltf/door_sliding.bin +0 -0
  7. package/es/assets/img/png/helper/video_preview_start.png +0 -0
  8. package/es/assets/img/svg/bottombar/elevation.svg +12 -5
  9. package/es/catalog/catalog.js +21 -5
  10. package/es/catalog/holes/window-clear/planner-element.js +2 -2
  11. package/es/catalog/properties/export.js +21 -0
  12. package/es/catalog/properties/property-checkbox.js +68 -0
  13. package/es/catalog/properties/property-color.js +39 -0
  14. package/es/catalog/properties/property-enum.js +50 -0
  15. package/es/catalog/properties/property-hidden.js +19 -0
  16. package/es/catalog/properties/property-lenght-measure.js +100 -0
  17. package/es/catalog/properties/property-length-measure.js +84 -0
  18. package/es/catalog/properties/property-length-measure_hole.js +100 -0
  19. package/es/catalog/properties/property-number.js +48 -0
  20. package/es/catalog/properties/property-read-only.js +26 -0
  21. package/es/catalog/properties/property-string.js +48 -0
  22. package/es/catalog/properties/property-toggle.js +39 -0
  23. package/es/catalog/properties/shared-property-style.js +14 -0
  24. package/es/catalog/utils/exporter.js +1 -0
  25. package/es/catalog/utils/item-loader.js +18 -12
  26. package/es/class/hole.js +0 -2
  27. package/es/class/item.js +95 -69
  28. package/es/class/line.js +4 -8
  29. package/es/class/project.js +93 -80
  30. package/es/components/content.js +5 -93
  31. package/es/components/export.js +4 -6
  32. package/es/components/style/button.js +106 -0
  33. package/es/components/style/cancel-button.js +21 -0
  34. package/es/components/style/content-container.js +30 -0
  35. package/es/components/style/content-title.js +25 -0
  36. package/es/components/style/delete-button.js +24 -0
  37. package/es/components/style/export.js +28 -2
  38. package/es/components/style/form-block.js +20 -0
  39. package/es/components/style/form-color-input.js +26 -0
  40. package/es/components/style/form-label.js +22 -0
  41. package/es/components/style/form-number-input.js +11 -22
  42. package/es/components/style/form-number-input_2.js +200 -0
  43. package/es/components/style/form-select.js +19 -0
  44. package/es/components/style/form-slider.js +60 -0
  45. package/es/components/style/form-submit-button.js +25 -0
  46. package/es/components/style/form-text-input.js +69 -0
  47. package/es/components/viewer2d/group.js +5 -4
  48. package/es/components/viewer2d/item.js +155 -359
  49. package/es/components/viewer2d/layer.js +1 -1
  50. package/es/components/viewer2d/line.js +17 -47
  51. package/es/components/viewer2d/ruler.js +5 -3
  52. package/es/components/viewer2d/rulerDist.js +8 -7
  53. package/es/components/viewer2d/rulerX.js +4 -2
  54. package/es/components/viewer2d/rulerY.js +3 -0
  55. package/es/components/viewer2d/scene.js +4 -1
  56. package/es/components/viewer2d/state.js +1 -1
  57. package/es/components/viewer2d/utils.js +2 -2
  58. package/es/components/viewer2d/viewer2d.js +51 -84
  59. package/es/components/viewer3d/ruler-utils/scene3D.js +1 -1
  60. package/es/components/viewer3d/scene-creator.js +51 -15
  61. package/es/components/viewer3d/viewer3d-first-person.js +8 -0
  62. package/es/components/viewer3d/viewer3d.js +80 -88
  63. package/es/constants.js +6 -2
  64. package/es/devLiteRenderer.js +491 -150
  65. package/es/index.js +567 -25
  66. package/es/models.js +2 -1
  67. package/es/plugins/SVGLoader.js +1414 -0
  68. package/es/plugins/console-debugger.js +34 -0
  69. package/es/plugins/export.js +7 -0
  70. package/es/plugins/keyboard.js +110 -0
  71. package/es/reducers/project-reducer.js +3 -0
  72. package/es/styles/export.js +5 -0
  73. package/es/styles/tabs.css +40 -0
  74. package/es/utils/geometry.js +64 -106
  75. package/es/utils/helper.js +38 -1
  76. package/es/utils/isolate-event-handler.js +824 -605
  77. package/es/utils/molding.js +457 -11
  78. package/lib/AppContext.js +1 -1
  79. package/lib/LiteKitchenConfigurator.js +164 -107
  80. package/lib/LiteRenderer.js +160 -129
  81. package/lib/actions/export.js +35 -39
  82. package/lib/assets/gltf/door_sliding.bin +0 -0
  83. package/lib/assets/img/png/helper/video_preview_start.png +0 -0
  84. package/lib/assets/img/svg/bottombar/elevation.svg +12 -5
  85. package/lib/catalog/catalog.js +20 -4
  86. package/lib/catalog/holes/window-clear/planner-element.js +2 -2
  87. package/lib/catalog/properties/export.js +81 -0
  88. package/lib/catalog/properties/property-checkbox.js +76 -0
  89. package/lib/catalog/properties/property-color.js +47 -0
  90. package/lib/catalog/properties/property-enum.js +58 -0
  91. package/lib/catalog/properties/property-hidden.js +27 -0
  92. package/lib/catalog/properties/property-lenght-measure.js +108 -0
  93. package/lib/catalog/properties/property-length-measure.js +92 -0
  94. package/lib/catalog/properties/property-length-measure_hole.js +108 -0
  95. package/lib/catalog/properties/property-number.js +56 -0
  96. package/lib/catalog/properties/property-read-only.js +34 -0
  97. package/lib/catalog/properties/property-string.js +56 -0
  98. package/lib/catalog/properties/property-toggle.js +47 -0
  99. package/lib/catalog/properties/shared-property-style.js +21 -0
  100. package/lib/catalog/utils/exporter.js +1 -0
  101. package/lib/catalog/utils/item-loader.js +18 -12
  102. package/lib/class/hole.js +0 -2
  103. package/lib/class/item.js +93 -67
  104. package/lib/class/line.js +3 -7
  105. package/lib/class/project.js +93 -80
  106. package/lib/components/content.js +5 -93
  107. package/lib/components/export.js +6 -26
  108. package/lib/components/style/button.js +115 -0
  109. package/lib/components/style/cancel-button.js +29 -0
  110. package/lib/components/style/content-container.js +38 -0
  111. package/lib/components/style/content-title.js +35 -0
  112. package/lib/components/style/delete-button.js +34 -0
  113. package/lib/components/style/export.js +105 -1
  114. package/lib/components/style/form-block.js +28 -0
  115. package/lib/components/style/form-color-input.js +34 -0
  116. package/lib/components/style/form-label.js +30 -0
  117. package/lib/components/style/form-number-input.js +11 -22
  118. package/lib/components/style/form-number-input_2.js +209 -0
  119. package/lib/components/style/form-select.js +29 -0
  120. package/lib/components/style/form-slider.js +68 -0
  121. package/lib/components/style/form-submit-button.js +35 -0
  122. package/lib/components/style/form-text-input.js +78 -0
  123. package/lib/components/viewer2d/group.js +5 -4
  124. package/lib/components/viewer2d/item.js +152 -356
  125. package/lib/components/viewer2d/layer.js +1 -1
  126. package/lib/components/viewer2d/line.js +17 -47
  127. package/lib/components/viewer2d/ruler.js +4 -2
  128. package/lib/components/viewer2d/rulerDist.js +8 -7
  129. package/lib/components/viewer2d/rulerX.js +4 -2
  130. package/lib/components/viewer2d/rulerY.js +3 -0
  131. package/lib/components/viewer2d/scene.js +4 -1
  132. package/lib/components/viewer2d/state.js +1 -1
  133. package/lib/components/viewer2d/utils.js +2 -2
  134. package/lib/components/viewer2d/viewer2d.js +49 -81
  135. package/lib/components/viewer3d/ruler-utils/scene3D.js +1 -1
  136. package/lib/components/viewer3d/scene-creator.js +49 -13
  137. package/lib/components/viewer3d/viewer3d-first-person.js +8 -0
  138. package/lib/components/viewer3d/viewer3d.js +77 -84
  139. package/lib/constants.js +11 -7
  140. package/lib/devLiteRenderer.js +489 -148
  141. package/lib/index.js +567 -25
  142. package/lib/models.js +2 -1
  143. package/lib/plugins/SVGLoader.js +1419 -0
  144. package/lib/plugins/console-debugger.js +42 -0
  145. package/lib/plugins/export.js +25 -0
  146. package/lib/plugins/keyboard.js +117 -0
  147. package/lib/reducers/project-reducer.js +3 -0
  148. package/lib/styles/export.js +13 -0
  149. package/lib/styles/tabs.css +40 -0
  150. package/lib/utils/geometry.js +64 -106
  151. package/lib/utils/helper.js +40 -1
  152. package/lib/utils/isolate-event-handler.js +824 -604
  153. package/lib/utils/molding.js +458 -9
  154. package/package.json +21 -16
  155. package/es/mocks/appliancePayload.json +0 -27
  156. package/es/mocks/cabinetPayload.json +0 -1914
  157. package/es/mocks/cabinetPayload2.json +0 -76
  158. package/es/mocks/dataBundle2.json +0 -4
  159. package/es/mocks/distancePayload.json +0 -6
  160. package/es/mocks/doorStylePayload2.json +0 -84
  161. package/es/mocks/furnishingPayload.json +0 -23
  162. package/es/mocks/itemCDSPayload.json +0 -27
  163. package/es/mocks/lightingPayload.json +0 -23
  164. package/es/mocks/mockProps.json +0 -43
  165. package/es/mocks/mockProps2.json +0 -9
  166. package/es/mocks/moldingPayload.json +0 -19
  167. package/es/mocks/projectItemsCatalog.json +0 -133
  168. package/es/mocks/rectangleShape.json +0 -238
  169. package/es/mocks/replaceCabinetPayload.json +0 -81
  170. package/es/mocks/roomShapePayload.json +0 -5
  171. package/es/useAppContext.js +0 -8
  172. package/lib/mocks/appliancePayload.json +0 -27
  173. package/lib/mocks/cabinetPayload.json +0 -1914
  174. package/lib/mocks/cabinetPayload2.json +0 -76
  175. package/lib/mocks/dataBundle2.json +0 -4
  176. package/lib/mocks/distancePayload.json +0 -6
  177. package/lib/mocks/doorStylePayload2.json +0 -84
  178. package/lib/mocks/furnishingPayload.json +0 -23
  179. package/lib/mocks/itemCDSPayload.json +0 -27
  180. package/lib/mocks/lightingPayload.json +0 -23
  181. package/lib/mocks/mockProps.json +0 -43
  182. package/lib/mocks/mockProps2.json +0 -9
  183. package/lib/mocks/moldingPayload.json +0 -19
  184. package/lib/mocks/projectItemsCatalog.json +0 -133
  185. package/lib/mocks/rectangleShape.json +0 -238
  186. package/lib/mocks/replaceCabinetPayload.json +0 -81
  187. package/lib/mocks/roomShapePayload.json +0 -5
  188. package/lib/useAppContext.js +0 -16
@@ -0,0 +1,34 @@
1
+ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
3
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
4
+ import actions from "../actions/export";
5
+ export default function consoleDebugger() {
6
+ return function (store, stateExtractor) {
7
+ window.KitchenConfigurator = _objectSpread(_objectSpread({}, actions), {}, {
8
+ getStore: function getStore() {
9
+ return store;
10
+ },
11
+ getState: function getState() {
12
+ return stateExtractor(store.getState());
13
+ },
14
+ "do": function _do(actions) {
15
+ var delay = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 300;
16
+ actions = actions.reverse();
17
+ var dispatch = store.dispatch;
18
+ var _dispatchAction = function dispatchAction() {
19
+ console.info("There are other ".concat(actions.length, " actions on stack"));
20
+ if (actions.length === 0) return;
21
+ dispatch(actions.pop());
22
+ if (actions.length === 0) return;
23
+ setTimeout(_dispatchAction, delay);
24
+ };
25
+ setTimeout(_dispatchAction, 0);
26
+ }
27
+ });
28
+ console.groupCollapsed('KitchenConfigurator');
29
+ console.info('KitchenConfigurator is ready');
30
+ console.info('console.log(KitchenConfigurator)');
31
+ console.log(window.KitchenConfigurator);
32
+ console.groupEnd();
33
+ };
34
+ }
@@ -0,0 +1,7 @@
1
+ import Keyboard from "./keyboard";
2
+ import ConsoleDebugger from "./console-debugger";
3
+ export { Keyboard, ConsoleDebugger };
4
+ export default {
5
+ Keyboard: Keyboard,
6
+ ConsoleDebugger: ConsoleDebugger
7
+ };
@@ -0,0 +1,110 @@
1
+ import { MODE_IDLE, MODE_3D_FIRST_PERSON, MODE_3D_VIEW, MODE_SNAPPING, KEYBOARD_BUTTON_CODE, MODE_IDLE_3D, MODE_ROTATING_ITEM_3D, MODE_DRAGGING_ITEM_3D, MODE_DRAWING_ITEM_3D, MODE_DRAWING_ITEM } from "../constants";
2
+ import { rollback, undo, redo, recreate, uncreate, remove, toggleSnap, copyProperties, pasteProperties, shift2doff, shift2don } from "../actions/project-actions";
3
+ export default function keyboard() {
4
+ return function (store, stateExtractor) {
5
+ window.addEventListener('keydown', function (event) {
6
+ var state = stateExtractor(store.getState());
7
+ var mode = state.get('mode');
8
+ switch (event.keyCode) {
9
+ // case KEYBOARD_BUTTON_CODE.BACKSPACE:
10
+ // case KEYBOARD_BUTTON_CODE.DELETE: {
11
+ // if (
12
+ // [
13
+ // MODE_IDLE,
14
+ // MODE_3D_FIRST_PERSON,
15
+ // MODE_3D_VIEW,
16
+ // MODE_IDLE_3D,
17
+ // MODE_ROTATING_ITEM_3D,
18
+ // MODE_DRAGGING_ITEM_3D
19
+ // ].includes(mode)
20
+ // )
21
+ // store.dispatch(remove());
22
+ // break;
23
+ // }
24
+ case KEYBOARD_BUTTON_CODE.ESC:
25
+ {
26
+ store.dispatch(rollback());
27
+ break;
28
+ }
29
+ case KEYBOARD_BUTTON_CODE.Z:
30
+ {
31
+ if (event.getModifierState('Control') || event.getModifierState('Meta')) store.dispatch(undo());
32
+ break;
33
+ }
34
+ case KEYBOARD_BUTTON_CODE.Q:
35
+ {
36
+ if (event.getModifierState('Control') || event.getModifierState('Meta')) store.dispatch(redo());
37
+ break;
38
+ }
39
+ case KEYBOARD_BUTTON_CODE.ALT:
40
+ {
41
+ if (MODE_SNAPPING.includes(mode)) store.dispatch(toggleSnap(state.snapMask.merge({
42
+ SNAP_POINT: false,
43
+ SNAP_LINE: false,
44
+ SNAP_SEGMENT: false,
45
+ SNAP_GRID: false,
46
+ SNAP_GUIDE: false,
47
+ tempSnapConfiguartion: state.snapMask.toJS()
48
+ })));
49
+ break;
50
+ }
51
+ case KEYBOARD_BUTTON_CODE.C:
52
+ {
53
+ var selectedLayer = state.getIn(['scene', 'selectedLayer']);
54
+ var selected = state.getIn(['scene', 'layers', selectedLayer, 'selected']);
55
+ if ((mode === MODE_IDLE || mode === MODE_3D_VIEW) && (selected.holes.size || selected.areas.size || selected.items.size || selected.lines.size)) {
56
+ if (selected.holes.size) {
57
+ var hole = state.getIn(['scene', 'layers', selectedLayer, 'holes', selected.holes.get(0)]);
58
+ store.dispatch(copyProperties(hole.get('properties')));
59
+ } else if (selected.areas.size) {
60
+ var area = state.getIn(['scene', 'layers', selectedLayer, 'areas', selected.areas.get(0)]);
61
+ store.dispatch(copyProperties(area.properties));
62
+ } else if (selected.items.size) {
63
+ var item = state.getIn(['scene', 'layers', selectedLayer, 'items', selected.items.get(0)]);
64
+ store.dispatch(copyProperties(item.properties));
65
+ } else if (selected.lines.size) {
66
+ var line = state.getIn(['scene', 'layers', selectedLayer, 'lines', selected.lines.get(0)]);
67
+ store.dispatch(copyProperties(line.properties));
68
+ }
69
+ }
70
+ break;
71
+ }
72
+ case KEYBOARD_BUTTON_CODE.V:
73
+ {
74
+ store.dispatch(pasteProperties());
75
+ break;
76
+ }
77
+ case KEYBOARD_BUTTON_CODE.SHIFT:
78
+ {
79
+ if (['TEXTAREA', 'INPUT'].includes(document.activeElement.tagName) === false) {
80
+ if ([MODE_DRAWING_ITEM_3D, MODE_IDLE_3D].includes(mode)) store.dispatch(recreate());else if ([MODE_DRAWING_ITEM, MODE_IDLE].includes(mode)) store.dispatch(shift2doff());
81
+ }
82
+ break;
83
+ }
84
+ }
85
+ });
86
+ window.addEventListener('keyup', function (event) {
87
+ var state = stateExtractor(store.getState());
88
+ var mode = state.get('mode');
89
+ switch (event.keyCode) {
90
+ case KEYBOARD_BUTTON_CODE.ALT:
91
+ {
92
+ if (MODE_SNAPPING.includes(mode)) store.dispatch(toggleSnap(state.snapMask.merge(state.snapMask.get('tempSnapConfiguartion'))));
93
+ break;
94
+ }
95
+ case KEYBOARD_BUTTON_CODE.CTRL:
96
+ {
97
+ // store.dispatch(setAlterateState());
98
+ break;
99
+ }
100
+ case KEYBOARD_BUTTON_CODE.SHIFT:
101
+ {
102
+ if (['TEXTAREA', 'INPUT'].includes(document.activeElement.tagName) === false) {
103
+ if ([MODE_DRAWING_ITEM_3D, MODE_IDLE_3D].includes(mode)) store.dispatch(uncreate());else if ([MODE_DRAWING_ITEM, MODE_IDLE].includes(mode)) store.dispatch(shift2don());
104
+ }
105
+ break;
106
+ }
107
+ }
108
+ });
109
+ };
110
+ }
@@ -126,6 +126,9 @@ export default function (state, action) {
126
126
  case SET_IS_CABINET_DRAWING:
127
127
  return Project.setIsCabinetDrawing(state, action.isCabinetDrawing).updatedState;
128
128
  case CREATE_ROOM_WITH_SHAPE:
129
+ state = state.merge({
130
+ sceneHistory: history.historyPush(state.sceneHistory, state.scene)
131
+ });
129
132
  return Project.createRoomWithShape(state, action.roomShapeType, action.width, action.height, action.doorStyle).updatedState;
130
133
  default:
131
134
  return state;
@@ -0,0 +1,5 @@
1
+ import * as TabsStyle from "./tabs.css";
2
+ export { TabsStyle };
3
+ export default {
4
+ TabsStyle: TabsStyle
5
+ };
@@ -0,0 +1,40 @@
1
+ .react-tabs__tab-list {
2
+ border-bottom: 1px solid #aaa;
3
+ margin: 0 0 10px;
4
+ padding: 0;
5
+ }
6
+
7
+ .react-tabs__tab {
8
+ display: inline-block;
9
+ border: 1px solid transparent;
10
+ border-bottom: none;
11
+ bottom: -1px;
12
+ position: relative;
13
+ list-style: none;
14
+ padding: 6px 12px;
15
+ cursor: pointer;
16
+ }
17
+
18
+ .react-tabs__tab--selected,
19
+ .react-tabs__tab:focus {
20
+ border-color: #aaa;
21
+ color: #1ca6fc;
22
+ outline: none;
23
+ }
24
+
25
+ .react-tabs__tab-panel {
26
+ display: none;
27
+ }
28
+
29
+ .react-tabs__tab-panel--selected {
30
+ display: block;
31
+ }
32
+
33
+ @keyframes spin {
34
+ from {
35
+ transform: rotate(0deg);
36
+ }
37
+ to {
38
+ transform: rotate(360deg);
39
+ }
40
+ }
@@ -1873,7 +1873,7 @@ export function getAllHoleRect(scene, val) {
1873
1873
  layer.lines.forEach(function (line) {
1874
1874
  line.holes.forEach(function (holeID) {
1875
1875
  var hole = layer.holes.get(holeID);
1876
- holes.push(hole);
1876
+ if (hole) holes.push(hole);
1877
1877
  });
1878
1878
  });
1879
1879
  var i = 0;
@@ -2105,7 +2105,7 @@ export function relationshipOfTwoOverlappedLines2(srcLine, destLine) {
2105
2105
  lineSX = _sort4[0],
2106
2106
  lineDX = _sort4[1];
2107
2107
  var isReversedSrcLineIdx = false;
2108
- if (lineSX[0].x === line1[0].x && lineSX[0].y === line1[0].y) isReversedSrcLineIdx = true;
2108
+ if (lineSX[0].x === line0[0].x && lineSX[0].y === line0[0].y) isReversedSrcLineIdx = false;else if (lineSX[0].x === line1[0].x && lineSX[0].y === line1[0].y) isReversedSrcLineIdx = true;
2109
2109
  var compare0 = comparator(lineSX[0], lineDX[0]);
2110
2110
  var compare1 = comparator(lineSX[1], lineDX[0]);
2111
2111
  var compare2 = comparator(lineSX[1], lineDX[1]);
@@ -2450,40 +2450,20 @@ function getCalcRectFromItem2(itemInfo) {
2450
2450
  var w = itemInfo.size.width / 2;
2451
2451
  var h = itemInfo.size.height / 2;
2452
2452
  var rotRad = itemInfo.rotRad;
2453
- var mh = 3 * h / 4;
2454
- var mx = x - w * Math.cos(rotRad) - mh * Math.sin(rotRad);
2455
- var my = y - w * Math.sin(rotRad) + mh * Math.cos(rotRad);
2456
- var m2x = x + w * Math.cos(rotRad) - mh * Math.sin(rotRad);
2457
- var m2y = y + w * Math.sin(rotRad) + mh * Math.cos(rotRad);
2453
+ var mx = x - w * Math.cos(rotRad);
2454
+ var my = y - w * Math.sin(rotRad);
2455
+ var m2x = x + w * Math.cos(rotRad);
2456
+ var m2y = y + w * Math.sin(rotRad);
2458
2457
  var m3x = x - h * Math.sin(rotRad);
2459
2458
  var m3y = y + h * Math.cos(rotRad);
2460
2459
  var m1x = x + h * Math.sin(rotRad);
2461
2460
  var m1y = y - h * Math.cos(rotRad);
2462
- var x0 = mx + h * Math.sin(rotRad);
2463
- var y0 = my - h * Math.cos(rotRad);
2464
- var x3 = mx * 2 - x0;
2465
- var y3 = my * 2 - y0;
2466
- var x1 = x * 2 - x3;
2467
- var y1 = y * 2 - y3;
2468
- var x2 = x * 2 - x0;
2469
- var y2 = y * 2 - y0;
2470
2461
  return {
2471
2462
  rectCenterPoint: [[point(mx, my), 180], [point(m1x, m1y), -90], [point(m2x, m2y), 0], [point(m3x, m3y), 90]]
2472
2463
  };
2473
2464
  }
2474
- function getAllItems2(layer, catalog) {
2465
+ function getAllItems2(curItem, layer) {
2475
2466
  var rectarray = [];
2476
- var currentItem;
2477
- var selectedItem;
2478
- if (layer.selected.items.size > 0) {
2479
- selectedItem = layer.getIn(['items', layer.selected.items.get(0)]);
2480
- var catid = selectedItem.type;
2481
- var cat = findCatalogElement(catalog, catid);
2482
- currentItem = {
2483
- selectedItem: selectedItem,
2484
- cat: cat
2485
- };
2486
- }
2487
2467
  layer.items.forEach(function (item) {
2488
2468
  var val = {
2489
2469
  pos: {
@@ -2492,27 +2472,21 @@ function getAllItems2(layer, catalog) {
2492
2472
  },
2493
2473
  rotRad: item.rotation / 180 * Math.PI
2494
2474
  };
2495
- var catid = item.type;
2496
- var cat = findCatalogElement(catalog, catid);
2497
- var width = convert(item.properties.getIn(['width', '_length'])).from('in').to('cm');
2498
- var height = convert(item.properties.getIn(['depth', '_length'])).from('in').to('cm');
2499
- // let width = cat.info.sizeinfo.width;
2500
- // let height = cat.info.sizeinfo.depth;
2475
+ var width = convert(item.properties.getIn(['width', '_length'])).from(curItem.get('properties').get('width').get('_unit')).to('cm');
2476
+ var height = convert(item.properties.getIn(['depth', '_length'])).from(curItem.get('properties').get('depth').get('_unit')).to('cm');
2501
2477
  val.size = {
2502
2478
  width: width,
2503
2479
  height: height
2504
2480
  };
2505
- var otherItem = {
2506
- item: item,
2507
- cat: cat
2508
- };
2509
-
2510
- // if (!GeometryUtils.needSnap(currentItem, otherItem)) {
2511
- // return;
2512
- // }
2513
-
2514
- if (!item.selected) {
2515
- var detectObjectsAtSameAltitudeFlag = layoutpos === 'Base' ? item.properties.getIn(['altitude', '_length']) <= altitude + tempHeight.get('_length') : item.properties.getIn(['altitude', '_length']) + item.properties.getIn(['height', '_length']) >= altitude;
2481
+ var curItemTall = convert(curItem.get('properties').get('height').get('_length')).from(curItem.get('properties').get('height').get('_unit')).to('cm');
2482
+ var zMinCurItem = convert(curItem.get('properties').get('altitude').get('_length')).from(curItem.get('properties').get('altitude').get('_unit')).to('cm');
2483
+ var zMaxCurItem = zMinCurItem + curItemTall;
2484
+ if (curItem.get('id') !== item.id) {
2485
+ var detectObjectsAtSameAltitudeFlag = false;
2486
+ var itemTall = convert(item.properties.getIn(['height', '_length'])).from(item.get('properties').get('height').get('_unit')).to('cm');
2487
+ var zMinItem = convert(item.properties.getIn(['altitude', '_length'])).from(item.get('properties').get('altitude').get('_unit')).to('cm');
2488
+ var zMaxItem = zMinItem + itemTall;
2489
+ if (zMinItem >= zMinCurItem && zMinItem < zMaxCurItem || zMinCurItem >= zMinItem && zMinCurItem < zMaxItem) detectObjectsAtSameAltitudeFlag = true;
2516
2490
  if (detectObjectsAtSameAltitudeFlag) {
2517
2491
  var x = val.pos.x;
2518
2492
  var y = val.pos.y;
@@ -2544,68 +2518,25 @@ function getAllItems2(layer, catalog) {
2544
2518
  }
2545
2519
  }
2546
2520
  });
2547
-
2548
- // layer.holes.forEach(hole => {
2549
- // let val = {pos:{x:hole.x, y:hole.y}, rotRad:hole.rotation};
2550
- // let catid = hole.type;
2551
- // let cat = catalog.elements[catid];
2552
- // let width = hole.properties.getIn(['width']).getIn(['length']);
2553
- // let height = hole.properties.getIn(['height']).getIn(['length']);
2554
- // val.size = {width, height};
2555
- // let otherItem = {
2556
- // hole,
2557
- // cat
2558
- // }
2559
-
2560
- // // if (!GeometryUtils.needSnap(currentItem, otherItem)) {
2561
- // // return;
2562
- // // }
2563
-
2564
- // if (!hole.selected) {
2565
- // let x = val.pos.x;
2566
- // let y = val.pos.y;
2567
- // let rotRad = val.rotRad;
2568
- // let w = val.size.width / 2;
2569
- // let mx = x - w * Math.cos(rotRad);
2570
- // let my = y - w * Math.sin(rotRad);
2571
- // let kx = x + w * Math.cos(rotRad);
2572
- // let ky = y + w * Math.sin(rotRad);
2573
- // let x0 = mx - 10 * Math.sin(rotRad);
2574
- // let y0 = my + 10 * Math.cos(rotRad);
2575
- // let x3 = mx + 10 * Math.sin(rotRad);
2576
- // let y3 = my - 10 * Math.cos(rotRad);
2577
- // let x1 = kx - 10 * Math.sin(rotRad);
2578
- // let y1 = ky + 10 * Math.cos(rotRad);
2579
- // let x2 = kx + 10 * Math.sin(rotRad);
2580
- // let y2 = ky - 10 * Math.cos(rotRad);
2581
- // rectarray.push({'rect':[point(x0,y0), point(x1,y1) ,point(x0,y0), point(x1,y1)]});
2582
- // rectarray.push({'rect':[point(x1,y1), point(x2,y2), point(x1,y1), point(x2,y2)]}); // right
2583
- // rectarray.push({'rect':[point(x2,y2), point(x3,y3), point(x2,y2), point(x3,y3)]}); // front
2584
- // rectarray.push({'rect':[point(x3,y3), point(x0,y0), point(x3,y3), point(x0,y0)]}); // left
2585
- // }
2586
- // });
2587
2521
  return {
2588
2522
  others: rectarray
2589
2523
  };
2590
2524
  }
2591
- export function calcDistancesFromItemToWalls(attributesFormData, layer, catalog) {
2592
- if (isEmpty(attributesFormData)) return [];
2593
- var x = attributesFormData.get('x');
2594
- var y = attributesFormData.get('y');
2595
- var rotRad = attributesFormData.get('rotation') / 180 * Math.PI;
2525
+ export function calcDistancesFromItemToWalls(curItem, layer) {
2526
+ if (isEmpty(curItem)) return [];
2527
+ var x = curItem.get('x');
2528
+ var y = curItem.get('y');
2529
+ var rotRad = curItem.get('rotation') / 180 * Math.PI;
2596
2530
  var width, height;
2597
- if (attributesFormData.get('properties').get('width') || attributesFormData.get('properties').get('depth')) {
2598
- width = convert(attributesFormData.get('properties').get('width').get('_length')).from(attributesFormData.get('properties').get('width').get('_unit')).to('cm');
2599
- height = convert(attributesFormData.get('properties').get('depth').get('_length')).from(attributesFormData.get('properties').get('depth').get('_unit')).to('cm');
2531
+ if (curItem.get('properties').get('width') || curItem.get('properties').get('depth')) {
2532
+ width = convert(curItem.get('properties').get('width').get('_length')).from(curItem.get('properties').get('width').get('_unit')).to('cm');
2533
+ height = convert(curItem.get('properties').get('depth').get('_length')).from(curItem.get('properties').get('depth').get('_unit')).to('cm');
2600
2534
  } else {
2601
- width = convert(attributesFormData.info.sizeinfo.width).from('in').to('cm');
2602
- height = convert(attributesFormData.info.sizeinfo.depth).from('in').to('cm');
2535
+ width = convert(curItem.info.sizeinfo.width).from('in').to('cm');
2536
+ height = convert(curItem.info.sizeinfo.depth).from('in').to('cm');
2603
2537
  }
2604
- var center_h = 3 * height / 8;
2605
- var center_x = x;
2538
+ var center_x = x; // middle of front line of cabinet rect
2606
2539
  var center_y = y;
2607
- var center_x1 = x - center_h * Math.sin(rotRad);
2608
- var center_y1 = y + center_h * Math.cos(rotRad);
2609
2540
  var PointArray = [];
2610
2541
  var itemInfo = {
2611
2542
  pos: {
@@ -2619,24 +2550,37 @@ export function calcDistancesFromItemToWalls(attributesFormData, layer, catalog)
2619
2550
  height: height
2620
2551
  };
2621
2552
  var curiteminfo = getCalcRectFromItem2(itemInfo);
2622
- var allItemRect = getAllItems2(layer, catalog);
2553
+ var allItemRect = getAllItems2(curItem, layer);
2623
2554
  var allLines = getAllLines(layer);
2624
2555
  var allLineRects = buildRectFromLines(layer, allLines);
2625
2556
  var allRect = allLineRects.concat(allItemRect.others);
2626
- curiteminfo.rectCenterPoint.forEach(function (centerpoint) {
2627
- var comparelength = [];
2557
+ var _loop = function _loop(i) {
2558
+ // [rectCenterPoint] has four middle points of cabinet rect edges
2559
+ var centerpoint = curiteminfo.rectCenterPoint[i];
2560
+ var comparelength = []; // distance array from rectCenterPoint[i] to other lines(walls, other cabinet rect edges)
2628
2561
  var a;
2629
- var RectLineFuction;
2630
- if (centerpoint[1] === 180 || centerpoint[1] === 0) RectLineFuction = linePassingThroughTwoPoints(centerpoint[0].x, centerpoint[0].y, center_x1, center_y1);else RectLineFuction = linePassingThroughTwoPoints(centerpoint[0].x, centerpoint[0].y, center_x, center_y);
2562
+ var RectLineFuction = linePassingThroughTwoPoints(centerpoint[0].x, centerpoint[0].y, center_x, center_y); // normal line of cabinet rect edge
2563
+
2631
2564
  allRect.forEach(function (linerect) {
2565
+ // calc distance to all other lines
2632
2566
  var p0 = clone_point(linerect.rect[2]);
2633
2567
  var p1 = clone_point(linerect.rect[3]);
2634
- var lineFunction = {};
2568
+ var lineFunction = {}; // other line function
2635
2569
  if (p0.x !== p1.x || p0.y !== p1.y) lineFunction = linePassingThroughTwoPoints(p0.x, p0.y, p1.x, p1.y);
2570
+ // intersection between normal line and other line
2636
2571
  var coordinatePoint = twoLinesIntersection(lineFunction.a, lineFunction.b, lineFunction.c, RectLineFuction.a, RectLineFuction.b, RectLineFuction.c);
2637
2572
  if (coordinatePoint !== undefined) {
2638
- if (pointsDistance(p0.x, p0.y, p1.x, p1.y) > pointsDistance(p0.x, p0.y, coordinatePoint.x, coordinatePoint.y) && pointsDistance(p0.x, p0.y, p1.x, p1.y) > pointsDistance(p1.x, p1.y, coordinatePoint.x, coordinatePoint.y)) {
2639
- if (pointsDistance(coordinatePoint.x, coordinatePoint.y, center_x, center_y) > pointsDistance(centerpoint[0].x, centerpoint[0].y, coordinatePoint.x, coordinatePoint.y)) {
2573
+ if (
2574
+ // intersection point is on the other line
2575
+ pointsDistance(p0.x, p0.y, p1.x, p1.y) > pointsDistance(p0.x, p0.y, coordinatePoint.x, coordinatePoint.y) && pointsDistance(p0.x, p0.y, p1.x, p1.y) > pointsDistance(p1.x, p1.y, coordinatePoint.x, coordinatePoint.y)) {
2576
+ // check the intersection point is outside direction of edge
2577
+ var isOutside = true;
2578
+ for (var j = 0; j < curiteminfo.rectCenterPoint.length; j++) {
2579
+ if (j === i) continue;
2580
+ var otherCenterPoint = curiteminfo.rectCenterPoint[j];
2581
+ if (isPointOnLineSegment(centerpoint[0].x, centerpoint[0].y, coordinatePoint.x, coordinatePoint.y, otherCenterPoint[0].x, otherCenterPoint[0].y)) isOutside = false;
2582
+ }
2583
+ if (isOutside && pointsDistance(coordinatePoint.x, coordinatePoint.y, center_x, center_y) > pointsDistance(centerpoint[0].x, centerpoint[0].y, coordinatePoint.x, coordinatePoint.y)) {
2640
2584
  comparelength.push(pointsDistance(centerpoint[0].x, centerpoint[0].y, coordinatePoint.x, coordinatePoint.y));
2641
2585
  a = Math.min.apply(null, comparelength);
2642
2586
  }
@@ -2644,7 +2588,21 @@ export function calcDistancesFromItemToWalls(attributesFormData, layer, catalog)
2644
2588
  }
2645
2589
  });
2646
2590
  PointArray.push([a, centerpoint[1]]);
2591
+ };
2592
+ for (var i = 0; i < curiteminfo.rectCenterPoint.length; i++) {
2593
+ _loop(i);
2594
+ }
2595
+ PointArray.forEach(function (pointElement, index) {
2596
+ if (pointElement[0] == undefined) PointArray[index][0] = 0;
2647
2597
  });
2598
+ var cnt = 0;
2599
+ PointArray.forEach(function (pointElement) {
2600
+ if (pointElement[0] == 0) cnt++;
2601
+ });
2602
+ if (cnt == 4 || cnt == 3) {
2603
+ PointArray[0][0] = 100;
2604
+ PointArray[1][0] = 100;
2605
+ }
2648
2606
  return {
2649
2607
  PointArray: PointArray
2650
2608
  };
@@ -5,10 +5,11 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
5
5
  import { HDRCubeTextureLoader } from 'three/examples/jsm/loaders/HDRCubeTextureLoader.js';
6
6
  import { ANIMATE_OBJECT_OPEN_DOOR_ROTATION_UNIT, ANIMATE_STEP_MAX, DECIMAL_PLACES_2, HDR_URLS, MAX_ZOOM_IN_SCALE, MODE_ELEVATION_VIEW, ZOOM_VARIABLE } from "../constants";
7
7
  import * as Three from 'three';
8
- import { returnReplaceableDeepSearchType } from "./../components/viewer2d/utils";
8
+ import { isWarningItem, returnReplaceableDeepSearchType } from "./../components/viewer2d/utils";
9
9
  import { convert } from "./convert-units-lite";
10
10
  import { formatNumber } from "./math";
11
11
  import AWS from 'aws-sdk';
12
+ import { GeometryUtils, MoldingUtils } from "./export";
12
13
  var s3 = new AWS.S3({
13
14
  accessKeyId: process.env.REACT_APP_AWS_ID,
14
15
  secretAccessKey: process.env.REACT_APP_AWS_SECRET
@@ -396,4 +397,40 @@ export function centering2D(state) {
396
397
  });
397
398
  if (viewer2DActions) updateViwer2D(viewer, viewer2DActions);
398
399
  return state;
400
+ }
401
+ export function updatePayloadOfInternalEvent(currentObject, layer, catalog) {
402
+ var pointArray = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;
403
+ if (isEmpty(currentObject)) return null;
404
+ var updatedPayload = currentObject.toJS();
405
+ if (isEmpty(layer) || isEmpty(catalog)) return updatedPayload;
406
+ if ((currentObject === null || currentObject === void 0 ? void 0 : currentObject.prototype) === 'lines') {
407
+ // caculating length of selected line//
408
+ var v_a = layer.vertices.get(currentObject.vertices.get(0));
409
+ var v_b = layer.vertices.get(currentObject.vertices.get(1));
410
+ var distance = GeometryUtils.pointsDistance(v_a.x, v_a.y, v_b.x, v_b.y);
411
+ var _length = convert(distance).from('cm').to(layer.unit);
412
+ updatedPayload.length = _length;
413
+ //////////////////////////////////////
414
+ } else if ((currentObject === null || currentObject === void 0 ? void 0 : currentObject.prototype) === 'items') {
415
+ var _catalog$elements$cur;
416
+ // check this cabinet has warning box
417
+ updatedPayload.isWarning = isWarningItem(currentObject);
418
+ // check this item is available molding
419
+ updatedPayload.isMoldingAvailable = MoldingUtils.isEnableItemForMolding(layer, currentObject);
420
+ // check this item is snapped to wall
421
+ updatedPayload.isAttachedWall = MoldingUtils.isAttachedWall(layer, currentObject);
422
+ // update distArray
423
+ if (pointArray) updatedPayload.distArray = pointArray;
424
+
425
+ // update sku_number using sku_array
426
+ var currentDoorColorId = currentObject.getIn(['doorStyle', 'id']);
427
+ var skuArray = catalog === null || catalog === void 0 || (_catalog$elements$cur = catalog.elements[currentObject.get('name')]) === null || _catalog$elements$cur === void 0 || (_catalog$elements$cur = _catalog$elements$cur.obj) === null || _catalog$elements$cur === void 0 ? void 0 : _catalog$elements$cur.skuArray;
428
+ var correctSKU = skuArray === null || skuArray === void 0 ? void 0 : skuArray.find(function (sku) {
429
+ return sku.door_color_id === currentDoorColorId;
430
+ });
431
+ if (correctSKU) {
432
+ updatedPayload.sku_number = correctSKU.sku;
433
+ }
434
+ }
435
+ return updatedPayload;
399
436
  }