@arbisoft/react-design-tool 1.0.36 → 1.0.41

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
@@ -40,13 +40,13 @@ yarn add @arbisoft/react-design-tool
40
40
  #### ⚠️ Important: Installation Guide for React 18 and Below
41
41
 
42
42
  ```bash
43
- npm install @arbisoft/react-design-tool@1.0.35
43
+ npm install @arbisoft/react-design-tool@1.0.41
44
44
  ```
45
45
 
46
46
  OR
47
47
 
48
48
  ```bash
49
- yarn add @arbisoft/react-design-tool@1.0.35
49
+ yarn add @arbisoft/react-design-tool@1.0.41
50
50
 
51
51
  ```
52
52
 
package/dist/cjs/index.js CHANGED
@@ -3756,50 +3756,102 @@ var CanvasImage = function CanvasImage(_ref) {
3756
3756
  _onClick = _ref.onClick,
3757
3757
  _onDragEnd = _ref.onDragEnd,
3758
3758
  _onTransformEnd = _ref.onTransformEnd,
3759
- onDragMove = _ref.onDragMove;
3759
+ onDragMove = _ref.onDragMove,
3760
+ setLoading = _ref.setLoading;
3760
3761
  var _useState = React.useState(false),
3761
3762
  _useState2 = _slicedToArray(_useState, 2),
3762
3763
  loaded = _useState2[0],
3763
3764
  setLoaded = _useState2[1];
3764
3765
  var _useState3 = React.useState(null),
3765
3766
  _useState4 = _slicedToArray(_useState3, 2),
3766
- image = _useState4[0],
3767
- setImage = _useState4[1];
3767
+ imgEl = _useState4[0],
3768
+ setImgEl = _useState4[1];
3768
3769
  React.useEffect(function () {
3769
- // const reader = new FileReader();
3770
- // reader.onload = () => {
3771
- var img = new window.Image();
3772
- img.crossOrigin = 'anonymous';
3773
- img.src = element === null || element === void 0 ? void 0 : element.src;
3774
- img.onload = function () {
3775
- setImage(img);
3776
- setLoaded(true);
3770
+ var cancelled = false;
3771
+ var objectUrl;
3772
+ function load() {
3773
+ return _load.apply(this, arguments);
3774
+ }
3775
+ function _load() {
3776
+ _load = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {
3777
+ var res, blob, img, _t;
3778
+ return _regenerator().w(function (_context) {
3779
+ while (1) switch (_context.n) {
3780
+ case 0:
3781
+ _context.p = 0;
3782
+ setLoading(true);
3783
+ // Force a network fetch with CORS, ignoring any stale cached copy
3784
+ _context.n = 1;
3785
+ return fetch(element === null || element === void 0 ? void 0 : element.src, {
3786
+ mode: 'cors',
3787
+ cache: 'reload'
3788
+ });
3789
+ case 1:
3790
+ res = _context.v;
3791
+ if (res.ok) {
3792
+ _context.n = 2;
3793
+ break;
3794
+ }
3795
+ throw new Error("HTTP ".concat(res.status));
3796
+ case 2:
3797
+ _context.n = 3;
3798
+ return res.blob();
3799
+ case 3:
3800
+ blob = _context.v;
3801
+ objectUrl = URL.createObjectURL(blob);
3802
+ img = new window.Image(); // No need to set crossOrigin for blob URLs (they're same-origin to your page)
3803
+ img.onload = function () {
3804
+ if (!cancelled) {
3805
+ setImgEl(img);
3806
+ setLoaded(true);
3807
+ }
3808
+ URL.revokeObjectURL(objectUrl);
3809
+ };
3810
+ img.src = objectUrl;
3811
+ _context.n = 5;
3812
+ break;
3813
+ case 4:
3814
+ _context.p = 4;
3815
+ _t = _context.v;
3816
+ console.error('Failed to load image for canvas:', _t);
3817
+ case 5:
3818
+ _context.p = 5;
3819
+ setLoading(false);
3820
+ return _context.f(5);
3821
+ case 6:
3822
+ return _context.a(2);
3823
+ }
3824
+ }, _callee, null, [[0, 4, 5, 6]]);
3825
+ }));
3826
+ return _load.apply(this, arguments);
3827
+ }
3828
+ setLoaded(false);
3829
+ setImgEl(null);
3830
+ if (element !== null && element !== void 0 && element.src) load();
3831
+ return function () {
3832
+ cancelled = true;
3833
+ if (objectUrl) URL.revokeObjectURL(objectUrl);
3777
3834
  };
3778
- // };
3779
- // reader.readAsDataURL(file);
3780
- }, [element]);
3781
- if (loaded) {
3782
- return /*#__PURE__*/React.createElement(reactKonva.Image, _extends({
3783
- id: id,
3784
- image: image
3785
- }, element, {
3786
- width: element === null || element === void 0 ? void 0 : element.width,
3787
- height: element === null || element === void 0 ? void 0 : element.height,
3788
- onClick: function onClick() {
3789
- return _onClick && _onClick();
3790
- },
3791
- onDragEnd: function onDragEnd(e) {
3792
- return _onDragEnd && _onDragEnd(e);
3793
- },
3794
- onDragMove: onDragMove,
3795
- onTransformEnd: function onTransformEnd(e) {
3796
- _onTransformEnd && _onTransformEnd(e);
3797
- },
3798
- strokeScaleEnabled: false
3799
- }));
3800
- } else {
3801
- return null;
3802
- }
3835
+ }, [element === null || element === void 0 ? void 0 : element.src]);
3836
+ if (!loaded || !imgEl) return null;
3837
+ return /*#__PURE__*/React.createElement(reactKonva.Image, _extends({
3838
+ id: id,
3839
+ image: imgEl
3840
+ }, element, {
3841
+ width: element === null || element === void 0 ? void 0 : element.width,
3842
+ height: element === null || element === void 0 ? void 0 : element.height,
3843
+ onClick: function onClick() {
3844
+ return _onClick && _onClick();
3845
+ },
3846
+ onDragEnd: function onDragEnd(e) {
3847
+ return _onDragEnd && _onDragEnd(e);
3848
+ },
3849
+ onDragMove: onDragMove,
3850
+ onTransformEnd: function onTransformEnd(e) {
3851
+ return _onTransformEnd && _onTransformEnd(e);
3852
+ },
3853
+ strokeScaleEnabled: false
3854
+ }));
3803
3855
  };
