@reown/appkit-ui-react-native 0.0.0-develop-20251030154825 → 0.0.0-develop-20251114173726

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.
Files changed (28) hide show
  1. package/lib/commonjs/assets/svg/WalletConnect.js +4 -5
  2. package/lib/commonjs/assets/svg/WalletConnect.js.map +1 -1
  3. package/lib/commonjs/composites/wui-qr-code/index.js +51 -19
  4. package/lib/commonjs/composites/wui-qr-code/index.js.map +1 -1
  5. package/lib/commonjs/composites/wui-qr-code/styles.js +0 -3
  6. package/lib/commonjs/composites/wui-qr-code/styles.js.map +1 -1
  7. package/lib/commonjs/utils/QRCodeUtil.js +217 -116
  8. package/lib/commonjs/utils/QRCodeUtil.js.map +1 -1
  9. package/lib/module/assets/svg/WalletConnect.js +4 -5
  10. package/lib/module/assets/svg/WalletConnect.js.map +1 -1
  11. package/lib/module/composites/wui-qr-code/index.js +50 -19
  12. package/lib/module/composites/wui-qr-code/index.js.map +1 -1
  13. package/lib/module/composites/wui-qr-code/styles.js +0 -3
  14. package/lib/module/composites/wui-qr-code/styles.js.map +1 -1
  15. package/lib/module/utils/QRCodeUtil.js +216 -116
  16. package/lib/module/utils/QRCodeUtil.js.map +1 -1
  17. package/lib/typescript/assets/svg/WalletConnect.d.ts.map +1 -1
  18. package/lib/typescript/composites/wui-qr-code/index.d.ts +3 -1
  19. package/lib/typescript/composites/wui-qr-code/index.d.ts.map +1 -1
  20. package/lib/typescript/composites/wui-qr-code/styles.d.ts +0 -3
  21. package/lib/typescript/composites/wui-qr-code/styles.d.ts.map +1 -1
  22. package/lib/typescript/utils/QRCodeUtil.d.ts +22 -2
  23. package/lib/typescript/utils/QRCodeUtil.d.ts.map +1 -1
  24. package/package.json +2 -2
  25. package/src/assets/svg/WalletConnect.tsx +4 -5
  26. package/src/composites/wui-qr-code/index.tsx +75 -16
  27. package/src/composites/wui-qr-code/styles.ts +0 -3
  28. package/src/utils/QRCodeUtil.tsx +265 -142
@@ -9,15 +9,14 @@ var _jsxRuntime = require("react/jsx-runtime");
9
9
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
10
10
  const SvgWalletConnect = props => /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNativeSvg.default, {
11
11
  fill: "none",
12
- viewBox: "0 0 96 67",
12
+ viewBox: "0 0 37 23",
13
13
  ...props,
14
14
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeSvg.Path, {
15
15
  fill: props.fill ?? '#fff',
16
- d: "M25.32 18.8a32.56 32.56 0 0 1 45.36 0l1.5 1.47c.63.62.63 1.61 0 2.22l-5.15 5.05c-.31.3-.82.3-1.14 0l-2.07-2.03a22.71 22.71 0 0 0-31.64 0l-2.22 2.18c-.31.3-.82.3-1.14 0l-5.15-5.05a1.55 1.55 0 0 1 0-2.22l1.65-1.62Zm56.02 10.44 4.59 4.5c.63.6.63 1.6 0 2.21l-20.7 20.26c-.62.61-1.63.61-2.26 0L48.28 41.83a.4.4 0 0 0-.56 0L33.03 56.21c-.63.61-1.64.61-2.27 0L10.07 35.95a1.55 1.55 0 0 1 0-2.22l4.59-4.5a1.63 1.63 0 0 1 2.27 0L31.6 43.63a.4.4 0 0 0 .57 0l14.69-14.38a1.63 1.63 0 0 1 2.26 0l14.69 14.38a.4.4 0 0 0 .57 0l14.68-14.38a1.63 1.63 0 0 1 2.27 0Z"
16
+ d: "M26.6428 8.62163L29.8418 5.42265C22.6115 -1.80755 13.6277 -1.80755 6.39746 5.42265L9.59644 8.62163C15.0953 3.12281 21.1477 3.12281 26.6465 8.62163H26.6428Z"
17
17
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeSvg.Path, {
18
- stroke: "#000",
19
- strokeOpacity: ".1",
20
- d: "M25.67 19.15a32.06 32.06 0 0 1 44.66 0l1.5 1.48c.43.42.43 1.09 0 1.5l-5.15 5.05a.31.31 0 0 1-.44 0l-2.07-2.03a23.21 23.21 0 0 0-32.34 0l-2.22 2.18a.31.31 0 0 1-.44 0l-5.15-5.05a1.05 1.05 0 0 1 0-1.5l1.65-1.63ZM81 29.6l4.6 4.5c.42.41.42 1.09 0 1.5l-20.7 20.26c-.43.43-1.14.43-1.57 0L48.63 41.47a.9.9 0 0 0-1.26 0L32.68 55.85c-.43.43-1.14.43-1.57 0L10.42 35.6a1.05 1.05 0 0 1 0-1.5l4.59-4.5a1.13 1.13 0 0 1 1.57 0l14.68 14.38a.9.9 0 0 0 1.27 0l-.35-.35.35.35L47.22 29.6a1.13 1.13 0 0 1 1.56 0l14.7 14.38a.9.9 0 0 0 1.26 0L79.42 29.6a1.13 1.13 0 0 1 1.57 0Z"
18
+ fill: props.fill ?? '#fff',
19
+ d: "M25.5769 16.0749L18.1164 8.61435L10.6558 16.0749L3.19526 8.61435L0 11.8096L10.6558 22.4691L18.1164 15.0086L25.5769 22.4691L36.2328 11.8096L33.0375 8.61435L25.5769 16.0749Z"
21
20
  })]
