@configuratorware/configurator-frontendgui 1.41.2 → 1.42.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 (526) hide show
  1. package/App/Constant.js +2 -3
  2. package/App/Error/DevelopmentErrorPage/index.js +4 -19
  3. package/App/Error/ErrorBoundary.js +13 -43
  4. package/App/Error/ProductionErrorPage/index.js +2 -11
  5. package/App/Error/ProductionErrorPage/index.story.js +0 -4
  6. package/App/Frame.js +10 -43
  7. package/App/Modules/Creator/Components/ConfigurationvariantItem/index.js +15 -58
  8. package/App/Modules/Creator/Components/ConfigurationvariantSelection/index.js +20 -60
  9. package/App/Modules/Creator/Components/CustomTitleEditor/index.js +15 -64
  10. package/App/Modules/Creator/Components/ExternalVisualization/index.js +19 -47
  11. package/App/Modules/Creator/Components/FastConfiguration/SelectableRow.js +10 -37
  12. package/App/Modules/Creator/Components/FastConfiguration/index.js +37 -101
  13. package/App/Modules/Creator/Components/FastConfigurationRow/index.js +12 -38
  14. package/App/Modules/Creator/Components/FastConfigurationSelect/index.js +29 -85
  15. package/App/Modules/Creator/Components/FormattedNumber/index.js +1 -17
  16. package/App/Modules/Creator/Components/FormattedPrice/index.js +1 -19
  17. package/App/Modules/Creator/Components/FullScreenView/FullScreenView.js +17 -36
  18. package/App/Modules/Creator/Components/Incompatibility/OptionExclusionRule/index.js +24 -61
  19. package/App/Modules/Creator/Components/Incompatibility/OptionRule/index.js +24 -60
  20. package/App/Modules/Creator/Components/Incompatibility/RuleComponent.js +12 -45
  21. package/App/Modules/Creator/Components/Incompatibility/index.js +28 -89
  22. package/App/Modules/Creator/Components/InvalidConfigurationNotice/index.js +14 -53
  23. package/App/Modules/Creator/Components/LoginForm/index.js +14 -52
  24. package/App/Modules/Creator/Components/Option/index.js +53 -155
  25. package/App/Modules/Creator/Components/Option/index.story.js +6 -17
  26. package/App/Modules/Creator/Components/OptionAmount/index.js +33 -74
  27. package/App/Modules/Creator/Components/OptionGroup/index.js +10 -23
  28. package/App/Modules/Creator/Components/Optiondetail/ZoomImage/index.js +26 -68
  29. package/App/Modules/Creator/Components/Optiondetail/index.js +44 -129
  30. package/App/Modules/Creator/Components/Optiondetail/index.story.js +11 -72
  31. package/App/Modules/Creator/Components/Optiondetail/index.test.mocks.js +56 -0
  32. package/App/Modules/Creator/Components/OptionsList/index.js +31 -81
  33. package/App/Modules/Creator/Components/Price/index.js +12 -40
  34. package/App/Modules/Creator/Components/ProductPart/index.js +14 -46
  35. package/App/Modules/Creator/Components/ProductPart/index.story.js +6 -17
  36. package/App/Modules/Creator/Components/ProductPartsList/index.js +25 -68
  37. package/App/Modules/Creator/Components/ProductPartsList/index.story.js +6 -21
  38. package/App/Modules/Creator/Components/SavedConfiguration/index.js +13 -45
  39. package/App/Modules/Creator/Components/ShareConfiguration/index.js +31 -90
  40. package/App/Modules/Creator/Components/StockInformation/index.js +13 -44
  41. package/App/Modules/Creator/Components/StoreConfigurationForm/index.js +15 -52
  42. package/App/Modules/Creator/Components/Tools/index.js +11 -45
  43. package/App/Modules/Creator/Components/ValidationResult/index.js +16 -62
  44. package/App/Modules/Creator/Components/index.js +2 -29
  45. package/App/Modules/Creator/Containers/AmountPrice/index.js +3 -12
  46. package/App/Modules/Creator/Containers/ConfigurationvariantSelection/index.js +5 -19
  47. package/App/Modules/Creator/Containers/CustomTitleEditor/index.js +4 -19
  48. package/App/Modules/Creator/Containers/FastConfiguration/index.js +6 -20
  49. package/App/Modules/Creator/Containers/FormattedPrice/index.js +4 -13
  50. package/App/Modules/Creator/Containers/Incompatibility/index.js +2 -12
  51. package/App/Modules/Creator/Containers/InvalidConfigurationNotice/index.js +8 -31
  52. package/App/Modules/Creator/Containers/LoadingOverlay/index.js +2 -9
  53. package/App/Modules/Creator/Containers/Optiondetail/index.js +7 -18
  54. package/App/Modules/Creator/Containers/OptionsList/index.js +3 -15
  55. package/App/Modules/Creator/Containers/ProductPart/index.js +1 -9
  56. package/App/Modules/Creator/Containers/ProductPartsList/index.js +3 -16
  57. package/App/Modules/Creator/Containers/SavedConfigurationContainer/index.js +1 -8
  58. package/App/Modules/Creator/Containers/ShareConfiguration/index.js +2 -10
  59. package/App/Modules/Creator/Containers/StockInformation/index.js +2 -10
  60. package/App/Modules/Creator/Containers/Tools/index.js +1 -10
  61. package/App/Modules/Creator/Containers/ValidationResult/index.js +2 -10
  62. package/App/Modules/Creator/Containers/index.js +42 -64
  63. package/App/Modules/Creator/CreatorScreen.js +45 -121
  64. package/App/Modules/Creator/Layouts/DefaultLayout.js +21 -50
  65. package/App/Modules/Designer/Components/AddGalleryImage/index.js +31 -92
  66. package/App/Modules/Designer/Components/AddGalleryImage/index.story.js +9 -22
  67. package/App/Modules/Designer/Components/AddGalleryImage/index.test.js +13 -35
  68. package/App/Modules/Designer/Components/AddVisualElement/index.js +30 -86
  69. package/App/Modules/Designer/Components/AddVisualElement/index.story.js +0 -5
  70. package/App/Modules/Designer/Components/AddVisualElement/index.test.js +12 -15
  71. package/App/Modules/Designer/Components/CloseDesignEditor/index.js +18 -51
  72. package/App/Modules/Designer/Components/CloseGraphicsEditorButton/index.js +7 -17
  73. package/App/Modules/Designer/Components/ColorPalettes/ColorPalettesSearch.js +20 -57
  74. package/App/Modules/Designer/Components/ColorPalettes/index.js +62 -178
  75. package/App/Modules/Designer/Components/ColorPalettes/index.story.js +0 -8
  76. package/App/Modules/Designer/Components/ColorPalettes/index.test.js +7 -11
  77. package/App/Modules/Designer/Components/DesignAreaControlbox/index.js +35 -108
  78. package/App/Modules/Designer/Components/DesignAreaControlbox/index.story.js +0 -8
  79. package/App/Modules/Designer/Components/DesignAreaControlbox/index.test.js +15 -23
  80. package/App/Modules/Designer/Components/DesignerSelectionToolbox/CustomFontOverlay.js +18 -51
  81. package/App/Modules/Designer/Components/DesignerSelectionToolbox/DesignerSelectionToolbox.js +53 -150
  82. package/App/Modules/Designer/Components/DesignerSelectionToolbox/fontItemUtils.js +10 -20
  83. package/App/Modules/Designer/Components/Dialog/index.js +21 -63
  84. package/App/Modules/Designer/Components/EditDesignButton/index.js +20 -43
  85. package/App/Modules/Designer/Components/FeedbackNotice/index.js +17 -53
  86. package/App/Modules/Designer/Components/FeedbackNotice/index.test.js +0 -4
  87. package/App/Modules/Designer/Components/FullScreenView/FullScreenView.js +6 -14
  88. package/App/Modules/Designer/Components/ImageColorPicker/ImageColorPicker.dev.js +5 -14
  89. package/App/Modules/Designer/Components/ImageColorPicker/ImageColorPicker.js +42 -137
  90. package/App/Modules/Designer/Components/ImageColorize/index.js +54 -177
  91. package/App/Modules/Designer/Components/ImageColorize/index.story.js +2 -6
  92. package/App/Modules/Designer/Components/ImageControlbox/index.js +27 -90
  93. package/App/Modules/Designer/Components/ImageEditDialog/ImageThumbnail.js +26 -71
  94. package/App/Modules/Designer/Components/ImageEditDialog/ImageUpload.js +138 -170
  95. package/App/Modules/Designer/Components/ImageEditDialog/index.js +55 -168
  96. package/App/Modules/Designer/Components/ImageLibraryFilter/index.js +20 -61
  97. package/App/Modules/Designer/Components/ImageLibraryThumbnail/index.js +24 -66
  98. package/App/Modules/Designer/Components/ObjectTools/index.js +18 -56
  99. package/App/Modules/Designer/Components/Select/index.js +21 -65
  100. package/App/Modules/Designer/Components/TextControlbox/TextFormatIcon.js +5 -20
  101. package/App/Modules/Designer/Components/TextControlbox/index.js +58 -176
  102. package/App/Modules/Designer/Components/TextControlbox/index.story.js +0 -10
  103. package/App/Modules/Designer/Components/TextControlbox/index.test.js +34 -41
  104. package/App/Modules/Designer/Containers/AddGalleryImage.js +8 -24
  105. package/App/Modules/Designer/Containers/AddVisualElement.js +28 -87
  106. package/App/Modules/Designer/Containers/CloseDesignEditor.js +1 -10
  107. package/App/Modules/Designer/Containers/CloseGraphicsEditorButton.js +1 -10
  108. package/App/Modules/Designer/Containers/ColorPalettes.js +22 -61
  109. package/App/Modules/Designer/Containers/DesignAreaControlbox.js +5 -17
  110. package/App/Modules/Designer/Containers/Designer.js +1 -10
  111. package/App/Modules/Designer/Containers/DesignerSelectionToolbox.js +7 -30
  112. package/App/Modules/Designer/Containers/EditDesignButton.js +1 -11
  113. package/App/Modules/Designer/Containers/ImageEditDialog.js +400 -658
  114. package/App/Modules/Designer/Designer.js +28 -84
  115. package/App/Modules/Designer/DesignerScreen.js +45 -100
  116. package/App/Modules/Designer/DesignerUI.js +31 -87
  117. package/App/Modules/Designer/Layouts/DefaultLayout.js +20 -45
  118. package/App/Modules/Designer/Layouts/Mobile/TwoSideBottomBar.js +4 -16
  119. package/App/Modules/Designer/Layouts/PopupAreaProvider.js +20 -67
  120. package/App/Modules/Designer/MultilayerComponents/DesignerClickAwayListener.js +5 -23
  121. package/App/Modules/Designer/MultilayerComponents/InlineToolboxPortal.js +19 -52
  122. package/App/Modules/Designer/MultilayerComponents/StandardToolboxPortal.js +9 -25
  123. package/App/Modules/Designer/Utils/FontFaceRepository.js +8 -30
  124. package/App/Modules/Designer/Utils/ImageEditUtils.js +14 -38
  125. package/App/Modules/Designer/Utils/SvgFixers.js +8 -26
  126. package/App/Modules/Designer/Utils/Transformers.js +54 -112
  127. package/App/Modules/Designer/setupDesigner.js +50 -72
  128. package/App/Modules/Designer/withActiveCanvas.js +22 -70
  129. package/App/Modules/Visualization/AlignTargetContainer.js +8 -19
  130. package/App/Modules/Visualization/CreatorAlignTarget.js +9 -20
  131. package/App/Modules/Visualization/DefaultVisualizationProvider.js +18 -50
  132. package/App/Modules/Visualization/DesignerAlignTarget.js +7 -13
  133. package/App/Modules/Visualization/Utils/getFirstDataURLFromScreenshotsObj.js +0 -3
  134. package/App/Reducers/Actions.js +81 -145
  135. package/App/Reducers/ConfigurationMode/Actions.js +4 -9
  136. package/App/Reducers/ConfigurationMode/Reducer.js +6 -23
  137. package/App/Reducers/ConfigurationMode/Selectors.js +22 -41
  138. package/App/Reducers/Configurator/Actions.js +386 -760
  139. package/App/Reducers/Configurator/AttributeSelectors.js +5 -17
  140. package/App/Reducers/Configurator/Modifiers.js +8 -15
  141. package/App/Reducers/Configurator/Reducer.js +107 -202
  142. package/App/Reducers/Configurator/Selectors.js +46 -119
  143. package/App/Reducers/Confirm/Actions.js +28 -49
  144. package/App/Reducers/Confirm/Reducer.js +1 -9
  145. package/App/Reducers/DesignArea/Actions.js +8 -29
  146. package/App/Reducers/DesignArea/DesignElementSelectors.js +18 -41
  147. package/App/Reducers/DesignArea/MaskSelectors.js +12 -35
  148. package/App/Reducers/DesignArea/Reducer.js +8 -40
  149. package/App/Reducers/DesignArea/Selectors.js +148 -413
  150. package/App/Reducers/DesignArea/Transformers.js +22 -87
  151. package/App/Reducers/DesignData/Actions.js +31 -93
  152. package/App/Reducers/DesignData/Modifiers.js +34 -114
  153. package/App/Reducers/DesignData/Reducer.js +9 -38
  154. package/App/Reducers/DesignData/Selectors.js +17 -50
  155. package/App/Reducers/DesignData/Transformers.js +2 -6
  156. package/App/Reducers/DesignView/Actions.js +3 -7
  157. package/App/Reducers/DesignView/Reducer.js +13 -47
  158. package/App/Reducers/DesignView/Selectors.js +17 -49
  159. package/App/Reducers/DesignView/Transformers.js +0 -3
  160. package/App/Reducers/Device/Actions.js +3 -7
  161. package/App/Reducers/Device/Reducer.js +9 -16
  162. package/App/Reducers/Fonts/Actions.js +12 -45
  163. package/App/Reducers/Fonts/Reducer.js +2 -11
  164. package/App/Reducers/Fonts/Selectors.js +9 -25
  165. package/App/Reducers/GeneralActions.js +3 -7
  166. package/App/Reducers/ImageGallery/Actions.js +97 -189
  167. package/App/Reducers/ImageGallery/Modifiers.js +13 -24
  168. package/App/Reducers/ImageGallery/Reducer.js +29 -98
  169. package/App/Reducers/ImageGallery/Selectors.js +21 -79
  170. package/App/Reducers/Reducer.js +10 -26
  171. package/App/Reducers/UI/Actions.js +73 -113
  172. package/App/Reducers/UI/Reducer.js +17 -26
  173. package/App/Reducers/UI/Selectors.js +3 -12
  174. package/App/Reducers.js +7 -21
  175. package/App/Routing.js +30 -107
  176. package/App/Screens/Configurator/CalculationWidgetScreen.js +10 -39
  177. package/App/Screens/Configurator/Components/AmountSelection/index.js +25 -77
  178. package/App/Screens/Configurator/Components/AmountSelection/index.story.js +0 -8
  179. package/App/Screens/Configurator/Components/CalculationWidget/index.js +53 -154
  180. package/App/Screens/Configurator/Components/CalculationWidget/index.story.js +6 -19
  181. package/App/Screens/Configurator/Components/CalculationWidget/index.test.js +39 -38
  182. package/App/Screens/Configurator/Components/ConfigurationModeSwitch/ConfigurationModeSwitch.js +7 -30
  183. package/App/Screens/Configurator/Components/ConfigurationModeSwitch/index.js +0 -2
  184. package/App/Screens/Configurator/Components/Confirm/index.js +13 -50
  185. package/App/Screens/Configurator/Components/Error/index.js +11 -48
  186. package/App/Screens/Configurator/Components/FallbackVisualization/FallbackVisualization.js +13 -25
  187. package/App/Screens/Configurator/Components/FullScreenView/index.js +37 -116
  188. package/App/Screens/Configurator/Components/FullScreenView/index.test.js +1 -4
  189. package/App/Screens/Configurator/Components/ImageLoader/ImageLoader.js +11 -42
  190. package/App/Screens/Configurator/Components/ItemTile/ItemTile.js +89 -33
  191. package/App/Screens/Configurator/Components/LandscapeInformation/index.js +3 -19
  192. package/App/Screens/Configurator/Components/NoVisualization/NoVisualization.js +3 -11
  193. package/App/Screens/Configurator/Components/PreviewPortal/index.js +29 -81
  194. package/App/Screens/Configurator/Components/Thumbnail/index.js +36 -102
  195. package/App/Screens/Configurator/Components/Thumbnail/index.test.js +0 -4
  196. package/App/Screens/Configurator/Components/TotalPrice/TotalPrice.js +9 -24
  197. package/App/Screens/Configurator/Containers/AmountPrice.js +12 -36
  198. package/App/Screens/Configurator/Containers/CalculationWidget.js +24 -85
  199. package/App/Screens/Configurator/Containers/ConfigurationModeSwitch.js +22 -43
  200. package/App/Screens/Configurator/Containers/Confirm.js +1 -10
  201. package/App/Screens/Configurator/Containers/FallbackVisualization.js +1 -11
  202. package/App/Screens/Configurator/Containers/FullScreenView.js +1 -14
  203. package/App/Screens/Configurator/Containers/Thumbnail.js +1 -13
  204. package/App/Screens/Configurator/Containers/Visualization.js +1 -5
  205. package/App/Screens/Configurator/DynamicComponents.js +8 -22
  206. package/App/Screens/Configurator/Screen.js +31 -70
  207. package/App/Screens/Configurator/ScreenPropTypes.js +2 -6
  208. package/App/Screens/Configurator/ThemeProvider.js +8 -42
  209. package/App/Screens/DesignerProductPreview/Constants.js +4 -7
  210. package/App/Screens/DesignerProductPreview/DesignerProductPreviewManager.js +204 -289
  211. package/App/Screens/DesignerProductPreview/Screen.js +58 -139
  212. package/App/Screens/ItemOverview.js +156 -191
  213. package/App/Screens.js +12 -20
  214. package/App/ServiceLocator.js +26 -51
  215. package/App/Services/AdminareaCommunicationService.js +33 -69
  216. package/App/Services/AnalyticsService.js +13 -40
  217. package/App/Services/ConfiguratorService.js +381 -567
  218. package/App/Services/DesignDataService.js +1448 -2001
  219. package/App/Services/DesignerService.js +290 -350
  220. package/App/Services/InteractionService.js +349 -502
  221. package/App/Services/UIService.js +12 -39
  222. package/App/Services/VisualizationService.js +246 -336
  223. package/App/Shared/Components/AcceptDesign/index.js +27 -70
  224. package/App/Shared/Components/AcceptPrivacy/index.js +21 -58
  225. package/App/Shared/Components/AddToBasket/index.js +31 -81
  226. package/App/Shared/Components/AddToBasket/index.story.js +0 -9
  227. package/App/Shared/Components/AlertDialog/index.js +15 -57
  228. package/App/Shared/Components/AmountInput/index.js +34 -107
  229. package/App/Shared/Components/AmountInput/index.story.js +0 -6
  230. package/App/Shared/Components/AmountPrice/index.js +220 -382
  231. package/App/Shared/Components/AmountPrice/index.story.js +1 -10
  232. package/App/Shared/Components/AmountPrice/index.test.js +6 -12
  233. package/App/Shared/Components/Analytics/AnalyticsWrapper.js +9 -21
  234. package/App/Shared/Components/BulkNames/index.js +28 -92
  235. package/App/Shared/Components/CallToAction/index.js +18 -42
  236. package/App/Shared/Components/ConfigurationOverview/index.js +14 -47
  237. package/App/Shared/Components/Header/Header.js +18 -46
  238. package/App/Shared/Components/Header/index.js +0 -2
  239. package/App/Shared/Components/Header/index.story.js +0 -13
  240. package/App/Shared/Components/InformationTag/InformationTag.js +20 -55
  241. package/App/Shared/Components/LicenseNotice/LicenseNotice.js +20 -54
  242. package/App/Shared/Components/LicenseNotice/index.js +0 -2
  243. package/App/Shared/Components/LoadConfiguration/index.js +47 -82
  244. package/App/Shared/Components/MessageBox/index.js +2 -19
  245. package/App/Shared/Components/MessageBox/index.story.js +0 -7
  246. package/App/Shared/Components/Notification/index.js +18 -53
  247. package/App/Shared/Components/Notification/index.story.js +0 -4
  248. package/App/Shared/Components/PdfDownload/index.js +19 -59
  249. package/App/Shared/Components/PlusMinusInput/index.js +13 -37
  250. package/App/Shared/Components/PriceList/index.js +27 -78
  251. package/App/Shared/Components/PriceList/index.story.js +6 -15
  252. package/App/Shared/Components/PriceOverview/index.js +29 -74
  253. package/App/Shared/Components/PriceOverview/index.story.js +1 -18
  254. package/App/Shared/Components/ProductVariant/Image.js +13 -35
  255. package/App/Shared/Components/ProductVariant/index.js +34 -123
  256. package/App/Shared/Components/ProductVariant/index.story.js +9 -22
  257. package/App/Shared/Components/Progress/Progress.js +6 -15
  258. package/App/Shared/Components/ReceiveOfferForm/index.js +26 -80
  259. package/App/Shared/Components/ReceiveOfferForm/index.story.js +0 -6
  260. package/App/Shared/Components/ReceiveOfferForm/index.test.js +1 -6
  261. package/App/Shared/Components/SaveConfiguration/index.js +26 -83
  262. package/App/Shared/Components/SendEmail/index.js +8 -30
  263. package/App/Shared/Components/Stepper/index.js +19 -56
  264. package/App/Shared/Components/Stepper/index.story.js +0 -5
  265. package/App/Shared/Components/ToolbarList/index.js +23 -69
  266. package/App/Shared/Components/ToolbarList/index.story.js +0 -4
  267. package/App/Shared/Components/VariantChooser/index.js +25 -68
  268. package/App/Shared/Components/VariantChooser/index.story.js +0 -13
  269. package/App/Shared/Containers/AlertMessages.js +1 -11
  270. package/App/Shared/Containers/AmountPrice/AmountPriceAdminareaWrapper.js +4 -17
  271. package/App/Shared/Containers/AmountPrice/index.js +29 -74
  272. package/App/Shared/Containers/BulkNames.js +26 -117
  273. package/App/Shared/Containers/Error.js +1 -11
  274. package/App/Shared/Containers/GlobalLoader.js +1 -9
  275. package/App/Shared/Containers/Header/index.js +22 -57
  276. package/App/Shared/Containers/LicenseNotice/LicenseNotice.js +2 -9
  277. package/App/Shared/Containers/LicenseNotice/index.js +0 -2
  278. package/App/Shared/Containers/LoadConfiguration/LoadConfiguration.js +36 -79
  279. package/App/Shared/Containers/LoadConfiguration/index.js +0 -2
  280. package/App/Shared/Containers/PdfDownload/index.js +2 -11
  281. package/App/Shared/Containers/ProductVariant/ProductVariant.js +59 -144
  282. package/App/Shared/Containers/ProductVariant/index.js +0 -2
  283. package/App/Shared/Containers/SaveConfiguration.js +3 -14
  284. package/App/Shared/Containers/SendEmail/SendEmail.js +3 -15
  285. package/App/Shared/Containers/SendEmail/index.js +0 -2
  286. package/App/Shared/Providers/DefaultCanvasProvider.js +5 -25
  287. package/App/Storage.js +3 -7
  288. package/App/Store.js +17 -38
  289. package/App/Translations.js +29 -43
  290. package/App/Utils/Request/lazyFetch.js +29 -45
  291. package/App/Utils/Request/pathParams.js +2 -7
  292. package/App/Utils/createMessageInterface.js +10 -21
  293. package/App/Utils/customClassName.js +0 -2
  294. package/App/Utils/getContrastText.js +5 -7
  295. package/App/Utils/getImageUrl.js +0 -8
  296. package/App/configuration.js +74 -104
  297. package/App/index.js +7 -29
  298. package/App/initServices.js +9 -32
  299. package/App/setup.js +2 -6
  300. package/Framework/Api.js +19 -41
  301. package/Framework/ComponentContainer.js +28 -76
  302. package/Framework/Components/Carousel/index.js +40 -104
  303. package/Framework/Components/Dialog/index.js +101 -237
  304. package/Framework/Components/DialogSelect/index.js +38 -132
  305. package/Framework/Components/Input/index.js +16 -58
  306. package/Framework/Components/LoadingOverlay/index.js +1 -12
  307. package/Framework/Components/Markdown/index.js +5 -26
  308. package/Framework/Components/Mobile/index.js +5 -13
  309. package/Framework/CustomError.js +13 -29
  310. package/Framework/Helpers/TransitionDetect.js +10 -29
  311. package/Framework/Helpers/isLandscapeMobile.js +0 -3
  312. package/Framework/Helpers/isMobileDevice.js +3 -8
  313. package/Framework/Helpers/isMobileSize.js +1 -4
  314. package/Framework/Services/AbstractAdminareaCommunicationService.js +8 -15
  315. package/Framework/Services/AbstractAsyncService.js +7 -14
  316. package/Framework/Services/AbstractConfiguratorService.js +9 -15
  317. package/Framework/Services/AbstractInteractionService.js +7 -14
  318. package/Framework/Services/AbstractStoreService.js +9 -15
  319. package/Framework/Services/AbstractUIService.js +7 -14
  320. package/Framework/Services/AbstractVisualizationService.js +7 -14
  321. package/Framework/Services/AsyncService.js +11 -33
  322. package/Framework/Services/StoreService.js +43 -92
  323. package/Framework/bindDecorator.js +24 -54
  324. package/Framework/i18n.js +57 -142
  325. package/Resources/Icons/MaterialUI/Icons/AddCircle.js +1 -5
  326. package/Resources/Icons/MaterialUI/Icons/RemoveCircle.js +1 -5
  327. package/Shared/Components/CustomDialog.js +21 -36
  328. package/Shared/Components/CustomDialogSelect.js +17 -47
  329. package/Shared/Components/MainButton.js +14 -33
  330. package/Shared/ErrorTypes/DeferredError.js +13 -31
  331. package/Shared/HOCs/ResizeDetect/ResizeDetect.dev.js +9 -18
  332. package/Shared/HOCs/ResizeDetect/ResizeDetect.js +28 -87
  333. package/Shared/HOCs/getDisplayName.js +0 -1
  334. package/Shared/HOCs/withFixedChangeHandler.js +11 -25
  335. package/Shared/PropTypes/ReactComponent.js +1 -5
  336. package/Shared/Styles/absoluteCenter.js +2 -5
  337. package/Utils/Array/isIdentical.js +3 -12
  338. package/Utils/Async/AsyncManager.js +51 -75
  339. package/Utils/Async/Deferred.js +12 -40
  340. package/Utils/Async/ObjectLock.js +3 -7
  341. package/Utils/Decorators/Observable.js +17 -34
  342. package/Utils/Dev/HOCs/withFilePicker.js +13 -41
  343. package/Utils/Dev/isDev.js +0 -2
  344. package/Utils/Events/pointerEvent.js +14 -47
  345. package/Utils/Events/preventEventDoubling.js +2 -7
  346. package/Utils/Function/cached.js +1 -9
  347. package/Utils/Function/createDebounceManager.js +3 -18
  348. package/Utils/Function/createSelector.js +7 -18
  349. package/Utils/Function/memoize.js +3 -12
  350. package/Utils/Function/sendMessage.js +3 -8
  351. package/Utils/Helper/createSelectionRangeMemo.js +4 -12
  352. package/Utils/Immutable/set.js +12 -35
  353. package/Utils/Math/conversions.js +2 -5
  354. package/Utils/Math/isPositiveNumber.js +2 -5
  355. package/Utils/Redux/createActionWithGlobalState.js +8 -11
  356. package/Utils/Styles/combineMediaQueries.js +2 -6
  357. package/Utils/Styles/createCheckerBoardBackground.js +5 -6
  358. package/Utils/Test/CallOrderChecker.js +0 -3
  359. package/Utils/Test/createStoreProvider.js +1 -7
  360. package/Utils/Test/formDataToJSON.js +0 -1
  361. package/Utils/Test/mountWithState.js +3 -9
  362. package/index.js +2 -2
  363. package/package.json +36 -33
  364. package/public/translations/de_DE.json +3 -27
  365. package/public/translations/en_GB.json +2 -26
  366. package/scripts/getDefaultWebpackConfig.js +25 -14
  367. package/src/App/Error/ProductionErrorPage/index.js +1 -1
  368. package/src/App/Modules/Creator/Components/ConfigurationvariantItem/index.js +3 -4
  369. package/src/App/Modules/Creator/Components/ConfigurationvariantSelection/index.js +2 -1
  370. package/src/App/Modules/Creator/Components/FastConfiguration/SelectableRow.js +1 -1
  371. package/src/App/Modules/Creator/Components/FastConfiguration/index.js +6 -5
  372. package/src/App/Modules/Creator/Components/FastConfigurationSelect/index.js +8 -6
  373. package/src/App/Modules/Creator/Components/FullScreenView/FullScreenView.js +3 -1
  374. package/src/App/Modules/Creator/Components/Incompatibility/OptionExclusionRule/index.js +2 -2
  375. package/src/App/Modules/Creator/Components/Incompatibility/OptionRule/index.js +2 -2
  376. package/src/App/Modules/Creator/Components/Incompatibility/index.js +2 -2
  377. package/src/App/Modules/Creator/Components/InvalidConfigurationNotice/index.js +1 -1
  378. package/src/App/Modules/Creator/Components/Option/__snapshots__/index.test.js.snap +0 -13
  379. package/src/App/Modules/Creator/Components/Option/index.js +9 -6
  380. package/src/App/Modules/Creator/Components/Option/index.test.js +1 -1
  381. package/src/App/Modules/Creator/Components/OptionAmount/index.js +2 -1
  382. package/src/App/Modules/Creator/Components/OptionAmount/index.test.js +1 -1
  383. package/src/App/Modules/Creator/Components/Optiondetail/ZoomImage/index.js +1 -1
  384. package/src/App/Modules/Creator/Components/Optiondetail/index.js +9 -7
  385. package/src/App/Modules/Creator/Components/Optiondetail/index.story.js +1 -48
  386. package/src/App/Modules/Creator/Components/Optiondetail/index.test.js +1 -1
  387. package/src/App/Modules/Creator/Components/Optiondetail/index.test.mocks.js +49 -0
  388. package/src/App/Modules/Creator/Components/OptionsList/index.js +3 -2
  389. package/src/App/Modules/Creator/Components/ProductPart/index.test.js +1 -1
  390. package/src/App/Modules/Creator/Components/ProductPartsList/index.js +1 -1
  391. package/src/App/Modules/Creator/Components/SavedConfiguration/index.js +3 -3
  392. package/src/App/Modules/Creator/Components/StoreConfigurationForm/index.js +2 -2
  393. package/src/App/Modules/Creator/Containers/CustomTitleEditor/index.js +1 -1
  394. package/src/App/Modules/Creator/Containers/FastConfiguration/index.js +1 -1
  395. package/src/App/Modules/Creator/Containers/FormattedPrice/index.js +1 -1
  396. package/src/App/Modules/Creator/Containers/InvalidConfigurationNotice/index.js +1 -1
  397. package/src/App/Modules/Creator/Containers/Optiondetail/index.js +1 -1
  398. package/src/App/Modules/Designer/Components/AddGalleryImage/__snapshots__/index.test.jsx.snap +0 -8
  399. package/src/App/Modules/Designer/Components/AddGalleryImage/index.js +4 -4
  400. package/src/App/Modules/Designer/Components/AddGalleryImage/index.test.jsx +0 -27
  401. package/src/App/Modules/Designer/Components/AddVisualElement/index.js +6 -6
  402. package/src/App/Modules/Designer/Components/AddVisualElement/index.test.jsx +3 -2
  403. package/src/App/Modules/Designer/Components/CloseDesignEditor/index.js +3 -3
  404. package/src/App/Modules/Designer/Components/ColorPalettes/ColorPalettesSearch.js +6 -6
  405. package/src/App/Modules/Designer/Components/ColorPalettes/index.js +14 -14
  406. package/src/App/Modules/Designer/Components/ColorPalettes/index.test.jsx +1 -1
  407. package/src/App/Modules/Designer/Components/DesignAreaControlbox/index.js +8 -8
  408. package/src/App/Modules/Designer/Components/DesignAreaControlbox/index.test.jsx +1 -1
  409. package/src/App/Modules/Designer/Components/DesignerSelectionToolbox/CustomFontOverlay.js +5 -5
  410. package/src/App/Modules/Designer/Components/DesignerSelectionToolbox/DesignerSelectionToolbox.js +2 -2
  411. package/src/App/Modules/Designer/Components/Dialog/index.js +1 -1
  412. package/src/App/Modules/Designer/Components/EditDesignButton/index.js +3 -2
  413. package/src/App/Modules/Designer/Components/FeedbackNotice/index.js +3 -3
  414. package/src/App/Modules/Designer/Components/ImageColorize/index.js +1 -1
  415. package/src/App/Modules/Designer/Components/ImageControlbox/index.js +6 -6
  416. package/src/App/Modules/Designer/Components/ImageEditDialog/ImageUpload.js +32 -6
  417. package/src/App/Modules/Designer/Components/ImageEditDialog/index.js +16 -12
  418. package/src/App/Modules/Designer/Components/ImageLibraryFilter/index.js +6 -6
  419. package/src/App/Modules/Designer/Components/ImageLibraryThumbnail/index.js +11 -7
  420. package/src/App/Modules/Designer/Components/ObjectTools/index.js +2 -2
  421. package/src/App/Modules/Designer/Components/Select/index.js +3 -3
  422. package/src/App/Modules/Designer/Components/TextControlbox/TextFormatIcon.js +1 -1
  423. package/src/App/Modules/Designer/Components/TextControlbox/index.js +11 -11
  424. package/src/App/Modules/Designer/Components/TextControlbox/index.test.jsx +3 -2
  425. package/src/App/Modules/Designer/Containers/AddGalleryImage.js +1 -1
  426. package/src/App/Modules/Designer/Designer.js +1 -1
  427. package/src/App/Modules/Designer/DesignerUI.js +7 -2
  428. package/src/App/Modules/Designer/Layouts/Mobile/TwoSideBottomBar.js +1 -1
  429. package/src/App/Modules/Designer/Layouts/PopupAreaProvider.js +1 -1
  430. package/src/App/Modules/Designer/MultilayerComponents/DesignerClickAwayListener.js +1 -1
  431. package/src/App/Modules/Designer/MultilayerComponents/InlineToolboxPortal.js +1 -1
  432. package/src/App/Modules/Designer/MultilayerComponents/StandardToolboxPortal.js +1 -1
  433. package/src/App/Modules/Designer/setupDesigner.js +22 -19
  434. package/src/App/Modules/Visualization/AlignTargetContainer.js +1 -1
  435. package/src/App/Modules/Visualization/CreatorAlignTarget.js +1 -1
  436. package/src/App/Modules/Visualization/DefaultVisualizationProvider.js +7 -2
  437. package/src/App/Modules/Visualization/DesignerAlignTarget.js +1 -1
  438. package/src/App/Reducers/Actions.js +5 -5
  439. package/src/App/Reducers/ConfigurationMode/Selectors.js +6 -0
  440. package/src/App/Reducers/Configurator/Actions.js +8 -1
  441. package/src/App/Reducers/Configurator/Reducer.js +27 -21
  442. package/src/App/Reducers/Configurator/Selectors.js +4 -1
  443. package/src/App/Reducers/DesignArea/Selectors.js +10 -0
  444. package/src/App/Reducers/Reducer.js +4 -3
  445. package/src/App/Reducers/UI/Actions.js +15 -1
  446. package/src/App/Reducers/UI/Reducer.js +20 -0
  447. package/src/App/Routing.js +12 -29
  448. package/src/App/Screens/Configurator/CalculationWidgetScreen.js +1 -4
  449. package/src/App/Screens/Configurator/Components/AmountSelection/index.js +4 -4
  450. package/src/App/Screens/Configurator/Components/CalculationWidget/index.js +3 -3
  451. package/src/App/Screens/Configurator/Components/CalculationWidget/index.test.jsx +5 -2
  452. package/src/App/Screens/Configurator/Components/ConfigurationModeSwitch/ConfigurationModeSwitch.js +1 -1
  453. package/src/App/Screens/Configurator/Components/FallbackVisualization/FallbackVisualization.js +1 -1
  454. package/src/App/Screens/Configurator/Components/FullScreenView/index.js +4 -4
  455. package/src/App/Screens/Configurator/Components/ItemTile/ItemTile.js +55 -17
  456. package/src/App/Screens/Configurator/Components/LandscapeInformation/index.js +1 -1
  457. package/src/App/Screens/Configurator/Components/NoVisualization/NoVisualization.js +1 -1
  458. package/src/App/Screens/Configurator/Components/PreviewPortal/index.js +7 -5
  459. package/src/App/Screens/Configurator/Components/Thumbnail/index.js +5 -4
  460. package/src/App/Screens/Configurator/Components/TotalPrice/TotalPrice.js +3 -3
  461. package/src/App/Screens/Configurator/Containers/AmountPrice.js +1 -1
  462. package/src/App/Screens/Configurator/Containers/__tests__/CalculationWidget.test.js +4 -1
  463. package/src/App/Screens/Configurator/Screen.js +13 -5
  464. package/src/App/Screens/Configurator/__tests__/Screen.test.js +6 -0
  465. package/src/App/Screens/DesignerProductPreview/Screen.js +2 -3
  466. package/src/App/Screens/DesignerProductPreview/__tests__/__snapshots__/Screen.test.js.snap +11 -11
  467. package/src/App/Screens/ItemOverview.js +74 -57
  468. package/src/App/Screens.js +1 -1
  469. package/src/App/Services/AnalyticsService.js +2 -1
  470. package/src/App/Services/DesignDataService.js +53 -7
  471. package/src/App/Services/DesignerService.js +22 -13
  472. package/src/App/Services/UIService.js +1 -1
  473. package/src/App/Services/VisualizationService.js +41 -2
  474. package/src/App/Services/__tests__/DesignDataService.test.js +1 -0
  475. package/src/App/Shared/Components/AcceptDesign/index.js +7 -6
  476. package/src/App/Shared/Components/AcceptPrivacy/index.js +4 -3
  477. package/src/App/Shared/Components/AddToBasket/index.js +4 -4
  478. package/src/App/Shared/Components/AmountInput/index.js +1 -1
  479. package/src/App/Shared/Components/AmountPrice/__snapshots__/index.test.jsx.snap +0 -125
  480. package/src/App/Shared/Components/AmountPrice/index.js +40 -17
  481. package/src/App/Shared/Components/AmountPrice/index.test.jsx +1 -1
  482. package/src/App/Shared/Components/Analytics/AnalyticsWrapper.test.js +2 -1
  483. package/src/App/Shared/Components/BulkNames/index.js +3 -3
  484. package/src/App/Shared/Components/CallToAction/__snapshots__/index.test.js.snap +4 -4
  485. package/src/App/Shared/Components/CallToAction/index.js +3 -3
  486. package/src/App/Shared/Components/CallToAction/index.test.js +1 -1
  487. package/src/App/Shared/Components/ConfigurationOverview/index.js +1 -1
  488. package/src/App/Shared/Components/Header/Header.js +3 -3
  489. package/src/App/Shared/Components/InformationTag/InformationTag.js +4 -2
  490. package/src/App/Shared/Components/LicenseNotice/LicenseNotice.js +3 -1
  491. package/src/App/Shared/Components/LoadConfiguration/index.js +27 -13
  492. package/src/App/Shared/Components/Notification/index.js +3 -3
  493. package/src/App/Shared/Components/PdfDownload/index.js +3 -3
  494. package/src/App/Shared/Components/PlusMinusInput/index.js +4 -4
  495. package/src/App/Shared/Components/PriceList/index.js +9 -9
  496. package/src/App/Shared/Components/PriceList/index.test.js +2 -2
  497. package/src/App/Shared/Components/PriceOverview/index.js +4 -4
  498. package/src/App/Shared/Components/PriceOverview/index.story.js +1 -1
  499. package/src/App/Shared/Components/ProductVariant/Image.js +1 -1
  500. package/src/App/Shared/Components/ProductVariant/index.js +5 -5
  501. package/src/App/Shared/Components/Progress/Progress.js +3 -3
  502. package/src/App/Shared/Components/ReceiveOfferForm/index.js +4 -4
  503. package/src/App/Shared/Components/SaveConfiguration/index.js +3 -3
  504. package/src/App/Shared/Components/SendEmail/index.js +3 -3
  505. package/src/App/Shared/Components/Stepper/index.js +4 -4
  506. package/src/App/Shared/Components/ToolbarList/index.js +6 -6
  507. package/src/App/Shared/Components/VariantChooser/index.js +7 -7
  508. package/src/App/Shared/Containers/AmountPrice/index.js +7 -1
  509. package/src/App/Shared/Containers/SaveConfiguration.js +1 -1
  510. package/src/App/Utils/Request/lazyFetch.js +2 -3
  511. package/src/App/configuration.js +20 -15
  512. package/src/App/index.js +2 -2
  513. package/src/Framework/Api.js +3 -3
  514. package/src/Framework/Components/Carousel/index.js +2 -2
  515. package/src/Framework/Components/Dialog/index.js +13 -10
  516. package/src/Framework/Components/DialogSelect/index.js +6 -5
  517. package/src/Framework/i18n.js +15 -8
  518. package/src/Shared/Components/CustomDialog.js +2 -1
  519. package/src/Shared/Components/CustomDialogSelect.js +2 -2
  520. package/src/Shared/Components/MainButton.js +2 -2
  521. package/src/Shared/Components/__tests__/index.test.jsx +6 -1
  522. package/src/Shared/HOCs/ResizeDetect/ResizeDetect.dev.js +1 -1
  523. package/src/Utils/Decorators/Observable.js +1 -0
  524. package/src/Utils/Test/mountWithState.js +1 -1
  525. package/App/Modules/Designer/Components/ImageEditDialog/res/checkers_tile.png +0 -0
  526. package/src/App/Modules/Designer/Components/ImageEditDialog/res/checkers_tile.png +0 -0
