@reown/appkit-ui-react-native 2.0.1 → 2.0.3

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 (47) 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/components/wui-modal/index.js +14 -8
  4. package/lib/commonjs/components/wui-modal/index.js.map +1 -1
  5. package/lib/commonjs/composites/wui-qr-code/index.js +51 -19
  6. package/lib/commonjs/composites/wui-qr-code/index.js.map +1 -1
  7. package/lib/commonjs/composites/wui-qr-code/styles.js +0 -3
  8. package/lib/commonjs/composites/wui-qr-code/styles.js.map +1 -1
  9. package/lib/commonjs/context/ThemeContext.js +2 -5
  10. package/lib/commonjs/context/ThemeContext.js.map +1 -1
  11. package/lib/commonjs/index.js.map +1 -1
  12. package/lib/commonjs/utils/QRCodeUtil.js +217 -116
  13. package/lib/commonjs/utils/QRCodeUtil.js.map +1 -1
  14. package/lib/module/assets/svg/WalletConnect.js +4 -5
  15. package/lib/module/assets/svg/WalletConnect.js.map +1 -1
  16. package/lib/module/components/wui-modal/index.js +15 -9
  17. package/lib/module/components/wui-modal/index.js.map +1 -1
  18. package/lib/module/composites/wui-qr-code/index.js +50 -19
  19. package/lib/module/composites/wui-qr-code/index.js.map +1 -1
  20. package/lib/module/composites/wui-qr-code/styles.js +0 -3
  21. package/lib/module/composites/wui-qr-code/styles.js.map +1 -1
  22. package/lib/module/context/ThemeContext.js +2 -5
  23. package/lib/module/context/ThemeContext.js.map +1 -1
  24. package/lib/module/index.js.map +1 -1
  25. package/lib/module/utils/QRCodeUtil.js +216 -116
  26. package/lib/module/utils/QRCodeUtil.js.map +1 -1
  27. package/lib/typescript/assets/svg/WalletConnect.d.ts.map +1 -1
  28. package/lib/typescript/components/wui-modal/index.d.ts +8 -3
  29. package/lib/typescript/components/wui-modal/index.d.ts.map +1 -1
  30. package/lib/typescript/composites/wui-qr-code/index.d.ts +3 -1
  31. package/lib/typescript/composites/wui-qr-code/index.d.ts.map +1 -1
  32. package/lib/typescript/composites/wui-qr-code/styles.d.ts +0 -3
  33. package/lib/typescript/composites/wui-qr-code/styles.d.ts.map +1 -1
  34. package/lib/typescript/context/ThemeContext.d.ts +2 -2
  35. package/lib/typescript/context/ThemeContext.d.ts.map +1 -1
  36. package/lib/typescript/index.d.ts +1 -1
  37. package/lib/typescript/index.d.ts.map +1 -1
  38. package/lib/typescript/utils/QRCodeUtil.d.ts +22 -2
  39. package/lib/typescript/utils/QRCodeUtil.d.ts.map +1 -1
  40. package/package.json +2 -2
  41. package/src/assets/svg/WalletConnect.tsx +4 -5
  42. package/src/components/wui-modal/index.tsx +32 -12
  43. package/src/composites/wui-qr-code/index.tsx +75 -16
  44. package/src/composites/wui-qr-code/styles.ts +0 -3
  45. package/src/context/ThemeContext.tsx +4 -7
  46. package/src/index.ts +6 -1
  47. package/src/utils/QRCodeUtil.tsx +265 -142
@@ -2,7 +2,7 @@
2
2
 
3
3
  import { memo, useMemo } from 'react';
4
4
  import { View } from 'react-native';
5
- import Svg from 'react-native-svg';
5
+ import Svg, { Circle, Line, Rect } from 'react-native-svg';
6
6
  import { Icon } from '../../components/wui-icon';
7
7
  import { Image } from '../../components/wui-image';
8
8
  import { Shimmer } from '../../components/wui-shimmer';
