kitchen-simulator 11.28.0 → 11.28.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 (85) hide show
  1. package/es/actions/items-actions.js +12 -1
  2. package/es/assets/img/svg/3d_item_move.svg +9 -105
  3. package/es/assets/img/svg/3d_item_rotation.svg +3 -75
  4. package/es/assets/img/svg/accessories.svg +4 -4
  5. package/es/assets/img/svg/bottombar/elevation-back.svg +6 -6
  6. package/es/assets/img/svg/bottombar/elevation-front.svg +6 -6
  7. package/es/assets/img/svg/bottombar/elevation-left.svg +6 -6
  8. package/es/assets/img/svg/bottombar/elevation-right.svg +7 -7
  9. package/es/assets/img/svg/bottombar/elevation.svg +13 -13
  10. package/es/assets/img/svg/delete.svg +6 -2
  11. package/es/assets/img/svg/detail.svg +77 -77
  12. package/es/assets/img/svg/duplicate.svg +6 -6
  13. package/es/assets/img/svg/filtersActive.svg +19 -19
  14. package/es/assets/img/svg/invert.svg +12 -127
  15. package/es/assets/img/svg/menubar/login.svg +84 -84
  16. package/es/assets/img/svg/menubar/my_projects.svg +85 -85
  17. package/es/assets/img/svg/menubar/new_project.svg +110 -110
  18. package/es/assets/img/svg/menubar/save_project.svg +84 -84
  19. package/es/assets/img/svg/options.svg +3 -3
  20. package/es/assets/img/svg/positioning.svg +3 -3
  21. package/es/assets/img/svg/toggleFilters.svg +19 -19
  22. package/es/assets/img/svg/toolbar/shopping-cart.svg +13 -13
  23. package/es/assets/img/svg/wizardstep/detail_view.svg +87 -87
  24. package/es/assets/img/svg/wizardstep/tile_view.svg +95 -95
  25. package/es/catalog/utils/exporter.js +4 -0
  26. package/es/catalog/utils/item-loader.js +18 -8
  27. package/es/class/item.js +32 -2
  28. package/es/components/viewer2d/item.js +139 -125
  29. package/es/components/viewer2d/viewer2d.js +5 -2
  30. package/es/components/viewer3d/camera-controls-module/camera-controls.module.js +556 -556
  31. package/es/components/viewer3d/scene-creator.js +18 -0
  32. package/es/components/viewer3d/viewer3d.js +137 -49
  33. package/es/constants.js +4 -0
  34. package/es/events/external/handleExternalEvent.js +36 -33
  35. package/es/events/external/handlers.elementOps.js +8 -0
  36. package/es/mappings/external-events/mapExternalEventPayload.js +4 -4
  37. package/es/mappings/external-events/mappers/addItemMapper.js +9 -9
  38. package/es/models.js +4 -0
  39. package/es/reducers/items-reducer.js +8 -1
  40. package/es/shared/domain/asset/sanitize-asset-url.js +5 -5
  41. package/es/shared/domain/cabinet-mirror.js +7 -0
  42. package/es/utils/skinPanelEngine.js +14 -14
  43. package/lib/actions/items-actions.js +12 -0
  44. package/lib/assets/img/svg/3d_item_move.svg +9 -105
  45. package/lib/assets/img/svg/3d_item_rotation.svg +3 -75
  46. package/lib/assets/img/svg/accessories.svg +4 -4
  47. package/lib/assets/img/svg/bottombar/elevation-back.svg +6 -6
  48. package/lib/assets/img/svg/bottombar/elevation-front.svg +6 -6
  49. package/lib/assets/img/svg/bottombar/elevation-left.svg +6 -6
  50. package/lib/assets/img/svg/bottombar/elevation-right.svg +7 -7
  51. package/lib/assets/img/svg/bottombar/elevation.svg +13 -13
  52. package/lib/assets/img/svg/delete.svg +6 -2
  53. package/lib/assets/img/svg/detail.svg +77 -77
  54. package/lib/assets/img/svg/duplicate.svg +6 -6
  55. package/lib/assets/img/svg/filtersActive.svg +19 -19
  56. package/lib/assets/img/svg/invert.svg +12 -127
  57. package/lib/assets/img/svg/menubar/login.svg +84 -84
  58. package/lib/assets/img/svg/menubar/my_projects.svg +85 -85
  59. package/lib/assets/img/svg/menubar/new_project.svg +110 -110
  60. package/lib/assets/img/svg/menubar/save_project.svg +84 -84
  61. package/lib/assets/img/svg/options.svg +3 -3
  62. package/lib/assets/img/svg/positioning.svg +3 -3
  63. package/lib/assets/img/svg/toggleFilters.svg +19 -19
  64. package/lib/assets/img/svg/toolbar/shopping-cart.svg +13 -13
  65. package/lib/assets/img/svg/wizardstep/detail_view.svg +87 -87
  66. package/lib/assets/img/svg/wizardstep/tile_view.svg +95 -95
  67. package/lib/catalog/utils/exporter.js +4 -0
  68. package/lib/catalog/utils/item-loader.js +18 -8
  69. package/lib/class/item.js +31 -1
  70. package/lib/components/viewer2d/item.js +138 -124
  71. package/lib/components/viewer2d/viewer2d.js +5 -2
  72. package/lib/components/viewer3d/camera-controls-module/camera-controls.module.js +556 -556
  73. package/lib/components/viewer3d/scene-creator.js +18 -0
  74. package/lib/components/viewer3d/viewer3d.js +137 -49
  75. package/lib/constants.js +8 -4
  76. package/lib/events/external/handleExternalEvent.js +34 -31
  77. package/lib/events/external/handlers.elementOps.js +9 -0
  78. package/lib/mappings/external-events/mapExternalEventPayload.js +4 -4
  79. package/lib/mappings/external-events/mappers/addItemMapper.js +9 -9
  80. package/lib/models.js +4 -0
  81. package/lib/reducers/items-reducer.js +7 -0
  82. package/lib/shared/domain/asset/sanitize-asset-url.js +5 -5
  83. package/lib/shared/domain/cabinet-mirror.js +13 -0
  84. package/lib/utils/skinPanelEngine.js +14 -14
  85. package/package.json +1 -1
