@configuratorware/configurator-frontendgui 1.41.1 → 1.42.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 (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 +21 -13
  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
@@ -88,6 +88,7 @@ import {
88
88
  designProductionMethodHasEmbroideryVisualizationEffect,
89
89
  getMandatoryVectorizationForDesignProductionMethods,
90
90
  isVectorizedLogoMandatory,
91
+ getColorOverlayData,
91
92
  } from '../Reducers/DesignArea/Selectors';
92
93
  import {
93
94
  getUserImage,
@@ -104,6 +105,7 @@ import {
104
105
  } from '../Reducers/Configurator/Selectors';
105
106
  import { getFontMapping } from '../Reducers/Fonts/Selectors';
106
107
  import { isConfirmResult } from '../Reducers/Confirm/Actions';
108
+ import { selectConfigurationMode } from '../Reducers/ConfigurationMode/Actions';
107
109
  import { requestLock } from '../../Utils/Async/ObjectLock';
108
110
  import { initDefaultColor } from '../Reducers/DesignData/Transformers';
109
111
  import { createSVGImageData } from '../Reducers/ImageGallery/Modifiers';
@@ -227,7 +229,8 @@ export const calculateImageBrightness = image => {
227
229
  return;
228
230
  }
229
231
 
230
- const imageUrl = `${getConf('network.host')}${image.data.thumbnail.url}`;
232
+ const imageUrl =
233
+ image.data && image.data.thumbnail ? `${getConf('network.host')}${image.data.thumbnail.url}` : null;
231
234
  const fuzzy = 0.1;
232
235
 
233
236
  return new Promise((resolve, reject) => {
@@ -265,15 +268,16 @@ export const calculateImageBrightness = image => {
265
268
  }
266
269
 
267
270
  const dlDiff = (light - dark) / (canvas.width * canvas.height);
268
- image.data.thumbnail.isThumbnailBright = dlDiff + fuzzy > 0;
269
-
271
+ image.data && image.data.thumbnail
272
+ ? (image.data.thumbnail.isThumbnailBright = dlDiff + fuzzy > 0)
273
+ : (image.isBright = dlDiff + fuzzy > 0);
270
274
  resolve(image);
271
275
  },
272
276
  false
273
277
  );
274
278
  downloadedImg.addEventListener('error', reject);
275
279
 
276
- downloadedImg.src = imageUrl;
280
+ downloadedImg.src = imageUrl || image.src;
277
281
  });
278
282
  };
279
283
 