22
21
  });
23
22
  var _default = exports.default = SvgWalletConnect;
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNativeSvg","_interopRequireWildcard","require","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","SvgWalletConnect","props","jsxs","fill","viewBox","children","jsx","Path","d","stroke","strokeOpacity","_default","exports","WalletConnectLightBrownSvg","G","clipPath","Defs","ClipPath","id"],"sourceRoot":"../../../../src","sources":["assets/svg/WalletConnect.tsx"],"mappings":";;;;;;AAAA,IAAAA,eAAA,GAAAC,uBAAA,CAAAC,OAAA;AAA+E,IAAAC,WAAA,GAAAD,OAAA;AAAA,SAAAD,wBAAAG,CAAA,EAAAC,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAL,uBAAA,YAAAA,CAAAG,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,MAAAM,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAC,OAAA,EAAAV,CAAA,iBAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAQ,CAAA,MAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAG,CAAA,CAAAK,GAAA,CAAAX,CAAA,UAAAM,CAAA,CAAAM,GAAA,CAAAZ,CAAA,GAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,EAAAQ,CAAA,gBAAAP,CAAA,IAAAD,CAAA,gBAAAC,CAAA,OAAAa,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAC,CAAA,OAAAM,CAAA,IAAAD,CAAA,GAAAU,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAC,CAAA,OAAAM,CAAA,CAAAK,GAAA,IAAAL,CAAA,CAAAM,GAAA,IAAAP,CAAA,CAAAE,CAAA,EAAAP,CAAA,EAAAM,CAAA,IAAAC,CAAA,CAAAP,CAAA,IAAAD,CAAA,CAAAC,CAAA,WAAAO,CAAA,KAAAR,CAAA,EAAAC,CAAA;AAC/E,MAAMkB,gBAAgB,GAAIC,KAAe,iBACvC,IAAArB,WAAA,CAAAsB,IAAA,EAACzB,eAAA,CAAAc,OAAG;EAACY,IAAI,EAAC,MAAM;EAACC,OAAO,EAAC,WAAW;EAAA,GAAKH,KAAK;EAAAI,QAAA,gBAC5C,IAAAzB,WAAA,CAAA0B,GAAA,EAAC7B,eAAA,CAAA8B,IAAI;IACHJ,IAAI,EAAEF,KAAK,CAACE,IAAI,IAAI,MAAO;IAC3BK,CAAC,EAAC;EAAqiB,CACxiB,CAAC,eACF,IAAA5B,WAAA,CAAA0B,GAAA,EAAC7B,eAAA,CAAA8B,IAAI;IACHE,MAAM,EAAC,MAAM;IACbC,aAAa,EAAC,IAAI;IAClBF,CAAC,EAAC;EAA4iB,CAC/iB,CAAC;AAAA,CACC,CACN;AAAC,IAAAG,QAAA,GAAAC,OAAA,CAAArB,OAAA,GACaS,gBAAgB;AAExB,MAAMa,0BAA0B,GAAIZ,KAAe,iBACxD,IAAArB,WAAA,CAAAsB,IAAA,EAACzB,eAAA,CAAAc,OAAG;EAACa,OAAO,EAAC,WAAW;EAACD,IAAI,EAAC,MAAM;EAAA,GAAKF,KAAK;EAAAI,QAAA,gBAC5C,IAAAzB,WAAA,CAAAsB,IAAA,EAACzB,eAAA,CAAAqC,CAAC;IAACC,QAAQ,EAAC,wBAAwB;IAAAV,QAAA,gBAClC,IAAAzB,WAAA,CAAA0B,GAAA,EAAC7B,eAAA,CAAA8B,IAAI;MACHC,CAAC,EAAC,4eAA4e;MAC9eL,IAAI,EAAC;IAAS,CACf,CAAC,eACF,IAAAvB,WAAA,CAAA0B,GAAA,EAAC7B,eAAA,CAAA8B,IAAI;MACHC,CAAC,EAAC,yhCAAyhC;MAC3hCL,IAAI,EAAC;IAAS,CACf,CAAC;EAAA,CACD,CAAC,eACJ,IAAAvB,WAAA,CAAA0B,GAAA,EAAC7B,eAAA,CAAAuC,IAAI;IAAAX,QAAA,eACH,IAAAzB,WAAA,CAAA0B,GAAA,EAAC7B,eAAA,CAAAwC,QAAQ;MAACC,EAAE,EAAC,kBAAkB;MAAAb,QAAA,eAC7B,IAAAzB,WAAA,CAAA0B,GAAA,EAAC7B,eAAA,CAAA8B,IAAI;QACHC,CAAC,EAAC,6GAA6G;QAC/GL,IAAI,EAAC;MAAO,CACb;IAAC,CACM;EAAC,CACP,CAAC;AAAA,CACJ,CACN;AAACS,OAAA,CAAAC,0BAAA,GAAAA,0BAAA","ignoreList":[]}
1
+ {"version":3,"names":["_reactNativeSvg","_interopRequireWildcard","require","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","SvgWalletConnect","props","jsxs","fill","viewBox","children","jsx","Path","d","_default","exports","WalletConnectLightBrownSvg","G","clipPath","Defs","ClipPath","id"],"sourceRoot":"../../../../src","sources":["assets/svg/WalletConnect.tsx"],"mappings":"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","ignoreList":[]}
@@ -7,7 +7,7 @@ exports.QrCode = void 0;
7
7
  exports.QrCode_ = QrCode_;
