@configuratorware/configurator-frontendgui 1.29.2 → 1.30.0

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 (33) hide show
  1. package/App/Modules/Creator/Components/Option/index.js +2 -2
  2. package/App/Modules/Creator/Components/Optiondetail/index.js +9 -6
  3. package/App/Modules/Creator/Components/OptionsList/index.js +54 -28
  4. package/App/Modules/Designer/Components/ImageColorPicker/ImageColorPicker.js +5 -6
  5. package/App/Modules/Designer/Components/ImageEditDialog/ImageThumbnail.js +1 -1
  6. package/App/Modules/Designer/Components/ImageEditDialog/index.js +3 -1
  7. package/App/Modules/Designer/Containers/ImageEditDialog.js +163 -113
  8. package/App/Modules/Designer/Utils/SvgFixers.js +59 -0
  9. package/App/Modules/Designer/Utils/Transformers.js +17 -10
  10. package/App/Reducers/ImageGallery/Selectors.js +6 -3
  11. package/App/Services/AnalyticsService.js +13 -64
  12. package/App/Services/ConfiguratorService.js +4 -2
  13. package/App/Services/DesignDataService.js +125 -138
  14. package/App/configuration.js +1 -1
  15. package/package.json +4 -4
  16. package/src/App/Modules/Creator/Components/Option/__snapshots__/index.test.js.snap +2 -2
  17. package/src/App/Modules/Creator/Components/Option/index.js +12 -2
  18. package/src/App/Modules/Creator/Components/Optiondetail/__snapshots__/index.test.js.snap +3 -3
  19. package/src/App/Modules/Creator/Components/Optiondetail/index.js +15 -13
  20. package/src/App/Modules/Creator/Components/OptionsList/index.js +46 -32
  21. package/src/App/Modules/Designer/Components/ImageColorPicker/ImageColorPicker.js +5 -6
  22. package/src/App/Modules/Designer/Components/ImageEditDialog/ImageThumbnail.js +1 -1
  23. package/src/App/Modules/Designer/Components/ImageEditDialog/index.js +3 -1
  24. package/src/App/Modules/Designer/Containers/ImageEditDialog.js +36 -12
  25. package/src/App/Modules/Designer/Utils/SvgFixers.js +36 -0
  26. package/src/App/Modules/Designer/Utils/Transformers.js +6 -3
  27. package/src/App/Modules/Designer/Utils/__tests__/Transformers.test.js +2 -2
  28. package/src/App/Reducers/ImageGallery/Selectors.js +5 -3
  29. package/src/App/Services/AnalyticsService.js +7 -20
  30. package/src/App/Services/ConfiguratorService.js +3 -2
  31. package/src/App/Services/DesignDataService.js +39 -24
  32. package/src/App/Services/__tests__/AnalyticsService.test.js +24 -37
  33. package/src/App/configuration.js +1 -1
@@ -409,7 +409,7 @@ var Option = function Option(_ref) {
409
409
  className: classes.iconWithText,
410
410
  onClick: onDetailsClicked
411
411
  }, /*#__PURE__*/_react["default"].createElement(_InfoRounded["default"], {
412
- className: classes.materialIcon
412
+ className: (0, _clsx["default"])(classes.materialIcon, (0, _customClassName["default"])('rule-info-icon-option'))
413
413
  }), /*#__PURE__*/_react["default"].createElement(_core.Typography, {
414
414
  variant: 'body2',
415
415
  className: classes.iconWithText
@@ -417,7 +417,7 @@ var Option = function Option(_ref) {
417
417
  className: classes.iconWithText,
418
418
  onClick: onIncompatibilityClicked
419
419
  }, /*#__PURE__*/_react["default"].createElement(_WarningRounded["default"], {
420
- className: classes.materialIcon
420
+ className: (0, _clsx["default"])(classes.materialIcon, (0, _customClassName["default"])('rule-alert-icon-option'))
421
421
  }), /*#__PURE__*/_react["default"].createElement(_core.Typography, {
422
422
  variant: 'body2'
423
423
  }, translations.incompatibility))), renderStockStatus(), renderOptionGroup());
@@ -149,6 +149,9 @@ var styles = function styles(theme) {
149
149
  },
150
150
  dialogContentRootWithZoom: {
151
151
  overflow: 'hidden'
152
+ },
153
+ detailDialogContentRoot: {
154
+ overflowY: 'auto'
152
155
  }
153
156
  };
154
157
  };
@@ -359,8 +362,7 @@ var Optiondetail = /*#__PURE__*/function (_React$Component) {
359
362
  onClose = _this$props5.onClose,
360
363
  details = _this$props5.details,
361
364
  classes = _this$props5.classes,
362
- width = _this$props5.width,
363
- isTabletDevice = _this$props5.isTabletDevice;
365
+ width = _this$props5.width;
364
366
  var _this$state = this.state,
365
367
  loading = _this$state.loading,
366
368
  loadingContainerHeight = _this$state.loadingContainerHeight;
@@ -385,7 +387,7 @@ var Optiondetail = /*#__PURE__*/function (_React$Component) {
385
387
  className: classes.detailsTypography
386
388
  }, details.description));
