@arbisoft/react-design-tool 1.0.61 → 1.0.63

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/dist/cjs/index.js CHANGED
@@ -5,9 +5,9 @@ var PropTypes = require('prop-types');
5
5
  var styled = require('styled-components');
6
6
  var reactDom = require('react-dom');
7
7
  var reactKonva = require('react-konva');
8
+ var Konva = require('konva');
8
9
  var QRCode = require('qrcode');
9
10
  var reactKonvaUtils = require('react-konva-utils');
10
- var Konva = require('konva');
11
11
 
12
12
  function _arrayLikeToArray(r, a) {
13
13
  (null == a || a > r.length) && (a = r.length);
@@ -285,19 +285,17 @@ function _regeneratorDefine(e, r, n, t) {
285
285
  i = 0;
286
286
  }
287
287
  _regeneratorDefine = function (e, r, n, t) {
288
- if (r) i ? i(e, r, {
288
+ function o(r, n) {
289
+ _regeneratorDefine(e, r, function (e) {
290
+ return this._invoke(r, n, e);
291
+ });
292
+ }
293
+ r ? i ? i(e, r, {
289
294
  value: n,
290
295
  enumerable: !t,
291
296
  configurable: !t,
292
297
  writable: !t
293
- }) : e[r] = n;else {
294
- function o(r, n) {
295
- _regeneratorDefine(e, r, function (e) {
296
- return this._invoke(r, n, e);
297
- });
298
- }
299
- o("next", 0), o("throw", 1), o("return", 2);
300
- }
298
+ }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2));
301
299
  }, _regeneratorDefine(e, r, n, t);
302
300
  }