8
8
  var _react = require("react");
9
9
  var _reactNative = require("react-native");
10
- var _reactNativeSvg = _interopRequireDefault(require("react-native-svg"));
10
+ var _reactNativeSvg = _interopRequireWildcard(require("react-native-svg"));
11
11
  var _wuiIcon = require("../../components/wui-icon");
12
12
  var _wuiImage = require("../../components/wui-image");
13
13
  var _wuiShimmer = require("../../components/wui-shimmer");
@@ -16,6 +16,7 @@ var _ThemeUtil = require("../../utils/ThemeUtil");
16
16
  var _styles = _interopRequireDefault(require("./styles"));
17
17
  var _jsxRuntime = require("react/jsx-runtime");
18
18
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
19
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
19
20
  function QrCode_({
20
21
  size,
21
22
  uri,
@@ -23,13 +24,17 @@ function QrCode_({
23
24
  testID,
24
25
  arenaClear,
25
26
  icon,
26
- style
27
+ style,
28
+ logoSize,
29
+ logoBorderRadius
27
30
  }) {
28
31
  const Theme = _ThemeUtil.LightTheme;
29
32
  const containerPadding = _ThemeUtil.Spacing.l;
30
33
  const qrSize = size - containerPadding * 2;
31
- const logoSize = arenaClear ? 0 : qrSize / 4;
32
- const dots = (0, _react.useMemo)(() => uri ? _QRCodeUtil.QRCodeUtil.generate(uri, qrSize, logoSize) : [], [uri, qrSize, logoSize]);
34
+ const _logoSize = arenaClear ? 0 : logoSize ?? qrSize / 4;
35
+ const dotColor = Theme['inverse-000'];
36
+ const edgeColor = Theme['inverse-100'];
37
+ const qrData = (0, _react.useMemo)(() => uri ? _QRCodeUtil.QRCodeUtil.generate(uri, qrSize, _logoSize, logoBorderRadius) : null, [uri, qrSize, _logoSize, logoBorderRadius]);
33
38
  const logoTemplate = () => {
34
39
  if (arenaClear) {
35
40
  return null;
@@ -37,40 +42,67 @@ function QrCode_({
37
42
  if (imageSrc) {
38
43
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_wuiImage.Image, {
39
44
  source: imageSrc,
40
- style: [_styles.default.icon, {
41
- height: qrSize / 4,
42
- width: qrSize / 4,
43
- borderRadius: qrSize / 16
45
+ style: [{
46
+ position: 'absolute',
47
+ height: _logoSize,
48
+ width: _logoSize,
49
+ borderRadius: logoBorderRadius
44
50
  }]
45
51
  });
46
52
  }
47
53
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_wuiIcon.Icon, {
48
54
  name: icon ?? 'walletConnect',
49
55
  color: "accent-100",
50
- height: qrSize / 3.5,
51
- width: qrSize / 3.5,
52
- style: _styles.default.icon
56
+ height: _logoSize,
57
+ width: _logoSize,
58
+ style: {
59
+ position: 'absolute'
60
+ }
53
61
  });
54
62
  };
55
- return uri ? /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
63
+ if (!uri || !qrData) {
64
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_wuiShimmer.Shimmer, {
65
+ width: size,
66
+ height: size,
67
+ borderRadius: _ThemeUtil.BorderRadius.l
68
+ });
69
+ }
70
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
56
71
  style: [_styles.default.container, {
57
72
  width: size,
58
73
  backgroundColor: Theme['inverse-100'],
59
74
  padding: containerPadding
60
75
  }, style],
61
76
  testID: testID,
62
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeSvg.default, {
77
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNativeSvg.default, {
63
78
  height: qrSize,
64
79
  width: qrSize,
65
- children: dots
80
+ children: [qrData.rects.map(rect => /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeSvg.Rect, {
81
+ fill: rect.fillType === 'dot' ? dotColor : edgeColor,
82
+ height: rect.size,
83
+ rx: rect.size * 0.32,
84
+ ry: rect.size * 0.32,
85
+ width: rect.size,
86
+ x: rect.x,
87
+ y: rect.y
88
+ }, `rect_${rect.x}_${rect.y}`)), qrData.circles.map(circle => /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeSvg.Circle, {
89
+ cx: circle.cx,
90
+ cy: circle.cy,
91
+ fill: dotColor,
92
+ r: circle.r
93
+ }, `circle_${circle.cx}_${circle.cy}`)), qrData.lines.map(line => /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeSvg.Line, {
94
+ x1: line.x1,
95
+ x2: line.x2,
96
+ y1: line.y1,
97
+ y2: line.y2,
98
+ stroke: dotColor,
99
+ strokeWidth: line.strokeWidth,
100
+ strokeLinecap: "round"
101
+ }, `line_${line.x1}_${line.y1}_${line.y2}`))]
66
102
  }), logoTemplate()]
67
- }) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_wuiShimmer.Shimmer, {
68
- width: size,
69
- height: size,
70
- borderRadius: _ThemeUtil.BorderRadius.l
71
103
  });