3804
3856
  CanvasImage.propTypes = propTypes$e;
3805
3857
 
@@ -3877,7 +3929,6 @@ var QrElement = function QrElement(_ref) {
3877
3929
  };
3878
3930
  });
3879
3931
  } catch (err) {
3880
- // eslint-disable-next-line no-console
3881
3932
  console.error('Failed to generate QR code', err);
3882
3933
  }
3883
3934
  case 1:
@@ -3889,6 +3940,75 @@ var QrElement = function QrElement(_ref) {
3889
3940
  return _ref2.apply(this, arguments);
3890
3941
  };
3891
3942
  }();
3943
+ React.useEffect(function () {
3944
+ var cancelled = false;
3945
+ var objectUrl;
3946
+ function loadLogo() {
3947
+ return _loadLogo.apply(this, arguments);
3948
+ }
3949
+ function _loadLogo() {
3950
+ _loadLogo = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2() {
3951
+ var res, blob, img, _t;
3952
+ return _regenerator().w(function (_context2) {
3953
+ while (1) switch (_context2.n) {
3954
+ case 0:
3955
+ if (element !== null && element !== void 0 && element.qrLogo) {
3956
+ _context2.n = 1;
3957
+ break;
3958
+ }
3959
+ return _context2.a(2);
3960
+ case 1:
3961
+ _context2.p = 1;
3962
+ _context2.n = 2;
3963
+ return fetch(element.qrLogo, {
3964
+ mode: 'cors',
3965
+ cache: 'reload'
3966
+ });
3967
+ case 2:
3968
+ res = _context2.v;
3969
+ if (res.ok) {
3970
+ _context2.n = 3;
3971
+ break;
3972
+ }
3973
+ throw new Error("HTTP ".concat(res.status));
3974
+ case 3:
3975
+ _context2.n = 4;
3976
+ return res.blob();
3977
+ case 4:
3978
+ blob = _context2.v;
3979
+ objectUrl = URL.createObjectURL(blob);
3980
+ img = new window.Image();
3981
+ img.onload = function () {
3982
+ if (cancelled) return;
3983
+ var scaleX = innerRectWidth / img.width;
3984
+ var scaleY = innerRectHeight / img.height;
3985
+ var scale = Math.min(scaleX, scaleY);
3986
+ setLogo({
3987
+ img: img,
3988
+ scale: scale
3989
+ });
3990
+ };
3991
+ img.src = objectUrl;
3992
+ _context2.n = 6;
3993
+ break;
3994
+ case 5:
3995
+ _context2.p = 5;
3996
+ _t = _context2.v;
3997
+ console.error('Failed to load QR logo:', _t);
3998
+ case 6:
3999
+ return _context2.a(2);
4000
+ }
4001
+ }, _callee2, null, [[1, 5]]);
4002
+ }));
4003
+ return _loadLogo.apply(this, arguments);
4004
+ }
4005
+ setLogo(null);
4006
+ loadLogo();
4007
+ return function () {
4008
+ cancelled = true;
4009
+ if (objectUrl) URL.revokeObjectURL(objectUrl);
4010
+ };
4011
+ }, [element === null || element === void 0 ? void 0 : element.qrLogo, innerRectWidth, innerRectHeight]);
3892
4012
  React.useEffect(function () {
3893
4013
  addQR();
3894
4014
  }, [element]);
