@arbisoft/react-design-tool 1.0.36 → 1.0.42

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