@@ -575,6 +579,7 @@ export default class DesignDataService {
575
579
 
576
580
  this.selectInitialDesignView();
577
581
  this.designAreaListChangeListener(filteredDesignAreas, prevDesignAreas);
582
+ this.openDesignAreaEditorIfEditingParamIsSet();
578
583
  } catch (e) {
579
584
  // eslint-disable-next-line no-console
580
585
  console.error('Error occurred in processing design area list change:', e);
@@ -608,6 +613,33 @@ export default class DesignDataService {
608
613
  setupDesigner(this);
609
614
  }
610
615
 
616
+ async openDesignAreaEditorIfEditingParamIsSet() {
617
+ if (this._editingHandlerDone) {
618
+ return; // skip if already opened once
619
+ }
620
+ const query = new URLSearchParams(location.search);
621
+ if (!query.has('_editing')) {
622
+ return; // simply return if the param is not set
623
+ }
624
+ const isDesignerModeAvailable = get(
625
+ Services.store.state,
626
+ 'configurationMode.availableModes.designer'
627
+ );
628
+ if (!isDesignerModeAvailable) {
629
+ return; // skip if designer mode is not available
630
+ }
631
+ const selectedMode = get(Services.store.state, 'configurationMode.selectedMode');
632
+ if (selectedMode !== 'designer') {
633
+ Services.store.dispatch(selectConfigurationMode('designer'));
634
+ }
635
+ const viewChangedPromise = Services.visualization.getViewChangedPromise();
636
+ if (viewChangedPromise) {
637
+ await viewChangedPromise;
638
+ this.openDesignAreaEditor();
639
+ this._editingHandlerDone = true;
640
+ }
641
+ }
642
+
611
643
  componentChangeHandler(component, prevComponent) {
612
644
  const identifier = get(component, 'identifier');
613
645
  if (identifier && identifier !== get(prevComponent, 'identifier')) {
@@ -704,8 +736,10 @@ export default class DesignDataService {
704
736
  const maskData = getMaskDataForDesignArea(state, designArea);
705
737
  const canvasSize = getCanvasSizeFromDesignArea(state, designArea);
706
738
  const prevDesignArea = find(prevDesignAreas, { identifier: designArea.identifier });
739
+ const colorOverlayData = getColorOverlayData(state, designArea);
707
740
  return (
708
- this._initCanvas && this._initCanvas({ designArea, prevDesignArea, canvasSize, maskData })
741
+ this._initCanvas &&
742
+ this._initCanvas({ designArea, prevDesignArea, canvasSize, maskData, colorOverlayData })
709
743
  );
710
744
  })
711
745
  );
@@ -1393,7 +1427,7 @@ export default class DesignDataService {
1393
1427
  Services.store.dispatch(recalculateDesignArea());
1394
1428
  }
1395
1429
 
1396
- this.updateMaskToCurrentDesignProductionMethod();
1430
+ this.updateCanvasToCurrentDesignProductionMethod();
1397
1431
  if (bulkNameSelected && !selectedDesignProduction.allowBulkNames) {
1398
1432
  this.removeBulkNameItems(designData);
1399
1433
  !isBulkNamesSelected(Services.store.state.configurator) && Services.configurator.clearBulkNames();
@@ -1405,7 +1439,7 @@ export default class DesignDataService {
1405
1439
  );
1406
1440
  }
1407
1441
 
1408
- updateMaskToCurrentDesignProductionMethod() {
1442
+ updateCanvasToCurrentDesignProductionMethod() {
1409
1443
  // the mask should be updated when switching design production method
1410
1444
  const state = Services.store.state;
1411
1445
  const designArea = getSelectedDesignArea(state);
@@ -1417,6 +1451,14 @@ export default class DesignDataService {
1417
1451
  } else {
1418
1452
  maskHandler && maskHandler.dispose();
1419
1453
  }
1454
+
1455
+ const colorOverlayData = getColorOverlayData(state, designArea);
1456
+ const colorOverlay = canvas.getColorOverlay();
1457
+ if (colorOverlayData?.color) {
1458
+ colorOverlay?.init(colorOverlayData);
1459
+ } else {
1460
+ colorOverlay?.dispose();
1461
+ }
1420
1462
  }
1421
1463
 
1422
1464
  setCanvasData(canvasData, targetDesignAreaIdentifier) {
@@ -1550,6 +1592,7 @@ export default class DesignDataService {
1550
1592
  },
1551
1593
  });
1552
1594
  }
1595
+ const restoreColorOverlayVisibility = canvas.getColorOverlay()?.toggle(false);
1553
1596
 
1554
1597
  const drawToContext = canvas.drawToContext.bind(canvas);
1555
1598
  const getSvg = () => canvas.getScreenshot(getFontMapping(state));
@@ -1563,6 +1606,7 @@ export default class DesignDataService {
1563
1606
  if (maskHandler) {
1564
1607
  restoreOutlineVisibility();
1565
1608
  }
1609
+ restoreColorOverlayVisibility && restoreColorOverlayVisibility();
1566
1610
 
1567
1611
  releaseLock();
1568
1612
  }
@@ -1636,8 +1680,10 @@ export default class DesignDataService {
1636
1680
  const releaseLock = await requestLock(canvas);
1637
1681
  const maskHandler = canvas.getMaskHandler();
1638
1682
  const restoreOutlineVisibility = maskHandler && maskHandler.toggleOutline(false);
1683
+ const restoreColorOverlayVisibility = canvas.getColorOverlay()?.toggle(false);
1639
1684
  const result = [id, await canvas[screenshotFn](fontMapping)];
1640
1685
  restoreOutlineVisibility && restoreOutlineVisibility();
1686
+ restoreColorOverlayVisibility && restoreColorOverlayVisibility();
1641
1687
  releaseLock();
1642
1688
  return result;
1643
1689
  })
@@ -35,6 +35,7 @@ import { getDefaultFontParams } from '../Reducers/Fonts/Selectors';
35
35
  import { createTextPlaceholder } from '../Reducers/ImageGallery/Modifiers';
36
36
  import { updateLinkedImagesWithImageData } from '../Reducers/DesignData/Actions';