@@ -4499,7 +4619,8 @@ var useKonvaSnapping = function useKonvaSnapping(params) {
4499
4619
 
4500
4620
  var Editor = function Editor(_ref) {
4501
4621
  var _TEXT_DICTIONARY$lang;
4502
- var selectedTab = _ref.selectedTab,
4622
+ var setLoading = _ref.setLoading,
4623
+ selectedTab = _ref.selectedTab,
4503
4624
  languageLocale = _ref.languageLocale,
4504
4625
  _ref$title = _ref.title,
4505
4626
  title = _ref$title === void 0 ? TEXT_DICTIONARY === null || TEXT_DICTIONARY === void 0 || (_TEXT_DICTIONARY$lang = TEXT_DICTIONARY[languageLocale]) === null || _TEXT_DICTIONARY$lang === void 0 ? void 0 : _TEXT_DICTIONARY$lang.TITLE : _ref$title,
@@ -4804,7 +4925,8 @@ var Editor = function Editor(_ref) {
4804
4925
  onDragMove: handleDragging,
4805
4926
  onTransformEnd: function onTransformEnd(e) {
4806
4927
  handleTransform(el.id, e.target.attrs);
4807
- }
4928
+ },
4929
+ setLoading: setLoading
4808
4930
  });
4809
4931
  case elementTypes.qr:
4810
4932
  return /*#__PURE__*/React.createElement(QrElement, {
@@ -6736,9 +6858,8 @@ var Studio = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
6736
6858
  defaultText: defaultText,
6737
6859
  languageLocale: languageLocale,
6738
6860
  onTemplateSelect: onTemplateSelect
6739
- }), loadingFonts ? null : /*#__PURE__*/React.createElement(Editor
6740
- // canvasSize={canvasSize}
6741
- , {
6861
+ }), loadingFonts ? null : /*#__PURE__*/React.createElement(Editor, {
6862
+ setLoading: setLoading,
6742
6863
  cuttingGuideStroke: (elements === null || elements === void 0 || (_elements$find5 = elements.find(function (e) {
6743
6864
  return (e === null || e === void 0 ? void 0 : e.type) === (elementTypes === null || elementTypes === void 0 ? void 0 : elementTypes.pageSize);
6744
6865
  })) === null || _elements$find5 === void 0 ? void 0 : _elements$find5.cuttingGuideStroke) || 0,