@@ -110,26 +110,29 @@ export const setupDesigner = designDataService => {
110
110
  canvasMap.has(designArea) ? canvasMap.get(designArea) : false
111
111
  );
112
112
 
113
- designDataService.registerInitCanvas(async ({ designArea, prevDesignArea, canvasSize, maskData }) => {
114
- let canvas;
115
- let isNew;
116
- if (canvasMap.has(prevDesignArea)) {
117
- canvas = canvasMap.get(prevDesignArea);
118
- canvasMap.delete(prevDesignArea);
119
- canvasMap.set(designArea, canvas);
120
- canvas.setSize(canvasSize);
121
- isNew = false;
122
- } else {
123
- canvas = canvasRepository.requestCanvas(designArea, canvasSize);
124
- isNew = true;
113
+ designDataService.registerInitCanvas(
114
+ async ({ designArea, prevDesignArea, canvasSize, maskData, colorOverlayData }) => {
115
+ let canvas;
116
+ let isNew;
117
+ if (canvasMap.has(prevDesignArea)) {
118
+ canvas = canvasMap.get(prevDesignArea);
119
+ canvasMap.delete(prevDesignArea);
120
+ canvasMap.set(designArea, canvas);
121
+ canvas.setSize(canvasSize);
122
+ isNew = false;
123
+ } else {
124
+ canvas = canvasRepository.requestCanvas(designArea, canvasSize);
125
+ isNew = true;
126
+ }
127
+ await canvas.useMask(maskData);
128
+ canvas.useColorOverlay(colorOverlayData);
129
+ return {
130
+ canvas,
131
+ designArea,
132
+ isNew,
133
+ };
125
134
  }
126
- await canvas.useMask(maskData);
127
- return {
128
- canvas,
129
- designArea,
130
- isNew,
131
- };
132
- });
135
+ );
133
136
 
134
137
  designDataService.registerRemoveCanvas(designArea => {
135
138
  if (canvasMap.has(designArea)) {
@@ -1,5 +1,5 @@
1
1
  import React, { useRef, useEffect } from 'react';
2
- import withStyles from '@material-ui/core/styles/withStyles';
2
+ import { withStyles } from '@material-ui/core/styles';
3
3
  import { withAlignTarget } from 'redhotmagma-visualization/AlignTargetProvider';
4
4
  import clsx from 'clsx';
5
5
 
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
2
  import { AlignTargetContainer } from '../Creator/Containers';
3
- import withStyles from '@material-ui/core/styles/withStyles';
3
+ import { withStyles } from '@material-ui/core/styles';
4
4
  import { useSelector } from 'react-redux';
5
5
 
6
6
  const styles = theme => ({
@@ -3,7 +3,6 @@ import PropTypes from 'prop-types';
3
3
  import { VisualizationProvider } from 'redhotmagma-visualization/VisualizationProvider';
4
4
  import { AlignTargetProvider } from 'redhotmagma-visualization/AlignTargetProvider';
5
5
  import { Services } from 'App/ServiceLocator';
6
- import sendMessage from 'Utils/Function/sendMessage';
7
6
 
8
7
  export class DefaultVisualizationProvider extends React.Component {
9
8
  static propTypes = {
@@ -19,7 +18,13 @@ export class DefaultVisualizationProvider extends React.Component {
19
18
  this.setState({
20
19
  visualization,
21
20
  });
22
- sendMessage(Services.visualization, 'registerComponentChangeListener', this.onComponentChange);
21
+ this.removeComponentChangeListener = Services.visualization.registerComponentChangeListener(
22
+ this.onComponentChange
23
+ );
24
+ }
25
+
26
+ componentWillUnmount() {
27
+ this.removeComponentChangeListener && this.removeComponentChangeListener();
23
28
  }
24
29
 
25
30
  onComponentChange = ({ data: { component } }) => {
@@ -1,5 +1,5 @@
1
1
  import { AlignTargetContainer } from '../Creator/Containers';
2
- import withStyles from '@material-ui/core/styles/withStyles';
2
+ import { withStyles } from '@material-ui/core/styles';
3
3
 
4
4
  const styles = theme => ({
5
5
  root: {
@@ -1,5 +1,5 @@
1
1
  import Api, { isCancelError } from 'Framework/Api';
2
- import _ from 'lodash';
2
+ import isObject from 'lodash/isObject';
3
3
  import { createAsyncManager } from '../../Utils/Async/AsyncManager';
4
4
 
5
5
  export const REQUEST_DATA = 'REQUEST_DATA';
@@ -59,11 +59,11 @@ const handleResponse = (source, request, receiver, extraData = {}) => dispatch =
59
59
  return dispatch(receiver(response.data, extraData, response));
60
60
  })
61
61
  .catch(error => {
62
- if (_.isObject(error.response)) {
62
+ if (isObject(error.response)) {
63
63
  if (error.response.status === 404) {
64
64
  return dispatch(requestError(source, error));
65
65
  }
66
- if (_.isObject(error.response.data)) {
66
+ if (isObject(error.response.data)) {
67
67
  // request error (generated by the server)
68
68
  dispatch(receiveData(source, error));
69
69
  return dispatch(receiver(error.response.data, extraData, error.response));
@@ -122,11 +122,11 @@ export const asyncRequest = (source, receiver, extraData = {}, options = {}) =>
122
122
  if (useLocalErrorHandling) {
123
123
  throw error;
124
124
  }
125
- if (_.isObject(error.response)) {
125
+ if (isObject(error.response)) {
126
126
  if (error.response.status === 404) {
127
127
  dispatch(requestError(source, error));
128
128
  }
129
- if (_.isObject(error.response.data)) {
129
+ if (isObject(error.response.data)) {
130
130
  // request error (generated by the server)
131
131
  dispatch(receiveData(source, error));
132
132
  return receiver
@@ -39,7 +39,13 @@ export const isConfigurationModeSwitchAvailable = createSelector(
39
39
  modules => Object.values(modules).length > 1
40
40
  );
41
41
 
42
+ export const isCreatorModeSelected = createSelector(getSelectedConfigurationMode, mode =>
43
+ isCreatorMode(mode)
44
+ );
45
+
42
46
  export const isDesignerMode = modeStr => modeStr === 'designer';
43
47
 
48
+ export const isCreatorMode = modeStr => modeStr === 'creator';
49
+
44
50
  export const getAvailableLicenses = data =>
45
51
  (data && data.license && data.license.split('+').filter(a => a)) || [];
@@ -1,5 +1,9 @@
1
1
  import * as apiActions from '../Actions';
2
- import { first, isObject, get, isArray, flatten } from 'lodash';
2
+ import first from 'lodash/first';
3
+ import isObject from 'lodash/isObject';
4
+ import get from 'lodash/get';
5
+ import isArray from 'lodash/isArray';
6
+ import flatten from 'lodash/flatten';
3
7
  import find from 'lodash/find';
4
8
  import uniq from 'lodash/uniq';
5
9
  import { t } from 'Framework/i18n';
@@ -515,6 +519,9 @@ export const switchOptions = (
515
519
 
516
520
  export const doCalculation = () => (dispatch, getState) => {
517
521
  const configuration = getConfiguration(getConfigurator(getState()));
522
+ if (!configuration.item.identifier) {
523
+ return {};
524
+ }
518
525
  return dispatch(apiActions.postDataAsync('calculation', configuration, receiveCalculation));
519
526
  };
520
527
 
@@ -1,6 +1,12 @@
1
1
  import * as actionTypes from './Actions';
2
- import _ from 'lodash';
3
2
  import get from 'lodash/get';
3
+ import isObject from 'lodash/isObject';
4
+ import mergeWith from 'lodash/mergeWith';
5
+ import merge from 'lodash/merge';
6
+ import filter from 'lodash/filter';
7
+ import cloneDeep from 'lodash/cloneDeep';
8
+ import isArray from 'lodash/isArray';
9
+ import find from 'lodash/find';
4
10
  import findIndex from 'lodash/findIndex';
5
11
  import omit from 'lodash/omit';
6
12
  import forEach from 'lodash/forEach';
@@ -16,7 +22,7 @@ const initialState = {
16
22
  options: [],
17
23
  optionsWithDetails: [],
18
24
  selectedoptionclassification: {},
19
- calculation: null,
25
+ calculation: {},
20
26
  calculationAutoResolve: true,
21
27
  optiondetails: {},
22
28
  validation: null,
@@ -43,7 +49,7 @@ export function configurationHandler(state, action) {
43
49
  case actionTypes.RECEIVE_CONFIGURATION: {
44
50
  const configuration = action.data;
45
51
 
46
- if (!_.isObject(configuration)) {
52
+ if (!isObject(configuration)) {
47
53
  throw new Error(
48
54
  `Server side error! The configuration must be a JSON structure! Data: ${configuration}`
49
55
  );
@@ -53,13 +59,13 @@ export function configurationHandler(state, action) {
53
59
  let { selectedoptionclassification } = state;
54
60
  if (selectedoptionclassification.identifier) {
55
61
  selectedoptionclassification =
56
- _.find(configuration.optionclassifications, {
62
+ find(configuration.optionclassifications, {
57
63
  identifier: selectedoptionclassification.identifier,
58
64
  }) || selectedoptionclassification;
59
65
  }
60
66
 
61
67
  // set validation from the received configuration
62
- const validation = _.get(configuration, 'information.validation_result');
68
+ const validation = get(configuration, 'information.validation_result');
63
69
 
64
70
  return {
65
71
  ...state,
@@ -80,7 +86,7 @@ export function configurationHandler(state, action) {
80
86
  let { selectedoptionclassification, options } = state;
81
87
  const { optionclassifications } = configuration;
82
88
  if (selectedoptionclassification.identifier) {
83
- const optionclassificationData = _.find(optionclassifications, {
89
+ const optionclassificationData = find(optionclassifications, {
84
90
  identifier: selectedoptionclassification.identifier,
85
91
  });
86
92
  if (optionclassificationData) {
@@ -91,7 +97,7 @@ export function configurationHandler(state, action) {
91
97
  for (let soi in selectedoptions) {
92
98
  for (let oi in options) {
93
99
  if (selectedoptions[soi].identifier === options[oi].identifier) {
94
- options[oi] = _.mergeWith(
100
+ options[oi] = mergeWith(
95
101
  options[oi], // dst
96
102
  selectedoptions[soi], // src
97
103
  (dstValue, srcValue) => {
@@ -127,7 +133,7 @@ export function configurationHandler(state, action) {
127
133
  let { selectedoptionclassification } = state;
128
134
  if (selectedoptionclassification.identifier) {
129
135
  selectedoptionclassification =
130
- _.find(configuration.optionclassifications, {
136
+ find(configuration.optionclassifications, {
131
137
  identifier: selectedoptionclassification.identifier,
132
138
  }) || selectedoptionclassification;
133
139
  }
@@ -156,20 +162,20 @@ export function optionAndOptionclassificationHandler(state, action) {
156
162
  }
157
163
 
158
164
  case actionTypes.RECEIVE_OPTIONS: {
159
- const options = _.cloneDeep(action.data);
165
+ const options = cloneDeep(action.data);
160
166
 
161
167
  // the selected options of the selected optionclassification should be updated
162
168
  // eg. after the switchoption call added a partial object (it contains only the identifier and amount)
163
169
  // but only missing values are updated
164
170
  const keepDstProps = ['amount'];
165
- const selectedoptionclassification = _.cloneDeep(state.selectedoptionclassification);
171
+ const selectedoptionclassification = cloneDeep(state.selectedoptionclassification);
166
172
  for (let oi in options) {
167
173
  const option = options[oi];
168
174
  const { selectedoptions } = selectedoptionclassification;
169
175
  for (let os in selectedoptions) {
170
176
  const selectedoption = selectedoptions[os];
171
177
  if (selectedoption.identifier === option.identifier) {
172
- options[oi] = selectedoptions[os] = _.mergeWith(
178
+ options[oi] = selectedoptions[os] = mergeWith(
173
179
  selectedoptions[os], // dst
174
180
  option, // src
175
181
  (dstValue, srcValue, key) => {
@@ -194,12 +200,12 @@ export function optionAndOptionclassificationHandler(state, action) {
194
200
  for (let os in selectedoptions) {
195
201
  const selectedoption = selectedoptions[os];
196
202
  for (let oi in options) {
197
- const itemGroupChildren = _.get(options[oi], 'option_group.children');
203
+ const itemGroupChildren = get(options[oi], 'option_group.children');
198
204
  if (itemGroupChildren instanceof Array) {
199
205
  for (let ci in itemGroupChildren) {
200
206
  if (itemGroupChildren[ci].identifier === selectedoption.identifier) {
201
- options[oi] = _.mergeWith(
202
- _.cloneDeep(options[oi]), // dst
207
+ options[oi] = mergeWith(
208
+ cloneDeep(options[oi]), // dst
203
209
  itemGroupChildren[ci], // src
204
210
  (dstValue, srcValue) =>
205
211
  // if the value is present in the src then use it, otherwise leave the original
@@ -319,7 +325,7 @@ export function dataHandler(state, action) {
319
325
  }
320
326
 
321
327
  case actionTypes.RECEIVE_CODESNIPPETS: {
322
- if (!_.isArray(action.data)) {
328
+ if (!isArray(action.data)) {
323
329
  throw new Error(
324
330
  `Server side error! The code snippets must be a JSON array! Data: ${action.data}`
325
331
  );
@@ -468,9 +474,9 @@ export function baseHandler(state, action) {
468
474
  }
469
475
  case actionTypes.DELETE_SELECTED_AMOUNTS: {
470
476
  const selectedAmountsPath = 'configuration.customdata.selectedAmounts';
471
- const selectedAmounts = _.cloneDeep(get(state, selectedAmountsPath, {}));
477
+ const selectedAmounts = cloneDeep(get(state, selectedAmountsPath, {}));
472
478
  forEach(selectedAmounts, (selectedAmount, identifier) => {
473
- const variantIdentifier = _.find(action.variant.sizes, { identifier: identifier });
479
+ const variantIdentifier = find(action.variant.sizes, { identifier: identifier });
474
480
  if (variantIdentifier) {
475
481
  delete selectedAmounts[variantIdentifier.identifier];
476
482
  }
@@ -524,7 +530,7 @@ export function configurationModifierHandler(state, action) {
524
530
  }
525
531
  case actionTypes.DELETE_SELECTED_AMOUNT: {
526
532
  const selectedAmountsPath = 'configuration.customdata.selectedAmounts';
527
- const selectedAmounts = _.cloneDeep(get(state, selectedAmountsPath, {}));
533
+ const selectedAmounts = cloneDeep(get(state, selectedAmountsPath, {}));
528
534
 
529
535
  delete selectedAmounts[action.identifier];
530
536
 
@@ -601,12 +607,12 @@ let reducerArray = Object.values(subReducers);
601
607
  let stateReducerArray = Object.values(stateChangeReducers);
602
608
 
603
609
  export const setSubReducers = customSubReducers => {
604
- _.merge(subReducers, customSubReducers);
610
+ merge(subReducers, customSubReducers);
605
611
  reducerArray = Object.values(subReducers);
606
612
  };
607
613
 
608
614
  export const setStateChangeReducers = customStateChangeReducers => {
609
- _.merge(stateChangeReducers, customStateChangeReducers);
615
+ merge(stateChangeReducers, customStateChangeReducers);
610
616
  stateReducerArray = Object.values(stateChangeReducers);
611
617
  };
612
618
 
@@ -628,7 +634,7 @@ export default function configuratorReducer(prevState = initialState, action = {
628
634
  }
629
635
 
630
636
  function filterOptionsWithDetails(options) {
631
- return _.filter(
637
+ return filter(
632
638
  options,
633
639
  option => !!(option.abstract || option.description || option.detailImageExists === true)
634
640
  );
@@ -1,6 +1,9 @@
1
1
  import get from 'lodash/get';
2
2
  import flow from 'lodash/flow';
3
- import { find, difference, keys, values } from 'lodash';
3
+ import find from 'lodash/find';
4
+ import difference from 'lodash/difference';
5
+ import keys from 'lodash/keys';
6
+ import values from 'lodash/values';
4
7
  import createSelector from '../../../Utils/Function/createSelector';
5
8
  import { getSelectedConfigurationMode } from '../ConfigurationMode/Selectors';
6
9
 
@@ -444,6 +444,16 @@ export function getEngravingBackgroundColor(state, designProductionMethod, varia
444
444
  );
445
445
  }
446
446
 
447
+ export function getColorOverlayData(state, designArea, variantIdentifier = false) {
448
+ const designProductionMethod = getSelectedDesignProductionMethodForDesignArea(state, designArea);
449
+ if (!designProductionMethodHasEngravingVisualizationEffect(designProductionMethod)) {
450
+ return null;
451
+ }
452
+ return {
453
+ color: getEngravingBackgroundColor(state, designArea, variantIdentifier),
454
+ };
455
+ }
456
+
447
457
  export function getVisualizationEffectWithOptions(state, designArea, variantIdentifier = false) {
448
458
  const designProductionMethod = getSelectedDesignProductionMethodForDesignArea(state, designArea);
449
459
  const effect = getVisualizationEffect(designProductionMethod);
@@ -1,4 +1,5 @@
1
- import _ from 'lodash';
1
+ import isObject from 'lodash/isObject';
2
+ import reduce from 'lodash/reduce';
2
3
 
3
4
  import {
4
5
  REQUEST_DATA,
@@ -70,7 +71,7 @@ export default function apiReducer(state = initialState, action = {}) {
70
71
  case REQUEST_ERROR: {
71
72
  const sourceState = getSourceState(action);
72
73
  const sources = { ...state.sources };
73
- const key = _.isObject(action.source) ? action.source.url : action.source;
74
+ const key = isObject(action.source) ? action.source.url : action.source;
74
75
  if (sourceState.isFetching) {
75
76
  sources[key] = sourceState;
76
77
  } else {
@@ -80,7 +81,7 @@ export default function apiReducer(state = initialState, action = {}) {
80
81
  return {
81
82
  ...state,
82
83
  sources,
83
- isFetching: _.reduce(
84
+ isFetching: reduce(
84
85
  sources,
85
86
  function(result, value) {
86
87
  return result || value.isFetching;
@@ -1,4 +1,5 @@
1
1
  export const SET_VISIBLE = 'ui/SET_VISIBLE';
2
+ export const SET_VISIBLE_WITH_COUNTER = 'ui/SET_VISIBLE_WITH_COUNTER';
2
3
 
3
4
  export const SET_WORK_IN_PROGRESS = 'ui/SET_WORK_IN_PROGRESS';
4
5
 
@@ -8,9 +9,22 @@ export const SHOW_ALERT = 'ui/SHOW_ALERT';
8
9
  export const DISMISS_ALERT = 'ui/DISMISS_ALERT';
9
10
  export const CONFIGURATION_NOT_FOUND_ERROR = 'ui/CONFIGURATION_NOT_FOUND';
10
11
 
12
+ export const VISIBILITY_NAMES = {
13
+ globalLoader: 'globalLoader',
14
+ };
15
+
16
+ export const COUNTER_TYPE_NAMES = [VISIBILITY_NAMES.globalLoader];
17
+
11
18
  export const setVisible = (name, show) => (dispatch, getState) => {
19
+ if (COUNTER_TYPE_NAMES.includes(name)) {
20
+ return dispatch({
21
+ type: SET_VISIBLE_WITH_COUNTER,
22
+ name,
23
+ show,
24
+ });
25
+ }
12
26
  if (getState().ui.visibilityMap[name] !== show) {
13
- dispatch({
27
+ return dispatch({
14
28
  type: SET_VISIBLE,
15
29
  name,
16
30
  show,
@@ -6,12 +6,14 @@ import {
6
6
  SHOW_ALERT,
7
7
  DISMISS_ALERT,
8
8
  CONFIGURATION_NOT_FOUND_ERROR,
9
+ SET_VISIBLE_WITH_COUNTER,
9
10
  } from './Actions';
10
11
 
11
12
  import * as apiActions from '../Actions';
12
13
 
13
14
  const initialState = {
14
15
  visibilityMap: {},
16
+ visibilityMapCount: {},
15
17
  backgroundWorkMap: {},
16
18
  error: null,
17
19
  message: null,
@@ -57,6 +59,24 @@ const UIReducer = (state = initialState, action = {}) => {
57
59
  };
58
60
  }
59
61
 
62
+ case SET_VISIBLE_WITH_COUNTER: {
63
+ const stackCount = Math.max(
64
+ (state.visibilityMapCount[action.name] || 0) + (action.show ? 1 : -1),
65
+ 0
66
+ );
67
+ return {
68
+ ...state,
69
+ visibilityMap: {
70
+ ...state.visibilityMap,
71
+ [action.name]: stackCount > 0,
72
+ },
73
+ visibilityMapCount: {
74
+ ...state.visibilityMapCount,
75
+ [action.name]: stackCount,
76
+ },
77
+ };
78
+ }
79
+
60
80
  case SET_WORK_IN_PROGRESS: {
61
81
  return {
62
82
  ...state,
@@ -1,7 +1,6 @@
1
1
  import React, { Component } from 'react';
2
2
  import PropTypes from 'prop-types';
3
- import { Route as BasicRoute, Redirect, Switch } from 'react-router';
4
- import { BrowserRouter } from 'react-router-dom';
3
+ import { BrowserRouter, Route as BasicRoute, Redirect, Switch } from 'react-router-dom';
5
4
 
6
5
  import WrapperFrame from './Frame';
7
6
  import ErrorBoundary from './Error/ErrorBoundary';
@@ -10,33 +9,17 @@ import combinedScreens from './Screens';
10
9
 
11
10
  import { getConf } from './configuration.js';
12
11
 
13
- class Route extends Component {
14
- static propTypes = {
15
- component: PropTypes.elementType,
16
- location: PropTypes.shape({
17
- search: PropTypes.string,
18
- }),
19
- };
20
-
21
- constructor(props) {
22
- super(props);
23
- const { component, ...rest } = props;
24
- this.state = {
25
- query: new URLSearchParams(props.location.search),
26
- component,
27
- rest,
28
- };
29
- }
30
-
31
- renderComponent = props => {
32
- const { component: Component, query } = this.state;
33
- return <Component {...props} query={query} />;
34
- };
35
-
36
- render() {
37
- return <BasicRoute {...this.state.rest} render={this.renderComponent} />;
38
- }
39
- }
12
+ const Route = ({ component: Component, ...props }) => (
13
+ <BasicRoute
14
+ {...props}
15
+ render={() => <Component {...props} query={new URLSearchParams(props.location.search)} />}
16
+ />
17
+ );
18
+
19
+ Route.propTypes = {
20
+ component: PropTypes.elementType,
21
+ location: PropTypes.object,
22
+ };
40
23
 
41
24
  const NoMatch = () => <div>No routing found for the specified path.</div>;
42
25
 
@@ -1,6 +1,5 @@
1
1
  import * as React from 'react';
2
2
  import PropTypes from 'prop-types';
3
- import { hot } from 'react-hot-loader';
4
3
 
5
4
  import { connect } from 'react-redux';
6
5
 
@@ -72,6 +71,4 @@ const mapStateToProps = state => {
72
71
  };
73
72
  };
74
73
 
75
- export const ConnectedCalculationWidgetScreen = connect(mapStateToProps)(
76
- hot(module)(CalculationWidgetScreen)
77
- );
74
+ export const ConnectedCalculationWidgetScreen = connect(mapStateToProps)(CalculationWidgetScreen);
@@ -1,10 +1,10 @@
1
1
  import React from 'react';
2
2
  import { withStyles } from '@material-ui/core/styles';
3
3
  import { t } from 'Framework/i18n';
4
- import Grid from '@material-ui/core/Grid/Grid';
5
- import InputBase from '@material-ui/core/InputBase/InputBase';
6
- import Typography from '@material-ui/core/Typography/Typography';
7
- import Divider from '@material-ui/core/Divider/Divider';
4
+ import Grid from '@material-ui/core/Grid';
5
+ import InputBase from '@material-ui/core/InputBase';
6
+ import Typography from '@material-ui/core/Typography';
7
+ import Divider from '@material-ui/core/Divider';
8
8
  import AmountInput from 'App/Shared/Components/AmountInput';
9
9
  import PropTypes from 'prop-types';
10
10
 
@@ -14,7 +14,7 @@ import ExpansionPanelSummary from '@material-ui/core/ExpansionPanelSummary';
14
14
  import ExpandMoreIcon from '@material-ui/icons/ExpandMore';
15
15
  import ExpansionPanelDetails from '@material-ui/core/ExpansionPanelDetails';
16
16
  import Divider from '@material-ui/core/Divider';
17
- import grey from '@material-ui/core/colors/grey';
17
+ import { grey } from '@material-ui/core/colors';
18
18
  import Button from '@material-ui/core/Button';
19
19
  import Card from '@material-ui/core/Card';
20
20
  import CardContent from '@material-ui/core/CardContent';
@@ -23,8 +23,8 @@ import AmountInput from 'App/Shared/Components/AmountInput';
23
23
  import MainButton from 'Shared/Components/MainButton';
24
24
  import AnalyticsWrapper from 'App/Shared/Components/Analytics/AnalyticsWrapper';
25
25
  import InformationTag from 'App/Shared/Components/InformationTag/InformationTag';
26
- import TextField from '@material-ui/core/TextField/TextField';
27
- import Input from '@material-ui/core/Input/Input';
26
+ import TextField from '@material-ui/core/TextField';
27
+ import Input from '@material-ui/core/Input';
28
28
  import Checkbox from '@material-ui/core/Checkbox';
29
29
  import { combineMediaQueriesWithAnd } from '../../../../../Utils/Styles/combineMediaQueries';
30
30
 
@@ -1,10 +1,13 @@
1
1
  /* eslint-env jest */
2
2
  import React from 'react';
3
- import { noop } from 'lodash';
3
+ import noop from 'lodash/noop';
4
4
  import { mount, render } from 'enzyme';
5
5
  import CalculationWidget from './index';
6
6
  import MenuItem from '@material-ui/core/MenuItem';
7
- import { Select, ExpansionPanel, ExpansionPanelDetails } from '@material-ui/core';
7
+ import Select from '@material-ui/core/Select';
8
+ import ExpansionPanel from '@material-ui/core/ExpansionPanel';
9
+ import ExpansionPanelDetails from '@material-ui/core/ExpansionPanelDetails';
10
+
8
11
  import ServiceLocator from 'App/ServiceLocator';
9
12
 
10
13
  const designAreas = [
@@ -1,7 +1,7 @@
1
1
  import React from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
  import { t } from 'Framework/i18n';
4
- import { withStyles } from '@material-ui/core';
4
+ import { withStyles } from '@material-ui/core/styles';
5
5
  import Button from '@material-ui/core/Button';
6
6
  import AnalyticsWrapper from '../../../../Shared/Components/Analytics/AnalyticsWrapper';
7
7
 
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
2
  import PropTypes from 'prop-types';
3
- import withStyles from '@material-ui/core/styles/withStyles';
3
+ import { withStyles } from '@material-ui/core/styles';
4
4
  import { T } from 'Framework/i18n';
5
5
  import Typography from '@material-ui/core/Typography';
6
6
  import { ImageLoader } from '../ImageLoader/ImageLoader';
@@ -2,11 +2,11 @@ import React from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
  import clsx from 'clsx';
4
4
  import { withStyles } from '@material-ui/core/styles';
5
- import Button from '@material-ui/core/Button/Button';
6
- import Icon from '@material-ui/core/Icon/Icon';
7
- import Grid from '@material-ui/core/Grid/Grid';
5
+ import Button from '@material-ui/core/Button';
6
+ import Icon from '@material-ui/core/Icon';
7
+ import Grid from '@material-ui/core/Grid';
8
8
  import Typography from '@material-ui/core/Typography';
9
- import withWidth, { isWidthDown } from '@material-ui/core/withWidth/withWidth';
9
+ import withWidth, { isWidthDown } from '@material-ui/core/withWidth';
10
10
  import { t } from 'Framework/i18n';
11
11
  import AnalyticsWrapper from 'App/Shared/Components/Analytics/AnalyticsWrapper';
12
12
  import customClassName from 'App/Utils/customClassName';