@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.
- package/lib/commonjs/assets/svg/WalletConnect.js +4 -5
- package/lib/commonjs/assets/svg/WalletConnect.js.map +1 -1
- package/lib/commonjs/components/wui-modal/index.js +14 -8
- package/lib/commonjs/components/wui-modal/index.js.map +1 -1
- package/lib/commonjs/composites/wui-qr-code/index.js +51 -19
- package/lib/commonjs/composites/wui-qr-code/index.js.map +1 -1
- package/lib/commonjs/composites/wui-qr-code/styles.js +0 -3
- package/lib/commonjs/composites/wui-qr-code/styles.js.map +1 -1
- package/lib/commonjs/context/ThemeContext.js +2 -5
- package/lib/commonjs/context/ThemeContext.js.map +1 -1
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/utils/QRCodeUtil.js +217 -116
- package/lib/commonjs/utils/QRCodeUtil.js.map +1 -1
- package/lib/module/assets/svg/WalletConnect.js +4 -5
- package/lib/module/assets/svg/WalletConnect.js.map +1 -1
- package/lib/module/components/wui-modal/index.js +15 -9
- package/lib/module/components/wui-modal/index.js.map +1 -1
- package/lib/module/composites/wui-qr-code/index.js +50 -19
- package/lib/module/composites/wui-qr-code/index.js.map +1 -1
- package/lib/module/composites/wui-qr-code/styles.js +0 -3
- package/lib/module/composites/wui-qr-code/styles.js.map +1 -1
- package/lib/module/context/ThemeContext.js +2 -5
- package/lib/module/context/ThemeContext.js.map +1 -1
- package/lib/module/index.js.map +1 -1
- package/lib/module/utils/QRCodeUtil.js +216 -116
- package/lib/module/utils/QRCodeUtil.js.map +1 -1
- package/lib/typescript/assets/svg/WalletConnect.d.ts.map +1 -1
- package/lib/typescript/components/wui-modal/index.d.ts +8 -3
- package/lib/typescript/components/wui-modal/index.d.ts.map +1 -1
- package/lib/typescript/composites/wui-qr-code/index.d.ts +3 -1
- package/lib/typescript/composites/wui-qr-code/index.d.ts.map +1 -1
- package/lib/typescript/composites/wui-qr-code/styles.d.ts +0 -3
- package/lib/typescript/composites/wui-qr-code/styles.d.ts.map +1 -1
- package/lib/typescript/context/ThemeContext.d.ts +2 -2
- package/lib/typescript/context/ThemeContext.d.ts.map +1 -1
- package/lib/typescript/index.d.ts +1 -1
- package/lib/typescript/index.d.ts.map +1 -1
- package/lib/typescript/utils/QRCodeUtil.d.ts +22 -2
- package/lib/typescript/utils/QRCodeUtil.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/assets/svg/WalletConnect.tsx +4 -5
- package/src/components/wui-modal/index.tsx +32 -12
- package/src/composites/wui-qr-code/index.tsx +75 -16
- package/src/composites/wui-qr-code/styles.ts +0 -3
- package/src/context/ThemeContext.tsx +4 -7
- package/src/index.ts +6 -1
- 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
|
|
26
|
-
const
|
|
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: [
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
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:
|
|
45
|
-
width:
|
|
46
|
-
style:
|
|
49
|
+
height: _logoSize,
|
|
50
|
+
width: _logoSize,
|
|
51
|
+
style: {
|
|
52
|
+
position: 'absolute'
|
|
53
|
+
}
|
|
47
54
|
});
|
|
48
55
|
};
|
|
49
|
-
|
|
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__*/
|
|
70
|
+
children: [/*#__PURE__*/_jsxs(Svg, {
|
|
57
71
|
height: qrSize,
|
|
58
72
|
width: qrSize,
|
|
59
|
-
children:
|
|
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","
|
|
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":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["StyleSheet","BorderRadius","Spacing","create","container","alignItems","justifyContent","borderRadius","l","padding","alignSelf"
|
|
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
|
-
|
|
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
|
|
34
|
+
}, [context?.themeMode, context?.themeVariables]);
|
|
38
35
|
}
|
|
39
36
|
//# sourceMappingURL=ThemeContext.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
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":[]}
|
package/lib/module/index.js.map
CHANGED
|
@@ -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,
|
|
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
|
-
|
|
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
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
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
|
-
|
|
82
|
-
|
|
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
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
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
|
-
|
|
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
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
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
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
//
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
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
|
-
|
|
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
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
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
|