@configuratorware/configurator-frontendgui 1.29.4 → 1.30.1

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 (34) hide show
  1. package/App/Modules/Creator/Components/Option/index.js +2 -2
  2. package/App/Modules/Creator/Components/OptionsList/index.js +54 -28
  3. package/App/Modules/Designer/Components/DesignerSelectionToolbox/DesignerSelectionToolbox.js +3 -3
  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 +169 -116
  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 +7 -10
  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/OptionsList/index.js +46 -32
  19. package/src/App/Modules/Designer/Components/DesignerSelectionToolbox/DesignerSelectionToolbox.js +2 -5
  20. package/src/App/Modules/Designer/Components/DesignerSelectionToolbox/DesignerSelectionToolbox.test.js +1 -0
  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 +39 -12
  25. package/src/App/Modules/Designer/Utils/SvgFixers.js +36 -0
  26. package/src/App/Modules/Designer/Utils/Transformers.js +7 -3
  27. package/src/App/Modules/Designer/Utils/__tests__/Transformers.test.js +2 -2
  28. package/src/App/Reducers/ImageGallery/Selectors.js +5 -5
  29. package/src/App/Reducers/ImageGallery/__tests__/Selectors.test.js +0 -13
  30. package/src/App/Services/AnalyticsService.js +7 -20
  31. package/src/App/Services/ConfiguratorService.js +3 -2
  32. package/src/App/Services/DesignDataService.js +39 -24
  33. package/src/App/Services/__tests__/AnalyticsService.test.js +24 -37
  34. 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());
@@ -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;
@@ -13,8 +13,6 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
13
13
 
14
14
  var _isEmpty = _interopRequireDefault(require("lodash/isEmpty"));
15
15
 
16
- var _get = _interopRequireDefault(require("lodash/get"));
17
-
18
16
  var _cloneDeep = _interopRequireDefault(require("lodash/cloneDeep"));
19
17
 
20
18
  var _withStyles = _interopRequireDefault(require("@material-ui/core/styles/withStyles"));
@@ -41,6 +39,8 @@ var _Selectors2 = require("../../../../Reducers/DesignData/Selectors");
41
39
 
42
40
  var _i18n = require("../../../../../Framework/i18n");
43
41
 
42
+ var _Transformers = require("../../Utils/Transformers");
43
+
44
44
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
45
45
 
46
46
  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); }
@@ -156,7 +156,7 @@ var _handleObjectButtonClick = function handleObjectButtonClick(evt, canvas, onM
156
156
  };
157
157
 
158
158
  var isOriginallyVector = function isOriginallyVector(object) {
159
- return object && object.type === 'Image' && /^(eps|pdf|ai|svg)$/i.test((0, _get["default"])(object, 'imageData.original.format', '')) || false;
159
+ return object && object.type === 'Image' && (0, _Transformers.isOriginalVector)(object.imageData) || false;
160
160
  };
161
161
 
162
162
  exports.isOriginallyVector = isOriginallyVector;
@@ -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