@@ -17,13 +17,17 @@ export function QrCode_({
17
17
  testID,
18
18
  arenaClear,
19
19
  icon,
20
- style
20
+ style,
21
+ logoSize,
22
+ logoBorderRadius
21
23
  }) {
22
24
  const Theme = LightTheme;
23
25
  const containerPadding = Spacing.l;
24
26
  const qrSize = size - containerPadding * 2;
25
- const logoSize = arenaClear ? 0 : qrSize / 4;
26
- const dots = useMemo(() => uri ? QRCodeUtil.generate(uri, qrSize, logoSize) : [], [uri, qrSize, logoSize]);
27
+ const _logoSize = arenaClear ? 0 : logoSize ?? qrSize / 4;
28
+ const dotColor = Theme['inverse-000'];
29
+ const edgeColor = Theme['inverse-100'];
30
+ const qrData = useMemo(() => uri ? QRCodeUtil.generate(uri, qrSize, _logoSize, logoBorderRadius) : null, [uri, qrSize, _logoSize, logoBorderRadius]);
27
31
  const logoTemplate = () => {
28
32
  if (arenaClear) {
29
33
  return null;
@@ -31,40 +35,67 @@ export function QrCode_({
31
35
  if (imageSrc) {
32
36
  return /*#__PURE__*/_jsx(Image, {
33
37
  source: imageSrc,
34
- style: [styles.icon, {
35
- height: qrSize / 4,
36
- width: qrSize / 4,
37
- borderRadius: qrSize / 16
38
+ style: [{
39
+ position: 'absolute',
40
+ height: _logoSize,
41
+ width: _logoSize,
42
+ borderRadius: logoBorderRadius
38
43
  }]
39
44
  });
40
45
  }
41
46
  return /*#__PURE__*/_jsx(Icon, {
42
47
  name: icon ?? 'walletConnect',
43
48
  color: "accent-100",
44
- height: qrSize / 3.5,
45
- width: qrSize / 3.5,
46
- style: styles.icon
49
+ height: _logoSize,
50
+ width: _logoSize,
51
+ style: {
52
+ position: 'absolute'
53
+ }
47
54
  });
48
55
  };
49
- return uri ? /*#__PURE__*/_jsxs(View, {
56
+ if (!uri || !qrData) {
57
+ return /*#__PURE__*/_jsx(Shimmer, {
58
+ width: size,
59
+ height: size,
60
+ borderRadius: BorderRadius.l
61
+ });
62
+ }
63
+ return /*#__PURE__*/_jsxs(View, {
50
64
  style: [styles.container, {
51
65
  width: size,
52
66
  backgroundColor: Theme['inverse-100'],
53
67
  padding: containerPadding
54
68
  }, style],
55
69
  testID: testID,
56
- children: [/*#__PURE__*/_jsx(Svg, {
70
+ children: [/*#__PURE__*/_jsxs(Svg, {
57
71
  height: qrSize,
58
72
  width: qrSize,
59
- children: dots
73
+ children: [qrData.rects.map(rect => /*#__PURE__*/_jsx(Rect, {
74
+ fill: rect.fillType === 'dot' ? dotColor : edgeColor,
75
+ height: rect.size,
76
+ rx: rect.size * 0.32,
77
+ ry: rect.size * 0.32,
78
+ width: rect.size,
79
+ x: rect.x,
80
+ y: rect.y
81
+ }, `rect_${rect.x}_${rect.y}`)), qrData.circles.map(circle => /*#__PURE__*/_jsx(Circle, {
82
+ cx: circle.cx,
83
+ cy: circle.cy,
84
+ fill: dotColor,
85
+ r: circle.r
86
+ }, `circle_${circle.cx}_${circle.cy}`)), qrData.lines.map(line => /*#__PURE__*/_jsx(Line, {
87
+ x1: line.x1,
88
+ x2: line.x2,
89
+ y1: line.y1,
90
+ y2: line.y2,
91
+ stroke: dotColor,
92
+ strokeWidth: line.strokeWidth,
93
+ strokeLinecap: "round"
94
+ }, `line_${line.x1}_${line.y1}_${line.y2}`))]
60
95
  }), logoTemplate()]
61
- }) : /*#__PURE__*/_jsx(Shimmer, {
62
- width: size,
63
- height: size,
64
- borderRadius: BorderRadius.l
65
96
  });
66
97
  }
67
98
  export const QrCode = /*#__PURE__*/memo(QrCode_, (prevProps, nextProps) => {
68
- return prevProps.size === nextProps.size && prevProps.uri === nextProps.uri && prevProps.style === nextProps.style;
99
+ return prevProps.size === nextProps.size && prevProps.uri === nextProps.uri && prevProps.style === nextProps.style && prevProps.logoBorderRadius === nextProps.logoBorderRadius;
69
100
  });
70
101
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["memo","useMemo","View","Svg","Icon","Image","Shimmer","QRCodeUtil","BorderRadius","LightTheme","Spacing","styles","jsx","_jsx","jsxs","_jsxs","QrCode_","size","uri","imageSrc","testID","arenaClear","icon","style","Theme","containerPadding","l","qrSize","logoSize","dots","generate","logoTemplate","source","height","width","borderRadius","name","color","container","backgroundColor","padding","children","QrCode","prevProps","nextProps"],"sourceRoot":"../../../../src","sources":["composites/wui-qr-code/index.tsx"],"mappings":";;AAAA,SAASA,IAAI,EAAEC,OAAO,QAAQ,OAAO;AACrC,SAASC,IAAI,QAAwC,cAAc;AACnE,OAAOC,GAAG,MAAM,kBAAkB;AAClC,SAASC,IAAI,QAAQ,2BAA2B;AAChD,SAASC,KAAK,QAAQ,4BAA4B;AAClD,SAASC,OAAO,QAAQ,8BAA8B;AACtD,SAASC,UAAU,QAAQ,wBAAwB;AACnD,SAASC,YAAY,EAAEC,UAAU,EAAEC,OAAO,QAAQ,uBAAuB;AAEzE,OAAOC,MAAM,MAAM,UAAU;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAY9B,OAAO,SAASC,OAAOA,CAAC;EAAEC,IAAI;EAAEC,GAAG;EAAEC,QAAQ;EAAEC,MAAM;EAAEC,UAAU;EAAEC,IAAI;EAAEC;AAAmB,CAAC,EAAE;EAC7F,MAAMC,KAAK,GAAGf,UAAU;EACxB,MAAMgB,gBAAgB,GAAGf,OAAO,CAACgB,CAAC;EAClC,MAAMC,MAAM,GAAGV,IAAI,GAAGQ,gBAAgB,GAAG,CAAC;EAC1C,MAAMG,QAAQ,GAAGP,UAAU,GAAG,CAAC,GAAGM,MAAM,GAAG,CAAC;EAE5C,MAAME,IAAI,GAAG5B,OAAO,CAClB,MAAOiB,GAAG,GAAGX,UAAU,CAACuB,QAAQ,CAACZ,GAAG,EAAES,MAAM,EAAEC,QAAQ,CAAC,GAAG,EAAG,EAC7D,CAACV,GAAG,EAAES,MAAM,EAAEC,QAAQ,CACxB,CAAC;EAED,MAAMG,YAAY,GAAGA,CAAA,KAAM;IACzB,IAAIV,UAAU,EAAE;MACd,OAAO,IAAI;IACb;IAEA,IAAIF,QAAQ,EAAE;MACZ,oBACEN,IAAA,CAACR,KAAK;QACJ2B,MAAM,EAAEb,QAAS;QACjBI,KAAK,EAAE,CACLZ,MAAM,CAACW,IAAI,EACX;UAAEW,MAAM,EAAEN,MAAM,GAAG,CAAC;UAAEO,KAAK,EAAEP,MAAM,GAAG,CAAC;UAAEQ,YAAY,EAAER,MAAM,GAAG;QAAG,CAAC;MACpE,CACH,CAAC;IAEN;IAEA,oBACEd,IAAA,CAACT,IAAI;MACHgC,IAAI,EAAEd,IAAI,IAAI,eAAgB;MAC9Be,KAAK,EAAC,YAAY;MAClBJ,MAAM,EAAEN,MAAM,GAAG,GAAI;MACrBO,KAAK,EAAEP,MAAM,GAAG,GAAI;MACpBJ,KAAK,EAAEZ,MAAM,CAACW;IAAK,CACpB,CAAC;EAEN,CAAC;EAED,OAAOJ,GAAG,gBACRH,KAAA,CAACb,IAAI;IACHqB,KAAK,EAAE,CACLZ,MAAM,CAAC2B,SAAS,EAChB;MAAEJ,KAAK,EAAEjB,IAAI;MAAEsB,eAAe,EAAEf,KAAK,CAAC,aAAa,CAAC;MAAEgB,OAAO,EAAEf;IAAiB,CAAC,EACjFF,KAAK,CACL;IACFH,MAAM,EAAEA,MAAO;IAAAqB,QAAA,gBAEf5B,IAAA,CAACV,GAAG;MAAC8B,MAAM,EAAEN,MAAO;MAACO,KAAK,EAAEP,MAAO;MAAAc,QAAA,EAChCZ;IAAI,CACF,CAAC,EACLE,YAAY,CAAC,CAAC;EAAA,CACX,CAAC,gBAEPlB,IAAA,CAACP,OAAO;IAAC4B,KAAK,EAAEjB,IAAK;IAACgB,MAAM,EAAEhB,IAAK;IAACkB,YAAY,EAAE3B,YAAY,CAACkB;EAAE,CAAE,CACpE;AACH;AAEA,OAAO,MAAMgB,MAAM,gBAAG1C,IAAI,CAACgB,OAAO,EAAE,CAAC2B,SAAS,EAAEC,SAAS,KAAK;EAC5D,OACED,SAAS,CAAC1B,IAAI,KAAK2B,SAAS,CAAC3B,IAAI,IACjC0B,SAAS,CAACzB,GAAG,KAAK0B,SAAS,CAAC1B,GAAG,IAC/ByB,SAAS,CAACpB,KAAK,KAAKqB,SAAS,CAACrB,KAAK;AAEvC,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["memo","useMemo","View","Svg","Circle","Line","Rect","Icon","Image","Shimmer","QRCodeUtil","BorderRadius","LightTheme","Spacing","styles","jsx","_jsx","jsxs","_jsxs","QrCode_","size","uri","imageSrc","testID","arenaClear","icon","style","logoSize","logoBorderRadius","Theme","containerPadding","l","qrSize","_logoSize","dotColor","edgeColor","qrData","generate","logoTemplate","source","position","height","width","borderRadius","name","color","container","backgroundColor","padding","children","rects","map","rect","fill","fillType","rx","ry","x","y","circles","circle","cx","cy","r","lines","line","x1","x2","y1","y2","stroke","strokeWidth","strokeLinecap","QrCode","prevProps","nextProps"],"sourceRoot":"../../../../src","sources":["composites/wui-qr-code/index.tsx"],"mappings":"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","ignoreList":[]}
@@ -9,9 +9,6 @@ export default StyleSheet.create({
9
9
  borderRadius: BorderRadius.l,
10
10
  padding: Spacing.l,
11
11
  alignSelf: 'center'
12
- },
13
- icon: {
14
- position: 'absolute'
15
12
  }
16
13
  });
17
14
  //# sourceMappingURL=styles.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["StyleSheet","BorderRadius","Spacing","create","container","alignItems","justifyContent","borderRadius","l","padding","alignSelf","icon","position"],"sourceRoot":"../../../../src","sources":["composites/wui-qr-code/styles.ts"],"mappings":";;AAAA,SAASA,UAAU,QAAQ,cAAc;AACzC,SAASC,YAAY,EAAEC,OAAO,QAAQ,uBAAuB;AAE7D,eAAeF,UAAU,CAACG,MAAM,CAAC;EAC/BC,SAAS,EAAE;IACTC,UAAU,EAAE,QAAQ;IACpBC,cAAc,EAAE,QAAQ;IACxBC,YAAY,EAAEN,YAAY,CAACO,CAAC;IAC5BC,OAAO,EAAEP,OAAO,CAACM,CAAC;IAClBE,SAAS,EAAE;EACb,CAAC;EACDC,IAAI,EAAE;IACJC,QAAQ,EAAE;EACZ;AACF,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["StyleSheet","BorderRadius","Spacing","create","container","alignItems","justifyContent","borderRadius","l","padding","alignSelf"],"sourceRoot":"../../../../src","sources":["composites/wui-qr-code/styles.ts"],"mappings":";;AAAA,SAASA,UAAU,QAAQ,cAAc;AACzC,SAASC,YAAY,EAAEC,OAAO,QAAQ,uBAAuB;AAE7D,eAAeF,UAAU,CAACG,MAAM,CAAC;EAC/BC,SAAS,EAAE;IACTC,UAAU,EAAE,QAAQ;IACpBC,cAAc,EAAE,QAAQ;IACxBC,YAAY,EAAEN,YAAY,CAACO,CAAC;IAC5BC,OAAO,EAAEP,OAAO,CAACM,CAAC;IAClBE,SAAS,EAAE;EACb;AACF,CAAC,CAAC","ignoreList":[]}
@@ -1,6 +1,5 @@
1
1
  "use strict";
2
2
 
3
- import { useColorScheme } from 'react-native';
4
3
  import { createContext, useContext, useMemo } from 'react';
5
4
  import { DarkTheme, LightTheme, getAccentColors } from '../utils/ThemeUtil';
6
5
  import { jsx as _jsx } from "react/jsx-runtime";
@@ -21,10 +20,8 @@ export function ThemeProvider({
21
20
  }
22
21
  export function useTheme() {
23
22
  const context = useContext(ThemeContext);
24
- const scheme = useColorScheme();
25
23
  return useMemo(() => {
26
- // If the theme mode is not set, use the system color scheme
27
- const themeMode = context?.themeMode ?? scheme;
24
+ const themeMode = context?.themeMode ?? 'light';
28
25
  const themeVariables = context?.themeVariables ?? {};
29
26
  let Theme = themeMode === 'dark' ? DarkTheme : LightTheme;
30
27
  if (themeVariables.accent) {
@@ -34,6 +31,6 @@ export function useTheme() {
34
31
  };
35
32
  }
36
33
  return Theme;
37
- }, [context?.themeMode, context?.themeVariables, scheme]);
34
+ }, [context?.themeMode, context?.themeVariables]);
38
35
  }
39
36
  //# sourceMappingURL=ThemeContext.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["useColorScheme","createContext","useContext","useMemo","DarkTheme","LightTheme","getAccentColors","jsx","_jsx","ThemeContext","undefined","ThemeProvider","children","themeMode","themeVariables","contextValue","Provider","value","useTheme","context","scheme","Theme","accent"],"sourceRoot":"../../../src","sources":["context/ThemeContext.tsx"],"mappings":";;AAAA,SAASA,cAAc,QAAQ,cAAc;AAC7C,SAASC,aAAa,EAAEC,UAAU,EAAEC,OAAO,QAAwB,OAAO;AAG1E,SAASC,SAAS,EAAEC,UAAU,EAAEC,eAAe,QAAQ,oBAAoB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAO5E,OAAO,MAAMC,YAAY,gBAAGR,aAAa,CAA+BS,SAAS,CAAC;AAQlF,OAAO,SAASC,aAAaA,CAAC;EAAEC,QAAQ;EAAEC,SAAS;EAAEC;AAAmC,CAAC,EAAE;EACzF,MAAMC,YAAY,GAAGZ,OAAO,CAAC,OAAO;IAAEU,SAAS;IAAEC;EAAe,CAAC,CAAC,EAAE,CAACD,SAAS,EAAEC,cAAc,CAAC,CAAC;EAEhG,oBAAON,IAAA,CAACC,YAAY,CAACO,QAAQ;IAACC,KAAK,EAAEF,YAAa;IAAAH,QAAA,EAAEA;EAAQ,CAAwB,CAAC;AACvF;AAEA,OAAO,SAASM,QAAQA,CAAA,EAAG;EACzB,MAAMC,OAAO,GAAGjB,UAAU,CAACO,YAAY,CAAC;EACxC,MAAMW,MAAM,GAAGpB,cAAc,CAAC,CAAC;EAE/B,OAAOG,OAAO,CAAC,MAAM;IACnB;IACA,MAAMU,SAAS,GAAGM,OAAO,EAAEN,SAAS,IAAIO,MAAM;IAC9C,MAAMN,cAAc,GAAGK,OAAO,EAAEL,cAAc,IAAI,CAAC,CAAC;IAEpD,IAAIO,KAAK,GAAGR,SAAS,KAAK,MAAM,GAAGT,SAAS,GAAGC,UAAU;IAEzD,IAAIS,cAAc,CAACQ,MAAM,EAAE;MACzBD,KAAK,GAAG;QACN,GAAGA,KAAK;QACR,GAAGf,eAAe,CAACQ,cAAc,CAACQ,MAAM;MAC1C,CAAC;IACH;IAEA,OAAOD,KAAK;EACd,CAAC,EAAE,CAACF,OAAO,EAAEN,SAAS,EAAEM,OAAO,EAAEL,cAAc,EAAEM,MAAM,CAAC,CAAC;AAC3D","ignoreList":[]}
1
+ {"version":3,"names":["createContext","useContext","useMemo","DarkTheme","LightTheme","getAccentColors","jsx","_jsx","ThemeContext","undefined","ThemeProvider","children","themeMode","themeVariables","contextValue","Provider","value","useTheme","context","Theme","accent"],"sourceRoot":"../../../src","sources":["context/ThemeContext.tsx"],"mappings":";;AAAA,SAASA,aAAa,EAAEC,UAAU,EAAEC,OAAO,QAAwB,OAAO;AAG1E,SAASC,SAAS,EAAEC,UAAU,EAAEC,eAAe,QAAQ,oBAAoB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAO5E,OAAO,MAAMC,YAAY,gBAAGR,aAAa,CAA+BS,SAAS,CAAC;AAQlF,OAAO,SAASC,aAAaA,CAAC;EAAEC,QAAQ;EAAEC,SAAS;EAAEC;AAAmC,CAAC,EAAE;EACzF,MAAMC,YAAY,GAAGZ,OAAO,CAAC,OAAO;IAAEU,SAAS;IAAEC;EAAe,CAAC,CAAC,EAAE,CAACD,SAAS,EAAEC,cAAc,CAAC,CAAC;EAEhG,oBAAON,IAAA,CAACC,YAAY,CAACO,QAAQ;IAACC,KAAK,EAAEF,YAAa;IAAAH,QAAA,EAAEA;EAAQ,CAAwB,CAAC;AACvF;AAEA,OAAO,SAASM,QAAQA,CAAA,EAAG;EACzB,MAAMC,OAAO,GAAGjB,UAAU,CAACO,YAAY,CAAC;EAExC,OAAON,OAAO,CAAC,MAAM;IACnB,MAAMU,SAAS,GAAGM,OAAO,EAAEN,SAAS,IAAI,OAAO;IAC/C,MAAMC,cAAc,GAAGK,OAAO,EAAEL,cAAc,IAAI,CAAC,CAAC;IAEpD,IAAIM,KAAK,GAAGP,SAAS,KAAK,MAAM,GAAGT,SAAS,GAAGC,UAAU;IAEzD,IAAIS,cAAc,CAACO,MAAM,EAAE;MACzBD,KAAK,GAAG;QACN,GAAGA,KAAK;QACR,GAAGd,eAAe,CAACQ,cAAc,CAACO,MAAM;MAC1C,CAAC;IACH;IAEA,OAAOD,KAAK;EACd,CAAC,EAAE,CAACD,OAAO,EAAEN,SAAS,EAAEM,OAAO,EAAEL,cAAc,CAAC,CAAC;AACnD","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["Card","Icon","Image","LoadingHexagon","LoadingSpinner","LoadingThumbnail","Text","Visual","Shimmer","AccountButton","AccountPill","ActionEntry","Avatar","Balance","Banner","Button","CardSelectLoader","CardSelectLoaderHeight","CardSelect","CardSelectHeight","CardSelectWidth","Chip","CompatibleNetwork","ConnectButton","DoubleImageLoader","EmailInput","IconBox","IconLink","InputElement","InputNumeric","InputText","Link","ListItem","ListItemLoader","ListSocial","ListToken","ListTokenTotalHeight","ListTransaction","ListWallet","Logo","LogoSelect","Modal","NetworkButton","NetworkImage","NumericKeyboard","Otp","Pressable","QrCode","SearchBar","Snackbar","Tabs","Tag","Toggle","TokenButton","Tooltip","WalletImage","Overlay","FlexView","Separator","UiUtil","TransactionUtil","Spacing","BorderRadius","useTheme","ThemeProvider","useAnimatedValue","useCustomDimensions"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;AAAA;AACA,SAASA,IAAI,QAAwB,uBAAuB;AAC5D,SAASC,IAAI,QAAwB,uBAAuB;AAC5D,SAASC,KAAK,QAAyB,wBAAwB;AAC/D,SAASC,cAAc,QAAkC,kCAAkC;AAC3F,SAASC,cAAc,QAAQ,kCAAkC;AACjE,SAASC,gBAAgB,QAAoC,oCAAoC;AACjG,SAASC,IAAI,QAAwB,uBAAuB;AAC5D,SAASC,MAAM,QAA0B,yBAAyB;AAClE,SAASC,OAAO,QAA2B,0BAA0B;;AAErE;AACA,SAASC,aAAa,QAAiC,iCAAiC;AACxF,SAASC,WAAW,QAA+B,+BAA+B;AAClF,SAASC,WAAW,QAA+B,+BAA+B;AAClF,SAASC,MAAM,QAA0B,yBAAyB;AAClE,SAASC,OAAO,QAA2B,0BAA0B;AACrE,SAASC,MAAM,QAA0B,yBAAyB;AAClE,SAASC,MAAM,QAA0B,yBAAyB;AAClE,SACEC,gBAAgB,EAChBC,sBAAsB,QAEjB,qCAAqC;AAC5C,SACEC,UAAU,EACVC,gBAAgB,EAChBC,eAAe,QAEV,8BAA8B;AACrC,SAASC,IAAI,QAAwB,uBAAuB;AAC5D,SACEC,iBAAiB,QAEZ,qCAAqC;AAC5C,SAASC,aAAa,QAAiC,iCAAiC;AACxF,SAASC,iBAAiB,QAAQ,sCAAsC;AACxE,SAASC,UAAU,QAA8B,8BAA8B;AAC/E,SAASC,OAAO,QAA2B,2BAA2B;AACtE,SAASC,QAAQ,QAA4B,4BAA4B;AACzE,SAASC,YAAY,QAAgC,gCAAgC;AACrF,SAASC,YAAY,QAAgC,gCAAgC;AACrF,SAASC,SAAS,QAA6B,6BAA6B;AAC5E,SAASC,IAAI,QAAwB,uBAAuB;AAC5D,SAASC,QAAQ,QAA4B,4BAA4B;AACzE,SAASC,cAAc,QAAkC,mCAAmC;AAC5F,SAASC,UAAU,QAA8B,8BAA8B;AAC/E,SAASC,SAAS,EAAEC,oBAAoB,QAA6B,6BAA6B;AAClG,SAASC,eAAe,QAAmC,mCAAmC;AAC9F,SAASC,UAAU,QAA8B,8BAA8B;AAC/E,SAASC,IAAI,QAAwB,uBAAuB;AAC5D,SAASC,UAAU,QAA8B,8BAA8B;AAC/E,SAASC,KAAK,QAAyB,wBAAwB;AAC/D,SAASC,aAAa,QAAiC,iCAAiC;AACxF,SAASC,YAAY,QAAgC,gCAAgC;AACrF,SAASC,eAAe,QAAmC,mCAAmC;AAC9F,SAASC,GAAG,QAAuB,sBAAsB;AACzD,SAASC,SAAS,QAA6B,4BAA4B;AAC3E,SAASC,MAAM,QAA0B,0BAA0B;AACnE,SAASC,SAAS,QAA6B,6BAA6B;AAC5E,SAASC,QAAQ,QAA4B,2BAA2B;AACxE,SAASC,IAAI,QAAwB,uBAAuB;AAC5D,SAASC,GAAG,QAAuB,sBAAsB;AACzD,SAASC,MAAM,QAA0B,yBAAyB;AAClE,SAASC,WAAW,QAA+B,+BAA+B;AAClF,SAASC,OAAO,QAA2B,0BAA0B;AACrE,SAASC,WAAW,QAA+B,+BAA+B;AAElF,SAASC,OAAO,QAA2B,sBAAsB;AACjE,SAASC,QAAQ,QAA4B,mBAAmB;AAChE,SAASC,SAAS,QAAQ,wBAAwB;;AAElD;;AAiBA;AACA,SAASC,MAAM,QAAQ,gBAAgB;AACvC,SAASC,eAAe,QAAQ,yBAAyB;AACzD,SAASC,OAAO,EAAEC,YAAY,QAAQ,mBAAmB;;AAEzD;AACA,SAASC,QAAQ,QAAQ,kBAAkB;AAC3C,SAASC,aAAa,QAAQ,wBAAwB;AACtD,SAASC,gBAAgB,QAAQ,0BAA0B;AAC3D,SAASC,mBAAmB,QAAQ,6BAA6B","ignoreList":[]}
1
+ {"version":3,"names":["Card","Icon","Image","LoadingHexagon","LoadingSpinner","LoadingThumbnail","Text","Visual","Shimmer","AccountButton","AccountPill","ActionEntry","Avatar","Balance","Banner","Button","CardSelectLoader","CardSelectLoaderHeight","CardSelect","CardSelectHeight","CardSelectWidth","Chip","CompatibleNetwork","ConnectButton","DoubleImageLoader","EmailInput","IconBox","IconLink","InputElement","InputNumeric","InputText","Link","ListItem","ListItemLoader","ListSocial","ListToken","ListTokenTotalHeight","ListTransaction","ListWallet","Logo","LogoSelect","Modal","NetworkButton","NetworkImage","NumericKeyboard","Otp","Pressable","QrCode","SearchBar","Snackbar","Tabs","Tag","Toggle","TokenButton","Tooltip","WalletImage","Overlay","FlexView","Separator","UiUtil","TransactionUtil","Spacing","BorderRadius","useTheme","ThemeProvider","useAnimatedValue","useCustomDimensions"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;AAAA;AACA,SAASA,IAAI,QAAwB,uBAAuB;AAC5D,SAASC,IAAI,QAAwB,uBAAuB;AAC5D,SAASC,KAAK,QAAyB,wBAAwB;AAC/D,SAASC,cAAc,QAAkC,kCAAkC;AAC3F,SAASC,cAAc,QAAQ,kCAAkC;AACjE,SAASC,gBAAgB,QAAoC,oCAAoC;AACjG,SAASC,IAAI,QAAwB,uBAAuB;AAC5D,SAASC,MAAM,QAA0B,yBAAyB;AAClE,SAASC,OAAO,QAA2B,0BAA0B;;AAErE;AACA,SAASC,aAAa,QAAiC,iCAAiC;AACxF,SAASC,WAAW,QAA+B,+BAA+B;AAClF,SAASC,WAAW,QAA+B,+BAA+B;AAClF,SAASC,MAAM,QAA0B,yBAAyB;AAClE,SAASC,OAAO,QAA2B,0BAA0B;AACrE,SAASC,MAAM,QAA0B,yBAAyB;AAClE,SAASC,MAAM,QAA0B,yBAAyB;AAClE,SACEC,gBAAgB,EAChBC,sBAAsB,QAEjB,qCAAqC;AAC5C,SACEC,UAAU,EACVC,gBAAgB,EAChBC,eAAe,QAEV,8BAA8B;AACrC,SAASC,IAAI,QAAwB,uBAAuB;AAC5D,SACEC,iBAAiB,QAEZ,qCAAqC;AAC5C,SAASC,aAAa,QAAiC,iCAAiC;AACxF,SAASC,iBAAiB,QAAQ,sCAAsC;AACxE,SAASC,UAAU,QAA8B,8BAA8B;AAC/E,SAASC,OAAO,QAA2B,2BAA2B;AACtE,SAASC,QAAQ,QAA4B,4BAA4B;AACzE,SAASC,YAAY,QAAgC,gCAAgC;AACrF,SAASC,YAAY,QAAgC,gCAAgC;AACrF,SAASC,SAAS,QAA6B,6BAA6B;AAC5E,SAASC,IAAI,QAAwB,uBAAuB;AAC5D,SAASC,QAAQ,QAA4B,4BAA4B;AACzE,SAASC,cAAc,QAAkC,mCAAmC;AAC5F,SAASC,UAAU,QAA8B,8BAA8B;AAC/E,SAASC,SAAS,EAAEC,oBAAoB,QAA6B,6BAA6B;AAClG,SAASC,eAAe,QAAmC,mCAAmC;AAC9F,SAASC,UAAU,QAA8B,8BAA8B;AAC/E,SAASC,IAAI,QAAwB,uBAAuB;AAC5D,SAASC,UAAU,QAA8B,8BAA8B;AAC/E,SACEC,KAAK,QAIA,wBAAwB;AAC/B,SAASC,aAAa,QAAiC,iCAAiC;AACxF,SAASC,YAAY,QAAgC,gCAAgC;AACrF,SAASC,eAAe,QAAmC,mCAAmC;AAC9F,SAASC,GAAG,QAAuB,sBAAsB;AACzD,SAASC,SAAS,QAA6B,4BAA4B;AAC3E,SAASC,MAAM,QAA0B,0BAA0B;AACnE,SAASC,SAAS,QAA6B,6BAA6B;AAC5E,SAASC,QAAQ,QAA4B,2BAA2B;AACxE,SAASC,IAAI,QAAwB,uBAAuB;AAC5D,SAASC,GAAG,QAAuB,sBAAsB;AACzD,SAASC,MAAM,QAA0B,yBAAyB;AAClE,SAASC,WAAW,QAA+B,+BAA+B;AAClF,SAASC,OAAO,QAA2B,0BAA0B;AACrE,SAASC,WAAW,QAA+B,+BAA+B;AAElF,SAASC,OAAO,QAA2B,sBAAsB;AACjE,SAASC,QAAQ,QAA4B,mBAAmB;AAChE,SAASC,SAAS,QAAQ,wBAAwB;;AAElD;;AAiBA;AACA,SAASC,MAAM,QAAQ,gBAAgB;AACvC,SAASC,eAAe,QAAQ,yBAAyB;AACzD,SAASC,OAAO,EAAEC,YAAY,QAAQ,mBAAmB;;AAEzD;AACA,SAASC,QAAQ,QAAQ,kBAAkB;AAC3C,SAASC,aAAa,QAAQ,wBAAwB;AACtD,SAASC,gBAAgB,QAAQ,0BAA0B;AAC3D,SAASC,mBAAmB,QAAQ,6BAA6B","ignoreList":[]}
@@ -1,13 +1,11 @@
1
1
  "use strict";
2
2
 
3
- import { Line, Rect, Circle } from 'react-native-svg';
4
3
  import QRCode from 'qrcode';
5
- import { LightTheme } from '../utils/ThemeUtil';
6
- import { jsx as _jsx } from "react/jsx-runtime";
7
4
  const CONNECTING_ERROR_MARGIN = 0.1;
8
5
  const CIRCLE_SIZE_MODIFIER = 2.5;
9
6
  const QRCODE_MATRIX_MARGIN = 7;
10
- function isAdjecentDots(cy, otherCy, cellSize) {
7
+ const LOGO_PADDING = 25;
8
+ function isAdjacentDots(cy, otherCy, cellSize) {
11
9
  if (cy === otherCy) {
12
10
  return false;
13
11
  }
@@ -21,128 +19,230 @@ function getMatrix(value, errorCorrectionLevel) {
21
19
  const sqrt = Math.sqrt(arr.length);
22
20
  return arr.reduce((rows, key, index) => (index % sqrt === 0 ? rows.push([key]) : rows[rows.length - 1].push(key)) && rows, []);
23
21
  }
24
- export const QRCodeUtil = {
25
- generate(uri, size, logoSize) {
26
- const dotColor = LightTheme['inverse-000'];
27
- const edgeColor = LightTheme['inverse-100'];
28
- const dots = [];
29
- const matrix = getMatrix(uri, 'Q');
30
- const cellSize = size / matrix.length;
31
- const qrList = [{
32
- x: 0,
33
- y: 0
34
- }, {
35
- x: 1,
36
- y: 0
37
- }, {
38
- x: 0,
39
- y: 1
40
- }];
41
- qrList.forEach(({
42
- x,
43
- y
44
- }) => {
45
- const x1 = (matrix.length - QRCODE_MATRIX_MARGIN) * cellSize * x;
46
- const y1 = (matrix.length - QRCODE_MATRIX_MARGIN) * cellSize * y;
47
- const borderRadius = 0.32;
48
- for (let i = 0; i < qrList.length; i += 1) {
49
- const dotSize = cellSize * (QRCODE_MATRIX_MARGIN - i * 2);
50
- dots.push(/*#__PURE__*/_jsx(Rect, {
51
- fill: i % 2 === 0 ? dotColor : edgeColor,
52
- height: dotSize,
53
- rx: dotSize * borderRadius,
54
- ry: dotSize * borderRadius,
55
- width: dotSize,
56
- x: x1 + cellSize * i,
57
- y: y1 + cellSize * i
58
- }, `rect_${x1 + cellSize * i}_${y1 + cellSize * i}`));
59
- }
60
- });
61
- const clearArenaSize = Math.floor((logoSize + 25) / cellSize);
62
- const matrixMiddleStart = matrix.length / 2 - clearArenaSize / 2;
63
- const matrixMiddleEnd = matrix.length / 2 + clearArenaSize / 2 - 1;
64
- const circles = [];
65
-
66
- // Getting coordinates for each of the QR code dots
67
- matrix.forEach((row, i) => {
68
- row.forEach((_, j) => {
69
- if (matrix[i][j]) {
70
- 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))) {
71
- if (!(i > matrixMiddleStart && i < matrixMiddleEnd && j > matrixMiddleStart && j < matrixMiddleEnd)) {
72
- const cx = i * cellSize + cellSize / 2;
73
- const cy = j * cellSize + cellSize / 2;
74
- circles.push([cx, cy]);
75
- }
76
- }
77
- }
22
+ function processQRMatrix(matrix, size, logoSize, logoBorderRadius) {
23
+ const matrixLength = matrix.length;
24
+ const cellSize = size / matrixLength;
25
+ const halfCellSize = cellSize / 2;
26
+ const strokeWidth = cellSize / (CIRCLE_SIZE_MODIFIER / 2);
27
+ const circleRadius = cellSize / CIRCLE_SIZE_MODIFIER;
28
+ const rects = [];
29
+ const circles = [];
30
+ const lines = [];
31
+
32
+ // Generate corner rectangles - optimized with direct indexing
33
+ const qrList = [{
34
+ x: 0,
35
+ y: 0
36
+ }, {
37
+ x: 1,
38
+ y: 0
39
+ }, {
40
+ x: 0,
41
+ y: 1
42
+ }];
43
+ const baseOffset = (matrixLength - QRCODE_MATRIX_MARGIN) * cellSize;
44
+ for (let qrIdx = 0; qrIdx < 3; qrIdx++) {
45
+ const qr = qrList[qrIdx];
46
+ const x1 = baseOffset * qr.x;
47
+ const y1 = baseOffset * qr.y;
48
+ for (let i = 0; i < 3; i++) {
49
+ const dotSize = cellSize * (QRCODE_MATRIX_MARGIN - i * 2);
50
+ rects.push({
51
+ x: x1 + cellSize * i,
52
+ y: y1 + cellSize * i,
53
+ size: dotSize,
54
+ fillType: i % 2 === 0 ? 'dot' : 'edge'
78
55
  });
79
- });
56
+ }
57
+ }
58
+ const circleCoords = [];
59
+
60
+ // Determine if using circular or rounded rectangle hole
61
+ const isCircular = logoBorderRadius === undefined;
62
+ const effectiveBorderRadius = logoBorderRadius ?? (logoSize + LOGO_PADDING) / 2;
80
63
 
81
- // Cx to multiple cys
82
- const circlesToConnect = {};
64
+ // Calculate circle coordinates - optimized with configurable hole shape
65
+ for (let i = 0; i < matrixLength; i++) {
66
+ const row = matrix[i];
67
+ const rowLength = row.length;
68
+ for (let j = 0; j < rowLength; j++) {
69
+ if (!row[j]) continue;
70
+
71
+ // Skip corners check
72
+ 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)) {
73
+ continue;
74
+ }
83
75
 
84
- // Mapping all dots cicles on the same x axis
85
- circles.forEach(([cx, cy]) => {
86
- if (circlesToConnect[cx]) {
87
- circlesToConnect[cx]?.push(cy);
76
+ // Calculate pixel coordinates first
77
+ const cx = i * cellSize + halfCellSize;
78
+ const cy = j * cellSize + halfCellSize;
79
+
80
+ // Skip hole calculation if logoSize is 0 (arenaClear)
81
+ if (logoSize === 0) {
82
+ circleCoords.push([cx, cy]);
83
+ continue;
84
+ }
85
+
86
+ // Calculate distance from center in pixel space
87
+ const centerX = size / 2;
88
+ const centerY = size / 2;
89
+ let isOutsideLogoArea = false;
90
+ if (isCircular) {
91
+ // Circular hole
92
+ const dx = cx - centerX;
93
+ const dy = cy - centerY;
94
+ const distanceFromCenter = Math.sqrt(dx * dx + dy * dy);
95
+ const pixelRadius = (logoSize + LOGO_PADDING) / 2;
96
+ isOutsideLogoArea = distanceFromCenter >= pixelRadius;
88
97
  } else {
89
- circlesToConnect[cx] = [cy];
98
+ // Rounded rectangle hole
99
+ const halfLogoArea = (logoSize + LOGO_PADDING) / 2;
100
+ const dx = Math.abs(cx - centerX);
101
+ const dy = Math.abs(cy - centerY);
102
+
103
+ // Check if point is outside the rounded rectangle
104
+ if (dx > halfLogoArea || dy > halfLogoArea) {
105
+ isOutsideLogoArea = true;
106
+ } else if (dx > halfLogoArea - effectiveBorderRadius && dy > halfLogoArea - effectiveBorderRadius) {
107
+ // Check corner radius
108
+ const cornerDx = dx - (halfLogoArea - effectiveBorderRadius);
109
+ const cornerDy = dy - (halfLogoArea - effectiveBorderRadius);
110
+ const cornerDistance = Math.sqrt(cornerDx * cornerDx + cornerDy * cornerDy);
111
+ isOutsideLogoArea = cornerDistance >= effectiveBorderRadius;
112
+ } else {
113
+ isOutsideLogoArea = false;
114
+ }
115
+ }
116
+ if (isOutsideLogoArea) {
117
+ circleCoords.push([cx, cy]);
90
118
  }
91
- });
92
-
93
- // Drawing lonely dots
94
- Object.entries(circlesToConnect)
95
- // Only get dots that have neighbors
96
- .map(([cx, cys]) => {
97
- const newCys = cys.filter(cy => cys.every(otherCy => !isAdjecentDots(cy, otherCy, cellSize)));
98
- return [Number(cx), newCys];
99
- }).forEach(([cx, cys]) => {
100
- cys.forEach(cy => {
101
- dots.push(/*#__PURE__*/_jsx(Circle, {
102
- cx: cx,
103
- cy: cy,
104
- fill: dotColor,
105
- r: cellSize / CIRCLE_SIZE_MODIFIER
106
- }, `circle_${cx}_${cy}`));
119
+ }
120
+ }
121
+
122
+ // Build circlesToConnect - optimized loop
123
+ const circlesToConnect = {};
124
+ for (let k = 0; k < circleCoords.length; k++) {
125
+ const [cx, cy] = circleCoords[k];
126
+ const existing = circlesToConnect[cx];
127
+ if (existing) {
128
+ existing.push(cy);
129
+ } else {
130
+ circlesToConnect[cx] = [cy];
131
+ }
132
+ }
133
+
134
+ // Process circles and lines - optimized to avoid Object.entries
135
+ for (const cxKey in circlesToConnect) {
136
+ const cx = Number(cxKey);
137
+ const cys = circlesToConnect[cxKey];
138
+ if (cys.length === 1) {
139
+ const firstCy = cys[0];
140
+ if (firstCy === undefined) continue;
141
+
142
+ // Single dot, add as circle
143
+ circles.push({
144
+ cx,
145
+ cy: firstCy,
146
+ r: circleRadius
107
147
  });
108
- });
109
-
110
- // Drawing lines for dots that are close to each other
111
- Object.entries(circlesToConnect)
112
- // Only get dots that have more than one dot on the x axis
113
- .filter(([_, cys]) => cys.length > 1)
114
- // Removing dots with no neighbors
115
- .map(([cx, cys]) => {
116
- const newCys = cys.filter(cy => cys.some(otherCy => isAdjecentDots(cy, otherCy, cellSize)));
117
- return [Number(cx), newCys];
118
- })
119
- // Get the coordinates of the first and last dot of a line
120
- .map(([cx, cys]) => {
121
- cys.sort((a, b) => a < b ? -1 : 1);
122
- const groups = [];
123
- for (const cy of cys) {
124
- const group = groups.find(item => item.some(otherCy => isAdjecentDots(cy, otherCy, cellSize)));
125
- if (group) {
126
- group.push(cy);
148
+ continue;
149
+ }
150
+
151
+ // Sort once for line grouping
152
+ cys.sort((a, b) => a - b);
153
+
154
+ // Track which dots are connected and which are lonely
155
+ const isConnected = new Array(cys.length).fill(false);
156
+
157
+ // Find all adjacent pairs
158
+ for (let i = 0; i < cys.length - 1; i++) {
159
+ const currentCy = cys[i];
160
+ const nextCy = cys[i + 1];
161
+ if (currentCy !== undefined && nextCy !== undefined && isAdjacentDots(currentCy, nextCy, cellSize)) {
162
+ isConnected[i] = true;
163
+ isConnected[i + 1] = true;
164
+ }
165
+ }
166
+
167
+ // Add lonely dots as circles and build line groups
168
+ let groupStart = -1;
169
+ let groupEnd = -1;
170
+ for (let i = 0; i < cys.length; i++) {
171
+ const cy = cys[i];
172
+ if (cy === undefined) continue;
173
+ if (!isConnected[i]) {
174
+ // Lonely dot - add as circle
175
+ circles.push({
176
+ cx,
177
+ cy,
178
+ r: circleRadius
179
+ });
180
+
181
+ // Finish any ongoing line group
182
+ if (groupStart !== -1 && groupEnd !== -1 && groupStart !== groupEnd) {
183
+ lines.push({
184
+ x1: cx,
185
+ x2: cx,
186
+ y1: groupStart,
187
+ y2: groupEnd,
188
+ strokeWidth
189
+ });
190
+ }
191
+ groupStart = -1;
192
+ groupEnd = -1;
193
+ } else {
194
+ // Part of a line group
195
+ if (groupStart === -1) {
196
+ groupStart = cy;
197
+ groupEnd = cy;
127
198
  } else {
128
- groups.push([cy]);
199
+ // Check if adjacent to previous
200
+ const prevCy = cys[i - 1];
201
+ if (i > 0 && prevCy !== undefined && isAdjacentDots(cy, prevCy, cellSize)) {
202
+ groupEnd = cy;
203
+ } else {
204
+ // Gap in the group, finish previous line
205
+ if (groupStart !== groupEnd) {
206
+ lines.push({
207
+ x1: cx,
208
+ x2: cx,
209
+ y1: groupStart,
210
+ y2: groupEnd,
211
+ strokeWidth
212
+ });
213
+ }
214
+ groupStart = cy;
215
+ groupEnd = cy;
216
+ }
129
217
  }
130
218
  }
131
- return [cx, groups.map(item => [item[0], item[item.length - 1]])];
132
- }).forEach(([cx, groups]) => {
133
- groups.forEach(([y1, y2]) => {
134
- dots.push(/*#__PURE__*/_jsx(Line, {
135
- x1: cx,
136
- x2: cx,
137
- y1: y1,
138
- y2: y2,
139
- stroke: dotColor,
140
- strokeWidth: cellSize / (CIRCLE_SIZE_MODIFIER / 2),
141
- strokeLinecap: "round"
142
- }, `line_${cx}_${y1}_${y2}`));
219
+ }
220
+
221
+ // Don't forget the last group
222
+ if (groupStart !== -1 && groupEnd !== -1 && groupStart !== groupEnd) {
223
+ lines.push({
224
+ x1: cx,
225
+ x2: cx,
226
+ y1: groupStart,
227
+ y2: groupEnd,
228
+ strokeWidth
143
229
  });
144
- });
145
- return dots;
230
+ }
146
231
  }
232
+ return {
233
+ rects,
234
+ circles,
235
+ lines
236
+ };
237
+ }
238
+ export function generateQRData(uri, size, logoSize, logoBorderRadius) {
239
+ if (!uri || size <= 0) {
240
+ throw new Error('Invalid QR code parameters');
241
+ }
242
+ const matrix = getMatrix(uri, 'Q');
243
+ return processQRMatrix(matrix, size, logoSize, logoBorderRadius);
244
+ }
245
+ export const QRCodeUtil = {
246
+ generate: generateQRData
147
247
  };
148
248
  //# sourceMappingURL=QRCodeUtil.js.map