72
104
  }
73
105
  const QrCode = exports.QrCode = /*#__PURE__*/(0, _react.memo)(QrCode_, (prevProps, nextProps) => {
74
- return prevProps.size === nextProps.size && prevProps.uri === nextProps.uri && prevProps.style === nextProps.style;
106
+ return prevProps.size === nextProps.size && prevProps.uri === nextProps.uri && prevProps.style === nextProps.style && prevProps.logoBorderRadius === nextProps.logoBorderRadius;
75
107
  });
76
108
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_react","require","_reactNative","_reactNativeSvg","_interopRequireDefault","_wuiIcon","_wuiImage","_wuiShimmer","_QRCodeUtil","_ThemeUtil","_styles","_jsxRuntime","e","__esModule","default","QrCode_","size","uri","imageSrc","testID","arenaClear","icon","style","Theme","LightTheme","containerPadding","Spacing","l","qrSize","logoSize","dots","useMemo","QRCodeUtil","generate","logoTemplate","jsx","Image","source","styles","height","width","borderRadius","Icon","name","color","jsxs","View","container","backgroundColor","padding","children","Shimmer","BorderRadius","QrCode","exports","memo","prevProps","nextProps"],"sourceRoot":"../../../../src","sources":["composites/wui-qr-code/index.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","require","_reactNative","_reactNativeSvg","_interopRequireWildcard","_wuiIcon","_wuiImage","_wuiShimmer","_QRCodeUtil","_ThemeUtil","_styles","_interopRequireDefault","_jsxRuntime","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","QrCode_","size","uri","imageSrc","testID","arenaClear","icon","style","logoSize","logoBorderRadius","Theme","LightTheme","containerPadding","Spacing","l","qrSize","_logoSize","dotColor","edgeColor","qrData","useMemo","QRCodeUtil","generate","logoTemplate","jsx","Image","source","position","height","width","borderRadius","Icon","name","color","Shimmer","BorderRadius","jsxs","View","styles","container","backgroundColor","padding","children","rects","map","rect","Rect","fill","fillType","rx","ry","x","y","circles","circle","Circle","cx","cy","lines","line","Line","x1","x2","y1","y2","stroke","strokeWidth","strokeLinecap","QrCode","exports","memo","prevProps","nextProps"],"sourceRoot":"../../../../src","sources":["composites/wui-qr-code/index.tsx"],"mappings":"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","ignoreList":[]}
@@ -13,9 +13,6 @@ var _default = exports.default = _reactNative.StyleSheet.create({
13
13
  borderRadius: _ThemeUtil.BorderRadius.l,
14
14
  padding: _ThemeUtil.Spacing.l,
15
15
  alignSelf: 'center'
16
- },
17
- icon: {
18
- position: 'absolute'
19
16
  }
20
17
  });
