@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/esm/index.js CHANGED
@@ -3,9 +3,9 @@ import PropTypes, { element } from 'prop-types';
3
3
  import styled, { css, keyframes, StyleSheetManager } from 'styled-components';
4
4
  import { createPortal } from 'react-dom';
5
5
  import { Image as Image$1, Group, Rect, Text, Line, Star, Path, RegularPolygon, Arrow, Circle, Stage, Layer, Transformer } from 'react-konva';
6
+ import Konva from 'konva';
6
7
  import QRCode from 'qrcode';
7
8
  import { Html } from 'react-konva-utils';
8
- import Konva from 'konva';
9
9
 
10
10
  function _arrayLikeToArray(r, a) {
11
11
  (null == a || a > r.length) && (a = r.length);
@@ -283,19 +283,17 @@ function _regeneratorDefine(e, r, n, t) {
283
283
  i = 0;
284
284
  }
285
285
  _regeneratorDefine = function (e, r, n, t) {
286
- if (r) i ? i(e, r, {
286
+ function o(r, n) {
287
+ _regeneratorDefine(e, r, function (e) {
288
+ return this._invoke(r, n, e);
289
+ });
290
+ }
291
+ r ? i ? i(e, r, {
287
292
  value: n,
288
293
  enumerable: !t,
289
294
  configurable: !t,
290
295
  writable: !t
291
- }) : e[r] = n;else {
292
- function o(r, n) {
293
- _regeneratorDefine(e, r, function (e) {
294
- return this._invoke(r, n, e);
295
- });
296
- }
297
- o("next", 0), o("throw", 1), o("return", 2);
298
- }
296
+ }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2));
299
297
  }, _regeneratorDefine(e, r, n, t);
300
298
  }
