@arbisoft/react-design-tool 1.0.2 → 1.0.4

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.
package/README.md CHANGED
@@ -12,6 +12,16 @@ With this tool, you can:
12
12
  - **Save** the final design data and image output
13
13
 
14
14
  Perfect for integrating into applications that require user-driven visual content creation.
15
+ ## 🎬 Studio Preview
16
+
17
+ **Live Walkthrough (GIF)**
18
+
19
+ ![Studio Editor Screenshot](https://i.ibb.co/M5hZtFTG/design-tool.gif)
20
+ ## 🖥️ Demo
21
+
22
+ Check out the live demo here:
23
+
24
+ [![Live Demo](https://img.shields.io/badge/Live-Demo-blue?style=for-the-badge)](https://codesandbox.io/p/sandbox/fdftlr)
15
25
 
16
26
  ## 📦 Installation
17
27
 
@@ -25,12 +35,12 @@ yarn add @arbisoft/react-design-tool
25
35
  ```
26
36
  #### Required Dependencies:
27
37
  ```bash
28
- npm install konva prop-types qrcode react-konva react-konva-utils styled-components
38
+ npm install konva prop-types qrcode react-konva react-konva-utils styled-components @emotion/is-prop-valid
29
39
  ```
30
40
 
31
41
  OR
32
42
  ```bash
33
- yarn add konva prop-types qrcode react-konva react-konva-utils styled-components
43
+ yarn add konva prop-types qrcode react-konva react-konva-utils styled-components @emotion/is-prop-valid
34
44
 
35
45
  ```
36
46
  ## 🚀 Quick Start
package/dist/cjs/index.js CHANGED
@@ -616,7 +616,7 @@ var propTypes$y = {
616
616
  pillActiveColor: PropTypes.string
617
617
  };
618
618
 
619
- var _templateObject$s, _templateObject2$m, _templateObject3$b;
619
+ var _templateObject$s, _templateObject2$m, _templateObject3$c;
620
620
  var SideBarItem = styled.div(_templateObject$s || (_templateObject$s = _taggedTemplateLiteral(["\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n width: 100%;\n height: 100px;\n min-height: 100px;\n background-color: ", ";\n margin-bottom: 2px;\n cursor: pointer;\n transition: background-color 0.2s ease-in-out;\n\n &:hover {\n background-color: ", ";\n }\n"])), function (_ref) {
621
621
  var isSelected = _ref.isSelected,
622
622
  pillActiveColor = _ref.pillActiveColor;
@@ -630,23 +630,23 @@ var SideBarIcon = styled.img(_templateObject2$m || (_templateObject2$m = _tagged
630
630
  isSelected = _ref3$isSelected === void 0 ? false : _ref3$isSelected;
631
631
  return isSelected ? 'brightness(0) invert(1)' : 'none';
632
632
  }, SideBarItem);
633
- var SideBarText = styled.p(_templateObject3$b || (_templateObject3$b = _taggedTemplateLiteral(["\n color: ", ";\n font-size: 12px;\n font-family: ", ";\n font-weight: ", ";\n line-height: 109.023%;\n text-align: center;\n\n ", ":hover & {\n color: ", ";\n }\n"])), function (_ref4) {
633
+ var SideBarText = styled.p(_templateObject3$c || (_templateObject3$c = _taggedTemplateLiteral(["\n color: ", ";\n font-size: 12px;\n font-family: ", ";\n font-weight: ", ";\n line-height: 109.023%;\n text-align: center;\n\n ", ":hover & {\n color: ", ";\n }\n"])), function (_ref4) {
634
634
  var _ref4$isSelected = _ref4.isSelected,
635
635
  isSelected = _ref4$isSelected === void 0 ? false : _ref4$isSelected;
636
636
  return isSelected ? theme.color.white : theme.color.gray_535354;
637
637
  }, theme.fonts.primary, theme.fontWeights[400], SideBarItem, theme.color.white);
638
638
 
639
639
  var SideBarPill = function SideBarPill(_ref) {
640
- var key = _ref.key,
641
- _ref$isSelected = _ref.isSelected,
640
+ var _ref$isSelected = _ref.isSelected,
642
641
  isSelected = _ref$isSelected === void 0 ? false : _ref$isSelected,
643
642
  _ref$onClick = _ref.onClick,
644
643
  _onClick = _ref$onClick === void 0 ? function () {} : _ref$onClick,
645
644
  icon = _ref.icon,
646
645
  text = _ref.text,
647
- pillActiveColor = _ref.pillActiveColor;
646
+ pillActiveColor = _ref.pillActiveColor,
647
+ id = _ref.id;
648
648
  return /*#__PURE__*/React.createElement(SideBarItem, {
649
- key: key,
649
+ key: id,
650
650
  isSelected: isSelected,
651
651
  onClick: function onClick() {
652
652
  return _onClick();
@@ -759,6 +759,8 @@ var IconHeart = "data:image/svg+xml,%3Csvg%20width%3D%2247%22%20height%3D%2247%2
759
759
 
760
760
  var IconUnlock = "data:image/svg+xml,%3Csvg%20width%3D%2217%22%20height%3D%2216%22%20viewBox%3D%220%200%2017%2016%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M8.66368%202.01017C9.32164%201.94371%209.98083%202.1241%2010.5133%202.51632C11.0457%202.90854%2011.4134%203.4846%2011.545%204.13269C11.6183%204.49351%2011.9702%204.72662%2012.331%204.65336C12.6918%204.58009%2012.925%204.22819%2012.8517%203.86736C12.6543%202.89524%2012.1027%202.03114%2011.3041%201.44281C10.5054%200.854482%209.51663%200.583899%208.52969%200.68359C7.54691%200.782861%206.63577%201.24224%205.97161%201.97299L5.96306%201.98228C5.29856%202.71803%204.93098%203.67431%204.93156%204.66567L4.93156%206.66675H4.26489C3.16032%206.66675%202.26489%207.56218%202.26489%208.66675V13.3334C2.26489%2014.438%203.16032%2015.3334%204.26489%2015.3334H13.5982C14.7028%2015.3334%2015.5982%2014.438%2015.5982%2013.3334V8.66675C15.5982%207.56218%2014.7028%206.66675%2013.5982%206.66675H6.26489L6.26489%204.66601C6.26423%204.00811%206.50679%203.37331%206.94572%202.88356L6.95268%202.87597C7.39593%202.3852%208.00572%202.07663%208.66368%202.01017ZM4.26489%208.00008C3.8967%208.00008%203.59823%208.29856%203.59823%208.66675V13.3334C3.59823%2013.7016%203.8967%2014.0001%204.26489%2014.0001H13.5982C13.9664%2014.0001%2014.2649%2013.7016%2014.2649%2013.3334V8.66675C14.2649%208.29856%2013.9664%208.00008%2013.5982%208.00008H4.26489Z%22%20fill%3D%22%234D6277%22%2F%3E%3C%2Fsvg%3E";
761
761
 
762
+ var IconCross = "data:image/svg+xml,%3Csvg%20viewBox%3D%220%200%2024%2024%22%20xml%3Aspace%3D%22preserve%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20enable-background%3D%22new%200%200%2024%2024%22%3E%3Cpath%20d%3D%22M5.3%2018.7c.2.2.4.3.7.3s.5-.1.7-.3l5.3-5.3%205.3%205.3c.2.2.5.3.7.3s.5-.1.7-.3c.4-.4.4-1%200-1.4L13.4%2012l5.3-5.3c.4-.4.4-1%200-1.4s-1-.4-1.4%200L12%2010.6%206.7%205.3c-.4-.4-1-.4-1.4%200s-.4%201%200%201.4l5.3%205.3-5.3%205.3c-.4.4-.4%201%200%201.4z%22%20id%3D%22_icons%22%20fill%3D%22%23ffffff%22%20class%3D%22fill-000000%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E";
763
+
762
764
  var EditorBg = "/images/small-dots.png";
763
765
 
764
766
  var topTabBarpadding = '11.51px 14.16px';
@@ -1880,6 +1882,7 @@ var SideBar = function SideBar(_ref) {
1880
1882
  }
1881
1883
  return /*#__PURE__*/React.createElement(SideBarPill, {
1882
1884
  key: item === null || item === void 0 ? void 0 : item.id,
1885
+ id: item === null || item === void 0 ? void 0 : item.id,
1883
1886
  isSelected: selectedSideBarItem === (item === null || item === void 0 ? void 0 : item.id),
1884
1887
  onClick: function onClick() {
1885
1888
  return onClickSinglePill(item === null || item === void 0 ? void 0 : item.id);
@@ -1954,13 +1957,13 @@ var propTypes$x = {
1954
1957
  onChangeCuttingGuideProp: PropTypes.func
1955
1958
  };
1956
1959
 
1957
- var _templateObject$r, _templateObject2$l, _templateObject3$a, _templateObject4$5, _templateObject5$3;
1960
+ var _templateObject$r, _templateObject2$l, _templateObject3$b, _templateObject4$5, _templateObject5$3;
1958
1961
  var Container$4 = styled.div(_templateObject$r || (_templateObject$r = _taggedTemplateLiteral(["\n flex: 1;\n display: flex;\n background-color: ", ";\n background-image: ", ";\n position: relative;\n flex-direction: column;\n overflow: hidden;\n"])), theme.color.white_F7F7F7, function (_ref) {
1959
1962
  var selectedTab = _ref.selectedTab;
1960
1963
  return selectedTab ? 'none' : "url(".concat(EditorBg, ")");
1961
1964
  });
1962
- var InnerContainer = styled.div(_templateObject2$l || (_templateObject2$l = _taggedTemplateLiteral(["\n // display: flex;\n // flex-direction: column;\n // overflow: auto;\n // flex: 1;\n // align-items: center;\n // justify-content: center;\n // flex-grow: 1;\n // background: green;\n // // min-height: 100px;\n\n display: grid;\n place-items: center;\n overflow: auto;\n flex: 1;\n"])));
1963
- var InnerContainerWrapper = styled.div(_templateObject3$a || (_templateObject3$a = _taggedTemplateLiteral(["\n display: flex;\n flex-direction: column;\n overflow: auto;\n flex: 1;\n justify-content: center;\n min-height: ", "px;\n height: ", "px;\n min-width: ", "px;\n width: ", "px;\n"])), function (_ref2) {
1965
+ var InnerContainer = styled.div(_templateObject2$l || (_templateObject2$l = _taggedTemplateLiteral(["\n // display: flex;\n // flex-direction: column;\n // overflow: auto;\n // flex: 1;\n // align-items: center;\n // justify-content: center;\n // flex-grow: 1;\n // background: green;\n // // min-height: 100px;\n\n display: grid;\n place-items: center;\n overflow: auto;\n flex: 1;\n position: relative;\n"])));
1966
+ var InnerContainerWrapper = styled.div(_templateObject3$b || (_templateObject3$b = _taggedTemplateLiteral(["\n display: flex;\n flex-direction: column;\n overflow: auto;\n flex: 1;\n justify-content: center;\n min-height: ", "px;\n height: ", "px;\n min-width: ", "px;\n width: ", "px;\n"])), function (_ref2) {
1964
1967
  var editorHeight = _ref2.editorHeight;
1965
1968
  return editorHeight || 500;
1966
1969
  }, function (_ref3) {
@@ -2073,7 +2076,7 @@ var propTypes$u = {
2073
2076
  };
2074
2077
 
2075
2078
  var _templateObject$p;
2076
- var StyledContainer$6 = styled.div(_templateObject$p || (_templateObject$p = _taggedTemplateLiteral(["\n border: 1px solid ", ";\n border-radius: 8px;\n background-color: ", ";\n height: ", ";\n margin-left: ", ";\n margin-right: ", ";\n display: flex;\n align-items: center;\n justify-content: ", ";\n padding-top: ", ";\n padding-right: ", ";\n padding-bottom: ", ";\n padding-left: ", ";\n cursor: ", ";\n gap: ", ";\n opacity: ", ";\n pointer-events: ", ";\n"])), theme.color.gray_200, theme.color.white, function (_ref) {
2079
+ var StyledContainer$6 = styled.div(_templateObject$p || (_templateObject$p = _taggedTemplateLiteral(["\n border: 1px solid ", ";\n border-radius: 8px;\n background-color: ", ";\n height: ", ";\n margin-left: ", ";\n margin-right: ", ";\n display: flex;\n align-items: center;\n justify-content: ", ";\n padding-top: ", ";\n padding-right: ", ";\n padding-bottom: ", ";\n padding-left: ", ";\n cursor: ", ";\n gap: ", ";\n opacity: ", ";\n pointer-events: ", ";\n position: relative;\n"])), theme.color.gray_200, theme.color.white, function (_ref) {
2077
2080
  var _ref$height = _ref.height,
2078
2081
  height = _ref$height === void 0 ? 40 : _ref$height;
2079
2082
  return "".concat(height, "px");
@@ -2127,14 +2130,14 @@ var propTypes$t = {
2127
2130
  disabled: PropTypes.bool
2128
2131
  };
2129
2132
 
2130
- var _templateObject$o, _templateObject2$j, _templateObject3$9, _templateObject4$4, _templateObject5$2, _templateObject6;
2133
+ var _templateObject$o, _templateObject2$j, _templateObject3$a, _templateObject4$4, _templateObject5$2, _templateObject6;
2131
2134
  var Wrapper = styled.div(_templateObject$o || (_templateObject$o = _taggedTemplateLiteral(["\n position: relative;\n display: inline-block;\n cursor: ", ";\n"])), function (_ref) {
2132
2135
  var disabled = _ref.disabled;
2133
2136
  return disabled ? 'not-allowed' : 'pointer';
2134
2137
  });
2135
2138
  var TooltipText = styled.div(_templateObject2$j || (_templateObject2$j = _taggedTemplateLiteral(["\n visibility: hidden;\n background-color: rgba(0, 0, 0, 0.7);\n color: white;\n text-align: center;\n padding: 4px 10px;\n border-radius: 4px;\n position: absolute;\n z-index: 9999;\n white-space: nowrap;\n opacity: 0;\n transition: all 0.1s;\n font-size: 13px;\n font-family: ", ";\n font-weight: ", ";\n\n ", "\n ", "\n ", "\n ", "\n\n ", ":hover & {\n visibility: visible;\n opacity: 1;\n }\n"])), theme.fonts.primary, theme.fontWeights[400], function (_ref2) {
2136
2139
  var position = _ref2.position;
2137
- return position === 'top' && styled.css(_templateObject3$9 || (_templateObject3$9 = _taggedTemplateLiteral(["\n bottom: 110%;\n left: 50%;\n transform: translateX(-50%);\n "])));
2140
+ return position === 'top' && styled.css(_templateObject3$a || (_templateObject3$a = _taggedTemplateLiteral(["\n bottom: 110%;\n left: 50%;\n transform: translateX(-50%);\n "])));
2138
2141
  }, function (_ref3) {
2139
2142
  var position = _ref3.position;
2140
2143
  return position === 'right' && styled.css(_templateObject4$4 || (_templateObject4$4 = _taggedTemplateLiteral(["\n top: 50%;\n left: 105%;\n transform: translateY(-50%);\n "])));
@@ -2215,10 +2218,10 @@ var propTypes$s = {
2215
2218
  tooltip: PropTypes.string
2216
2219
  };
2217
2220
 
2218
- var _templateObject$n, _templateObject2$i, _templateObject3$8, _templateObject4$3;
2221
+ var _templateObject$n, _templateObject2$i, _templateObject3$9, _templateObject4$3;
2219
2222
  var DropDownItem = styled.div(_templateObject$n || (_templateObject$n = _taggedTemplateLiteral(["\n display: flex;\n align-items: center;\n justify-content: center;\n"])));
2220
2223
  var IconWrapper$3 = styled.img(_templateObject2$i || (_templateObject2$i = _taggedTemplateLiteral(["\n object-fit: contain;\n"])));
2221
- var DropDownList = styled.div(_templateObject3$8 || (_templateObject3$8 = _taggedTemplateLiteral(["\n position: absolute;\n left: 0;\n top: 50;\n background-color: white;\n box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);\n border-radius: 4px;\n margin-top: 5px;\n z-index: 10;\n width: 100%;\n max-height: 200px;\n overflow-y: auto;\n z-index: 9999;\n"])));
2224
+ var DropDownList = styled.div(_templateObject3$9 || (_templateObject3$9 = _taggedTemplateLiteral(["\n position: absolute;\n left: 0;\n top: 50;\n background-color: white;\n box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);\n border-radius: 4px;\n margin-top: 5px;\n z-index: 10;\n width: 100%;\n max-height: 200px;\n overflow-y: auto;\n z-index: 9999;\n"])));
2222
2225
 
2223
2226
  // Individual option in the dropdown
2224
2227
  var DropDownOption = styled.div(_templateObject4$3 || (_templateObject4$3 = _taggedTemplateLiteral(["\n padding: 8px 16px;\n cursor: pointer;\n font-size: 14px;\n color: #333;\n &:hover {\n background-color: #f0f0f0;\n }\n &:active {\n background-color: #e0e0e0;\n }\n"])));
@@ -2289,9 +2292,10 @@ var DropDown = function DropDown(_ref) {
2289
2292
  };
2290
2293
  DropDown.propTypes = propTypes$s;
2291
2294
 
2292
- var _templateObject$m, _templateObject2$h;
2295
+ var _templateObject$m, _templateObject2$h, _templateObject3$8;
2293
2296
  var Label$1 = styled.p(_templateObject$m || (_templateObject$m = _taggedTemplateLiteral(["\n color: ", ";\n font-size: 14px;\n font-weight: ", ";\n font-family: ", ";\n"])), theme.color.gray_700, theme.fontWeights[400], theme.fonts.primary);
2294
2297
  var RowContainer$4 = styled.div(_templateObject2$h || (_templateObject2$h = _taggedTemplateLiteral(["\n display: flex;\n flex-direction: row;\n align-items: center;\n flex-wrap: wrap;\n gap: 2px;\n"])));
2298
+ var RemoveButton = styled.div(_templateObject3$8 || (_templateObject3$8 = _taggedTemplateLiteral(["\n height: 20px;\n width: 20px;\n border-radius: 20px;\n position: absolute;\n right: -7px;\n top: -7px;\n background: #ff4d4d;\n display: flex;\n align-items: center;\n justify-content: center;\n"])));
2295
2299
 
2296
2300
  var propTypes$r = {
2297
2301
  backgroundColor: PropTypes.string,
@@ -2933,7 +2937,9 @@ var TemplateToolBar = function TemplateToolBar(_ref) {
2933
2937
  setLoadingUploadImage = _ref.setLoadingUploadImage,
2934
2938
  cuttingGuideStroke = _ref.cuttingGuideStroke,
2935
2939
  cuttingGuideStrokeColor = _ref.cuttingGuideStrokeColor,
2936
- onChangeCuttingGuideProp = _ref.onChangeCuttingGuideProp;
2940
+ onChangeCuttingGuideProp = _ref.onChangeCuttingGuideProp,
2941
+ canvasBackgroundImage = _ref.canvasBackgroundImage,
2942
+ onRemoveBackgroundImage = _ref.onRemoveBackgroundImage;
2937
2943
  var selectBackgroundColor = function selectBackgroundColor(e) {
2938
2944
  onSetBackgroundColor(e);
2939
2945
  };
@@ -3005,8 +3011,19 @@ var TemplateToolBar = function TemplateToolBar(_ref) {
3005
3011
  onClick: handleBackgroundUpload,
3006
3012
  tooltip: TEXT_DICTIONARY === null || TEXT_DICTIONARY === void 0 || (_TEXT_DICTIONARY$lang3 = TEXT_DICTIONARY[languageLocale]) === null || _TEXT_DICTIONARY$lang3 === void 0 ? void 0 : _TEXT_DICTIONARY$lang3.BACKGROUND_IMAGE,
3007
3013
  tooltipPosition: 'bottom'
3014
+ }, canvasBackgroundImage && /*#__PURE__*/React.createElement(RemoveButton, {
3015
+ onClick: function onClick(e) {
3016
+ onRemoveBackgroundImage && onRemoveBackgroundImage();
3017
+ e.stopPropagation();
3018
+ }
3008
3019
  }, /*#__PURE__*/React.createElement(StyledImage, {
3009
- src: IconBackgroundImage
3020
+ src: IconCross,
3021
+ height: 15,
3022
+ width: 15
3023
+ })), /*#__PURE__*/React.createElement(StyledImage, {
3024
+ src: (canvasBackgroundImage === null || canvasBackgroundImage === void 0 ? void 0 : canvasBackgroundImage.src) || IconBackgroundImage,
3025
+ height: 24,
3026
+ width: 24
3010
3027
  })), /*#__PURE__*/React.createElement(OpacityPicker, {
3011
3028
  tooltip: TEXT_DICTIONARY === null || TEXT_DICTIONARY === void 0 || (_TEXT_DICTIONARY$lang4 = TEXT_DICTIONARY[languageLocale]) === null || _TEXT_DICTIONARY$lang4 === void 0 ? void 0 : _TEXT_DICTIONARY$lang4.BACKGROUND_IMAGE_OPACITY,
3012
3029
  gap: 10,
@@ -3486,7 +3503,8 @@ var TopToolBar = function TopToolBar(_ref) {
3486
3503
  setLoadingUploadImage = _ref.setLoadingUploadImage,
3487
3504
  cuttingGuideStroke = _ref.cuttingGuideStroke,
3488
3505
  cuttingGuideStrokeColor = _ref.cuttingGuideStrokeColor,
3489
- onChangeCuttingGuideProp = _ref.onChangeCuttingGuideProp;
3506
+ onChangeCuttingGuideProp = _ref.onChangeCuttingGuideProp,
3507
+ onRemoveBackgroundImage = _ref.onRemoveBackgroundImage;
3490
3508
  return /*#__PURE__*/React.createElement(ToolBarWrapper, {
3491
3509
  disabled: selectedElement && !(selectedElement !== null && selectedElement !== void 0 && selectedElement.draggable)
3492
3510
  }, selectedElement && !(selectedElement !== null && selectedElement !== void 0 && selectedElement.draggable) && /*#__PURE__*/React.createElement(OverlayBlocker, {
@@ -3507,7 +3525,8 @@ var TopToolBar = function TopToolBar(_ref) {
3507
3525
  setLoadingUploadImage: setLoadingUploadImage,
3508
3526
  cuttingGuideStroke: cuttingGuideStroke,
3509
3527
  cuttingGuideStrokeColor: cuttingGuideStrokeColor,
3510
- onChangeCuttingGuideProp: onChangeCuttingGuideProp
3528
+ onChangeCuttingGuideProp: onChangeCuttingGuideProp,
3529
+ onRemoveBackgroundImage: onRemoveBackgroundImage
3511
3530
  }) : selectedTab === (sideBarpillsList === null || sideBarpillsList === void 0 ? void 0 : sideBarpillsList.text) ? /*#__PURE__*/React.createElement(TextToolBar, {
3512
3531
  fontFamily: isElementOfSameType(selectedElement, elementTypes.text) ? selectedElement === null || selectedElement === void 0 ? void 0 : selectedElement.fontFamily : defaultTextProps === null || defaultTextProps === void 0 ? void 0 : defaultTextProps.fontFamily,
3513
3532
  fontSize: isElementOfSameType(selectedElement, elementTypes.text) ? selectedElement === null || selectedElement === void 0 ? void 0 : selectedElement.fontSize : defaultTextProps === null || defaultTextProps === void 0 ? void 0 : defaultTextProps.fontSize,
@@ -4643,7 +4662,8 @@ var Editor = function Editor(_ref) {
4643
4662
  cuttingGuideStrokeColor = _ref.cuttingGuideStrokeColor,
4644
4663
  onChangeCuttingGuideProp = _ref.onChangeCuttingGuideProp,
4645
4664
  onSave = _ref.onSave,
4646
- saveButtonText = _ref.saveButtonText;
4665
+ saveButtonText = _ref.saveButtonText,
4666
+ onRemoveBackgroundImage = _ref.onRemoveBackgroundImage;
4647
4667
  var transformerRef = React.useRef(null);
4648
4668
  React.useEffect(function () {
4649
4669
  if (transformerRef !== null && transformerRef !== void 0 && transformerRef.current) {
@@ -4966,7 +4986,8 @@ var Editor = function Editor(_ref) {
4966
4986
  setLoadingUploadImage: setLoadingUploadImage,
4967
4987
  cuttingGuideStroke: cuttingGuideStroke,
4968
4988
  cuttingGuideStrokeColor: cuttingGuideStrokeColor,
4969
- onChangeCuttingGuideProp: onChangeCuttingGuideProp
4989
+ onChangeCuttingGuideProp: onChangeCuttingGuideProp,
4990
+ onRemoveBackgroundImage: onRemoveBackgroundImage
4970
4991
  }), /*#__PURE__*/React.createElement(InnerContainer, null, /*#__PURE__*/React.createElement(InnerContainerWrapper, {
4971
4992
  editorHeight: editorHeight + 50,
4972
4993
  editorWidth: editorWidth
@@ -5714,7 +5735,8 @@ var Overlay = function Overlay(_ref) {
5714
5735
  background: backgroundColor,
5715
5736
  display: 'flex',
5716
5737
  alignItems: 'center',
5717
- justifyContent: 'center'
5738
+ justifyContent: 'center',
5739
+ zIndex: 99999
5718
5740
  }
5719
5741
  }, children);
5720
5742
  };
@@ -5756,6 +5778,27 @@ var LoadingSpinner = function LoadingSpinner(_ref) {
5756
5778
  };
5757
5779
  LoadingSpinner.propTypes = propTypes;
5758
5780
 
5781
+ function memoize(fn) {
5782
+ var cache = Object.create(null);
5783
+ return function (arg) {
5784
+ if (cache[arg] === undefined) cache[arg] = fn(arg);
5785
+ return cache[arg];
5786
+ };
5787
+ }
5788
+
5789
+ // eslint-disable-next-line no-undef
5790
+ var reactPropsRegex = /^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|abbr|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|disableRemotePlayback|download|draggable|encType|enterKeyHint|fetchpriority|fetchPriority|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|translate|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|incremental|fallback|inert|itemProp|itemScope|itemType|itemID|itemRef|on|option|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/; // https://esbench.com/bench/5bfee68a4cd7e6009ef61d23
5791
+
5792
+ var isPropValid = /* #__PURE__ */memoize(function (prop) {
5793
+ return reactPropsRegex.test(prop) || prop.charCodeAt(0) === 111
5794
+ /* o */
5795
+ && prop.charCodeAt(1) === 110
5796
+ /* n */
5797
+ && prop.charCodeAt(2) < 91;
5798
+ }
5799
+ /* Z+1 */
5800
+ );
5801
+
5759
5802
  /**
5760
5803
  * @typedef {Object} StudioProps
5761
5804
  * @property {string} [title]
@@ -5784,8 +5827,7 @@ var Studio = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
5784
5827
  _ref$elementsList = _ref.elementsList,
5785
5828
  elementsList = _ref$elementsList === void 0 ? defaultElements : _ref$elementsList,
5786
5829
  uploadImageCallBack = _ref.uploadImageCallBack,
5787
- _ref$customImages = _ref.customImages,
5788
- customImages = _ref$customImages === void 0 ? [] : _ref$customImages,
5830
+ customImages = _ref.customImages,
5789
5831
  _ref$defaultImages = _ref.defaultImages,
5790
5832
  defaultImages = _ref$defaultImages === void 0 ? defaultSideBarImagesList : _ref$defaultImages,
5791
5833
  disableWhiteLabel = _ref.disableWhiteLabel,
@@ -5895,7 +5937,7 @@ var Studio = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
5895
5937
  _useState46 = _slicedToArray(_useState45, 2),
5896
5938
  selectedElement = _useState46[0],
5897
5939
  setSelectedElement = _useState46[1];
5898
- var _useState47 = React.useState(customImages),
5940
+ var _useState47 = React.useState(customImages || []),
5899
5941
  _useState48 = _slicedToArray(_useState47, 2),
5900
5942
  customImagesList = _useState48[0],
5901
5943
  setCustomImagesList = _useState48[1];
@@ -5946,17 +5988,18 @@ var Studio = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
5946
5988
  }()
5947
5989
  };
5948
5990
  });
5991
+ // console.log(isPropValid('onClick'));
5949
5992
  React.useEffect(function () {
5950
5993
  setLanguageLocale(validateLocale(locale));
5951
5994
  }, [locale]);
5952
5995
  React.useEffect(function () {
5953
- setCustomImagesList(_toConsumableArray(customImages));
5996
+ setCustomImagesList(customImages);
5954
5997
  }, [customImages]);
5955
5998
  React.useEffect(function () {
5956
5999
  setLoadingFonts(true);
5957
- loadAllGoogleFonts().then(function (msg) {
6000
+ loadAllGoogleFonts().then(function () {
5958
6001
  // eslint-disable-next-line no-console
5959
- console.log(msg);
6002
+ // console.log(msg);
5960
6003
  })["catch"](function (err) {
5961
6004
  // eslint-disable-next-line no-console
5962
6005
  console.error('❌ Error loading fonts:', err);
@@ -5975,12 +6018,13 @@ var Studio = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
5975
6018
  var LoadImages = function LoadImages(elems) {
5976
6019
  setLoadingImages(true);
5977
6020
  preloadRelevantImages(elems).then(function (_ref2) {
5978
- var successes = _ref2.successes,
5979
- errors = _ref2.errors;
5980
- // eslint-disable-next-line no-console
5981
- console.log('✅ Loaded images:', successes);
6021
+ var errors = _ref2.errors;
5982
6022
  // eslint-disable-next-line no-console
5983
- console.log(' Failed images:', errors);
6023
+ // console.log(' Loaded images:', successes);
6024
+ if ((errors === null || errors === void 0 ? void 0 : errors.length) > 0) {
6025
+ // eslint-disable-next-line no-console
6026
+ console.log('❌ Failed images:', errors);
6027
+ }
5984
6028
  })["catch"](function (err) {
5985
6029
  // eslint-disable-next-line no-console
5986
6030
  console.error('Something went really wrong:', err);
@@ -6166,6 +6210,16 @@ var Studio = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
6166
6210
  };
6167
6211
  saveHistory([].concat(_toConsumableArray(elemClone), [newElement]));
6168
6212
  };
6213
+ var onRemoveBackgroundImage = function onRemoveBackgroundImage() {
6214
+ var elemClone = JSON.parse(JSON.stringify(elements));
6215
+ var backgroundImageIndex = elemClone.findIndex(function (e) {
6216
+ return (e === null || e === void 0 ? void 0 : e.type) === (elementTypes === null || elementTypes === void 0 ? void 0 : elementTypes.backgroundImage);
6217
+ });
6218
+ if (backgroundImageIndex > -1) {
6219
+ elemClone.splice(backgroundImageIndex, 1);
6220
+ saveHistory(elemClone);
6221
+ }
6222
+ };
6169
6223
  var onChangeBackgroundImageOpacity = function onChangeBackgroundImageOpacity(val) {
6170
6224
  var backgroundImageIndex = elements === null || elements === void 0 ? void 0 : elements.findIndex(function (e) {
6171
6225
  return (e === null || e === void 0 ? void 0 : e.type) === (elementTypes === null || elementTypes === void 0 ? void 0 : elementTypes.backgroundImage);
@@ -6582,7 +6636,9 @@ var Studio = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
6582
6636
  return _ref4.apply(this, arguments);
6583
6637
  };
6584
6638
  }();
6585
- return /*#__PURE__*/React.createElement(StudioWrapper, null, /*#__PURE__*/React.createElement(SideBar, {
6639
+ return /*#__PURE__*/React.createElement(styled.StyleSheetManager, {
6640
+ shouldForwardProp: isPropValid
6641
+ }, /*#__PURE__*/React.createElement(StudioWrapper, null, /*#__PURE__*/React.createElement(SideBar, {
6586
6642
  selectedSideBarItem: selectedTab,
6587
6643
  onClickPill: onSelectedTab,
6588
6644
  languageLocale: languageLocale,
@@ -6684,11 +6740,12 @@ var Studio = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
6684
6740
  setLoadingUploadImage: setLoadingUploadImage,
6685
6741
  onSave: onSave && onSaveProgress,
6686
6742
  saveButtonText: saveButtonText,
6687
- languageLocale: languageLocale
6743
+ languageLocale: languageLocale,
6744
+ onRemoveBackgroundImage: onRemoveBackgroundImage
6688
6745
  }), (loadingFonts || loadingImages || loadingUploadImage || loading) && /*#__PURE__*/React.createElement(Overlay, null, /*#__PURE__*/React.createElement(LoadingSpinner, {
6689
6746
  size: "60px",
6690
6747
  color: theme.color.secondary
6691
- })));
6748
+ }))));
6692
6749
  });
6693
6750
  Studio.propTypes = propTypes$A;
6694
6751
  Studio.displayName = 'Studio';