21
18
  //# sourceMappingURL=styles.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNative","require","_ThemeUtil","_default","exports","default","StyleSheet","create","container","alignItems","justifyContent","borderRadius","BorderRadius","l","padding","Spacing","alignSelf","icon","position"],"sourceRoot":"../../../../src","sources":["composites/wui-qr-code/styles.ts"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AACA,IAAAC,UAAA,GAAAD,OAAA;AAA8D,IAAAE,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAE/CC,uBAAU,CAACC,MAAM,CAAC;EAC/BC,SAAS,EAAE;IACTC,UAAU,EAAE,QAAQ;IACpBC,cAAc,EAAE,QAAQ;IACxBC,YAAY,EAAEC,uBAAY,CAACC,CAAC;IAC5BC,OAAO,EAAEC,kBAAO,CAACF,CAAC;IAClBG,SAAS,EAAE;EACb,CAAC;EACDC,IAAI,EAAE;IACJC,QAAQ,EAAE;EACZ;AACF,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["_reactNative","require","_ThemeUtil","_default","exports","default","StyleSheet","create","container","alignItems","justifyContent","borderRadius","BorderRadius","l","padding","Spacing","alignSelf"],"sourceRoot":"../../../../src","sources":["composites/wui-qr-code/styles.ts"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AACA,IAAAC,UAAA,GAAAD,OAAA;AAA8D,IAAAE,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAE/CC,uBAAU,CAACC,MAAM,CAAC;EAC/BC,SAAS,EAAE;IACTC,UAAU,EAAE,QAAQ;IACpBC,cAAc,EAAE,QAAQ;IACxBC,YAAY,EAAEC,uBAAY,CAACC,CAAC;IAC5BC,OAAO,EAAEC,kBAAO,CAACF,CAAC;IAClBG,SAAS,EAAE;EACb;AACF,CAAC,CAAC","ignoreList":[]}
@@ -4,15 +4,14 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.QRCodeUtil = void 0;
7
- var _reactNativeSvg = require("react-native-svg");
7
+ exports.generateQRData = generateQRData;
8
8
  var _qrcode = _interopRequireDefault(require("qrcode"));
9
- var _ThemeUtil = require("../utils/ThemeUtil");
10
- var _jsxRuntime = require("react/jsx-runtime");
11
9
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
12
10
  const CONNECTING_ERROR_MARGIN = 0.1;
13
11
  const CIRCLE_SIZE_MODIFIER = 2.5;
14
12
  const QRCODE_MATRIX_MARGIN = 7;