301
299
  function _slicedToArray(r, e) {
@@ -809,8 +807,12 @@ var LOCATION_BREADCRUMB$8 = "property > building > room";
809
807
  var DOMAIN$8 = "www.domain.com";
810
808
  var SHOW_PROPERTY_LOCATION$8 = "Show Property Label";
811
809
  var LOCATION_HELPER$8 = "Enable this to show the property’s location label on the canvas, or disable it to hide it.";
812
- var SHOW_QR_ID$8 = "Show QR ID";
810
+ var SHOW_QR_ID$8 = "Show QR Id";
813
811
  var QR_ID_HELPER$8 = "Enable this to display the unique QR Code ID on the canvas, or disable it to remove it.";
812
+ var MONOCHROME_COLOR$8 = "Tint Color";
813
+ var MONOCHROME_STRENGTH$8 = "Tint Strength";
814
+ var CLEAR_MONOCHROME$8 = "Remove Tint";
815
+ var TINT_SHORT$8 = "Tint";
814
816
  var enTranslations = {
815
817
  BRING_FORWARD: BRING_FORWARD$8,
816
818
  SEND_BACKWARD: SEND_BACKWARD$8,
@@ -883,7 +885,11 @@ var enTranslations = {
883
885
  SHOW_PROPERTY_LOCATION: SHOW_PROPERTY_LOCATION$8,
884
886
  LOCATION_HELPER: LOCATION_HELPER$8,
885
887
  SHOW_QR_ID: SHOW_QR_ID$8,
886
- QR_ID_HELPER: QR_ID_HELPER$8
888
+ QR_ID_HELPER: QR_ID_HELPER$8,
889
+ MONOCHROME_COLOR: MONOCHROME_COLOR$8,
890
+ MONOCHROME_STRENGTH: MONOCHROME_STRENGTH$8,
891
+ CLEAR_MONOCHROME: CLEAR_MONOCHROME$8,
892
+ TINT_SHORT: TINT_SHORT$8
887
893
  };
888
894
 
889
895
  var BRING_FORWARD$7 = "Перенести вперёд";
@@ -958,6 +964,10 @@ var SHOW_PROPERTY_LOCATION$7 = "Показать метку объекта";
958
964
  var LOCATION_HELPER$7 = "Включите, чтобы показать метку расположения объекта на холсте, или отключите, чтобы скрыть её.";
959
965
  var SHOW_QR_ID$7 = "Показать QR-ID";
960
966
  var QR_ID_HELPER$7 = "Включите, чтобы отобразить уникальный идентификатор QR-кода на холсте, или отключите, чтобы убрать его.";
967
+ var MONOCHROME_COLOR$7 = "Цвет тона";
968
+ var MONOCHROME_STRENGTH$7 = "Сила тона";
969
+ var CLEAR_MONOCHROME$7 = "Убрать тон";
970
+ var TINT_SHORT$7 = "Тон";
961
971
  var ruTranslations = {
962
972
  BRING_FORWARD: BRING_FORWARD$7,
963
973
  SEND_BACKWARD: SEND_BACKWARD$7,
@@ -1030,7 +1040,11 @@ var ruTranslations = {
1030
1040
  SHOW_PROPERTY_LOCATION: SHOW_PROPERTY_LOCATION$7,
1031
1041
  LOCATION_HELPER: LOCATION_HELPER$7,
1032
1042
  SHOW_QR_ID: SHOW_QR_ID$7,
1033
- QR_ID_HELPER: QR_ID_HELPER$7
1043
+ QR_ID_HELPER: QR_ID_HELPER$7,
1044
+ MONOCHROME_COLOR: MONOCHROME_COLOR$7,
1045
+ MONOCHROME_STRENGTH: MONOCHROME_STRENGTH$7,
1046
+ CLEAR_MONOCHROME: CLEAR_MONOCHROME$7,
1047
+ TINT_SHORT: TINT_SHORT$7
1034
1048
  };
1035
1049
 
1036
1050
  var BRING_FORWARD$6 = "Przenieś do przodu";
@@ -1105,6 +1119,10 @@ var SHOW_PROPERTY_LOCATION$6 = "Pokaż etykietę nieruchomości";
1105
1119
  var LOCATION_HELPER$6 = "Włącz tę opcję, aby wyświetlić etykietę lokalizacji nieruchomości na płótnie, lub wyłącz, aby ją ukryć.";
1106
1120
  var SHOW_QR_ID$6 = "Pokaż identyfikator QR";
1107
1121
  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ąć.";
1122
+ var MONOCHROME_COLOR$6 = "Kolor tonu";
1123
+ var MONOCHROME_STRENGTH$6 = "Siła tonu";
1124
+ var CLEAR_MONOCHROME$6 = "Usuń ton";
1125
+ var TINT_SHORT$6 = "Ton";
1108
1126
  var plTranslations = {
1109
1127
  BRING_FORWARD: BRING_FORWARD$6,
1110
1128
  SEND_BACKWARD: SEND_BACKWARD$6,
@@ -1177,7 +1195,11 @@ var plTranslations = {
1177
1195
  SHOW_PROPERTY_LOCATION: SHOW_PROPERTY_LOCATION$6,
1178
1196
  LOCATION_HELPER: LOCATION_HELPER$6,
1179
1197
  SHOW_QR_ID: SHOW_QR_ID$6,
1180
- QR_ID_HELPER: QR_ID_HELPER$6
1198
+ QR_ID_HELPER: QR_ID_HELPER$6,
1199
+ MONOCHROME_COLOR: MONOCHROME_COLOR$6,
1200
+ MONOCHROME_STRENGTH: MONOCHROME_STRENGTH$6,
1201
+ CLEAR_MONOCHROME: CLEAR_MONOCHROME$6,
1202
+ TINT_SHORT: TINT_SHORT$6
1181
1203
  };
1182
1204
 
1183
1205
  var BRING_FORWARD$5 = "Nach vorne bringen";
@@ -1252,6 +1274,10 @@ var SHOW_PROPERTY_LOCATION$5 = "Eigenschaftsbeschriftung anzeigen";
1252
1274
  var LOCATION_HELPER$5 = "Aktivieren Sie dies, um die Standortbeschriftung der Eigenschaft auf der Leinwand anzuzeigen, oder deaktivieren Sie es, um sie auszublenden.";
1253
1275
  var SHOW_QR_ID$5 = "QR-ID anzeigen";
1254
1276
  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.";
1277
+ var MONOCHROME_COLOR$5 = "Tönungsfarbe";
1278
+ var MONOCHROME_STRENGTH$5 = "Tönungsstärke";
1279
+ var CLEAR_MONOCHROME$5 = "Tönung entfernen";
1280
+ var TINT_SHORT$5 = "Tönung";
1255
1281
  var deTranslations = {
1256
1282
  BRING_FORWARD: BRING_FORWARD$5,
1257
1283
  SEND_BACKWARD: SEND_BACKWARD$5,
@@ -1324,7 +1350,11 @@ var deTranslations = {
1324
1350
  SHOW_PROPERTY_LOCATION: SHOW_PROPERTY_LOCATION$5,
1325
1351
  LOCATION_HELPER: LOCATION_HELPER$5,
1326
1352
  SHOW_QR_ID: SHOW_QR_ID$5,
1327
- QR_ID_HELPER: QR_ID_HELPER$5
1353
+ QR_ID_HELPER: QR_ID_HELPER$5,
1354
+ MONOCHROME_COLOR: MONOCHROME_COLOR$5,
1355
+ MONOCHROME_STRENGTH: MONOCHROME_STRENGTH$5,
1356
+ CLEAR_MONOCHROME: CLEAR_MONOCHROME$5,
1357
+ TINT_SHORT: TINT_SHORT$5
1328
1358
  };
1329
1359
 
1330
1360
  var BRING_FORWARD$4 = "Traer al frente";
@@ -1399,6 +1429,10 @@ var SHOW_PROPERTY_LOCATION$4 = "Mostrar etiqueta de propiedad";
1399
1429
  var LOCATION_HELPER$4 = "Active esto para mostrar la etiqueta de ubicación de la propiedad en el lienzo, o desactívelo para ocultarla.";
1400
1430
  var SHOW_QR_ID$4 = "Mostrar ID de QR";
1401
1431
  var QR_ID_HELPER$4 = "Active esto para mostrar el identificador único del código QR en el lienzo, o desactívelo para eliminarlo.";
1432
+ var MONOCHROME_COLOR$4 = "Color de tinte";
1433
+ var MONOCHROME_STRENGTH$4 = "Intensidad del tinte";
1434
+ var CLEAR_MONOCHROME$4 = "Eliminar tinte";
1435
+ var TINT_SHORT$4 = "Tinte";
1402
1436
  var esTranslations = {
1403
1437
  BRING_FORWARD: BRING_FORWARD$4,
1404
1438
  SEND_BACKWARD: SEND_BACKWARD$4,
@@ -1471,7 +1505,11 @@ var esTranslations = {
1471
1505
  SHOW_PROPERTY_LOCATION: SHOW_PROPERTY_LOCATION$4,
1472
1506
  LOCATION_HELPER: LOCATION_HELPER$4,
1473
1507
  SHOW_QR_ID: SHOW_QR_ID$4,
1474
- QR_ID_HELPER: QR_ID_HELPER$4
1508
+ QR_ID_HELPER: QR_ID_HELPER$4,
1509
+ MONOCHROME_COLOR: MONOCHROME_COLOR$4,
1510
+ MONOCHROME_STRENGTH: MONOCHROME_STRENGTH$4,
1511
+ CLEAR_MONOCHROME: CLEAR_MONOCHROME$4,
1512
+ TINT_SHORT: TINT_SHORT$4
1475
1513
  };
1476
1514
 
1477
1515
  var BRING_FORWARD$3 = "Mettre au premier plan";
@@ -1546,6 +1584,10 @@ var SHOW_PROPERTY_LOCATION$3 = "Afficher l’étiquette de propriété";
1546
1584
  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.";
1547
1585
  var SHOW_QR_ID$3 = "Afficher l’ID du QR";
1548
1586
  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.";
1587
+ var MONOCHROME_COLOR$3 = "Couleur de teinte";
1588
+ var MONOCHROME_STRENGTH$3 = "Intensité de la teinte";
1589
+ var CLEAR_MONOCHROME$3 = "Retirer la teinte";
1590
+ var TINT_SHORT$3 = "Teinte";
1549
1591
  var frTranslations = {
1550
1592
  BRING_FORWARD: BRING_FORWARD$3,
1551
1593
  SEND_BACKWARD: SEND_BACKWARD$3,
@@ -1618,7 +1660,11 @@ var frTranslations = {
1618
1660
  SHOW_PROPERTY_LOCATION: SHOW_PROPERTY_LOCATION$3,
1619
1661
  LOCATION_HELPER: LOCATION_HELPER$3,
1620
1662
  SHOW_QR_ID: SHOW_QR_ID$3,
1621
- QR_ID_HELPER: QR_ID_HELPER$3
1663
+ QR_ID_HELPER: QR_ID_HELPER$3,
1664
+ MONOCHROME_COLOR: MONOCHROME_COLOR$3,
1665
+ MONOCHROME_STRENGTH: MONOCHROME_STRENGTH$3,
1666
+ CLEAR_MONOCHROME: CLEAR_MONOCHROME$3,
1667
+ TINT_SHORT: TINT_SHORT$3
1622
1668
  };
1623
1669
 
1624
1670
  var BRING_FORWARD$2 = "Porta in primo piano";
@@ -1693,6 +1739,10 @@ var SHOW_PROPERTY_LOCATION$2 = "Mostra etichetta proprietà";
1693
1739
  var LOCATION_HELPER$2 = "Abilita questa opzione per mostrare l’etichetta della posizione della proprietà sulla tela, oppure disabilitala per nasconderla.";
1694
1740
  var SHOW_QR_ID$2 = "Mostra ID QR";
1695
1741
  var QR_ID_HELPER$2 = "Abilita questa opzione per mostrare l’ID univoco del codice QR sulla tela, oppure disabilitala per rimuoverlo.";
1742
+ var MONOCHROME_COLOR$2 = "Colore tinta";
1743
+ var MONOCHROME_STRENGTH$2 = "Intensità della tinta";
1744
+ var CLEAR_MONOCHROME$2 = "Rimuovi tinta";
1745
+ var TINT_SHORT$2 = "Tinta";
1696
1746
  var itTranslations = {
1697
1747
  BRING_FORWARD: BRING_FORWARD$2,
1698
1748
  SEND_BACKWARD: SEND_BACKWARD$2,
@@ -1765,7 +1815,11 @@ var itTranslations = {
1765
1815
  SHOW_PROPERTY_LOCATION: SHOW_PROPERTY_LOCATION$2,
1766
1816
  LOCATION_HELPER: LOCATION_HELPER$2,
1767
1817
  SHOW_QR_ID: SHOW_QR_ID$2,
1768
- QR_ID_HELPER: QR_ID_HELPER$2
1818
+ QR_ID_HELPER: QR_ID_HELPER$2,
1819
+ MONOCHROME_COLOR: MONOCHROME_COLOR$2,
1820
+ MONOCHROME_STRENGTH: MONOCHROME_STRENGTH$2,
1821
+ CLEAR_MONOCHROME: CLEAR_MONOCHROME$2,
1822
+ TINT_SHORT: TINT_SHORT$2
1769
1823
  };
1770
1824
 
1771
1825
  var BRING_FORWARD$1 = "Επισπεύδω";
@@ -1840,6 +1894,10 @@ var SHOW_PROPERTY_LOCATION$1 = "Εμφάνιση ετικέτας ιδιοκτη
1840
1894
  var LOCATION_HELPER$1 = "Ενεργοποιήστε το για να εμφανιστεί η ετικέτα τοποθεσίας της ιδιοκτησίας στον καμβά ή απενεργοποιήστε το για να την αποκρύψετε.";
1841
1895
  var SHOW_QR_ID$1 = "Εμφάνιση ταυτότητας QR";
1842
1896
  var QR_ID_HELPER$1 = "Ενεργοποιήστε το για να εμφανιστεί το μοναδικό αναγνωριστικό QR Code στον καμβά ή απενεργοποιήστε το για να το αφαιρέσετε.";
1897
+ var MONOCHROME_COLOR$1 = "Χρώμα απόχρωσης";
1898
+ var MONOCHROME_STRENGTH$1 = "Ένταση απόχρωσης";
1899
+ var CLEAR_MONOCHROME$1 = "Αφαίρεση απόχρωσης";
1900
+ var TINT_SHORT$1 = "Απόχρωση";
1843
1901
  var elTranslations = {
1844
1902
  BRING_FORWARD: BRING_FORWARD$1,
1845
1903
  SEND_BACKWARD: SEND_BACKWARD$1,
@@ -1912,7 +1970,11 @@ var elTranslations = {
1912
1970
  SHOW_PROPERTY_LOCATION: SHOW_PROPERTY_LOCATION$1,
1913
1971
  LOCATION_HELPER: LOCATION_HELPER$1,
1914
1972
  SHOW_QR_ID: SHOW_QR_ID$1,
1915
- QR_ID_HELPER: QR_ID_HELPER$1
1973
+ QR_ID_HELPER: QR_ID_HELPER$1,
1974
+ MONOCHROME_COLOR: MONOCHROME_COLOR$1,
1975
+ MONOCHROME_STRENGTH: MONOCHROME_STRENGTH$1,
1976
+ CLEAR_MONOCHROME: CLEAR_MONOCHROME$1,
1977
+ TINT_SHORT: TINT_SHORT$1
1916
1978
  };
1917
1979
 
1918
1980
  var BRING_FORWARD = "Переносити";
@@ -1987,6 +2049,10 @@ var SHOW_PROPERTY_LOCATION = "Показати мітку власності";
1987
2049
  var LOCATION_HELPER = "Увімкніть, щоб показати мітку розташування власності на полотні, або вимкніть, щоб приховати її.";
1988
2050
  var SHOW_QR_ID = "Показати QR-ID";
1989
2051
  var QR_ID_HELPER = "Увімкніть, щоб відобразити унікальний ідентифікатор QR-коду на полотні, або вимкніть, щоб видалити його.";
2052
+ var MONOCHROME_COLOR = "Колір тону";
2053
+ var MONOCHROME_STRENGTH = "Сила тону";
2054
+ var CLEAR_MONOCHROME = "Прибрати тон";
2055
+ var TINT_SHORT = "Тон";
1990
2056
  var ukTranslations = {
1991
2057
  BRING_FORWARD: BRING_FORWARD,
1992
2058
  SEND_BACKWARD: SEND_BACKWARD,
@@ -2059,7 +2125,11 @@ var ukTranslations = {
2059
2125
  SHOW_PROPERTY_LOCATION: SHOW_PROPERTY_LOCATION,
2060
2126
  LOCATION_HELPER: LOCATION_HELPER,
2061
2127
  SHOW_QR_ID: SHOW_QR_ID,
2062
- QR_ID_HELPER: QR_ID_HELPER
2128
+ QR_ID_HELPER: QR_ID_HELPER,
2129
+ MONOCHROME_COLOR: MONOCHROME_COLOR,
2130
+ MONOCHROME_STRENGTH: MONOCHROME_STRENGTH,
2131
+ CLEAR_MONOCHROME: CLEAR_MONOCHROME,
2132
+ TINT_SHORT: TINT_SHORT
2063
2133
  };
2064
2134
 
2065
2135
  var SUPPPORTED_LOCALES = ['en', 'ru', 'pl', 'de', 'es', 'fr', 'it', 'el', 'uk'];
@@ -2176,6 +2246,11 @@ var propTypes$w = {
2176
2246
  onChangeImageStrokeWidth: PropTypes.func,
2177
2247
  onChangeImageStrokeColor: PropTypes.func,
2178
2248
  onChangeImageOpacity: PropTypes.func,
2249
+ imageTintColor: PropTypes.string,
2250
+ imageTintStrength: PropTypes.number,
2251
+ onChangeImageTintColor: PropTypes.func,
2252
+ onChangeImageTintStrength: PropTypes.func,
2253
+ onClearImageTint: PropTypes.func,
2179
2254
  qrStrokeWidth: PropTypes.number,
2180
2255
  qrStrokeColor: PropTypes.string,
2181
2256
  qrOpacity: PropTypes.number,
@@ -2252,6 +2327,11 @@ var propTypes$v = {
2252
2327
  onChangeImageStrokeWidth: PropTypes.func,
2253
2328
  onChangeImageStrokeColor: PropTypes.func,
2254
2329
  onChangeImageOpacity: PropTypes.func,
2330
+ imageTintColor: PropTypes.string,
2331
+ imageTintStrength: PropTypes.number,
2332
+ onChangeImageTintColor: PropTypes.func,
2333
+ onChangeImageTintStrength: PropTypes.func,
2334
+ onClearImageTint: PropTypes.func,
2255
2335
  qrStrokeWidth: PropTypes.number,
2256
2336
  qrStrokeColor: PropTypes.string,
2257
2337
  qrOpacity: PropTypes.number,
@@ -2943,7 +3023,7 @@ var exportStageAsImage = /*#__PURE__*/function () {
2943
3023
  var _ref3 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2(resolve, reject) {
2944
3024
  var stage, canvas, dataURL, _t;
2945
3025
  return _regenerator().w(function (_context2) {
2946
- while (1) switch (_context2.n) {
3026
+ while (1) switch (_context2.p = _context2.n) {
2947
3027
  case 0:
2948
3028
  _context2.p = 0;
2949
3029
  stage = stageRef === null || stageRef === void 0 ? void 0 : stageRef.current;
@@ -3074,7 +3154,7 @@ var OpacityPicker = function OpacityPicker(_ref) {
3074
3154
  src: varient === 'opacity' ? IconOpacity : toolBarIcon
3075
3155
  })), /*#__PURE__*/React.createElement(StyledText, {
3076
3156
  fontFamily: fontFamily
3077
- }, varient === 'opacity' ? "".concat(value * 100, "%") : "".concat(Math.round(value), "px")), rightChild && rightChild), opacityPickerVisible && /*#__PURE__*/React.createElement("div", {
3157
+ }, varient === 'opacity' ? "".concat(Math.round(value * 100), "%") : "".concat(Math.round(value), "px")), rightChild && rightChild), opacityPickerVisible && /*#__PURE__*/React.createElement("div", {
3078
3158
  style: {
3079
3159
  position: 'absolute',
3080
3160
  bottom: -50,
@@ -3682,6 +3762,11 @@ var propTypes$m = {
3682
3762
  onChangeImageStrokeWidth: PropTypes.func,
3683
3763
  onChangeImageStrokeColor: PropTypes.func,
3684
3764
  onChangeImageOpacity: PropTypes.func,
3765
+ imageTintColor: PropTypes.string,
3766
+ imageTintStrength: PropTypes.number,
3767
+ onChangeImageTintColor: PropTypes.func,
3768
+ onChangeImageTintStrength: PropTypes.func,
3769
+ onClearImageTint: PropTypes.func,
3685
3770
  selectedElement: PropTypes.object,
3686
3771
  languageLocale: PropTypes.string
3687
3772
  };
@@ -3691,13 +3776,18 @@ styled.p(_templateObject$h || (_templateObject$h = _taggedTemplateLiteral(["\n
3691
3776
  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"])));
3692
3777
 
3693
3778
  var ImageToolBar = function ImageToolBar(_ref) {
3694
- var _TEXT_DICTIONARY$lang;
3779
+ 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;
3695
3780
  var imageStrokeWidth = _ref.imageStrokeWidth,
3696
3781
  imageStrokeColor = _ref.imageStrokeColor,
3697
3782
  imageOpacity = _ref.imageOpacity,
3698
3783
  onChangeImageStrokeWidth = _ref.onChangeImageStrokeWidth,
3699
3784
  onChangeImageStrokeColor = _ref.onChangeImageStrokeColor,
3700
3785
  onChangeImageOpacity = _ref.onChangeImageOpacity,
3786
+ imageTintColor = _ref.imageTintColor,
3787
+ imageTintStrength = _ref.imageTintStrength,
3788
+ onChangeImageTintColor = _ref.onChangeImageTintColor,
3789
+ onChangeImageTintStrength = _ref.onChangeImageTintStrength,
3790
+ onClearImageTint = _ref.onClearImageTint,
3701
3791
  selectedElement = _ref.selectedElement,
3702
3792
  languageLocale = _ref.languageLocale;
3703
3793
  return /*#__PURE__*/React.createElement(RowContainer$2, null, /*#__PURE__*/React.createElement(StrokePicker, {
@@ -3711,7 +3801,35 @@ var ImageToolBar = function ImageToolBar(_ref) {
3711
3801
  value: isElementOfSameType(selectedElement, elementTypes.image) ? selectedElement === null || selectedElement === void 0 ? void 0 : selectedElement.opacity : imageOpacity,
3712
3802
  onChangeOpacity: onChangeImageOpacity,
3713
3803
  languageLocale: languageLocale
3714
- }));
3804
+ }), /*#__PURE__*/React.createElement(ToolBarButtonWrapper, {
3805
+ gap: 8,
3806
+ 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,
3807
+ tooltipPosition: 'bottom'
3808
+ }, /*#__PURE__*/React.createElement(StyledText, {
3809
+ fontFamily: theme.fonts.secondary
3810
+ }, 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, {
3811
+ backgroundColor: isElementOfSameType(selectedElement, elementTypes.image) ? (selectedElement === null || selectedElement === void 0 ? void 0 : selectedElement.tintColor) || imageTintColor : imageTintColor,
3812
+ onChange: onChangeImageTintColor
3813
+ })), /*#__PURE__*/React.createElement(OpacityPicker, {
3814
+ 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,
3815
+ tooltipPosition: 'bottom',
3816
+ 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,
3817
+ min: 0,
3818
+ max: 1,
3819
+ step: 0.05,
3820
+ onChangeOpacity: onChangeImageTintStrength,
3821
+ leftChild: /*#__PURE__*/React.createElement(StyledText, {
3822
+ fontFamily: theme.fonts.secondary
3823
+ }, 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)
3824
+ }), /*#__PURE__*/React.createElement(ToolBarButtonWrapper, {
3825
+ gap: 8,
3826
+ 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,
3827
+ tooltipPosition: 'bottom',
3828
+ onClick: onClearImageTint,
3829
+ 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
3830
+ }, /*#__PURE__*/React.createElement(StyledText, {
3831
+ fontFamily: theme.fonts.secondary
3832
+ }, 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)));
3715
3833
  };
3716
3834
  ImageToolBar.propTypes = propTypes$m;
3717
3835
 
@@ -3843,6 +3961,11 @@ var TopToolBar = function TopToolBar(_ref) {
3843
3961
  onChangeImageStrokeWidth = _ref.onChangeImageStrokeWidth,
3844
3962
  onChangeImageStrokeColor = _ref.onChangeImageStrokeColor,
3845
3963
  onChangeImageOpacity = _ref.onChangeImageOpacity,
3964
+ imageTintColor = _ref.imageTintColor,
3965
+ imageTintStrength = _ref.imageTintStrength,
3966
+ onChangeImageTintColor = _ref.onChangeImageTintColor,
3967
+ onChangeImageTintStrength = _ref.onChangeImageTintStrength,
3968
+ onClearImageTint = _ref.onClearImageTint,
3846
3969
  qrStrokeWidth = _ref.qrStrokeWidth,
3847
3970
  qrStrokeColor = _ref.qrStrokeColor,
3848
3971
  qrOpacity = _ref.qrOpacity,
@@ -3907,6 +4030,11 @@ var TopToolBar = function TopToolBar(_ref) {
3907
4030
  onChangeImageStrokeWidth: onChangeImageStrokeWidth,
3908
4031
  onChangeImageStrokeColor: onChangeImageStrokeColor,
3909
4032
  onChangeImageOpacity: onChangeImageOpacity,
4033
+ imageTintColor: imageTintColor,
4034
+ imageTintStrength: imageTintStrength,
4035
+ onChangeImageTintColor: onChangeImageTintColor,
4036
+ onChangeImageTintStrength: onChangeImageTintStrength,
4037
+ onClearImageTint: onClearImageTint,
3910
4038
  selectedElement: selectedElement,
3911
4039
  languageLocale: languageLocale
3912
4040
  }) : selectedTab === (sideBarpillsList === null || sideBarpillsList === void 0 ? void 0 : sideBarpillsList.shape) ? /*#__PURE__*/React.createElement(ShapeToolBar, {
@@ -4253,6 +4381,7 @@ var propTypes$e = {
4253
4381
  };
4254
4382
 
4255
4383
  var CanvasImage = function CanvasImage(_ref) {
4384
+ var _element$tintStrength;
4256
4385
  var id = _ref.id,
4257
4386
  element = _ref.element,
4258
4387
  _onClick = _ref.onClick,
@@ -4268,6 +4397,30 @@ var CanvasImage = function CanvasImage(_ref) {
4268
4397
  _useState4 = _slicedToArray(_useState3, 2),
4269
4398
  imgEl = _useState4[0],
4270
4399
  setImgEl = _useState4[1];
4400
+ var imageNodeRef = useRef(null);
4401
+ var tintStrength = Number((_element$tintStrength = element === null || element === void 0 ? void 0 : element.tintStrength) !== null && _element$tintStrength !== void 0 ? _element$tintStrength : 0);
4402
+ var hasTint = tintStrength > 0;
4403
+ var _useMemo = useMemo(function () {
4404
+ var hex = typeof (element === null || element === void 0 ? void 0 : element.tintColor) === 'string' ? element.tintColor.trim() : '#000000';
4405
+ var safeHex = /^#([0-9a-f]{3}|[0-9a-f]{6})$/i.test(hex) ? hex : '#000000';
4406
+ var normalized = safeHex.length === 4 ? "#".concat(safeHex[1]).concat(safeHex[1]).concat(safeHex[2]).concat(safeHex[2]).concat(safeHex[3]).concat(safeHex[3]) : safeHex;
4407
+ var r = parseInt(normalized.slice(1, 3), 16);
4408
+ var g = parseInt(normalized.slice(3, 5), 16);
4409
+ var b = parseInt(normalized.slice(5, 7), 16);
4410
+ var lerp = function lerp(start, end, t) {
4411
+ return start + (end - start) * Math.min(Math.max(t, 0), 1);
4412
+ };
4413
+
4414
+ // At 0: keep original grayscale; at 1: fully tint to the picked color.
4415
+ return {
4416
+ red: Math.round(lerp(255, r, tintStrength)),
4417
+ green: Math.round(lerp(255, g, tintStrength)),
4418
+ blue: Math.round(lerp(255, b, tintStrength))
4419
+ };
4420
+ }, [element === null || element === void 0 ? void 0 : element.tintColor, tintStrength]),
4421
+ red = _useMemo.red,
4422
+ green = _useMemo.green,
4423
+ blue = _useMemo.blue;
4271
4424
  useEffect(function () {
4272
4425
  var cancelled = false;
4273
4426
  var objectUrl;
@@ -4278,7 +4431,7 @@ var CanvasImage = function CanvasImage(_ref) {
4278
4431
  _load = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {
4279
4432
  var res, blob, img, _t;
4280
4433
  return _regenerator().w(function (_context) {
4281
- while (1) switch (_context.n) {
4434
+ while (1) switch (_context.p = _context.n) {
4282
4435
  case 0:
4283
4436
  _context.p = 0;
4284
4437
  setLoading(true);
@@ -4335,13 +4488,26 @@ var CanvasImage = function CanvasImage(_ref) {
4335
4488
  if (objectUrl) URL.revokeObjectURL(objectUrl);
4336
4489
  };
4337
4490
  }, [element === null || element === void 0 ? void 0 : element.src]);
4491
+ useEffect(function () {
4492
+ if (!(imageNodeRef !== null && imageNodeRef !== void 0 && imageNodeRef.current)) return;
4493
+ if (hasTint) {
4494
+ imageNodeRef.current.cache();
4495
+ } else {
4496
+ imageNodeRef.current.clearCache();
4497
+ }
4498
+ }, [hasTint, red, green, blue]);
4338
4499
  if (!loaded || !imgEl) return null;
4339
4500
  return /*#__PURE__*/React.createElement(Image$1, _extends({
4501
+ ref: imageNodeRef,
4340
4502
  id: id,
4341
4503
  image: imgEl
4342
4504
  }, element, {
4343
4505
  width: element === null || element === void 0 ? void 0 : element.width,
4344
4506
  height: element === null || element === void 0 ? void 0 : element.height,
4507
+ filters: hasTint ? [Konva.Filters.Grayscale, Konva.Filters.RGB] : undefined,
4508
+ red: hasTint ? red : undefined,
4509
+ green: hasTint ? green : undefined,
4510
+ blue: hasTint ? blue : undefined,
4345
4511
  onClick: function onClick() {
4346
4512
  return _onClick && _onClick();
4347
4513
  },
@@ -4452,7 +4618,7 @@ var QrElement = function QrElement(_ref) {
4452
4618
  _loadLogo = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2() {
4453
4619
  var res, blob, img, _t;
4454
4620
  return _regenerator().w(function (_context2) {
4455
- while (1) switch (_context2.n) {
4621
+ while (1) switch (_context2.p = _context2.n) {
4456
4622
  case 0:
4457
4623
  if (element !== null && element !== void 0 && element.qrLogo) {
4458
4624
  _context2.n = 1;
@@ -5162,6 +5328,11 @@ var Editor = function Editor(_ref) {
5162
5328
  onChangeImageStrokeWidth = _ref.onChangeImageStrokeWidth,
5163
5329
  onChangeImageStrokeColor = _ref.onChangeImageStrokeColor,
5164
5330
  onChangeImageOpacity = _ref.onChangeImageOpacity,
5331
+ imageTintColor = _ref.imageTintColor,
5332
+ imageTintStrength = _ref.imageTintStrength,
5333
+ onChangeImageTintColor = _ref.onChangeImageTintColor,
5334
+ onChangeImageTintStrength = _ref.onChangeImageTintStrength,
5335
+ onClearImageTint = _ref.onClearImageTint,
5165
5336
  qrStrokeWidth = _ref.qrStrokeWidth,
5166
5337
  qrStrokeColor = _ref.qrStrokeColor,
5167
5338
  qrOpacity = _ref.qrOpacity,
@@ -5497,6 +5668,11 @@ var Editor = function Editor(_ref) {
5497
5668
  onChangeImageStrokeWidth: onChangeImageStrokeWidth,
5498
5669
  onChangeImageStrokeColor: onChangeImageStrokeColor,
5499
5670
  onChangeImageOpacity: onChangeImageOpacity,
5671
+ imageTintColor: imageTintColor,
5672
+ imageTintStrength: imageTintStrength,
5673
+ onChangeImageTintColor: onChangeImageTintColor,
5674
+ onChangeImageTintStrength: onChangeImageTintStrength,
5675
+ onClearImageTint: onClearImageTint,
5500
5676
  qrStrokeWidth: qrStrokeWidth,
5501
5677
  qrStrokeColor: qrStrokeColor,
5502
5678
  qrOpacity: qrOpacity,
@@ -6423,7 +6599,7 @@ function memoize(fn) {
6423
6599
  }
6424
6600
 
6425
6601
  // eslint-disable-next-line no-undef
6426
- 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
6602
+ 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
6427
6603
 
6428
6604
  var isPropValid = /* #__PURE__ */memoize(function (prop) {
6429
6605
  return reactPropsRegex.test(prop) || prop.charCodeAt(0) === 111
@@ -6591,38 +6767,46 @@ var Studio = /*#__PURE__*/forwardRef(function (_ref, ref) {
6591
6767
  _useState38 = _slicedToArray(_useState37, 2),
6592
6768
  imageOpacity = _useState38[0],
6593
6769
  setImageOpacity = _useState38[1];
6594
- var _useState39 = useState(2),
6770
+ var _useState39 = useState(theme.color.black),
6595
6771
  _useState40 = _slicedToArray(_useState39, 2),
6596
- qrStrokeWidth = _useState40[0],
6597
- setQrStrokeWidth = _useState40[1];
6598
- var _useState41 = useState(theme.color.black),
6772
+ imageTintColor = _useState40[0],
6773
+ setImageTintColor = _useState40[1];
6774
+ var _useState41 = useState(0.6),
6599
6775
  _useState42 = _slicedToArray(_useState41, 2),
6600
- qrStrokeColor = _useState42[0],
6601
- setQrStrokeColor = _useState42[1];
6602
- var _useState43 = useState(1),
6776
+ imageTintStrength = _useState42[0],
6777
+ setImageTintStrength = _useState42[1];
6778
+ var _useState43 = useState(2),
6603
6779
  _useState44 = _slicedToArray(_useState43, 2),
6604
- qrOpacity = _useState44[0],
6605
- setQrOpacity = _useState44[1];
6606
- var _useState45 = useState(null),
6780
+ qrStrokeWidth = _useState44[0],
6781
+ setQrStrokeWidth = _useState44[1];
6782
+ var _useState45 = useState(theme.color.black),
6607
6783
  _useState46 = _slicedToArray(_useState45, 2),
6608
- selectedElement = _useState46[0],
6609
- setSelectedElement = _useState46[1];
6610
- var _useState47 = useState(customImages || []),
6784
+ qrStrokeColor = _useState46[0],
6785
+ setQrStrokeColor = _useState46[1];
6786
+ var _useState47 = useState(1),
6611
6787
  _useState48 = _slicedToArray(_useState47, 2),
6612
- customImagesList = _useState48[0],
6613
- setCustomImagesList = _useState48[1];
6614
- var _useState49 = useState(defaultQrLogo),
6788
+ qrOpacity = _useState48[0],
6789
+ setQrOpacity = _useState48[1];
6790
+ var _useState49 = useState(null),
6615
6791
  _useState50 = _slicedToArray(_useState49, 2),
6616
- qrLogo = _useState50[0],
6617
- setQrLogo = _useState50[1];
6618
- var _useState51 = useState(basicTextProps),
6792
+ selectedElement = _useState50[0],
6793
+ setSelectedElement = _useState50[1];
6794
+ var _useState51 = useState(customImages || []),
6619
6795
  _useState52 = _slicedToArray(_useState51, 2),
6620
- defaultTextProps = _useState52[0],
6621
- setDefaultTextProps = _useState52[1];
6622
- var _useState53 = useState(qrId),
6796
+ customImagesList = _useState52[0],
6797
+ setCustomImagesList = _useState52[1];
6798
+ var _useState53 = useState(defaultQrLogo),
6623
6799
  _useState54 = _slicedToArray(_useState53, 2),
6624
- currentQrId = _useState54[0],
6625
- setCurrentQrId = _useState54[1];
6800
+ qrLogo = _useState54[0],
6801
+ setQrLogo = _useState54[1];
6802
+ var _useState55 = useState(basicTextProps),
6803
+ _useState56 = _slicedToArray(_useState55, 2),
6804
+ defaultTextProps = _useState56[0],
6805
+ setDefaultTextProps = _useState56[1];
6806
+ var _useState57 = useState(qrId),
6807
+ _useState58 = _slicedToArray(_useState57, 2),
6808
+ currentQrId = _useState58[0],
6809
+ setCurrentQrId = _useState58[1];
6626
6810
  var overallLoading = loadingFonts || loadingImages || loadingUploadImage || loading;
6627
6811
  var getPageDims = useCallback(function () {
6628
6812
  var _base$find;
@@ -7363,6 +7547,26 @@ var Studio = /*#__PURE__*/forwardRef(function (_ref, ref) {
7363
7547
  setImageOpacity(e);
7364
7548
  }
7365
7549
  };
7550
+ var onChangeImageTintColor = function onChangeImageTintColor(color) {
7551
+ if (isElementOfSameType(selectedElement, elementTypes === null || elementTypes === void 0 ? void 0 : elementTypes.image)) {
7552
+ changeSelectedElementProperty('tintColor', color);
7553
+ }
7554
+ setImageTintColor(color);
7555
+ };
7556
+ var onChangeImageTintStrength = function onChangeImageTintStrength(value) {
7557
+ var nextStrength = Math.max(0, Math.min(1, value));
7558
+ if (isElementOfSameType(selectedElement, elementTypes === null || elementTypes === void 0 ? void 0 : elementTypes.image)) {
7559
+ changeSelectedElementProperty('tintStrength', nextStrength);
7560
+ } else {
7561
+ setImageTintStrength(nextStrength);
7562
+ }
7563
+ };
7564
+ var onClearImageTint = function onClearImageTint() {
7565
+ if (isElementOfSameType(selectedElement, elementTypes === null || elementTypes === void 0 ? void 0 : elementTypes.image)) {
7566
+ changeSelectedElementProperty('tintStrength', 0);
7567
+ }
7568
+ setImageTintStrength(0);
7569
+ };
7366
7570
  var addCustomImageToList = function addCustomImageToList(img) {
7367
7571
  // console.error({img});
7368
7572
  setCustomImagesList([].concat(_toConsumableArray(customImagesList), [img]));
@@ -7375,6 +7579,8 @@ var Studio = /*#__PURE__*/forwardRef(function (_ref, ref) {
7375
7579
  stroke: imageStrokeColor,
7376
7580
  strokeWidth: imageStrokeWidth,
7377
7581
  opacity: imageOpacity,
7582
+ tintColor: imageTintColor,
7583
+ tintStrength: imageTintStrength,
7378
7584
  type: elementTypes.image,
7379
7585
  draggable: true,
7380
7586
  // width: 100,
@@ -7499,7 +7705,7 @@ var Studio = /*#__PURE__*/forwardRef(function (_ref, ref) {
7499
7705
  var _ref6 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2() {
7500
7706
  var file, result, imageUrl, reader, _t;
7501
7707
  return _regenerator().w(function (_context2) {
7502
- while (1) switch (_context2.n) {
7708
+ while (1) switch (_context2.p = _context2.n) {
7503
7709
  case 0:
7504
7710
  _context2.n = 1;
7505
7711
  return pickImage();
@@ -7692,9 +7898,14 @@ var Studio = /*#__PURE__*/forwardRef(function (_ref, ref) {
7692
7898
  imageStrokeWidth: imageStrokeWidth,
7693
7899
  imageStrokeColor: imageStrokeColor,
7694
7900
  imageOpacity: imageOpacity,
7901
+ imageTintColor: imageTintColor,
7902
+ imageTintStrength: imageTintStrength,
7695
7903
  onChangeImageStrokeWidth: onChangeImageStrokeWidth,
7696
7904
  onChangeImageStrokeColor: onChangeImageStrokeColor,
7697
7905
  onChangeImageOpacity: onChangeImageOpacity,
7906
+ onChangeImageTintColor: onChangeImageTintColor,
7907
+ onChangeImageTintStrength: onChangeImageTintStrength,
7908
+ onClearImageTint: onClearImageTint,
7698
7909
  onChangeShapeStrokeColor: onChangeShapeStrokeColor,
7699
7910
  onChangeShapeStrokeWidth: onChangeShapeStrokeWidth,
7700
7911
  onChangeShapeFill: onChangeShapeFill,