@@ -6,6 +6,9 @@ Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
8
  exports["default"] = Item;
9
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
10
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
11
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
12
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
10
13
  var _react = _interopRequireWildcard(require("react"));
11
14
  var _propTypes = _interopRequireDefault(require("prop-types"));
@@ -13,23 +16,15 @@ var _rulerDist = _interopRequireDefault(require("./rulerDist"));
13
16
  var _convertUnitsLite = require("../../utils/convert-units-lite");
14
17
  var _constants = require("../../constants");
15
18
  var _cabinetWarning = require("../../shared/domain/cabinet-warning");
19
+ var _cabinetMirror = require("../../shared/domain/cabinet-mirror");
16
20
  var _geometry = require("../../utils/geometry");
17
21
  var _cabinetCorner = require("../../shared/domain/cabinet-corner");
18
22
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
19
- var STYLE_LINE = {
20
- fill: '#0096fd',
21
- stroke: '#0096fd'
22
- };
23
- var STYLE_CIRCLE = {
24
- fill: '#0096fd',
25
- stroke: '#0096fd',
26
- cursor: 'ew-resize'
27
- };
28
- var STYLE_CIRCLE2 = {
29
- fill: 'none',
30
- stroke: '#0096fd',
31
- cursor: 'ew-resize'
32
- };
23
+ 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; }
24
+ 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) { (0, _defineProperty2["default"])(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; }
25
+ var ICON_WIDTH = 23;
26
+ var ICON_HEIGHT = 23;
27
+ var ICON_SPACING = 2.5;
33
28
  function Item(_ref, _ref2) {
34
29
  var _element$render2D;
35
30
  var layer = _ref.layer,
@@ -106,116 +101,135 @@ function Item(_ref, _ref2) {
106
101
  var isSmall = false;
107
102
  if (width < 40) isSmall = true;
108
103
  var parts = [];
109
- var newWidth = item.toJS().properties.width.length;
110
- if (item.selected) parts = [/*#__PURE__*/_react["default"].createElement("g", {
111
- key: 0,
112
- "data-element-root": true,
113
- "data-prototype": item.prototype,
114
- "data-id": item.id,
115
- "data-selected": item.selected,
116
- "data-layer": layer.id,
117
- "data-part": "rotation-anchor",
118
- style: {
119
- cursor: 'w-resize'
120
- }
121
- }, /*#__PURE__*/_react["default"].createElement("image", {
122
- href: clockRotateState ? '/assets/img/svg/rotate.png' : '/assets/img/svg/blank_div.svg',
123
- style: {
124
- transform: "scale(-1, -1) translate(".concat(width / 2, "px, ").concat(height / 2, "px) rotate(25deg)")
125
- },
126
- height: "20",
127
- width: "20",
128
- onMouseEnter: function onMouseEnter() {
129
- setClockRotateState(true);
130
- setAntiClockRotateState(false);
131
- },
132
- onMouseLeave: function onMouseLeave() {
133
- return setClockRotateState(mode === _constants.MODE_ROTATING_ITEM ? true : false);
134
- }
135
- }), /*#__PURE__*/_react["default"].createElement("image", {
136
- href: antiClockRotateState ? '/assets/img/svg/rotate.png' : '/assets/img/svg/blank_div.svg',
137
- style: {
138
- transform: "scale(1, -1) translate(".concat(width / 2, "px, ").concat(height / 2, "px) rotate(25deg)")
139
- },
140
- height: "20",
141
- width: "20",
142
- onMouseEnter: function onMouseEnter() {
143
- setAntiClockRotateState(true);
144
- setClockRotateState(false);
145
- },
146
- onMouseLeave: function onMouseLeave() {
147
- return setAntiClockRotateState(mode === _constants.MODE_ROTATING_ITEM ? true : false);
148
- }
149
- })), /*#__PURE__*/_react["default"].createElement("g", {
150
- key: 1
151
- // transform={`translate(${-width / 2 - (!isSmall ? 40 : 0)},${height / 2 + 40})`}
152
- ,
153
- style: {
154
- cursor: 'pointer',
155
- transform: "rotate(".concat(360 - item.rotation, "deg) translate(").concat(-width / 2 - 27, "px, ", 0, "px)")
156
- },
157
- "data-element-root": true,
158
- "data-prototype": item.prototype,
159
- "data-id": item.id,
160
- "data-selected": item.selected,
161
- "data-layer": layer.id,
162
- "data-part": "duplicate"
163
- }, /*#__PURE__*/_react["default"].createElement("defs", null, /*#__PURE__*/_react["default"].createElement("filter", {
164
- id: "shadow"
165
- }, /*#__PURE__*/_react["default"].createElement("feDropShadow", {
166
- dx: "0",
167
- dy: "0",
168
- stdDeviation: "0.6"
169
- }))), /*#__PURE__*/_react["default"].createElement("rect", {
170
- rx: "4",
171
- ry: "4",
172
- height: "22",
173
- width: "22",
174
- fill: "white",
175
- filter: "url(#shadow)"
176
- }), /*#__PURE__*/_react["default"].createElement("image", {
177
- href: "/assets/img/svg/duplicate.svg",
178
- x: "3",
179
- y: "-19",
180
- height: "16",
181
- width: "16",
182
- style: (0, _cabinetWarning.isWarningCabinet)(item) ? {
183
- transform: 'rotateX(180deg)',
184
- opacity: 0.5
185
- } : {
186
- transform: 'rotateX(180deg)'
187
- }
188
- })), /*#__PURE__*/_react["default"].createElement("g", {
189
- key: 2
190
- // transform={`translate(${-width / 2 - (!isSmall ? 40 : 0)},${height / 2})`}
191
- ,
192
- style: {
193
- cursor: 'pointer',
194
- transform: "rotate(".concat(360 - item.rotation, "deg) translate(").concat(-width / 2 - 27, "px, ").concat(-27, "px)")
195
- },
196
- "data-element-root": true,
197
- "data-prototype": item.prototype,
198
- "data-id": item.id,
199
- "data-selected": item.selected,
200
- "data-layer": layer.id,
201
- "data-part": "remove"
202
- }, /*#__PURE__*/_react["default"].createElement("rect", {
203
- rx: "4",
204
- ry: "4",
205
- height: "22",
206
- width: "22",
207
- fill: "white",
208
- filter: "url(#shadow)"
209
- }), /*#__PURE__*/_react["default"].createElement("image", {
210
- href: "/assets/img/svg/delete.svg",
211
- x: "3",
212
- y: "-19",
213
- height: "16",
214
- width: "16",
215
- style: {
216
- transform: 'rotateX(180deg)'
217
- }
218
- }))];
104
+ var canMirror = (0, _cabinetMirror.canMirrorCabinet)(item);
105
+ var isMirrored = item.mirrored === true;
106
+ if (item.selected) {
107
+ var iconsCount = canMirror ? 3 : 2;
108
+ var iconHeightStart = (ICON_HEIGHT * (iconsCount - 2) + ICON_SPACING * (iconsCount - 1)) / 2;
109
+ var iconsData = [{
110
+ key: 'duplicate',
111
+ part: 'duplicate',
112
+ href: '/assets/img/svg/duplicate.svg',
113
+ imageProps: {
114
+ x: ICON_WIDTH / 4,
115
+ y: -(3 / 4) * ICON_HEIGHT,
116
+ height: ICON_HEIGHT / 2,
117
+ width: ICON_WIDTH / 2
118
+ },
119
+ disabled: (0, _cabinetWarning.isWarningCabinet)(item)
120
+ }, canMirror && {
121
+ key: 'mirror',
122
+ part: 'mirror',
123
+ href: '/assets/img/svg/invert.svg',
124
+ wrapperStyle: {
125
+ transformOrigin: 'center',
126
+ transformBox: 'fill-box',
127
+ transform: !isMirrored ? 'scaleX(-1)' : ''
128
+ },
129
+ imageProps: {
130
+ x: ICON_WIDTH / 2 - 7.5,
131
+ y: -ICON_HEIGHT / 2 - 7.5,
132
+ height: '15px',
133
+ width: '15px'
134
+ }
135
+ }, {
136
+ key: 'remove',
137
+ part: 'remove',
138
+ href: '/assets/img/svg/delete.svg',
139
+ imageProps: {
140
+ x: ICON_WIDTH / 4,
141
+ y: -(3 / 4) * ICON_HEIGHT,
142
+ height: ICON_HEIGHT / 2,
143
+ width: ICON_WIDTH / 2
144
+ }
145
+ }].filter(Boolean);
146
+ var icons = iconsData.map(function (icon, index) {
147
+ var translateY = iconHeightStart - index * (ICON_HEIGHT + ICON_SPACING);
148
+ return /*#__PURE__*/_react["default"].createElement("g", {
149
+ key: icon.key,
150
+ style: {
151
+ cursor: icon.disabled ? 'default' : 'pointer',
152
+ transform: "rotate(".concat(360 - item.rotation, "deg)\n translate(").concat(-width / 2 - 27, "px, ").concat(translateY, "px)")
153
+ },
154
+ "data-element-root": true,
155
+ "data-prototype": item.prototype,
156
+ "data-id": item.id,
157
+ "data-selected": item.selected,
158
+ "data-layer": layer.id,
159
+ "data-part": icon.part
160
+ }, /*#__PURE__*/_react["default"].createElement("defs", null, /*#__PURE__*/_react["default"].createElement("filter", {
161
+ id: "shadow",
162
+ x: "-20%",
163
+ y: "-20%",
164
+ width: "140%",
165
+ height: "140%"
166
+ }, /*#__PURE__*/_react["default"].createElement("feDropShadow", {
167
+ dx: "0",
168
+ dy: "-1",
169
+ stdDeviation: "1.2",
170
+ "flood-color": "#000",
171
+ "flood-opacity": "0.16"
172
+ }))), /*#__PURE__*/_react["default"].createElement("g", {
173
+ style: icon.wrapperStyle
174
+ }, /*#__PURE__*/_react["default"].createElement("rect", {
175
+ rx: "100%",
176
+ ry: "100%",
177
+ height: ICON_HEIGHT,
178
+ width: ICON_WIDTH,
179
+ fill: "white",
180
+ filter: "url(#shadow)"
181
+ }), /*#__PURE__*/_react["default"].createElement("image", (0, _extends2["default"])({
182
+ href: icon.href
183
+ }, icon.imageProps, {
184
+ style: _objectSpread({
185
+ transform: 'rotateX(180deg)'
186
+ }, icon.disabled ? {
187
+ opacity: 0.3,
188
+ filter: 'contrast(0)'
189
+ } : {})
190
+ }))));
191
+ });
192
+ parts = [/*#__PURE__*/_react["default"].createElement("g", {
193
+ key: 0,
194
+ "data-element-root": true,
195
+ "data-prototype": item.prototype,
196
+ "data-id": item.id,
197
+ "data-selected": item.selected,
198
+ "data-layer": layer.id,
199
+ "data-part": "rotation-anchor",
200
+ style: {
201
+ cursor: 'w-resize'
202
+ }
203
+ }, /*#__PURE__*/_react["default"].createElement("image", {
204
+ href: clockRotateState ? '/assets/img/svg/rotate.png' : '/assets/img/svg/blank_div.svg',
205
+ style: {
206
+ transform: "scale(-1, -1) translate(".concat(width / 2, "px, ").concat(height / 2, "px) rotate(25deg)")
207
+ },
208
+ height: "20",
209
+ width: "20",
210
+ onMouseEnter: function onMouseEnter() {
211
+ setClockRotateState(true);
212
+ setAntiClockRotateState(false);
213
+ },
214
+ onMouseLeave: function onMouseLeave() {
215
+ return setClockRotateState(mode === _constants.MODE_ROTATING_ITEM ? true : false);
216
+ }
217
+ }), /*#__PURE__*/_react["default"].createElement("image", {
218
+ href: antiClockRotateState ? '/assets/img/svg/rotate.png' : '/assets/img/svg/blank_div.svg',
219
+ style: {
220
+ transform: "scale(1, -1) translate(".concat(width / 2, "px, ").concat(height / 2, "px) rotate(25deg)")
221
+ },
222
+ height: "20",
223
+ width: "20",
224
+ onMouseEnter: function onMouseEnter() {
225
+ setAntiClockRotateState(true);
226
+ setClockRotateState(false);
227
+ },
228
+ onMouseLeave: function onMouseLeave() {
229
+ return setAntiClockRotateState(mode === _constants.MODE_ROTATING_ITEM ? true : false);
230
+ }
231
+ }))].concat((0, _toConsumableArray2["default"])(icons));
232
+ }
219
233
  var measure = item.layoutpos === _constants.WALL_CABINET_LAYOUTPOS ? showWallCabinetMeasure : showBaseCabinetMeasure;
220
234
  return /*#__PURE__*/_react["default"].createElement("g", {
221
235
  "data-element-root": true,
@@ -812,7 +812,7 @@ function Viewer2D(_ref, _ref2) {
812
812
  case 'items':
813
813
  setToolbar('');
814
814
  current_sel_obj_id = elementData.id;
815
- if (elementData.part === 'rotation-anchor') itemsActions.beginRotatingItem(elementData.layer, elementData.id, x, y);else if (elementData.part === 'remove') break;else if (elementData.part === 'duplicate') break;else if (elementData.part === 'warning_edit') break;else {
815
+ if (elementData.part === 'rotation-anchor') itemsActions.beginRotatingItem(elementData.layer, elementData.id, x, y);else if (elementData.part === 'remove') break;else if (elementData.part === 'duplicate') break;else if (elementData.part === 'mirror') break;else if (elementData.part === 'warning_edit') break;else {
816
816
  // closes the setting dialog
817
817
  if (document.getElementById('setting_dialog')) {
818
818
  document.getElementById('setting_dialog').style.display = 'none';
@@ -960,7 +960,10 @@ function Viewer2D(_ref, _ref2) {
960
960
  holesActions.selectHole(elementData.layer, elementData.id);
961
961
  break;
962
962
  case 'items':
963
- if (elementData.part === 'duplicate') {
963
+ if (elementData.part === 'mirror') {
964
+ itemsActions.toggleItemMirror(elementData.layer, elementData.id, null, onInternalEvent);
965
+ break;
966
+ } else if (elementData.part === 'duplicate') {
964
967
  var currentObject = state.getIn(['scene', 'layers', layerID, 'items', elementData.id]);
965
968
  if (!(0, _cabinetWarning.isWarningCabinet)(currentObject)) itemsActions.duplicateSelected(currentObject, onInternalEvent); // send draw internal event when duplicating
966
969
  break;