387
389
 
388
- var showFullScreenModal = ['xs', 'sm'].includes(width) && !isTabletDevice;
390
+ var showFullScreenModal = ['xs', 'sm'].includes(width);
389
391
  var maxZoomedWidth = this.getMaxZoomedWidth(width);
390
392
  var isLandscapeFormat = false;
391
393
 
@@ -415,8 +417,10 @@ var Optiondetail = /*#__PURE__*/function (_React$Component) {
415
417
  fullScreen: showFullScreenModal
416
418
  }, /*#__PURE__*/_react["default"].createElement(_DialogContent["default"], {
417
419
  classes: this.state.hasZoom ? {
418
- root: classes.dialogContentRootWithZoom
419
- } : null
420
+ root: (0, _clsx2["default"])(classes.detailDialogContentRoot, classes.dialogContentRootWithZoom)
421
+ } : {
422
+ root: classes.detailDialogContentRoot
423
+ }
420
424
  }, loading ? /*#__PURE__*/_react["default"].createElement("div", {
421
425
  style: {
422
426
  height: loadingContainerHeight,
@@ -479,7 +483,6 @@ _defineProperty(Optiondetail, "propTypes", {
479
483
  onClose: _propTypes["default"].func,
480
484
  LoadingComponent: _propTypes["default"].elementType,
481
485
  width: _propTypes["default"].string,
482
- isTabletDevice: _propTypes["default"].bool,
483
486
  isLoading: _propTypes["default"].bool
484
487
  });
485
488
 
@@ -25,14 +25,24 @@ var _customClassName = _interopRequireDefault(require("../../../../Utils/customC
25
25
 
26
26
  var _Option = _interopRequireDefault(require("../Option"));
27
27
 
28
+ var _excluded = ["render"];
29
+
28
30
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
29
31
 
32
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
33
+
34
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
35
+
30
36
  function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, 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 normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
31
37
 
32
38
  function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
33
39
 
34
40
  function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
35
41
 
42
+ function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
43
+
44
+ function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
45
+
36
46
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
37
47
 
38
48
  var useStyles = (0, _core.makeStyles)(function (theme) {
@@ -68,20 +78,23 @@ var useStyles = (0, _core.makeStyles)(function (theme) {
68
78
  });
69
79
 
70
80
  var OptionsList = function OptionsList(_ref2) {
71
- var addCheckedOptionclassification = _ref2.addCheckedOptionclassification,
72
- children = _ref2.children,
73
- isLoading = _ref2.isLoading,
74
- onClose = _ref2.onClose,
75
- onSelect = _ref2.onSelect,
76
- onToggle = _ref2.onToggle,
77
- optionclassification = _ref2.optionclassification,
78
- options = _ref2.options,
79
- show = _ref2.show,
80
- viewDetails = _ref2.viewDetails,
81
- viewStockInformation = _ref2.viewStockInformation,
82
- LoadingComponent = _ref2.LoadingComponent,
83
- OptionComponent = _ref2.OptionComponent,
84
- isAdminMode = _ref2.isAdminMode;
81
+ var render = _ref2.render,
82
+ props = _objectWithoutProperties(_ref2, _excluded);
83
+
84
+ var addCheckedOptionclassification = props.addCheckedOptionclassification,
85
+ children = props.children,
86
+ isLoading = props.isLoading,
87
+ onClose = props.onClose,
88
+ onSelect = props.onSelect,
89
+ onToggle = props.onToggle,
90
+ optionclassification = props.optionclassification,
91
+ options = props.options,
92
+ show = props.show,
93
+ viewDetails = props.viewDetails,
94
+ viewStockInformation = props.viewStockInformation,
95
+ LoadingComponent = props.LoadingComponent,
96
+ OptionComponent = props.OptionComponent,
97
+ isAdminMode = props.isAdminMode;
85
98
  var classes = useStyles();
86
99
 
87
100
  var createOptions = function createOptions() {
@@ -143,20 +156,32 @@ var OptionsList = function OptionsList(_ref2) {
143
156
  }));
144
157
  };
145
158
 
146
- return /*#__PURE__*/_react["default"].createElement(_CustomDialog["default"], {
147
- className: (0, _clsx["default"])(classes.dialogStyle, (0, _customClassName["default"])('options')),
148
- dialogTitle: optionclassification.title,
149
- onCancel: onClose,
150
- onClose: onClose,
151
- open: show && !!optionclassification.identifier,
152
- BackdropProps: {
153
- classes: {
154
- root: classes.backDrop
159
+ var renderOptionsList = function renderOptionsList() {
160
+ return /*#__PURE__*/_react["default"].createElement(_CustomDialog["default"], {
161
+ className: (0, _clsx["default"])(classes.dialogStyle, (0, _customClassName["default"])('options')),
162
+ dialogTitle: optionclassification.title,
163
+ onCancel: onClose,
164
+ onClose: onClose,
165
+ open: show && !!optionclassification.identifier,
166
+ BackdropProps: {
167
+ classes: {
168
+ root: classes.backDrop
169
+ }
155
170
  }
156
- }
157
- }, /*#__PURE__*/_react["default"].createElement(_DialogContent["default"], {
158
- className: classes.contentStyle
159
- }, renderOptions()));
171
+ }, /*#__PURE__*/_react["default"].createElement(_DialogContent["default"], {
172
+ className: classes.contentStyle
173
+ }, renderOptions()));
174
+ };
175
+
176
+ var getRenderProps = function getRenderProps() {
177
+ return _objectSpread(_objectSpread({}, props), {}, {
178
+ renderOptions: renderOptions,
179
+ createOptions: createOptions,
180
+ renderOptionsList: renderOptionsList
181
+ });
182
+ };
183
+
184
+ return typeof render === 'function' ? render(getRenderProps()) : renderOptionsList();
160
185
  };
161
186
 
162
187
  OptionsList.defaultProps = {
@@ -187,7 +212,8 @@ OptionsList.propTypes = {
187
212
  viewStockInformation: _propTypes["default"].func,
188
213
  LoadingComponent: _propTypes["default"].elementType,
189
214
  OptionComponent: _propTypes["default"].elementType,
190
- isAdminMode: _propTypes["default"].bool
215
+ isAdminMode: _propTypes["default"].bool,
216
+ render: _propTypes["default"].func
191
217
  };
192
218
  var _default = OptionsList;
193
219
  exports["default"] = _default;
@@ -342,17 +342,16 @@ var ImageColorPicker = /*#__PURE__*/function (_React$Component) {
342
342
 
343
343
  var ow = img.width,
344
344
  oh = img.height;
345
- var pa = pw / ph;
346
345
  var oa = ow / oh;
347
346
 
348
- if (pa >= oa) {
349
- var height = Math.min(ph, oh);
350
- var width = height * ow / oh;
347
+ if (oa <= 1) {
348
+ var height = ph;
349
+ var width = height * (ow / oh);
351
350
  this.updateCanvasDimensionsAndContent(canvas, img, width, height);
352
351
  } else {
353
- var _width = Math.min(pw, ow);
352
+ var _width = pw;
354
353
 
355
- var _height = _width * oh / ow;
354
+ var _height = _width * (oh / ow);
356
355
 
357
356
  this.updateCanvasDimensionsAndContent(canvas, img, _width, _height);
358
357
  }
@@ -106,7 +106,7 @@ var ImageThumbnail = /*#__PURE__*/function (_React$Component) {
106
106
  }
107
107
 
108
108
  if (!image.displayColorPreview && !image.gallery) {
109
- return (0, _Transformers.getRasterURL)(image.preview.url);
109
+ return (0, _Transformers.getRasterURL)((0, _Selectors.getPreviewUrlFromImageData)(image.thumbnail));
110
110
  }
111
111
 
112
112
  this.downloadSvg(image);
@@ -73,6 +73,8 @@ var _baseline_colorize_black_24dp = _interopRequireDefault(require("./res/baseli
73
73
 
74
74
  var _checkers_tile = _interopRequireDefault(require("./res/checkers_tile.png"));
75
75
 
76
+ var _Transformers = require("../../Utils/Transformers");
77
+
76
78
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
77
79
 
78
80
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
@@ -500,7 +502,7 @@ var ImageEditDialog = /*#__PURE__*/function (_React$Component) {
500
502
  }, errorFeedback, /*#__PURE__*/_react["default"].createElement("div", {
501
503
  className: "".concat(classes.previewImageWrapper, " ").concat(colorPreviewBlockActive ? 'color-preview-block' : '')
502
504
  }, /*#__PURE__*/_react["default"].createElement(_ImageColorPicker["default"], {
503
- src: [0, 2].includes(activeTabIndex) && !displayColorPreview && !image.gallery ? originalImagePreview : preview,
505
+ src: [0, 2].includes(activeTabIndex) && !displayColorPreview && !image.gallery && !(0, _Transformers.isOriginalVector)(image) ? originalImagePreview : preview,
504
506
  wrapperClassName: activeTabIndex === 1 ? classes.PreviewDialogImage : classes.PreviewDialogImageColorize,
505
507
  onChange: this.onChangeColor,
506
508
  enabled: activeTabIndex === 1