@@ -4,13 +4,14 @@ import { ERROR_LEVEL_MAP, getImageSettings, getMarginSize } from '../utils';
44import React from 'react' ;
55
66interface Options {
7- value : string ;
7+ value : string | string [ ] ;
88 level : ErrorCorrectionLevel ;
99 minVersion : number ;
1010 includeMargin : boolean ;
1111 marginSize ?: number ;
1212 imageSettings ?: ImageSettings ;
1313 size : number ;
14+ boostLevel ?: boolean ;
1415}
1516
1617export const useQRCode = ( opt : Options ) => {
@@ -22,12 +23,24 @@ export const useQRCode = (opt: Options) => {
2223 marginSize,
2324 imageSettings,
2425 size,
26+ boostLevel,
2527 } = opt ;
2628
27- const memoizedQrcode = React . useMemo ( ( ) => {
28- const segments = QrSegment . makeSegments ( value ) ;
29- return QrCode . encodeSegments ( segments , ERROR_LEVEL_MAP [ level ] , minVersion ) ;
30- } , [ value , level , minVersion ] ) ;
29+ const memoizedQrcode = React . useMemo < QrCode > ( ( ) => {
30+ const values = Array . isArray ( value ) ? value : [ value ] ;
31+ const segments = values . reduce < QrSegment [ ] > ( ( acc , val ) => {
32+ acc . push ( ...QrSegment . makeSegments ( val ) ) ;
33+ return acc ;
34+ } , [ ] ) ;
35+ return QrCode . encodeSegments (
36+ segments ,
37+ ERROR_LEVEL_MAP [ level ] ,
38+ minVersion ,
39+ undefined ,
40+ undefined ,
41+ boostLevel ,
42+ ) ;
43+ } , [ value , level , minVersion , boostLevel ] ) ;
3144
3245 return React . useMemo ( ( ) => {
3346 const cs = memoizedQrcode . getModules ( ) ;
0 commit comments