37
37
  import { checkDesignElementRestrictions } from '../Reducers/DesignArea/DesignElementSelectors';
38
+ import { FontFaceRepository } from '../Modules/Designer/Utils/FontFaceRepository';
38
39
 
39
40
  function getCanvasImageScalingWithImageData(canvasImage, imageData) {
40
41
  const currentPreview = canvasImage.imageData.preview;
@@ -209,7 +210,7 @@ export default class DesignerService {
209
210
  }
210
211
  }
211
212
 
212
- addText(canvas, textContent = 'My Text', autoColorCount = 1) {
213
+ async addText(canvas, textContent = 'My Text', autoColorCount = 1, options = {}) {
213
214
  if (!this.checkDesignElementRestrictions('text')) {
214
215
  return;
215
216
  }
@@ -218,16 +219,20 @@ export default class DesignerService {
218
219
 
219
220
  const state = Services.store.state;
220
221
 
221
- const fontSizeMin = getFontSizeMin(state);
222
- const locked = getElementLockState(state);
223
-
224
- const fontItem = find(state.fonts, { isDefault: true }) || state.fonts[0];
222
+ const {
223
+ fontSizeMin = getFontSizeMin(state),
224
+ locked = getElementLockState(state),
225
+ fontItem = find(state.fonts, { isDefault: true }) || state.fonts[0],
226
+ htmlContent = this.createColorizedTextContent(textContent, autoColorCount),
227
+ fitCanvas = true,
228
+ } = options;
225
229
 
226
230
  if (!fontItem) {
227
231
  Services.ui.reportError(t('common.noFontsAvailable'));
228
232
  } else {
233
+ await FontFaceRepository.collectFromHTML(htmlContent);
229
234
  const text = canvas.addText({
230
- content: this.createColorizedTextContent(textContent, autoColorCount),
235
+ content: htmlContent,
231
236
  fontSize: 16,
232
237
  fontSizeMin,
233
238
  fontItem,
@@ -237,17 +242,21 @@ export default class DesignerService {
237
242
 
238
243
  text.selected = true;
239
244
 
240
- if (!locked) {
241
- text.alignTo('center', 'center');
242
- text.fitCanvas(true);
243
-
244
- if (text.scaling !== 1) {
245
- text.scaling *= 0.5;
246
- }
245
+ if (!locked && fitCanvas) {
246
+ this.fitTextToCanvas(text);
247
247
  }
248
248
  }
249
249
  }
250
250
 
251
+ fitTextToCanvas(text) {
252
+ const canvas = text.canvas;
253
+ text.alignTo('center', 'center');
254
+ text.fontSize = Math.max(text.fontSizeMin, Math.min(canvas.size.width, canvas.size.height) * 0.4);
255
+ if (text.fontSize > text.fontSizeMin && text.getScaledSize().width > canvas.size.width) {
256
+ text.fitCanvas();
257
+ }
258
+ }
259
+
251
260
  checkDesignElementRestrictions(targetElementType) {
252
261
  const state = Services.store.state;
253
262
  const designData = getDesignDataForSelectedDesignArea(state);
@@ -34,7 +34,7 @@ export default class UIService extends AbstractUIService {
34
34
 
35
35
  toggle(name, show) {
36
36
  if (show === undefined) {
37
- show = !Services.ui.isVisible();
37
+ show = !Services.ui.isVisible(name);
38
38
  }
39
39
  Services.store.dispatch(setVisible(name, show));
40
40
  }
@@ -167,10 +167,18 @@ export default class VisualizationService extends AbstractVisualizationService {
167
167
  setTimeout(() => Services.designData.updateVisualization());
168
168
  }
169
169
 
170
+ getViewChangedPromise() {
171
+ return this._viewChangedPromise;
172
+ }
173
+
170
174
  async designViewChangeHandler(designView) {
171
175
  // applies only for 2D mode (in 3D there is only one design view)
176
+ if (!designView) {
177
+ return;
178
+ }
172
179
  const visualization = this.getComponent();
173
- await sendMessage(visualization, 'setView', designView);
180
+ this._viewChangedPromise = sendMessage(visualization, 'setView', designView);
181
+ await this._viewChangedPromise;
174
182
  }
175
183
 
176
184
  setComponent(component) {
@@ -214,6 +222,8 @@ export default class VisualizationService extends AbstractVisualizationService {
214
222
  Services.designData.handleCloseIfNeeded();
215
223
  });
216
224
 
225
+ this.addAreaHoverHandler(component);
226
+
217
227
  // the design areas should be redrawn when the material is updated
218
228
  component.observable.on(VisualizationEventTypes.MaterialUpdated, async updateEventObject => {
219
229
  await Services.designData.updateVisualization(updateEventObject);
@@ -279,12 +289,41 @@ export default class VisualizationService extends AbstractVisualizationService {
279
289
  return this;
280
290
  }
281
291
 
292
+ addAreaHoverHandler(component) {
293
+ let isAreaHovered = false;
294
+ const toggleAreaHovered = isHovered => {
295
+ if (isAreaHovered !== isHovered && component?.getContainer) {
296
+ isAreaHovered = isHovered;
297
+ component.getContainer().style.cursor = isAreaHovered ? 'pointer' : '';
298
+ }
299
+ };
300
+ component.observable.on(VisualizationEventTypes.HoverIn, evt => {
301
+ // get the texture data from the intersection
302
+ const {
303
+ data: { getTextureHit },
304
+ } = evt;
305
+ // so we can test if a design area was clicked
306
+ const area = this.testTextureIntersection(getTextureHit());
307
+ toggleAreaHovered(!!area);
308
+ });
309
+
310
+ component.observable.on(VisualizationEventTypes.HoverOut, () => {
311
+ toggleAreaHovered(false);
312
+ });
313
+ }
314
+
315
+ disposeComponent() {
316
+ sendMessage(this._component, 'dispose');
317
+ this._component = null;
318
+ this.observable.dispatch(EventTypes.ComponentChange, { component: null });
319
+ }
320
+
282
321
  getComponent() {
283
322
  return this._component;
284
323
  }
285
324
 
286
325
  registerComponentChangeListener(fn) {
287
- this.observable.on(EventTypes.ComponentChange, fn);
326
+ return this.observable.on(EventTypes.ComponentChange, fn);
288
327
  }
289
328
 
290
329
  registerVisualizationUpdateListener(fn) {
@@ -60,6 +60,7 @@ describe('Services/DesignDataService', () => {
60
60
  getMaskHandler: () => ({
61
61
  toggleOutline: () => () => null,
62
62
  }),
63
+ getColorOverlay: () => null,
63
64
  objects: (id =>
64
65
  ({
65
66
  dummyIdentifier: [], // empty area to make sure it excludes,
@@ -2,9 +2,9 @@
2
2
  import React from 'react';
3
3
  import { withStyles } from '@material-ui/core/styles';
4
4
  import { t } from 'Framework/i18n';
5
- import withWidth from '@material-ui/core/withWidth/withWidth';
6
- import Grid from '@material-ui/core/Grid/Grid';
7
- import TextField from '@material-ui/core/TextField/TextField';
5
+ import withWidth from '@material-ui/core/withWidth';
6
+ import Grid from '@material-ui/core/Grid';
7
+ import TextField from '@material-ui/core/TextField';
8
8
  import FormControlLabel from '@material-ui/core/FormControlLabel';
9
9
  import Checkbox from '@material-ui/core/Checkbox';
10
10
  import FormHelperText from '@material-ui/core/FormHelperText';
@@ -23,15 +23,16 @@ const styles = theme => ({
23
23
  },
24
24
  checkboxLabel: {
25
25
  fontSize: 15,
26
- paddingLeft: 15,
27
- paddingBottom: 12,
26
+ paddingTop: 10,
27
+ paddingLeft: 11,
28
+ paddingBottom: 20,
28
29
  [theme.breakpoints.down('xs')]: {
29
30
  paddingLeft: 2,
30
31
  },
31
32
  alignItems: 'start',
32
33
  },
33
34
  checkbox: {
34
- margin: '0 10px',
35
+ marginRight: '10px',
35
36
  [theme.breakpoints.down('xs')]: {
36
37
  margin: '-12px 0 0 10px',
37
38
  },
@@ -1,8 +1,8 @@
1
1
  import React from 'react';
2
2
  import { withStyles } from '@material-ui/core/styles';
3
3
  import { t } from 'Framework/i18n';
4
- import withWidth from '@material-ui/core/withWidth/withWidth';
5
- import Grid from '@material-ui/core/Grid/Grid';
4
+ import withWidth from '@material-ui/core/withWidth';
5
+ import Grid from '@material-ui/core/Grid';
6
6
  import FormControlLabel from '@material-ui/core/FormControlLabel';
7
7
  import Checkbox from '@material-ui/core/Checkbox';
8
8
  import FormHelperText from '@material-ui/core/FormHelperText';
@@ -11,7 +11,7 @@ import PropTypes from 'prop-types';
11
11
  const styles = theme => ({
12
12
  checkboxLabel: {
13
13
  fontSize: 15,
14
- paddingLeft: 15,
14
+ paddingLeft: 11,
15
15
  paddingBottom: 12,
16
16
  [theme.breakpoints.down('xs')]: {
17
17
  paddingLeft: 12,
@@ -20,6 +20,7 @@ const styles = theme => ({
20
20
  checkbox: {
21
21
  alignSelf: 'flex-start',
22
22
  top: -10,
23
+ paddingLeft: 0,
23
24
  },
24
25
  formHelperText: {
25
26
  marginLeft: 45,
@@ -1,12 +1,12 @@
1
1
  import React from 'react';
2
2
  import { withStyles } from '@material-ui/core/styles';
3
- import Grid from '@material-ui/core/Grid/Grid';
4
- import TextField from '@material-ui/core/TextField/TextField';
3
+ import Grid from '@material-ui/core/Grid';
4
+ import TextField from '@material-ui/core/TextField';
5
5
  import Typography from '@material-ui/core/Typography';
6
- import Divider from '@material-ui/core/Divider/Divider';
6
+ import Divider from '@material-ui/core/Divider';
7
7
  import MainButton from 'Shared/Components/MainButton';
8
8
  import AnalyticsWrapper from 'App/Shared/Components/Analytics/AnalyticsWrapper';
9
- import Button from '@material-ui/core/Button/Button';
9
+ import Button from '@material-ui/core/Button';
10
10
  import PropTypes from 'prop-types';
11
11
 
12
12
  const styles = theme => ({
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
2
  import { withStyles } from '@material-ui/core/styles';
3
- import TextField from '@material-ui/core/TextField/TextField';
3
+ import TextField from '@material-ui/core/TextField';
4
4
  import debounce from 'lodash/debounce';
5
5
  import PropTypes from 'prop-types';
6
6
 
@@ -11,31 +11,6 @@ exports[`renders a boxed component with the boxed prop 1`] = `
11
11
  <div
12
12
  class="MuiCardContent-root AmountPrice-AmountPriceContent-6 AmountPrice-cardContentWrapper-5"
13
13
  >
14
- <div
15
- class="MuiGrid-root MuiGrid-container"
16
- >
17
- <div
18
- class="MuiGrid-root AmountPrice-summary-17 MuiGrid-item MuiGrid-grid-xs-12 MuiGrid-grid-sm-12 MuiGrid-grid-md-12 MuiGrid-grid-lg-12"
19
- >
20
- <span
21
- aria-hidden="true"
22
- class="material-icons MuiIcon-root"
23
- >
24
- list_alt
25
- </span>
26
- <button
27
- class="MuiButtonBase-root MuiButton-root MuiButton-text AmountPrice-configurationButton-16 MuiButton-textSizeSmall MuiButton-sizeSmall"
28
- tabindex="0"
29
- type="button"
30
- >
31
- <span
32
- class="MuiButton-label"
33
- >
34
- amountPrice.configurationOverview
35
- </span>
36
- </button>
37
- </div>
38
- </div>
39
14
  <div
40
15
  class="MuiGrid-root MuiGrid-container"
41
16
  >
@@ -117,31 +92,6 @@ exports[`renders correctly 1`] = `
117
92
  <div
118
93
  class="MuiCardContent-root AmountPrice-AmountPriceContent-6 AmountPrice-cardContentWrapper-5"
119
94
  >
120
- <div
121
- class="MuiGrid-root MuiGrid-container"
122
- >
123
- <div
124
- class="MuiGrid-root AmountPrice-summary-17 MuiGrid-item MuiGrid-grid-xs-12 MuiGrid-grid-sm-12 MuiGrid-grid-md-12 MuiGrid-grid-lg-12"
125
- >
126
- <span
127
- aria-hidden="true"
128
- class="material-icons MuiIcon-root"
129
- >
130
- list_alt
131
- </span>
132
- <button
133
- class="MuiButtonBase-root MuiButton-root MuiButton-text AmountPrice-configurationButton-16 MuiButton-textSizeSmall MuiButton-sizeSmall"
134
- tabindex="0"
135
- type="button"
136
- >
137
- <span
138
- class="MuiButton-label"
139
- >
140
- amountPrice.configurationOverview
141
- </span>
142
- </button>
143
- </div>
144
- </div>
145
95
  <div
146
96
  class="MuiGrid-root MuiGrid-container"
147
97
  >
@@ -223,31 +173,6 @@ exports[`renders receiveOfferForm 1`] = `
223
173
  <div
224
174
  class="MuiCardContent-root AmountPrice-AmountPriceContent-6 AmountPrice-cardContentWrapper-5"
225
175
  >
226
- <div
227
- class="MuiGrid-root MuiGrid-container"
228
- >
229
- <div
230
- class="MuiGrid-root AmountPrice-summary-17 MuiGrid-item MuiGrid-grid-xs-12 MuiGrid-grid-sm-12 MuiGrid-grid-md-12 MuiGrid-grid-lg-12"
231
- >
232
- <span
233
- aria-hidden="true"
234
- class="material-icons MuiIcon-root"
235
- >
236
- list_alt
237
- </span>
238
- <button
239
- class="MuiButtonBase-root MuiButton-root MuiButton-text AmountPrice-configurationButton-16 MuiButton-textSizeSmall MuiButton-sizeSmall"
240
- tabindex="0"
241
- type="button"
242
- >
243
- <span
244
- class="MuiButton-label"
245
- >
246
- amountPrice.configurationOverview
247
- </span>
248
- </button>
249
- </div>
250
- </div>
251
176
  <div
252
177
  class="MuiGrid-root MuiGrid-container"
253
178
  >
@@ -336,31 +261,6 @@ exports[`renders the ConfigurationModeSwitchComponent (if it is provided) 1`] =
336
261
  <div
337
262
  class="MuiCardContent-root AmountPrice-AmountPriceContent-6 AmountPrice-cardContentWrapper-5"
338
263
  >
339
- <div
340
- class="MuiGrid-root MuiGrid-container"
341
- >
342
- <div
343
- class="MuiGrid-root AmountPrice-summary-17 MuiGrid-item MuiGrid-grid-xs-12 MuiGrid-grid-sm-12 MuiGrid-grid-md-12 MuiGrid-grid-lg-12"
344
- >
345
- <span
346
- aria-hidden="true"
347
- class="material-icons MuiIcon-root"
348
- >
349
- list_alt
350
- </span>
351
- <button
352
- class="MuiButtonBase-root MuiButton-root MuiButton-text AmountPrice-configurationButton-16 MuiButton-textSizeSmall MuiButton-sizeSmall"
353
- tabindex="0"
354
- type="button"
355
- >
356
- <span
357
- class="MuiButton-label"
358
- >
359
- amountPrice.configurationOverview
360
- </span>
361
- </button>
362
- </div>
363
- </div>
364
264
  <div
365
265
  class="MuiGrid-root MuiGrid-container"
366
266
  >
@@ -449,31 +349,6 @@ exports[`renders without callToAction 1`] = `
449
349
  <div
450
350
  class="MuiCardContent-root AmountPrice-AmountPriceContent-6 AmountPrice-cardContentWrapper-5"
451
351
  >
452
- <div
453
- class="MuiGrid-root MuiGrid-container"
454
- >
455
- <div
456
- class="MuiGrid-root AmountPrice-summary-17 MuiGrid-item MuiGrid-grid-xs-12 MuiGrid-grid-sm-12 MuiGrid-grid-md-12 MuiGrid-grid-lg-12"
457
- >
458
- <span
459
- aria-hidden="true"
460
- class="material-icons MuiIcon-root"
461
- >
462
- list_alt
463
- </span>
464
- <button
465
- class="MuiButtonBase-root MuiButton-root MuiButton-text AmountPrice-configurationButton-16 MuiButton-textSizeSmall MuiButton-sizeSmall"
466
- tabindex="0"
467
- type="button"
468
- >
469
- <span
470
- class="MuiButton-label"
471
- >
472
- amountPrice.configurationOverview
473
- </span>
474
- </button>
475
- </div>
476
- </div>
477
352
  <div
478
353
  class="MuiGrid-root MuiGrid-container"
479
354
  >