15
- function isAdjecentDots(cy, otherCy, cellSize) {
13
+ const LOGO_PADDING = 25;
14
+ function isAdjacentDots(cy, otherCy, cellSize) {
16
15
  if (cy === otherCy) {
17
16
  return false;
18
17
  }
@@ -26,128 +25,230 @@ function getMatrix(value, errorCorrectionLevel) {
26
25
  const sqrt = Math.sqrt(arr.length);
27
26
  return arr.reduce((rows, key, index) => (index % sqrt === 0 ? rows.push([key]) : rows[rows.length - 1].push(key)) && rows, []);
28
27
  }
29
- const QRCodeUtil = exports.QRCodeUtil = {
30
- generate(uri, size, logoSize) {
31
- const dotColor = _ThemeUtil.LightTheme['inverse-000'];
32
- const edgeColor = _ThemeUtil.LightTheme['inverse-100'];
33
- const dots = [];
34
- const matrix = getMatrix(uri, 'Q');
35
- const cellSize = size / matrix.length;
36
- const qrList = [{
37
- x: 0,
38
- y: 0
39
- }, {
40
- x: 1,
41
- y: 0
42
- }, {
43
- x: 0,
44
- y: 1
45
- }];
46
- qrList.forEach(({
47
- x,
48
- y
49
- }) => {
50
- const x1 = (matrix.length - QRCODE_MATRIX_MARGIN) * cellSize * x;
51
- const y1 = (matrix.length - QRCODE_MATRIX_MARGIN) * cellSize * y;
52
- const borderRadius = 0.32;
53
- for (let i = 0; i < qrList.length; i += 1) {
54
- const dotSize = cellSize * (QRCODE_MATRIX_MARGIN - i * 2);
55
- dots.push(/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeSvg.Rect, {
56
- fill: i % 2 === 0 ? dotColor : edgeColor,
57
- height: dotSize,
58
- rx: dotSize * borderRadius,
59
- ry: dotSize * borderRadius,
60
- width: dotSize,
61
- x: x1 + cellSize * i,
62
- y: y1 + cellSize * i
63
- }, `rect_${x1 + cellSize * i}_${y1 + cellSize * i}`));
64
- }
65
- });
66
- const clearArenaSize = Math.floor((logoSize + 25) / cellSize);
67
- const matrixMiddleStart = matrix.length / 2 - clearArenaSize / 2;
68
- const matrixMiddleEnd = matrix.length / 2 + clearArenaSize / 2 - 1;
69
- const circles = [];
70
-
71
- // Getting coordinates for each of the QR code dots
72
- matrix.forEach((row, i) => {
73
- row.forEach((_, j) => {
74
- if (matrix[i][j]) {
75
- if (!(i < QRCODE_MATRIX_MARGIN && j < QRCODE_MATRIX_MARGIN || i > matrix.length - (QRCODE_MATRIX_MARGIN + 1) && j < QRCODE_MATRIX_MARGIN || i < QRCODE_MATRIX_MARGIN && j > matrix.length - (QRCODE_MATRIX_MARGIN + 1))) {
76
- if (!(i > matrixMiddleStart && i < matrixMiddleEnd && j > matrixMiddleStart && j < matrixMiddleEnd)) {
77
- const cx = i * cellSize + cellSize / 2;
78
- const cy = j * cellSize + cellSize / 2;
79
- circles.push([cx, cy]);
80
- }
81
- }
82
- }
28
+ function processQRMatrix(matrix, size, logoSize, logoBorderRadius) {
29
+ const matrixLength = matrix.length;
30
+ const cellSize = size / matrixLength;
31
+ const halfCellSize = cellSize / 2;
32
+ const strokeWidth = cellSize / (CIRCLE_SIZE_MODIFIER / 2);
33
+ const circleRadius = cellSize / CIRCLE_SIZE_MODIFIER;
34
+ const rects = [];
35
+ const circles = [];
36
+ const lines = [];
37
+
38
+ // Generate corner rectangles - optimized with direct indexing
39
+ const qrList = [{
40
+ x: 0,
41
+ y: 0
42
+ }, {
43
+ x: 1,
44
+ y: 0
45
+ }, {
46
+ x: 0,
47
+ y: 1
48
+ }];
49
+ const baseOffset = (matrixLength - QRCODE_MATRIX_MARGIN) * cellSize;
50
+ for (let qrIdx = 0; qrIdx < 3; qrIdx++) {
51
+ const qr = qrList[qrIdx];
52
+ const x1 = baseOffset * qr.x;
53
+ const y1 = baseOffset * qr.y;
54
+ for (let i = 0; i < 3; i++) {
55
+ const dotSize = cellSize * (QRCODE_MATRIX_MARGIN - i * 2);
56
+ rects.push({
57
+ x: x1 + cellSize * i,
58
+ y: y1 + cellSize * i,
59
+ size: dotSize,
60
+ fillType: i % 2 === 0 ? 'dot' : 'edge'
83
61
  });
84
- });
62
+ }
63
+ }
64
+ const circleCoords = [];
65
+
66
+ // Determine if using circular or rounded rectangle hole
67
+ const isCircular = logoBorderRadius === undefined;
68
+ const effectiveBorderRadius = logoBorderRadius ?? (logoSize + LOGO_PADDING) / 2;
85
69
 
86
- // Cx to multiple cys
87
- const circlesToConnect = {};
70
+ // Calculate circle coordinates - optimized with configurable hole shape
71
+ for (let i = 0; i < matrixLength; i++) {
72
+ const row = matrix[i];
73
+ const rowLength = row.length;
74
+ for (let j = 0; j < rowLength; j++) {
75
+ if (!row[j]) continue;
76
+
77
+ // Skip corners check
78
+ if (i < QRCODE_MATRIX_MARGIN && j < QRCODE_MATRIX_MARGIN || i > matrixLength - (QRCODE_MATRIX_MARGIN + 1) && j < QRCODE_MATRIX_MARGIN || i < QRCODE_MATRIX_MARGIN && j > matrixLength - (QRCODE_MATRIX_MARGIN + 1)) {
79
+ continue;
80
+ }
88
81
 
89
- // Mapping all dots cicles on the same x axis
90
- circles.forEach(([cx, cy]) => {
91
- if (circlesToConnect[cx]) {
92
- circlesToConnect[cx]?.push(cy);
82
+ // Calculate pixel coordinates first
83
+ const cx = i * cellSize + halfCellSize;
84
+ const cy = j * cellSize + halfCellSize;
85
+
86
+ // Skip hole calculation if logoSize is 0 (arenaClear)
87
+ if (logoSize === 0) {
88
+ circleCoords.push([cx, cy]);
89
+ continue;
90
+ }
91
+
92
+ // Calculate distance from center in pixel space
93
+ const centerX = size / 2;
94
+ const centerY = size / 2;
95
+ let isOutsideLogoArea = false;
96
+ if (isCircular) {
97
+ // Circular hole
98
+ const dx = cx - centerX;
99
+ const dy = cy - centerY;
100
+ const distanceFromCenter = Math.sqrt(dx * dx + dy * dy);
101
+ const pixelRadius = (logoSize + LOGO_PADDING) / 2;
102
+ isOutsideLogoArea = distanceFromCenter >= pixelRadius;
93
103
  } else {
94
- circlesToConnect[cx] = [cy];
104
+ // Rounded rectangle hole
105
+ const halfLogoArea = (logoSize + LOGO_PADDING) / 2;
106
+ const dx = Math.abs(cx - centerX);
107
+ const dy = Math.abs(cy - centerY);
108
+
109
+ // Check if point is outside the rounded rectangle
110
+ if (dx > halfLogoArea || dy > halfLogoArea) {
111
+ isOutsideLogoArea = true;
112
+ } else if (dx > halfLogoArea - effectiveBorderRadius && dy > halfLogoArea - effectiveBorderRadius) {
113
+ // Check corner radius
114
+ const cornerDx = dx - (halfLogoArea - effectiveBorderRadius);
115
+ const cornerDy = dy - (halfLogoArea - effectiveBorderRadius);
116
+ const cornerDistance = Math.sqrt(cornerDx * cornerDx + cornerDy * cornerDy);
117
+ isOutsideLogoArea = cornerDistance >= effectiveBorderRadius;
118
+ } else {
119
+ isOutsideLogoArea = false;
120
+ }
121
+ }
122
+ if (isOutsideLogoArea) {
123
+ circleCoords.push([cx, cy]);
95
124
  }
96
- });
97
-
98
- // Drawing lonely dots
99
- Object.entries(circlesToConnect)
100
- // Only get dots that have neighbors
101
- .map(([cx, cys]) => {
102
- const newCys = cys.filter(cy => cys.every(otherCy => !isAdjecentDots(cy, otherCy, cellSize)));
103
- return [Number(cx), newCys];
104
- }).forEach(([cx, cys]) => {
105
- cys.forEach(cy => {
106
- dots.push(/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeSvg.Circle, {
107
- cx: cx,
108
- cy: cy,
109
- fill: dotColor,
110
- r: cellSize / CIRCLE_SIZE_MODIFIER
111
- }, `circle_${cx}_${cy}`));
125
+ }
126
+ }
127
+
128
+ // Build circlesToConnect - optimized loop
129
+ const circlesToConnect = {};
130
+ for (let k = 0; k < circleCoords.length; k++) {
131
+ const [cx, cy] = circleCoords[k];
132
+ const existing = circlesToConnect[cx];
133
+ if (existing) {
134
+ existing.push(cy);
135
+ } else {
136
+ circlesToConnect[cx] = [cy];
137
+ }
138
+ }
139
+
140
+ // Process circles and lines - optimized to avoid Object.entries
141
+ for (const cxKey in circlesToConnect) {
142
+ const cx = Number(cxKey);
143
+ const cys = circlesToConnect[cxKey];
144
+ if (cys.length === 1) {
145
+ const firstCy = cys[0];
146
+ if (firstCy === undefined) continue;
147
+
148
+ // Single dot, add as circle
149
+ circles.push({
150
+ cx,
151
+ cy: firstCy,
152
+ r: circleRadius
112
153
  });
113
- });
114
-
115
- // Drawing lines for dots that are close to each other
116
- Object.entries(circlesToConnect)
117
- // Only get dots that have more than one dot on the x axis
118
- .filter(([_, cys]) => cys.length > 1)
119
- // Removing dots with no neighbors
120
- .map(([cx, cys]) => {
121
- const newCys = cys.filter(cy => cys.some(otherCy => isAdjecentDots(cy, otherCy, cellSize)));
122
- return [Number(cx), newCys];
123
- })
124
- // Get the coordinates of the first and last dot of a line
125
- .map(([cx, cys]) => {
126
- cys.sort((a, b) => a < b ? -1 : 1);
127
- const groups = [];
128
- for (const cy of cys) {
129
- const group = groups.find(item => item.some(otherCy => isAdjecentDots(cy, otherCy, cellSize)));
130
- if (group) {
131
- group.push(cy);
154
+ continue;
155
+ }
156
+
157
+ // Sort once for line grouping
158
+ cys.sort((a, b) => a - b);
159
+
160
+ // Track which dots are connected and which are lonely
161
+ const isConnected = new Array(cys.length).fill(false);
162
+
163
+ // Find all adjacent pairs
164
+ for (let i = 0; i < cys.length - 1; i++) {
165
+ const currentCy = cys[i];
166
+ const nextCy = cys[i + 1];
167
+ if (currentCy !== undefined && nextCy !== undefined && isAdjacentDots(currentCy, nextCy, cellSize)) {
168
+ isConnected[i] = true;
169
+ isConnected[i + 1] = true;
170
+ }
171
+ }
172
+
173
+ // Add lonely dots as circles and build line groups
174
+ let groupStart = -1;
175
+ let groupEnd = -1;
176
+ for (let i = 0; i < cys.length; i++) {
177
+ const cy = cys[i];
178
+ if (cy === undefined) continue;
179
+ if (!isConnected[i]) {
180
+ // Lonely dot - add as circle
181
+ circles.push({
182
+ cx,
183
+ cy,
184
+ r: circleRadius
185
+ });
186
+
187
+ // Finish any ongoing line group
188
+ if (groupStart !== -1 && groupEnd !== -1 && groupStart !== groupEnd) {
189
+ lines.push({
190
+ x1: cx,
191
+ x2: cx,
192
+ y1: groupStart,
193
+ y2: groupEnd,
194
+ strokeWidth
195
+ });
196
+ }
197
+ groupStart = -1;
198
+ groupEnd = -1;
199
+ } else {
200
+ // Part of a line group
201
+ if (groupStart === -1) {
202
+ groupStart = cy;
203
+ groupEnd = cy;
132
204
  } else {
133
- groups.push([cy]);
205
+ // Check if adjacent to previous
206
+ const prevCy = cys[i - 1];
207
+ if (i > 0 && prevCy !== undefined && isAdjacentDots(cy, prevCy, cellSize)) {
208
+ groupEnd = cy;
209
+ } else {
210
+ // Gap in the group, finish previous line
211
+ if (groupStart !== groupEnd) {
212
+ lines.push({
213
+ x1: cx,
214
+ x2: cx,
215
+ y1: groupStart,
216
+ y2: groupEnd,
217
+ strokeWidth
218
+ });
219
+ }
220
+ groupStart = cy;
221
+ groupEnd = cy;
222
+ }
134
223
  }
135
224
  }
136
- return [cx, groups.map(item => [item[0], item[item.length - 1]])];
137
- }).forEach(([cx, groups]) => {
138
- groups.forEach(([y1, y2]) => {
139
- dots.push(/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeSvg.Line, {
140
- x1: cx,
141
- x2: cx,
142
- y1: y1,
143
- y2: y2,
144
- stroke: dotColor,
145
- strokeWidth: cellSize / (CIRCLE_SIZE_MODIFIER / 2),
146
- strokeLinecap: "round"
147
- }, `line_${cx}_${y1}_${y2}`));
225
+ }
226
+
227
+ // Don't forget the last group
228
+ if (groupStart !== -1 && groupEnd !== -1 && groupStart !== groupEnd) {
229
+ lines.push({
230
+ x1: cx,
231
+ x2: cx,
232
+ y1: groupStart,
233
+ y2: groupEnd,
234
+ strokeWidth
148
235
  });
149
- });
150
- return dots;
236
+ }
151
237
  }
238
+ return {
239
+ rects,
240
+ circles,
241
+ lines
242
+ };
243
+ }
244
+ function generateQRData(uri, size, logoSize, logoBorderRadius) {
245
+ if (!uri || size <= 0) {
246
+ throw new Error('Invalid QR code parameters');
247
+ }
248
+ const matrix = getMatrix(uri, 'Q');
249
+ return processQRMatrix(matrix, size, logoSize, logoBorderRadius);
250
+ }
251
+ const QRCodeUtil = exports.QRCodeUtil = {
252
+ generate: generateQRData
152
253
  };
153
254
  //# sourceMappingURL=QRCodeUtil.js.map