303
301
  function _slicedToArray(r, e) {
@@ -811,8 +809,12 @@ var LOCATION_BREADCRUMB$8 = "property > building > room";
811
809
  var DOMAIN$8 = "www.domain.com";
812
810
  var SHOW_PROPERTY_LOCATION$8 = "Show Property Label";
813
811
  var LOCATION_HELPER$8 = "Enable this to show the property’s location label on the canvas, or disable it to hide it.";
814
- var SHOW_QR_ID$8 = "Show QR ID";
812
+ var SHOW_QR_ID$8 = "Show QR Id";
815
813
  var QR_ID_HELPER$8 = "Enable this to display the unique QR Code ID on the canvas, or disable it to remove it.";
814
+ var MONOCHROME_COLOR$8 = "Tint Color";
815
+ var MONOCHROME_STRENGTH$8 = "Tint Strength";
816
+ var CLEAR_MONOCHROME$8 = "Remove Tint";
817
+ var TINT_SHORT$8 = "Tint";
816
818
  var enTranslations = {
817
819
  BRING_FORWARD: BRING_FORWARD$8,
818
820
  SEND_BACKWARD: SEND_BACKWARD$8,
@@ -885,7 +887,11 @@ var enTranslations = {
885
887
  SHOW_PROPERTY_LOCATION: SHOW_PROPERTY_LOCATION$8,
886
888
  LOCATION_HELPER: LOCATION_HELPER$8,
887
889
  SHOW_QR_ID: SHOW_QR_ID$8,
888
- QR_ID_HELPER: QR_ID_HELPER$8
890
+ QR_ID_HELPER: QR_ID_HELPER$8,
891
+ MONOCHROME_COLOR: MONOCHROME_COLOR$8,
892
+ MONOCHROME_STRENGTH: MONOCHROME_STRENGTH$8,
893
+ CLEAR_MONOCHROME: CLEAR_MONOCHROME$8,
894
+ TINT_SHORT: TINT_SHORT$8
889
895
  };
890
896
 
891
897
  var BRING_FORWARD$7 = "Перенести вперёд";
@@ -960,6 +966,10 @@ var SHOW_PROPERTY_LOCATION$7 = "Показать метку объекта";
960
966
  var LOCATION_HELPER$7 = "Включите, чтобы показать метку расположения объекта на холсте, или отключите, чтобы скрыть её.";
961
967
  var SHOW_QR_ID$7 = "Показать QR-ID";
962
968
  var QR_ID_HELPER$7 = "Включите, чтобы отобразить уникальный идентификатор QR-кода на холсте, или отключите, чтобы убрать его.";
969
+ var MONOCHROME_COLOR$7 = "Цвет тона";
970
+ var MONOCHROME_STRENGTH$7 = "Сила тона";
971
+ var CLEAR_MONOCHROME$7 = "Убрать тон";
972
+ var TINT_SHORT$7 = "Тон";
963
973
  var ruTranslations = {
964
974
  BRING_FORWARD: BRING_FORWARD$7,
965
975
  SEND_BACKWARD: SEND_BACKWARD$7,
@@ -1032,7 +1042,11 @@ var ruTranslations = {
1032
1042
  SHOW_PROPERTY_LOCATION: SHOW_PROPERTY_LOCATION$7,
1033
1043
  LOCATION_HELPER: LOCATION_HELPER$7,
1034
1044
  SHOW_QR_ID: SHOW_QR_ID$7,
1035
- QR_ID_HELPER: QR_ID_HELPER$7
1045
+ QR_ID_HELPER: QR_ID_HELPER$7,
1046
+ MONOCHROME_COLOR: MONOCHROME_COLOR$7,
1047
+ MONOCHROME_STRENGTH: MONOCHROME_STRENGTH$7,
1048
+ CLEAR_MONOCHROME: CLEAR_MONOCHROME$7,
1049
+ TINT_SHORT: TINT_SHORT$7
1036
1050
  };
1037
1051
 
1038
1052
  var BRING_FORWARD$6 = "Przenieś do przodu";
@@ -1107,6 +1121,10 @@ var SHOW_PROPERTY_LOCATION$6 = "Pokaż etykietę nieruchomości";
1107
1121
  var LOCATION_HELPER$6 = "Włącz tę opcję, aby wyświetlić etykietę lokalizacji nieruchomości na płótnie, lub wyłącz, aby ją ukryć.";
1108
1122
  var SHOW_QR_ID$6 = "Pokaż identyfikator QR";
1109
1123
  var QR_ID_HELPER$6 = "Włącz tę opcję, aby wyświetlić unikalny identyfikator kodu QR na płótnie, lub wyłącz, aby go usunąć.";
1124
+ var MONOCHROME_COLOR$6 = "Kolor tonu";
1125
+ var MONOCHROME_STRENGTH$6 = "Siła tonu";
1126
+ var CLEAR_MONOCHROME$6 = "Usuń ton";
1127
+ var TINT_SHORT$6 = "Ton";
1110
1128
  var plTranslations = {
1111
1129
  BRING_FORWARD: BRING_FORWARD$6,
1112
1130
  SEND_BACKWARD: SEND_BACKWARD$6,
@@ -1179,7 +1197,11 @@ var plTranslations = {
1179
1197
  SHOW_PROPERTY_LOCATION: SHOW_PROPERTY_LOCATION$6,
1180
1198
  LOCATION_HELPER: LOCATION_HELPER$6,
1181
1199
  SHOW_QR_ID: SHOW_QR_ID$6,
1182
- QR_ID_HELPER: QR_ID_HELPER$6
1200
+ QR_ID_HELPER: QR_ID_HELPER$6,
1201
+ MONOCHROME_COLOR: MONOCHROME_COLOR$6,
1202
+ MONOCHROME_STRENGTH: MONOCHROME_STRENGTH$6,
1203
+ CLEAR_MONOCHROME: CLEAR_MONOCHROME$6,
1204
+ TINT_SHORT: TINT_SHORT$6
1183
1205
  };
1184
1206
 
1185
1207
  var BRING_FORWARD$5 = "Nach vorne bringen";
@@ -1254,6 +1276,10 @@ var SHOW_PROPERTY_LOCATION$5 = "Eigenschaftsbeschriftung anzeigen";
1254
1276
  var LOCATION_HELPER$5 = "Aktivieren Sie dies, um die Standortbeschriftung der Eigenschaft auf der Leinwand anzuzeigen, oder deaktivieren Sie es, um sie auszublenden.";
1255
1277
  var SHOW_QR_ID$5 = "QR-ID anzeigen";
1256
1278
  var QR_ID_HELPER$5 = "Aktivieren Sie dies, um die eindeutige QR-Code-ID auf der Leinwand anzuzeigen, oder deaktivieren Sie es, um sie zu entfernen.";
1279
+ var MONOCHROME_COLOR$5 = "Tönungsfarbe";
1280
+ var MONOCHROME_STRENGTH$5 = "Tönungsstärke";
1281
+ var CLEAR_MONOCHROME$5 = "Tönung entfernen";
1282
+ var TINT_SHORT$5 = "Tönung";
1257
1283
  var deTranslations = {
1258
1284
  BRING_FORWARD: BRING_FORWARD$5,
1259
1285
  SEND_BACKWARD: SEND_BACKWARD$5,
@@ -1326,7 +1352,11 @@ var deTranslations = {
1326
1352
  SHOW_PROPERTY_LOCATION: SHOW_PROPERTY_LOCATION$5,
1327
1353
  LOCATION_HELPER: LOCATION_HELPER$5,
1328
1354
  SHOW_QR_ID: SHOW_QR_ID$5,
1329
- QR_ID_HELPER: QR_ID_HELPER$5
1355
+ QR_ID_HELPER: QR_ID_HELPER$5,
1356
+ MONOCHROME_COLOR: MONOCHROME_COLOR$5,
1357
+ MONOCHROME_STRENGTH: MONOCHROME_STRENGTH$5,
1358
+ CLEAR_MONOCHROME: CLEAR_MONOCHROME$5,
1359
+ TINT_SHORT: TINT_SHORT$5
1330
1360
  };
1331
1361
 
1332
1362
  var BRING_FORWARD$4 = "Traer al frente";
@@ -1401,6 +1431,10 @@ var SHOW_PROPERTY_LOCATION$4 = "Mostrar etiqueta de propiedad";
1401
1431
  var LOCATION_HELPER$4 = "Active esto para mostrar la etiqueta de ubicación de la propiedad en el lienzo, o desactívelo para ocultarla.";
1402
1432
  var SHOW_QR_ID$4 = "Mostrar ID de QR";
1403
1433
  var QR_ID_HELPER$4 = "Active esto para mostrar el identificador único del código QR en el lienzo, o desactívelo para eliminarlo.";
1434
+ var MONOCHROME_COLOR$4 = "Color de tinte";
1435
+ var MONOCHROME_STRENGTH$4 = "Intensidad del tinte";
1436
+ var CLEAR_MONOCHROME$4 = "Eliminar tinte";
1437
+ var TINT_SHORT$4 = "Tinte";
1404
1438
  var esTranslations = {
1405
1439
  BRING_FORWARD: BRING_FORWARD$4,
1406
1440
  SEND_BACKWARD: SEND_BACKWARD$4,
@@ -1473,7 +1507,11 @@ var esTranslations = {
1473
1507
  SHOW_PROPERTY_LOCATION: SHOW_PROPERTY_LOCATION$4,
1474
1508
  LOCATION_HELPER: LOCATION_HELPER$4,
1475
1509
  SHOW_QR_ID: SHOW_QR_ID$4,
1476
- QR_ID_HELPER: QR_ID_HELPER$4
1510
+ QR_ID_HELPER: QR_ID_HELPER$4,
1511
+ MONOCHROME_COLOR: MONOCHROME_COLOR$4,
1512
+ MONOCHROME_STRENGTH: MONOCHROME_STRENGTH$4,
1513
+ CLEAR_MONOCHROME: CLEAR_MONOCHROME$4,
1514
+ TINT_SHORT: TINT_SHORT$4
1477
1515
  };
1478
1516
 
1479
1517
  var BRING_FORWARD$3 = "Mettre au premier plan";
@@ -1548,6 +1586,10 @@ var SHOW_PROPERTY_LOCATION$3 = "Afficher l’étiquette de propriété";
1548
1586
  var LOCATION_HELPER$3 = "Activez ceci pour afficher l’étiquette de l’emplacement de la propriété sur la zone de travail, ou désactivez-le pour la masquer.";
1549
1587
  var SHOW_QR_ID$3 = "Afficher l’ID du QR";
1550
1588
  var QR_ID_HELPER$3 = "Activez ceci pour afficher l’ID unique du code QR sur la zone de travail, ou désactivez-le pour le supprimer.";
1589
+ var MONOCHROME_COLOR$3 = "Couleur de teinte";
1590
+ var MONOCHROME_STRENGTH$3 = "Intensité de la teinte";
1591
+ var CLEAR_MONOCHROME$3 = "Retirer la teinte";
1592
+ var TINT_SHORT$3 = "Teinte";
1551
1593
  var frTranslations = {
1552
1594
  BRING_FORWARD: BRING_FORWARD$3,
1553
1595
  SEND_BACKWARD: SEND_BACKWARD$3,
@@ -1620,7 +1662,11 @@ var frTranslations = {
1620
1662
  SHOW_PROPERTY_LOCATION: SHOW_PROPERTY_LOCATION$3,
1621
1663
  LOCATION_HELPER: LOCATION_HELPER$3,
1622
1664
  SHOW_QR_ID: SHOW_QR_ID$3,
1623
- QR_ID_HELPER: QR_ID_HELPER$3
1665
+ QR_ID_HELPER: QR_ID_HELPER$3,
1666
+ MONOCHROME_COLOR: MONOCHROME_COLOR$3,
1667
+ MONOCHROME_STRENGTH: MONOCHROME_STRENGTH$3,
1668
+ CLEAR_MONOCHROME: CLEAR_MONOCHROME$3,
1669
+ TINT_SHORT: TINT_SHORT$3
1624
1670
  };
1625
1671
 
1626
1672
  var BRING_FORWARD$2 = "Porta in primo piano";
@@ -1695,6 +1741,10 @@ var SHOW_PROPERTY_LOCATION$2 = "Mostra etichetta proprietà";
1695
1741
  var LOCATION_HELPER$2 = "Abilita questa opzione per mostrare l’etichetta della posizione della proprietà sulla tela, oppure disabilitala per nasconderla.";
1696
1742
  var SHOW_QR_ID$2 = "Mostra ID QR";
1697
1743
  var QR_ID_HELPER$2 = "Abilita questa opzione per mostrare l’ID univoco del codice QR sulla tela, oppure disabilitala per rimuoverlo.";
1744
+ var MONOCHROME_COLOR$2 = "Colore tinta";
1745
+ var MONOCHROME_STRENGTH$2 = "Intensità della tinta";
1746
+ var CLEAR_MONOCHROME$2 = "Rimuovi tinta";
1747
+ var TINT_SHORT$2 = "Tinta";
1698
1748
  var itTranslations = {
1699
1749
  BRING_FORWARD: BRING_FORWARD$2,
1700
1750
  SEND_BACKWARD: SEND_BACKWARD$2,
@@ -1767,7 +1817,11 @@ var itTranslations = {
1767
1817
  SHOW_PROPERTY_LOCATION: SHOW_PROPERTY_LOCATION$2,
1768
1818
  LOCATION_HELPER: LOCATION_HELPER$2,
1769
1819
  SHOW_QR_ID: SHOW_QR_ID$2,
1770
- QR_ID_HELPER: QR_ID_HELPER$2
1820
+ QR_ID_HELPER: QR_ID_HELPER$2,
1821
+ MONOCHROME_COLOR: MONOCHROME_COLOR$2,
1822
+ MONOCHROME_STRENGTH: MONOCHROME_STRENGTH$2,
1823
+ CLEAR_MONOCHROME: CLEAR_MONOCHROME$2,
1824
+ TINT_SHORT: TINT_SHORT$2
1771
1825
  };
1772
1826
 
1773
1827
  var BRING_FORWARD$1 = "Επισπεύδω";
@@ -1842,6 +1896,10 @@ var SHOW_PROPERTY_LOCATION$1 = "Εμφάνιση ετικέτας ιδιοκτη
1842
1896
  var LOCATION_HELPER$1 = "Ενεργοποιήστε το για να εμφανιστεί η ετικέτα τοποθεσίας της ιδιοκτησίας στον καμβά ή απενεργοποιήστε το για να την αποκρύψετε.";
1843
1897
  var SHOW_QR_ID$1 = "Εμφάνιση ταυτότητας QR";
1844
1898
  var QR_ID_HELPER$1 = "Ενεργοποιήστε το για να εμφανιστεί το μοναδικό αναγνωριστικό QR Code στον καμβά ή απενεργοποιήστε το για να το αφαιρέσετε.";
1899
+ var MONOCHROME_COLOR$1 = "Χρώμα απόχρωσης";
1900
+ var MONOCHROME_STRENGTH$1 = "Ένταση απόχρωσης";
1901
+ var CLEAR_MONOCHROME$1 = "Αφαίρεση απόχρωσης";
1902
+ var TINT_SHORT$1 = "Απόχρωση";
1845
1903
  var elTranslations = {
1846
1904
  BRING_FORWARD: BRING_FORWARD$1,
1847
1905
  SEND_BACKWARD: SEND_BACKWARD$1,
@@ -1914,7 +1972,11 @@ var elTranslations = {
1914
1972
  SHOW_PROPERTY_LOCATION: SHOW_PROPERTY_LOCATION$1,
1915
1973
  LOCATION_HELPER: LOCATION_HELPER$1,
1916
1974
  SHOW_QR_ID: SHOW_QR_ID$1,
1917
- QR_ID_HELPER: QR_ID_HELPER$1
1975
+ QR_ID_HELPER: QR_ID_HELPER$1,
1976
+ MONOCHROME_COLOR: MONOCHROME_COLOR$1,
1977
+ MONOCHROME_STRENGTH: MONOCHROME_STRENGTH$1,
1978
+ CLEAR_MONOCHROME: CLEAR_MONOCHROME$1,
1979
+ TINT_SHORT: TINT_SHORT$1
1918
1980
  };
1919
1981
 
1920
1982
  var BRING_FORWARD = "Переносити";
@@ -1989,6 +2051,10 @@ var SHOW_PROPERTY_LOCATION = "Показати мітку власності";
1989
2051
  var LOCATION_HELPER = "Увімкніть, щоб показати мітку розташування власності на полотні, або вимкніть, щоб приховати її.";
1990
2052
  var SHOW_QR_ID = "Показати QR-ID";
1991
2053
  var QR_ID_HELPER = "Увімкніть, щоб відобразити унікальний ідентифікатор QR-коду на полотні, або вимкніть, щоб видалити його.";
2054
+ var MONOCHROME_COLOR = "Колір тону";
2055
+ var MONOCHROME_STRENGTH = "Сила тону";
2056
+ var CLEAR_MONOCHROME = "Прибрати тон";
2057
+ var TINT_SHORT = "Тон";
1992
2058
  var ukTranslations = {
1993
2059
  BRING_FORWARD: BRING_FORWARD,
1994
2060
  SEND_BACKWARD: SEND_BACKWARD,
@@ -2061,7 +2127,11 @@ var ukTranslations = {
2061
2127
  SHOW_PROPERTY_LOCATION: SHOW_PROPERTY_LOCATION,
2062
2128
  LOCATION_HELPER: LOCATION_HELPER,
2063
2129
  SHOW_QR_ID: SHOW_QR_ID,
2064
- QR_ID_HELPER: QR_ID_HELPER
2130
+ QR_ID_HELPER: QR_ID_HELPER,
2131
+ MONOCHROME_COLOR: MONOCHROME_COLOR,
2132
+ MONOCHROME_STRENGTH: MONOCHROME_STRENGTH,
2133
+ CLEAR_MONOCHROME: CLEAR_MONOCHROME,
2134
+ TINT_SHORT: TINT_SHORT
2065
2135
  };
2066
2136
 
2067
2137
  var SUPPPORTED_LOCALES = ['en', 'ru', 'pl', 'de', 'es', 'fr', 'it', 'el', 'uk'];
@@ -2178,6 +2248,11 @@ var propTypes$w = {
2178
2248
  onChangeImageStrokeWidth: PropTypes.func,
2179
2249
  onChangeImageStrokeColor: PropTypes.func,
2180
2250
  onChangeImageOpacity: PropTypes.func,
2251
+ imageTintColor: PropTypes.string,
2252
+ imageTintStrength: PropTypes.number,
2253
+ onChangeImageTintColor: PropTypes.func,
2254
+ onChangeImageTintStrength: PropTypes.func,
2255
+ onClearImageTint: PropTypes.func,
2181
2256
  qrStrokeWidth: PropTypes.number,
2182
2257
  qrStrokeColor: PropTypes.string,
2183
2258
  qrOpacity: PropTypes.number,
@@ -2254,6 +2329,11 @@ var propTypes$v = {
2254
2329
  onChangeImageStrokeWidth: PropTypes.func,
2255
2330
  onChangeImageStrokeColor: PropTypes.func,
2256
2331
  onChangeImageOpacity: PropTypes.func,
2332
+ imageTintColor: PropTypes.string,
2333
+ imageTintStrength: PropTypes.number,
2334
+ onChangeImageTintColor: PropTypes.func,
2335
+ onChangeImageTintStrength: PropTypes.func,
2336
+ onClearImageTint: PropTypes.func,
2257
2337
  qrStrokeWidth: PropTypes.number,
2258
2338
  qrStrokeColor: PropTypes.string,
2259
2339
  qrOpacity: PropTypes.number,
@@ -2945,7 +3025,7 @@ var exportStageAsImage = /*#__PURE__*/function () {
2945
3025
  var _ref3 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2(resolve, reject) {
2946
3026
  var stage, canvas, dataURL, _t;
2947
3027
  return _regenerator().w(function (_context2) {
2948
- while (1) switch (_context2.n) {
3028
+ while (1) switch (_context2.p = _context2.n) {
2949
3029
  case 0:
2950
3030
  _context2.p = 0;
2951
3031
  stage = stageRef === null || stageRef === void 0 ? void 0 : stageRef.current;
@@ -3076,7 +3156,7 @@ var OpacityPicker = function OpacityPicker(_ref) {
3076
3156
  src: varient === 'opacity' ? IconOpacity : toolBarIcon
3077
3157
  })), /*#__PURE__*/React.createElement(StyledText, {
3078
3158
  fontFamily: fontFamily
3079
- }, varient === 'opacity' ? "".concat(value * 100, "%") : "".concat(Math.round(value), "px")), rightChild && rightChild), opacityPickerVisible && /*#__PURE__*/React.createElement("div", {
3159
+ }, varient === 'opacity' ? "".concat(Math.round(value * 100), "%") : "".concat(Math.round(value), "px")), rightChild && rightChild), opacityPickerVisible && /*#__PURE__*/React.createElement("div", {
3080
3160
  style: {
3081
3161
  position: 'absolute',
3082
3162
  bottom: -50,
@@ -3684,6 +3764,11 @@ var propTypes$m = {
3684
3764
  onChangeImageStrokeWidth: PropTypes.func,
3685
3765
  onChangeImageStrokeColor: PropTypes.func,
3686
3766
  onChangeImageOpacity: PropTypes.func,
3767
+ imageTintColor: PropTypes.string,
3768
+ imageTintStrength: PropTypes.number,
3769
+ onChangeImageTintColor: PropTypes.func,
3770
+ onChangeImageTintStrength: PropTypes.func,
3771
+ onClearImageTint: PropTypes.func,
3687
3772
  selectedElement: PropTypes.object,
3688
3773
  languageLocale: PropTypes.string
3689
3774
  };
@@ -3693,13 +3778,18 @@ styled.p(_templateObject$h || (_templateObject$h = _taggedTemplateLiteral(["\n
3693
3778
  var RowContainer$2 = styled.div(_templateObject2$d || (_templateObject2$d = _taggedTemplateLiteral(["\n display: flex;\n flex-direction: row;\n align-items: center;\n flex-wrap: wrap;\n gap: 2px;\n"])));
3694
3779
 
3695
3780
  var ImageToolBar = function ImageToolBar(_ref) {
3696
- var _TEXT_DICTIONARY$lang;
3781
+ var _TEXT_DICTIONARY$lang, _TEXT_DICTIONARY$lang2, _TEXT_DICTIONARY$lang3, _TEXT_DICTIONARY$lang4, _selectedElement$tint, _TEXT_DICTIONARY$lang5, _TEXT_DICTIONARY$lang6, _selectedElement$tint2, _TEXT_DICTIONARY$lang7;
3697
3782
  var imageStrokeWidth = _ref.imageStrokeWidth,
3698
3783
  imageStrokeColor = _ref.imageStrokeColor,
3699
3784
  imageOpacity = _ref.imageOpacity,
3700
3785
  onChangeImageStrokeWidth = _ref.onChangeImageStrokeWidth,
3701
3786
  onChangeImageStrokeColor = _ref.onChangeImageStrokeColor,
3702
3787
  onChangeImageOpacity = _ref.onChangeImageOpacity,
3788
+ imageTintColor = _ref.imageTintColor,
3789
+ imageTintStrength = _ref.imageTintStrength,
3790
+ onChangeImageTintColor = _ref.onChangeImageTintColor,
3791
+ onChangeImageTintStrength = _ref.onChangeImageTintStrength,
3792
+ onClearImageTint = _ref.onClearImageTint,
3703
3793
  selectedElement = _ref.selectedElement,
3704
3794
  languageLocale = _ref.languageLocale;
3705
3795
  return /*#__PURE__*/React.createElement(RowContainer$2, null, /*#__PURE__*/React.createElement(StrokePicker, {
@@ -3713,7 +3803,35 @@ var ImageToolBar = function ImageToolBar(_ref) {
3713
3803
  value: isElementOfSameType(selectedElement, elementTypes.image) ? selectedElement === null || selectedElement === void 0 ? void 0 : selectedElement.opacity : imageOpacity,
3714
3804
  onChangeOpacity: onChangeImageOpacity,
3715
3805
  languageLocale: languageLocale
3716
- }));
3806
+ }), /*#__PURE__*/React.createElement(ToolBarButtonWrapper, {
3807
+ gap: 8,
3808
+ tooltip: TEXT_DICTIONARY === null || TEXT_DICTIONARY === void 0 || (_TEXT_DICTIONARY$lang2 = TEXT_DICTIONARY[languageLocale]) === null || _TEXT_DICTIONARY$lang2 === void 0 ? void 0 : _TEXT_DICTIONARY$lang2.MONOCHROME_COLOR,
3809
+ tooltipPosition: 'bottom'
3810
+ }, /*#__PURE__*/React.createElement(StyledText, {
3811
+ fontFamily: theme.fonts.secondary
3812
+ }, TEXT_DICTIONARY === null || TEXT_DICTIONARY === void 0 || (_TEXT_DICTIONARY$lang3 = TEXT_DICTIONARY[languageLocale]) === null || _TEXT_DICTIONARY$lang3 === void 0 ? void 0 : _TEXT_DICTIONARY$lang3.MONOCHROME_COLOR), /*#__PURE__*/React.createElement(ColorBox, {
3813
+ backgroundColor: isElementOfSameType(selectedElement, elementTypes.image) ? (selectedElement === null || selectedElement === void 0 ? void 0 : selectedElement.tintColor) || imageTintColor : imageTintColor,
3814
+ onChange: onChangeImageTintColor
3815
+ })), /*#__PURE__*/React.createElement(OpacityPicker, {
3816
+ 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.MONOCHROME_STRENGTH,
3817
+ tooltipPosition: 'bottom',
3818
+ value: isElementOfSameType(selectedElement, elementTypes.image) ? (_selectedElement$tint = selectedElement === null || selectedElement === void 0 ? void 0 : selectedElement.tintStrength) !== null && _selectedElement$tint !== void 0 ? _selectedElement$tint : imageTintStrength : imageTintStrength,
3819
+ min: 0,
3820
+ max: 1,
3821
+ step: 0.05,
3822
+ onChangeOpacity: onChangeImageTintStrength,
3823
+ leftChild: /*#__PURE__*/React.createElement(StyledText, {
3824
+ fontFamily: theme.fonts.secondary
3825
+ }, TEXT_DICTIONARY === null || TEXT_DICTIONARY === void 0 || (_TEXT_DICTIONARY$lang5 = TEXT_DICTIONARY[languageLocale]) === null || _TEXT_DICTIONARY$lang5 === void 0 ? void 0 : _TEXT_DICTIONARY$lang5.TINT_SHORT)
3826
+ }), /*#__PURE__*/React.createElement(ToolBarButtonWrapper, {
3827
+ gap: 8,
3828
+ tooltip: TEXT_DICTIONARY === null || TEXT_DICTIONARY === void 0 || (_TEXT_DICTIONARY$lang6 = TEXT_DICTIONARY[languageLocale]) === null || _TEXT_DICTIONARY$lang6 === void 0 ? void 0 : _TEXT_DICTIONARY$lang6.CLEAR_MONOCHROME,
3829
+ tooltipPosition: 'bottom',
3830
+ onClick: onClearImageTint,
3831
+ disabled: isElementOfSameType(selectedElement, elementTypes.image) ? ((_selectedElement$tint2 = selectedElement === null || selectedElement === void 0 ? void 0 : selectedElement.tintStrength) !== null && _selectedElement$tint2 !== void 0 ? _selectedElement$tint2 : 0) <= 0 : imageTintStrength <= 0
3832
+ }, /*#__PURE__*/React.createElement(StyledText, {
3833
+ fontFamily: theme.fonts.secondary
3834
+ }, TEXT_DICTIONARY === null || TEXT_DICTIONARY === void 0 || (_TEXT_DICTIONARY$lang7 = TEXT_DICTIONARY[languageLocale]) === null || _TEXT_DICTIONARY$lang7 === void 0 ? void 0 : _TEXT_DICTIONARY$lang7.CLEAR_MONOCHROME)));
3717
3835
  };
3718
3836
  ImageToolBar.propTypes = propTypes$m;
3719
3837
 
@@ -3845,6 +3963,11 @@ var TopToolBar = function TopToolBar(_ref) {
3845
3963
  onChangeImageStrokeWidth = _ref.onChangeImageStrokeWidth,
3846
3964
  onChangeImageStrokeColor = _ref.onChangeImageStrokeColor,
3847
3965
  onChangeImageOpacity = _ref.onChangeImageOpacity,
3966
+ imageTintColor = _ref.imageTintColor,
3967
+ imageTintStrength = _ref.imageTintStrength,
3968
+ onChangeImageTintColor = _ref.onChangeImageTintColor,
3969
+ onChangeImageTintStrength = _ref.onChangeImageTintStrength,
3970
+ onClearImageTint = _ref.onClearImageTint,
3848
3971
  qrStrokeWidth = _ref.qrStrokeWidth,
3849
3972
  qrStrokeColor = _ref.qrStrokeColor,
3850
3973
  qrOpacity = _ref.qrOpacity,
@@ -3909,6 +4032,11 @@ var TopToolBar = function TopToolBar(_ref) {
3909
4032
  onChangeImageStrokeWidth: onChangeImageStrokeWidth,
3910
4033
  onChangeImageStrokeColor: onChangeImageStrokeColor,
3911
4034
  onChangeImageOpacity: onChangeImageOpacity,
4035
+ imageTintColor: imageTintColor,
4036
+ imageTintStrength: imageTintStrength,
4037
+ onChangeImageTintColor: onChangeImageTintColor,
4038
+ onChangeImageTintStrength: onChangeImageTintStrength,
4039
+ onClearImageTint: onClearImageTint,
3912
4040
  selectedElement: selectedElement,
3913
4041
  languageLocale: languageLocale
3914
4042
  }) : selectedTab === (sideBarpillsList === null || sideBarpillsList === void 0 ? void 0 : sideBarpillsList.shape) ? /*#__PURE__*/React.createElement(ShapeToolBar, {
@@ -4255,6 +4383,7 @@ var propTypes$e = {
4255
4383
  };
4256
4384
 
4257
4385
  var CanvasImage = function CanvasImage(_ref) {
4386
+ var _element$tintStrength;
4258
4387
  var id = _ref.id,
4259
4388
  element = _ref.element,
4260
4389
  _onClick = _ref.onClick,
@@ -4270,6 +4399,30 @@ var CanvasImage = function CanvasImage(_ref) {
4270
4399
  _useState4 = _slicedToArray(_useState3, 2),
4271
4400
  imgEl = _useState4[0],
4272
4401
  setImgEl = _useState4[1];
4402
+ var imageNodeRef = React.useRef(null);
4403
+ var tintStrength = Number((_element$tintStrength = element === null || element === void 0 ? void 0 : element.tintStrength) !== null && _element$tintStrength !== void 0 ? _element$tintStrength : 0);
4404
+ var hasTint = tintStrength > 0;
4405
+ var _useMemo = React.useMemo(function () {
4406
+ var hex = typeof (element === null || element === void 0 ? void 0 : element.tintColor) === 'string' ? element.tintColor.trim() : '#000000';
4407
+ var safeHex = /^#([0-9a-f]{3}|[0-9a-f]{6})$/i.test(hex) ? hex : '#000000';
4408
+ var normalized = safeHex.length === 4 ? "#".concat(safeHex[1]).concat(safeHex[1]).concat(safeHex[2]).concat(safeHex[2]).concat(safeHex[3]).concat(safeHex[3]) : safeHex;
4409
+ var r = parseInt(normalized.slice(1, 3), 16);
4410
+ var g = parseInt(normalized.slice(3, 5), 16);
4411
+ var b = parseInt(normalized.slice(5, 7), 16);
4412
+ var lerp = function lerp(start, end, t) {
4413
+ return start + (end - start) * Math.min(Math.max(t, 0), 1);
4414
+ };
4415
+
4416
+ // At 0: keep original grayscale; at 1: fully tint to the picked color.
4417
+ return {
4418
+ red: Math.round(lerp(255, r, tintStrength)),
4419
+ green: Math.round(lerp(255, g, tintStrength)),
4420
+ blue: Math.round(lerp(255, b, tintStrength))
4421
+ };
4422
+ }, [element === null || element === void 0 ? void 0 : element.tintColor, tintStrength]),
4423
+ red = _useMemo.red,
4424
+ green = _useMemo.green,
4425
+ blue = _useMemo.blue;
4273
4426
  React.useEffect(function () {
4274
4427
  var cancelled = false;
4275
4428
  var objectUrl;
@@ -4280,7 +4433,7 @@ var CanvasImage = function CanvasImage(_ref) {
4280
4433
  _load = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {
4281
4434
  var res, blob, img, _t;
4282
4435
  return _regenerator().w(function (_context) {
4283
- while (1) switch (_context.n) {
4436
+ while (1) switch (_context.p = _context.n) {
4284
4437
  case 0:
4285
4438
  _context.p = 0;
4286
4439
  setLoading(true);
@@ -4337,13 +4490,26 @@ var CanvasImage = function CanvasImage(_ref) {
4337
4490
  if (objectUrl) URL.revokeObjectURL(objectUrl);
4338
4491
  };
4339
4492
  }, [element === null || element === void 0 ? void 0 : element.src]);
4493
+ React.useEffect(function () {
4494
+ if (!(imageNodeRef !== null && imageNodeRef !== void 0 && imageNodeRef.current)) return;
4495
+ if (hasTint) {
4496
+ imageNodeRef.current.cache();
4497
+ } else {
4498
+ imageNodeRef.current.clearCache();
4499
+ }
4500
+ }, [hasTint, red, green, blue]);
4340
4501
  if (!loaded || !imgEl) return null;
4341
4502
  return /*#__PURE__*/React.createElement(reactKonva.Image, _extends({
4503
+ ref: imageNodeRef,
4342
4504
  id: id,
4343
4505
  image: imgEl
4344
4506
  }, element, {
4345
4507
  width: element === null || element === void 0 ? void 0 : element.width,
4346
4508
  height: element === null || element === void 0 ? void 0 : element.height,
4509
+ filters: hasTint ? [Konva.Filters.Grayscale, Konva.Filters.RGB] : undefined,
4510
+ red: hasTint ? red : undefined,
4511
+ green: hasTint ? green : undefined,
4512
+ blue: hasTint ? blue : undefined,
4347
4513
  onClick: function onClick() {
4348
4514
  return _onClick && _onClick();
4349
4515
  },
@@ -4454,7 +4620,7 @@ var QrElement = function QrElement(_ref) {
4454
4620
  _loadLogo = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2() {
4455
4621
  var res, blob, img, _t;
4456
4622
  return _regenerator().w(function (_context2) {
4457
- while (1) switch (_context2.n) {
4623
+ while (1) switch (_context2.p = _context2.n) {
4458
4624
  case 0:
4459
4625
  if (element !== null && element !== void 0 && element.qrLogo) {
4460
4626
  _context2.n = 1;
@@ -5164,6 +5330,11 @@ var Editor = function Editor(_ref) {
5164
5330
  onChangeImageStrokeWidth = _ref.onChangeImageStrokeWidth,
5165
5331
  onChangeImageStrokeColor = _ref.onChangeImageStrokeColor,
5166
5332
  onChangeImageOpacity = _ref.onChangeImageOpacity,
5333
+ imageTintColor = _ref.imageTintColor,
5334
+ imageTintStrength = _ref.imageTintStrength,
5335
+ onChangeImageTintColor = _ref.onChangeImageTintColor,
5336
+ onChangeImageTintStrength = _ref.onChangeImageTintStrength,
5337
+ onClearImageTint = _ref.onClearImageTint,
5167
5338
  qrStrokeWidth = _ref.qrStrokeWidth,
5168
5339
  qrStrokeColor = _ref.qrStrokeColor,
5169
5340
  qrOpacity = _ref.qrOpacity,
@@ -5499,6 +5670,11 @@ var Editor = function Editor(_ref) {
5499
5670
  onChangeImageStrokeWidth: onChangeImageStrokeWidth,
5500
5671
  onChangeImageStrokeColor: onChangeImageStrokeColor,
5501
5672
  onChangeImageOpacity: onChangeImageOpacity,
5673
+ imageTintColor: imageTintColor,
5674
+ imageTintStrength: imageTintStrength,
5675
+ onChangeImageTintColor: onChangeImageTintColor,
5676
+ onChangeImageTintStrength: onChangeImageTintStrength,
5677
+ onClearImageTint: onClearImageTint,
5502
5678
  qrStrokeWidth: qrStrokeWidth,
5503
5679
  qrStrokeColor: qrStrokeColor,
5504
5680
  qrOpacity: qrOpacity,
@@ -6425,7 +6601,7 @@ function memoize(fn) {
6425
6601
  }
6426
6602
 
6427
6603
  // eslint-disable-next-line no-undef
6428
- 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
6604
+ 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|popover|popoverTarget|popoverTargetAction|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
6429
6605
 
6430
6606
  var isPropValid = /* #__PURE__ */memoize(function (prop) {
6431
6607
  return reactPropsRegex.test(prop) || prop.charCodeAt(0) === 111
@@ -6593,38 +6769,46 @@ var Studio = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
6593
6769
  _useState38 = _slicedToArray(_useState37, 2),
6594
6770
  imageOpacity = _useState38[0],
6595
6771
  setImageOpacity = _useState38[1];
6596
- var _useState39 = React.useState(2),
6772
+ var _useState39 = React.useState(theme.color.black),
6597
6773
  _useState40 = _slicedToArray(_useState39, 2),
6598
- qrStrokeWidth = _useState40[0],
6599
- setQrStrokeWidth = _useState40[1];
6600
- var _useState41 = React.useState(theme.color.black),
6774
+ imageTintColor = _useState40[0],
6775
+ setImageTintColor = _useState40[1];
6776
+ var _useState41 = React.useState(0.6),
6601
6777
  _useState42 = _slicedToArray(_useState41, 2),
6602
- qrStrokeColor = _useState42[0],
6603
- setQrStrokeColor = _useState42[1];
6604
- var _useState43 = React.useState(1),
6778
+ imageTintStrength = _useState42[0],
6779
+ setImageTintStrength = _useState42[1];
6780
+ var _useState43 = React.useState(2),
6605
6781
  _useState44 = _slicedToArray(_useState43, 2),
6606
- qrOpacity = _useState44[0],
6607
- setQrOpacity = _useState44[1];
6608
- var _useState45 = React.useState(null),
6782
+ qrStrokeWidth = _useState44[0],
6783
+ setQrStrokeWidth = _useState44[1];
6784
+ var _useState45 = React.useState(theme.color.black),
6609
6785
  _useState46 = _slicedToArray(_useState45, 2),
6610
- selectedElement = _useState46[0],
6611
- setSelectedElement = _useState46[1];
6612
- var _useState47 = React.useState(customImages || []),
6786
+ qrStrokeColor = _useState46[0],
6787
+ setQrStrokeColor = _useState46[1];
6788
+ var _useState47 = React.useState(1),
6613
6789
  _useState48 = _slicedToArray(_useState47, 2),
6614
- customImagesList = _useState48[0],
6615
- setCustomImagesList = _useState48[1];
6616
- var _useState49 = React.useState(defaultQrLogo),
6790
+ qrOpacity = _useState48[0],
6791
+ setQrOpacity = _useState48[1];
6792
+ var _useState49 = React.useState(null),
6617
6793
  _useState50 = _slicedToArray(_useState49, 2),
6618
- qrLogo = _useState50[0],
6619
- setQrLogo = _useState50[1];
6620
- var _useState51 = React.useState(basicTextProps),
6794
+ selectedElement = _useState50[0],
6795
+ setSelectedElement = _useState50[1];
6796
+ var _useState51 = React.useState(customImages || []),
6621
6797
  _useState52 = _slicedToArray(_useState51, 2),
6622
- defaultTextProps = _useState52[0],
6623
- setDefaultTextProps = _useState52[1];
6624
- var _useState53 = React.useState(qrId),
6798
+ customImagesList = _useState52[0],
6799
+ setCustomImagesList = _useState52[1];
6800
+ var _useState53 = React.useState(defaultQrLogo),
6625
6801
  _useState54 = _slicedToArray(_useState53, 2),
6626
- currentQrId = _useState54[0],
6627
- setCurrentQrId = _useState54[1];
6802
+ qrLogo = _useState54[0],
6803
+ setQrLogo = _useState54[1];
6804
+ var _useState55 = React.useState(basicTextProps),
6805
+ _useState56 = _slicedToArray(_useState55, 2),
6806
+ defaultTextProps = _useState56[0],
6807
+ setDefaultTextProps = _useState56[1];
6808
+ var _useState57 = React.useState(qrId),
6809
+ _useState58 = _slicedToArray(_useState57, 2),
6810
+ currentQrId = _useState58[0],
6811
+ setCurrentQrId = _useState58[1];
6628
6812
  var overallLoading = loadingFonts || loadingImages || loadingUploadImage || loading;
6629
6813
  var getPageDims = React.useCallback(function () {
6630
6814
  var _base$find;
@@ -7365,6 +7549,26 @@ var Studio = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
7365
7549
  setImageOpacity(e);
7366
7550
  }
7367
7551
  };
7552
+ var onChangeImageTintColor = function onChangeImageTintColor(color) {
7553
+ if (isElementOfSameType(selectedElement, elementTypes === null || elementTypes === void 0 ? void 0 : elementTypes.image)) {
7554
+ changeSelectedElementProperty('tintColor', color);
7555
+ }
7556
+ setImageTintColor(color);
7557
+ };
7558
+ var onChangeImageTintStrength = function onChangeImageTintStrength(value) {
7559
+ var nextStrength = Math.max(0, Math.min(1, value));
7560
+ if (isElementOfSameType(selectedElement, elementTypes === null || elementTypes === void 0 ? void 0 : elementTypes.image)) {
7561
+ changeSelectedElementProperty('tintStrength', nextStrength);
7562
+ } else {
7563
+ setImageTintStrength(nextStrength);
7564
+ }
7565
+ };
7566
+ var onClearImageTint = function onClearImageTint() {
7567
+ if (isElementOfSameType(selectedElement, elementTypes === null || elementTypes === void 0 ? void 0 : elementTypes.image)) {
7568
+ changeSelectedElementProperty('tintStrength', 0);
7569
+ }
7570
+ setImageTintStrength(0);
7571
+ };
7368
7572
  var addCustomImageToList = function addCustomImageToList(img) {
7369
7573
  // console.error({img});
7370
7574
  setCustomImagesList([].concat(_toConsumableArray(customImagesList), [img]));
@@ -7377,6 +7581,8 @@ var Studio = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
7377
7581
  stroke: imageStrokeColor,
7378
7582
  strokeWidth: imageStrokeWidth,
7379
7583
  opacity: imageOpacity,
7584
+ tintColor: imageTintColor,
7585
+ tintStrength: imageTintStrength,
7380
7586
  type: elementTypes.image,
7381
7587
  draggable: true,
7382
7588
  // width: 100,
@@ -7501,7 +7707,7 @@ var Studio = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
7501
7707
  var _ref6 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2() {
7502
7708
  var file, result, imageUrl, reader, _t;
7503
7709
  return _regenerator().w(function (_context2) {
7504
- while (1) switch (_context2.n) {
7710
+ while (1) switch (_context2.p = _context2.n) {
7505
7711
  case 0:
7506
7712
  _context2.n = 1;
7507
7713
  return pickImage();
@@ -7694,9 +7900,14 @@ var Studio = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
7694
7900
  imageStrokeWidth: imageStrokeWidth,
7695
7901
  imageStrokeColor: imageStrokeColor,
7696
7902
  imageOpacity: imageOpacity,
7903
+ imageTintColor: imageTintColor,
7904
+ imageTintStrength: imageTintStrength,
7697
7905
  onChangeImageStrokeWidth: onChangeImageStrokeWidth,
7698
7906
  onChangeImageStrokeColor: onChangeImageStrokeColor,
7699
7907
  onChangeImageOpacity: onChangeImageOpacity,
7908
+ onChangeImageTintColor: onChangeImageTintColor,
7909
+ onChangeImageTintStrength: onChangeImageTintStrength,
7910
+ onClearImageTint: onClearImageTint,
7700
7911
  onChangeShapeStrokeColor: onChangeShapeStrokeColor,
7701
7912
  onChangeShapeStrokeWidth: onChangeShapeStrokeWidth,
7702
7913
  onChangeShapeFill: onChangeShapeFill,