@mleonard9/vin-scanner 1.5.1 → 1.5.2
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/README.md +19 -2
- package/ios/VisionCameraBarcodeScanner.m +2 -23
- package/ios/VisionCameraTextRecognition.m +2 -21
- package/lib/commonjs/ManualVinInput.js +25 -15
- package/lib/commonjs/ManualVinInput.js.map +1 -1
- package/lib/commonjs/PendingVinBanner.js +44 -21
- package/lib/commonjs/PendingVinBanner.js.map +1 -1
- package/lib/commonjs/ScannerChromeOverlay.js +185 -0
- package/lib/commonjs/ScannerChromeOverlay.js.map +1 -0
- package/lib/commonjs/TextVinPrompt.js +33 -18
- package/lib/commonjs/TextVinPrompt.js.map +1 -1
- package/lib/commonjs/index.js +11 -3
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/scanBarcodes.js +6 -2
- package/lib/commonjs/scanBarcodes.js.map +1 -1
- package/lib/commonjs/scanText.js +6 -2
- package/lib/commonjs/scanText.js.map +1 -1
- package/lib/commonjs/useVinScanner.js +15 -4
- package/lib/commonjs/useVinScanner.js.map +1 -1
- package/lib/commonjs/vinUtils.js +6 -4
- package/lib/commonjs/vinUtils.js.map +1 -1
- package/lib/module/ManualVinInput.js +25 -15
- package/lib/module/ManualVinInput.js.map +1 -1
- package/lib/module/PendingVinBanner.js +45 -22
- package/lib/module/PendingVinBanner.js.map +1 -1
- package/lib/module/ScannerChromeOverlay.js +177 -0
- package/lib/module/ScannerChromeOverlay.js.map +1 -0
- package/lib/module/TextVinPrompt.js +33 -18
- package/lib/module/TextVinPrompt.js.map +1 -1
- package/lib/module/index.js +5 -3
- package/lib/module/index.js.map +1 -1
- package/lib/module/scanBarcodes.js +6 -2
- package/lib/module/scanBarcodes.js.map +1 -1
- package/lib/module/scanText.js +6 -2
- package/lib/module/scanText.js.map +1 -1
- package/lib/module/useVinScanner.js +15 -4
- package/lib/module/useVinScanner.js.map +1 -1
- package/lib/module/vinUtils.js +6 -4
- package/lib/module/vinUtils.js.map +1 -1
- package/lib/typescript/src/ManualVinInput.d.ts.map +1 -1
- package/lib/typescript/src/PendingVinBanner.d.ts +2 -1
- package/lib/typescript/src/PendingVinBanner.d.ts.map +1 -1
- package/lib/typescript/src/ScannerChromeOverlay.d.ts +19 -0
- package/lib/typescript/src/ScannerChromeOverlay.d.ts.map +1 -0
- package/lib/typescript/src/TextVinPrompt.d.ts.map +1 -1
- package/lib/typescript/src/index.d.ts +1 -0
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/lib/typescript/src/scanBarcodes.d.ts.map +1 -1
- package/lib/typescript/src/scanText.d.ts.map +1 -1
- package/lib/typescript/src/types.d.ts +8 -2
- package/lib/typescript/src/types.d.ts.map +1 -1
- package/lib/typescript/src/useVinScanner.d.ts.map +1 -1
- package/lib/typescript/src/vinUtils.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/ManualVinInput.tsx +22 -15
- package/src/PendingVinBanner.tsx +66 -27
- package/src/ScannerChromeOverlay.tsx +214 -0
- package/src/TextVinPrompt.tsx +31 -16
- package/src/index.tsx +6 -2
- package/src/scanBarcodes.ts +9 -5
- package/src/scanText.ts +9 -5
- package/src/types.ts +8 -2
- package/src/useVinScanner.ts +20 -4
- package/src/vinUtils.ts +5 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ManualVinInput.d.ts","sourceRoot":"","sources":["../../../src/ManualVinInput.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4B,MAAM,OAAO,CAAC;AAIjD,KAAK,mBAAmB,GAAG;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AA6BF,wBAAgB,cAAc,CAAC,EAC7B,YAAiB,EACjB,QAAQ,EACR,WAAuB,EACvB,WAAuB,EACvB,WAAoC,GACrC,EAAE,mBAAmB,qBA0DrB;
|
|
1
|
+
{"version":3,"file":"ManualVinInput.d.ts","sourceRoot":"","sources":["../../../src/ManualVinInput.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4B,MAAM,OAAO,CAAC;AAIjD,KAAK,mBAAmB,GAAG;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AA6BF,wBAAgB,cAAc,CAAC,EAC7B,YAAiB,EACjB,QAAQ,EACR,WAAuB,EACvB,WAAuB,EACvB,WAAoC,GACrC,EAAE,mBAAmB,qBA0DrB;AAuFD,eAAe,cAAc,CAAC"}
|
|
@@ -7,11 +7,12 @@ type PendingVinBannerProps = {
|
|
|
7
7
|
onDismiss?: () => void;
|
|
8
8
|
buttonLabel?: string;
|
|
9
9
|
buttonColor?: string;
|
|
10
|
+
bottomOffset?: number;
|
|
10
11
|
};
|
|
11
12
|
/**
|
|
12
13
|
* Compact bottom banner for pending text VINs.
|
|
13
14
|
* Works well together with `text.requireConfirmation`.
|
|
14
15
|
*/
|
|
15
|
-
export declare function PendingVinBanner({ visible, candidates, onConfirm, onDismiss, buttonLabel, buttonColor, }: PendingVinBannerProps): React.JSX.Element | null;
|
|
16
|
+
export declare function PendingVinBanner({ visible, candidates, onConfirm, onDismiss, buttonLabel, buttonColor, bottomOffset, }: PendingVinBannerProps): React.JSX.Element | null;
|
|
16
17
|
export default PendingVinBanner;
|
|
17
18
|
//# sourceMappingURL=PendingVinBanner.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PendingVinBanner.d.ts","sourceRoot":"","sources":["../../../src/PendingVinBanner.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"PendingVinBanner.d.ts","sourceRoot":"","sources":["../../../src/PendingVinBanner.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAU1B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE5C,KAAK,qBAAqB,GAAG;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,YAAY,EAAE,CAAC;IAC3B,SAAS,EAAE,CAAC,SAAS,EAAE,YAAY,KAAK,IAAI,CAAC;IAC7C,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,EAC/B,OAAO,EACP,UAAU,EACV,SAAS,EACT,SAAS,EACT,WAAuB,EACvB,WAAuB,EACvB,YAAkB,GACnB,EAAE,qBAAqB,4BA+DvB;AAoED,eAAe,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
type ScannerChromeOverlayProps = {
|
|
3
|
+
onBackPress?: () => void;
|
|
4
|
+
onManualEntryPress?: () => void;
|
|
5
|
+
onFlashPress?: () => void;
|
|
6
|
+
isTorchOn?: boolean;
|
|
7
|
+
backContent?: React.ReactNode;
|
|
8
|
+
manualEntryContent?: React.ReactNode;
|
|
9
|
+
flashOnContent?: React.ReactNode;
|
|
10
|
+
flashOffContent?: React.ReactNode;
|
|
11
|
+
centerContent?: React.ReactNode;
|
|
12
|
+
frameSize?: number;
|
|
13
|
+
cornerColor?: string;
|
|
14
|
+
topOffset?: number;
|
|
15
|
+
bottomOffset?: number;
|
|
16
|
+
};
|
|
17
|
+
export declare function ScannerChromeOverlay({ onBackPress, onManualEntryPress, onFlashPress, isTorchOn, backContent, manualEntryContent, flashOnContent, flashOffContent, centerContent, frameSize, cornerColor, topOffset, bottomOffset, }: ScannerChromeOverlayProps): React.JSX.Element;
|
|
18
|
+
export default ScannerChromeOverlay;
|
|
19
|
+
//# sourceMappingURL=ScannerChromeOverlay.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ScannerChromeOverlay.d.ts","sourceRoot":"","sources":["../../../src/ScannerChromeOverlay.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAU1B,KAAK,yBAAyB,GAAG;IAC/B,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB,kBAAkB,CAAC,EAAE,MAAM,IAAI,CAAC;IAChC,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC9B,kBAAkB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACrC,cAAc,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACjC,eAAe,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAClC,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAsBF,wBAAgB,oBAAoB,CAAC,EACnC,WAAW,EACX,kBAAkB,EAClB,YAAY,EACZ,SAAiB,EACjB,WAAW,EACX,kBAAkB,EAClB,cAAc,EACd,eAAe,EACf,aAAa,EACb,SAAe,EACf,WAAqB,EACrB,SAAc,EACd,YAAiB,GAClB,EAAE,yBAAyB,qBAuD3B;AAkGD,eAAe,oBAAoB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TextVinPrompt.d.ts","sourceRoot":"","sources":["../../../src/TextVinPrompt.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAS1B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE5C,KAAK,kBAAkB,GAAG;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,YAAY,EAAE,CAAC;IAC3B,SAAS,EAAE,CAAC,SAAS,EAAE,YAAY,KAAK,IAAI,CAAC;IAC7C,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,EAC5B,OAAO,EACP,UAAU,EACV,SAAS,EACT,SAAS,EACT,KAAsB,EACtB,QAAQ,EACR,WAAuB,EACvB,WAAuB,GACxB,EAAE,kBAAkB,
|
|
1
|
+
{"version":3,"file":"TextVinPrompt.d.ts","sourceRoot":"","sources":["../../../src/TextVinPrompt.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAS1B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE5C,KAAK,kBAAkB,GAAG;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,YAAY,EAAE,CAAC;IAC3B,SAAS,EAAE,CAAC,SAAS,EAAE,YAAY,KAAK,IAAI,CAAC;IAC7C,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,EAC5B,OAAO,EACP,UAAU,EACV,SAAS,EACT,SAAS,EACT,KAAsB,EACtB,QAAQ,EACR,WAAuB,EACvB,WAAuB,GACxB,EAAE,kBAAkB,4BA6CpB;AAgFD,eAAe,aAAa,CAAC"}
|
|
@@ -9,4 +9,5 @@ export { isValidVin } from './vinUtils';
|
|
|
9
9
|
export { TextVinPrompt } from './TextVinPrompt';
|
|
10
10
|
export { PendingVinBanner } from './PendingVinBanner';
|
|
11
11
|
export { ManualVinInput } from './ManualVinInput';
|
|
12
|
+
export { ScannerChromeOverlay } from './ScannerChromeOverlay';
|
|
12
13
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA2C,MAAM,OAAO,CAAC;AAyBhE,eAAO,MAAM,MAAM;;;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA2C,MAAM,OAAO,CAAC;AAyBhE,eAAO,MAAM,MAAM;;;gFAuQjB,CAAC;AA2BH,YAAY,EACV,gBAAgB,EAChB,aAAa,EACb,qBAAqB,EACrB,WAAW,EACX,cAAc,EACd,WAAW,EACX,gBAAgB,EAChB,aAAa,EACb,aAAa,EACb,sBAAsB,EACtB,kBAAkB,EAClB,YAAY,EACZ,kBAAkB,EAClB,eAAe,EACf,iBAAiB,EACjB,aAAa,GACd,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scanBarcodes.d.ts","sourceRoot":"","sources":["../../../src/scanBarcodes.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAGV,oBAAoB,EAIpB,kBAAkB,EAEnB,MAAM,SAAS,CAAC;AAsLjB,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,kBAAkB,GAC1B,oBAAoB,
|
|
1
|
+
{"version":3,"file":"scanBarcodes.d.ts","sourceRoot":"","sources":["../../../src/scanBarcodes.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAGV,oBAAoB,EAIpB,kBAAkB,EAEnB,MAAM,SAAS,CAAC;AAsLjB,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,kBAAkB,GAC1B,oBAAoB,CA+BtB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scanText.d.ts","sourceRoot":"","sources":["../../../src/scanText.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAKV,sBAAsB,EACtB,qBAAqB,EACtB,MAAM,SAAS,CAAC;AAkJjB,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,sBAAsB,GAC9B,qBAAqB,
|
|
1
|
+
{"version":3,"file":"scanText.d.ts","sourceRoot":"","sources":["../../../src/scanText.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAKV,sBAAsB,EACtB,qBAAqB,EACtB,MAAM,SAAS,CAAC;AAkJjB,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,sBAAsB,GAC9B,qBAAqB,CAgCvB"}
|
|
@@ -104,6 +104,12 @@ export type BarcodeScannerOptions = {
|
|
|
104
104
|
export type TextScannerOptions = {
|
|
105
105
|
enabled?: boolean;
|
|
106
106
|
language?: TextRecognitionLanguage;
|
|
107
|
+
/**
|
|
108
|
+
* Optional regex pattern forwarded to the native text recognizer to reduce
|
|
109
|
+
* bridge traffic before VIN validation runs in JS.
|
|
110
|
+
* Default: `[A-Z0-9]{10,}`
|
|
111
|
+
*/
|
|
112
|
+
validationPattern?: string;
|
|
107
113
|
/**
|
|
108
114
|
* When true, text VINs are surfaced via `onTextPending` and must be
|
|
109
115
|
* confirmed manually; barcode VINs still emit immediately.
|
|
@@ -162,7 +168,7 @@ export type DetectionOptions = {
|
|
|
162
168
|
/**
|
|
163
169
|
* Enable intelligent frame quality checks to skip blurry or dark frames.
|
|
164
170
|
* This improves accuracy by only processing high-quality frames.
|
|
165
|
-
*
|
|
171
|
+
* Set to `false` to disable the luma/sharpness gates entirely.
|
|
166
172
|
*/
|
|
167
173
|
enableFrameQualityCheck?: boolean;
|
|
168
174
|
/**
|
|
@@ -177,7 +183,7 @@ export type DetectionOptions = {
|
|
|
177
183
|
minSharpness?: number;
|
|
178
184
|
/**
|
|
179
185
|
* Minimum candidate confidence required before emitting.
|
|
180
|
-
* Default: 0.
|
|
186
|
+
* Default: 0 (checksum validity is the primary acceptance gate).
|
|
181
187
|
*/
|
|
182
188
|
minConfidence?: number;
|
|
183
189
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useVinScanner.d.ts","sourceRoot":"","sources":["../../../src/useVinScanner.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAmB,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAUhF,wBAAgB,aAAa,CAAC,OAAO,CAAC,EAAE,iBAAiB;;;
|
|
1
|
+
{"version":3,"file":"useVinScanner.d.ts","sourceRoot":"","sources":["../../../src/useVinScanner.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAmB,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAUhF,wBAAgB,aAAa,CAAC,OAAO,CAAC,EAAE,iBAAiB;;;sCAoTzC,MAAM;EAqCrB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vinUtils.d.ts","sourceRoot":"","sources":["../../../src/vinUtils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAEV,gBAAgB,EAChB,gBAAgB,EAChB,kBAAkB,EAClB,aAAa,EACb,UAAU,EAEV,uBAAuB,EACvB,YAAY,EAGZ,iBAAiB,EACjB,cAAc,EACf,MAAM,SAAS,CAAC;AAEjB,MAAM,MAAM,yBAAyB,GAAG;IACtC,OAAO,EAAE;QACP,OAAO,EAAE,OAAO,CAAC;QACjB,OAAO,EAAE,kBAAkB,CAAC;KAC7B,CAAC;IACF,IAAI,EAAE;QACJ,OAAO,EAAE,OAAO,CAAC;QACjB,QAAQ,EAAE,uBAAuB,CAAC;QAClC,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAC3B,mBAAmB,EAAE,OAAO,CAAC;QAC7B,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,yBAAyB,CAAC,GAAG;QACvE,gBAAgB,EAAE,MAAM,CAAC;QACzB,YAAY,EAAE,MAAM,CAAC;QACrB,gBAAgB,EAAE,gBAAgB,GAAG,IAAI,CAAC;QAC1C,UAAU,EAAE,UAAU,GAAG,IAAI,CAAC;QAC9B,OAAO,EAAE,MAAM,CAAC;QAChB,YAAY,EAAE,MAAM,CAAC;QACrB,aAAa,EAAE,MAAM,CAAC;QACtB,oBAAoB,EAAE,MAAM,CAAC;KAC9B,CAAC;IACF,WAAW,EAAE,OAAO,CAAC;IACrB,aAAa,EAAE,aAAa,CAAC;IAC7B,mBAAmB,EAAE,MAAM,CAAC;CAC7B,CAAC;
|
|
1
|
+
{"version":3,"file":"vinUtils.d.ts","sourceRoot":"","sources":["../../../src/vinUtils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAEV,gBAAgB,EAChB,gBAAgB,EAChB,kBAAkB,EAClB,aAAa,EACb,UAAU,EAEV,uBAAuB,EACvB,YAAY,EAGZ,iBAAiB,EACjB,cAAc,EACf,MAAM,SAAS,CAAC;AAEjB,MAAM,MAAM,yBAAyB,GAAG;IACtC,OAAO,EAAE;QACP,OAAO,EAAE,OAAO,CAAC;QACjB,OAAO,EAAE,kBAAkB,CAAC;KAC7B,CAAC;IACF,IAAI,EAAE;QACJ,OAAO,EAAE,OAAO,CAAC;QACjB,QAAQ,EAAE,uBAAuB,CAAC;QAClC,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAC3B,mBAAmB,EAAE,OAAO,CAAC;QAC7B,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,yBAAyB,CAAC,GAAG;QACvE,gBAAgB,EAAE,MAAM,CAAC;QACzB,YAAY,EAAE,MAAM,CAAC;QACrB,gBAAgB,EAAE,gBAAgB,GAAG,IAAI,CAAC;QAC1C,UAAU,EAAE,UAAU,GAAG,IAAI,CAAC;QAC9B,OAAO,EAAE,MAAM,CAAC;QAChB,YAAY,EAAE,MAAM,CAAC;QACrB,aAAa,EAAE,MAAM,CAAC;QACtB,oBAAoB,EAAE,MAAM,CAAC;KAC9B,CAAC;IACF,WAAW,EAAE,OAAO,CAAC;IACrB,aAAa,EAAE,aAAa,CAAC;IAC7B,mBAAmB,EAAE,MAAM,CAAC;CAC7B,CAAC;AAiCF,eAAO,MAAM,cAAc,GACzB,UAAU,iBAAiB,KAC1B,yBAkEF,CAAC;AA8VF;;;;;GAKG;AACH,eAAO,MAAM,UAAU,GAAI,OAAO,MAAM,KAAG,OAoC1C,CAAC;AAuLF,eAAO,MAAM,kBAAkB,GAC7B,SAAS,cAAc,EACvB,SAAS,yBAAyB,KACjC,YAAY,EAyBd,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAC7B,YAAY,YAAY,EAAE,EAC1B,SAAS,yBAAyB,KACjC,YAAY,GAAG,IAQjB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mleonard9/vin-scanner",
|
|
3
|
-
"version": "1.5.
|
|
3
|
+
"version": "1.5.2",
|
|
4
4
|
"description": "High-performance VIN scanner for React Native Vision Camera powered by Google ML Kit barcode + text recognition.",
|
|
5
5
|
"main": "lib/commonjs/index",
|
|
6
6
|
"module": "lib/module/index",
|
package/src/ManualVinInput.tsx
CHANGED
|
@@ -40,7 +40,7 @@ const DIGITS = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'];
|
|
|
40
40
|
export function ManualVinInput({
|
|
41
41
|
initialValue = '',
|
|
42
42
|
onSubmit,
|
|
43
|
-
buttonLabel = '
|
|
43
|
+
buttonLabel = 'Book It',
|
|
44
44
|
buttonColor = '#0A84FF',
|
|
45
45
|
placeholder = 'Enter VIN (17 chars)',
|
|
46
46
|
}: ManualVinInputProps) {
|
|
@@ -122,24 +122,31 @@ function Key({
|
|
|
122
122
|
const styles = StyleSheet.create({
|
|
123
123
|
container: {
|
|
124
124
|
width: '100%',
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
125
|
+
paddingVertical: 24,
|
|
126
|
+
paddingHorizontal: 12,
|
|
127
|
+
backgroundColor: 'white',
|
|
128
|
+
borderRadius: 20,
|
|
129
|
+
shadowColor: '#000',
|
|
130
|
+
shadowOffset: { width: 0, height: 2 },
|
|
131
|
+
shadowOpacity: 0.25,
|
|
132
|
+
shadowRadius: 4,
|
|
133
|
+
elevation: 5,
|
|
128
134
|
},
|
|
129
135
|
input: {
|
|
130
|
-
backgroundColor: '
|
|
131
|
-
color: '
|
|
136
|
+
backgroundColor: 'white',
|
|
137
|
+
color: '#111827',
|
|
132
138
|
paddingHorizontal: 12,
|
|
133
139
|
paddingVertical: 10,
|
|
134
|
-
borderRadius:
|
|
135
|
-
fontSize:
|
|
140
|
+
borderRadius: 5,
|
|
141
|
+
fontSize: 18,
|
|
136
142
|
letterSpacing: 1,
|
|
137
143
|
borderWidth: 1,
|
|
138
|
-
borderColor: '#
|
|
144
|
+
borderColor: '#111827',
|
|
139
145
|
marginBottom: 10,
|
|
140
146
|
},
|
|
141
147
|
errorInput: {
|
|
142
|
-
borderColor: '#
|
|
148
|
+
borderColor: '#DC2626',
|
|
149
|
+
borderWidth: 2,
|
|
143
150
|
},
|
|
144
151
|
row: {
|
|
145
152
|
flexDirection: 'row',
|
|
@@ -150,7 +157,7 @@ const styles = StyleSheet.create({
|
|
|
150
157
|
key: {
|
|
151
158
|
paddingVertical: 10,
|
|
152
159
|
paddingHorizontal: 12,
|
|
153
|
-
backgroundColor: '#
|
|
160
|
+
backgroundColor: '#111827',
|
|
154
161
|
borderRadius: 8,
|
|
155
162
|
minWidth: 42,
|
|
156
163
|
alignItems: 'center',
|
|
@@ -164,8 +171,8 @@ const styles = StyleSheet.create({
|
|
|
164
171
|
fontWeight: '700',
|
|
165
172
|
},
|
|
166
173
|
submit: {
|
|
167
|
-
marginTop:
|
|
168
|
-
paddingVertical:
|
|
174
|
+
marginTop: 12,
|
|
175
|
+
paddingVertical: 14,
|
|
169
176
|
borderRadius: 10,
|
|
170
177
|
alignItems: 'center',
|
|
171
178
|
},
|
|
@@ -175,9 +182,9 @@ const styles = StyleSheet.create({
|
|
|
175
182
|
fontWeight: '700',
|
|
176
183
|
},
|
|
177
184
|
errorText: {
|
|
178
|
-
color: '#
|
|
185
|
+
color: '#DC2626',
|
|
179
186
|
marginTop: 6,
|
|
180
|
-
fontSize:
|
|
187
|
+
fontSize: 14,
|
|
181
188
|
},
|
|
182
189
|
});
|
|
183
190
|
|
package/src/PendingVinBanner.tsx
CHANGED
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import {
|
|
2
|
+
import {
|
|
3
|
+
Animated,
|
|
4
|
+
View,
|
|
5
|
+
Text,
|
|
6
|
+
Pressable,
|
|
7
|
+
StyleSheet,
|
|
8
|
+
ScrollView,
|
|
9
|
+
Platform,
|
|
10
|
+
} from 'react-native';
|
|
3
11
|
import type { VinCandidate } from './types';
|
|
4
12
|
|
|
5
13
|
type PendingVinBannerProps = {
|
|
@@ -9,6 +17,7 @@ type PendingVinBannerProps = {
|
|
|
9
17
|
onDismiss?: () => void;
|
|
10
18
|
buttonLabel?: string;
|
|
11
19
|
buttonColor?: string;
|
|
20
|
+
bottomOffset?: number;
|
|
12
21
|
};
|
|
13
22
|
|
|
14
23
|
/**
|
|
@@ -20,8 +29,9 @@ export function PendingVinBanner({
|
|
|
20
29
|
candidates,
|
|
21
30
|
onConfirm,
|
|
22
31
|
onDismiss,
|
|
23
|
-
buttonLabel = '
|
|
32
|
+
buttonLabel = 'Book It',
|
|
24
33
|
buttonColor = '#0A84FF',
|
|
34
|
+
bottomOffset = 140,
|
|
25
35
|
}: PendingVinBannerProps) {
|
|
26
36
|
const anim = React.useRef(new Animated.Value(0)).current;
|
|
27
37
|
|
|
@@ -43,31 +53,46 @@ export function PendingVinBanner({
|
|
|
43
53
|
return (
|
|
44
54
|
<Animated.View
|
|
45
55
|
pointerEvents={visible ? 'auto' : 'none'}
|
|
46
|
-
style={[
|
|
56
|
+
style={[
|
|
57
|
+
styles.container,
|
|
58
|
+
{ bottom: bottomOffset, transform: [{ translateY }], opacity: anim },
|
|
59
|
+
]}
|
|
47
60
|
>
|
|
48
61
|
<View style={styles.header}>
|
|
49
62
|
<Text style={styles.label}>
|
|
50
63
|
{candidates.length > 1
|
|
51
|
-
? `${candidates.length} VINs
|
|
52
|
-
: 'VIN
|
|
64
|
+
? `${candidates.length} VINs Detected`
|
|
65
|
+
: 'VIN Detected'}
|
|
53
66
|
</Text>
|
|
54
67
|
{onDismiss && (
|
|
55
68
|
<Pressable onPress={onDismiss} hitSlop={12} style={styles.dismiss}>
|
|
56
|
-
<Text style={styles.dismissText}>
|
|
69
|
+
<Text style={styles.dismissText}>Close</Text>
|
|
57
70
|
</Pressable>
|
|
58
71
|
)}
|
|
59
72
|
</View>
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
73
|
+
<ScrollView
|
|
74
|
+
style={styles.list}
|
|
75
|
+
scrollEnabled={candidates.length > 1}
|
|
76
|
+
showsVerticalScrollIndicator={candidates.length > 1}
|
|
77
|
+
nestedScrollEnabled
|
|
78
|
+
>
|
|
79
|
+
{candidates.map((vin, index) => (
|
|
80
|
+
<View
|
|
81
|
+
key={`${vin.value}-${index}`}
|
|
82
|
+
style={[styles.row, index > 0 && styles.rowWithDivider]}
|
|
66
83
|
>
|
|
67
|
-
<Text style={styles.
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
84
|
+
<Text style={styles.vin} numberOfLines={1} adjustsFontSizeToFit>
|
|
85
|
+
{vin.value}
|
|
86
|
+
</Text>
|
|
87
|
+
<Pressable
|
|
88
|
+
onPress={() => onConfirm(vin)}
|
|
89
|
+
style={[styles.button, { backgroundColor: buttonColor }]}
|
|
90
|
+
>
|
|
91
|
+
<Text style={styles.buttonText}>{buttonLabel}</Text>
|
|
92
|
+
</Pressable>
|
|
93
|
+
</View>
|
|
94
|
+
))}
|
|
95
|
+
</ScrollView>
|
|
71
96
|
</Animated.View>
|
|
72
97
|
);
|
|
73
98
|
}
|
|
@@ -77,44 +102,58 @@ const styles = StyleSheet.create({
|
|
|
77
102
|
position: 'absolute',
|
|
78
103
|
left: 16,
|
|
79
104
|
right: 16,
|
|
80
|
-
|
|
81
|
-
backgroundColor: 'rgba(0,0,0,0.
|
|
105
|
+
zIndex: 200,
|
|
106
|
+
backgroundColor: 'rgba(0, 0, 0, 0.88)',
|
|
82
107
|
borderRadius: 16,
|
|
83
|
-
|
|
84
|
-
|
|
108
|
+
paddingHorizontal: 16,
|
|
109
|
+
paddingTop: 14,
|
|
110
|
+
paddingBottom: 16,
|
|
85
111
|
},
|
|
86
112
|
header: {
|
|
87
113
|
flexDirection: 'row',
|
|
88
114
|
alignItems: 'center',
|
|
89
115
|
justifyContent: 'space-between',
|
|
116
|
+
marginBottom: 10,
|
|
90
117
|
},
|
|
91
118
|
label: {
|
|
92
|
-
color: '
|
|
93
|
-
fontSize:
|
|
94
|
-
fontWeight: '
|
|
119
|
+
color: 'rgba(255, 255, 255, 0.7)',
|
|
120
|
+
fontSize: 13,
|
|
121
|
+
fontWeight: '600',
|
|
95
122
|
},
|
|
96
123
|
dismiss: {
|
|
97
|
-
padding:
|
|
124
|
+
padding: 2,
|
|
98
125
|
},
|
|
99
126
|
dismissText: {
|
|
100
|
-
color: '
|
|
127
|
+
color: 'rgba(255, 255, 255, 0.6)',
|
|
101
128
|
fontSize: 12,
|
|
102
129
|
},
|
|
130
|
+
list: {
|
|
131
|
+
maxHeight: 172,
|
|
132
|
+
},
|
|
103
133
|
row: {
|
|
104
134
|
flexDirection: 'row',
|
|
105
135
|
alignItems: 'center',
|
|
106
136
|
justifyContent: 'space-between',
|
|
107
|
-
|
|
137
|
+
paddingVertical: 8,
|
|
138
|
+
},
|
|
139
|
+
rowWithDivider: {
|
|
140
|
+
borderTopWidth: StyleSheet.hairlineWidth,
|
|
141
|
+
borderTopColor: 'rgba(255,255,255,0.15)',
|
|
108
142
|
},
|
|
109
143
|
vin: {
|
|
110
144
|
flex: 1,
|
|
111
145
|
color: 'white',
|
|
112
146
|
fontSize: 16,
|
|
147
|
+
fontWeight: '700',
|
|
148
|
+
fontFamily: Platform.OS === 'ios' ? 'Menlo' : 'monospace',
|
|
113
149
|
letterSpacing: 1,
|
|
150
|
+
marginRight: 12,
|
|
114
151
|
},
|
|
115
152
|
button: {
|
|
116
|
-
|
|
153
|
+
flexDirection: 'row',
|
|
154
|
+
alignItems: 'center',
|
|
117
155
|
paddingVertical: 10,
|
|
156
|
+
paddingHorizontal: 16,
|
|
118
157
|
borderRadius: 10,
|
|
119
158
|
},
|
|
120
159
|
buttonText: {
|
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import {
|
|
3
|
+
View,
|
|
4
|
+
Pressable,
|
|
5
|
+
Text,
|
|
6
|
+
StyleSheet,
|
|
7
|
+
type StyleProp,
|
|
8
|
+
type ViewStyle,
|
|
9
|
+
} from 'react-native';
|
|
10
|
+
|
|
11
|
+
type ScannerChromeOverlayProps = {
|
|
12
|
+
onBackPress?: () => void;
|
|
13
|
+
onManualEntryPress?: () => void;
|
|
14
|
+
onFlashPress?: () => void;
|
|
15
|
+
isTorchOn?: boolean;
|
|
16
|
+
backContent?: React.ReactNode;
|
|
17
|
+
manualEntryContent?: React.ReactNode;
|
|
18
|
+
flashOnContent?: React.ReactNode;
|
|
19
|
+
flashOffContent?: React.ReactNode;
|
|
20
|
+
centerContent?: React.ReactNode;
|
|
21
|
+
frameSize?: number;
|
|
22
|
+
cornerColor?: string;
|
|
23
|
+
topOffset?: number;
|
|
24
|
+
bottomOffset?: number;
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
const ActionButton = ({
|
|
28
|
+
onPress,
|
|
29
|
+
children,
|
|
30
|
+
style,
|
|
31
|
+
}: {
|
|
32
|
+
onPress?: () => void;
|
|
33
|
+
children: React.ReactNode;
|
|
34
|
+
style?: StyleProp<ViewStyle>;
|
|
35
|
+
}) => {
|
|
36
|
+
if (!onPress) {
|
|
37
|
+
return null;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
return (
|
|
41
|
+
<Pressable onPress={onPress} style={[styles.actionButton, style]}>
|
|
42
|
+
{children}
|
|
43
|
+
</Pressable>
|
|
44
|
+
);
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
export function ScannerChromeOverlay({
|
|
48
|
+
onBackPress,
|
|
49
|
+
onManualEntryPress,
|
|
50
|
+
onFlashPress,
|
|
51
|
+
isTorchOn = false,
|
|
52
|
+
backContent,
|
|
53
|
+
manualEntryContent,
|
|
54
|
+
flashOnContent,
|
|
55
|
+
flashOffContent,
|
|
56
|
+
centerContent,
|
|
57
|
+
frameSize = 240,
|
|
58
|
+
cornerColor = 'white',
|
|
59
|
+
topOffset = 64,
|
|
60
|
+
bottomOffset = 64,
|
|
61
|
+
}: ScannerChromeOverlayProps) {
|
|
62
|
+
const halfFrame = frameSize / 2;
|
|
63
|
+
|
|
64
|
+
return (
|
|
65
|
+
<>
|
|
66
|
+
<View pointerEvents="box-none" style={styles.actionContainer}>
|
|
67
|
+
<ActionButton
|
|
68
|
+
onPress={onBackPress}
|
|
69
|
+
style={[styles.backButton, { top: topOffset }]}
|
|
70
|
+
>
|
|
71
|
+
{backContent ?? <Text style={styles.actionText}>Back</Text>}
|
|
72
|
+
</ActionButton>
|
|
73
|
+
|
|
74
|
+
<ActionButton
|
|
75
|
+
onPress={onManualEntryPress}
|
|
76
|
+
style={[styles.manualButton, { top: topOffset }]}
|
|
77
|
+
>
|
|
78
|
+
{manualEntryContent ?? <Text style={styles.actionText}>VIN</Text>}
|
|
79
|
+
</ActionButton>
|
|
80
|
+
|
|
81
|
+
<ActionButton
|
|
82
|
+
onPress={onFlashPress}
|
|
83
|
+
style={[styles.flashButton, { bottom: bottomOffset }]}
|
|
84
|
+
>
|
|
85
|
+
{isTorchOn
|
|
86
|
+
? (flashOnContent ?? (
|
|
87
|
+
<Text style={styles.actionText}>Torch Off</Text>
|
|
88
|
+
))
|
|
89
|
+
: (flashOffContent ?? <Text style={styles.actionText}>Torch</Text>)}
|
|
90
|
+
</ActionButton>
|
|
91
|
+
|
|
92
|
+
{centerContent ? (
|
|
93
|
+
<View style={styles.centerContent}>{centerContent}</View>
|
|
94
|
+
) : null}
|
|
95
|
+
</View>
|
|
96
|
+
|
|
97
|
+
<View
|
|
98
|
+
pointerEvents="none"
|
|
99
|
+
style={[
|
|
100
|
+
styles.viewFinderOverlay,
|
|
101
|
+
{
|
|
102
|
+
width: frameSize,
|
|
103
|
+
height: frameSize,
|
|
104
|
+
marginLeft: -halfFrame,
|
|
105
|
+
marginTop: -halfFrame,
|
|
106
|
+
},
|
|
107
|
+
]}
|
|
108
|
+
>
|
|
109
|
+
<Corner position="topLeft" color={cornerColor} />
|
|
110
|
+
<Corner position="topRight" color={cornerColor} />
|
|
111
|
+
<Corner position="bottomLeft" color={cornerColor} />
|
|
112
|
+
<Corner position="bottomRight" color={cornerColor} />
|
|
113
|
+
</View>
|
|
114
|
+
</>
|
|
115
|
+
);
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
function Corner({
|
|
119
|
+
position,
|
|
120
|
+
color,
|
|
121
|
+
}: {
|
|
122
|
+
position: 'topLeft' | 'topRight' | 'bottomLeft' | 'bottomRight';
|
|
123
|
+
color: string;
|
|
124
|
+
}) {
|
|
125
|
+
const styleMap = {
|
|
126
|
+
topLeft: styles.cornerTopLeft,
|
|
127
|
+
topRight: styles.cornerTopRight,
|
|
128
|
+
bottomLeft: styles.cornerBottomLeft,
|
|
129
|
+
bottomRight: styles.cornerBottomRight,
|
|
130
|
+
};
|
|
131
|
+
|
|
132
|
+
return <View style={[styleMap[position], { borderColor: color }]} />;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
const styles = StyleSheet.create({
|
|
136
|
+
actionContainer: {
|
|
137
|
+
...StyleSheet.absoluteFillObject,
|
|
138
|
+
zIndex: 100,
|
|
139
|
+
},
|
|
140
|
+
actionButton: {
|
|
141
|
+
position: 'absolute',
|
|
142
|
+
zIndex: 101,
|
|
143
|
+
paddingHorizontal: 12,
|
|
144
|
+
paddingVertical: 8,
|
|
145
|
+
borderRadius: 999,
|
|
146
|
+
backgroundColor: 'rgba(0, 0, 0, 0.45)',
|
|
147
|
+
},
|
|
148
|
+
backButton: {
|
|
149
|
+
left: 24,
|
|
150
|
+
},
|
|
151
|
+
manualButton: {
|
|
152
|
+
right: 24,
|
|
153
|
+
},
|
|
154
|
+
flashButton: {
|
|
155
|
+
left: 24,
|
|
156
|
+
},
|
|
157
|
+
actionText: {
|
|
158
|
+
color: 'white',
|
|
159
|
+
fontSize: 14,
|
|
160
|
+
fontWeight: '700',
|
|
161
|
+
},
|
|
162
|
+
centerContent: {
|
|
163
|
+
position: 'absolute',
|
|
164
|
+
top: 40,
|
|
165
|
+
left: 0,
|
|
166
|
+
right: 0,
|
|
167
|
+
alignItems: 'center',
|
|
168
|
+
zIndex: 101,
|
|
169
|
+
},
|
|
170
|
+
viewFinderOverlay: {
|
|
171
|
+
position: 'absolute',
|
|
172
|
+
top: '50%',
|
|
173
|
+
left: '50%',
|
|
174
|
+
borderColor: 'transparent',
|
|
175
|
+
},
|
|
176
|
+
cornerTopLeft: {
|
|
177
|
+
position: 'absolute',
|
|
178
|
+
top: 0,
|
|
179
|
+
left: 0,
|
|
180
|
+
width: 20,
|
|
181
|
+
height: 20,
|
|
182
|
+
borderTopWidth: 2,
|
|
183
|
+
borderLeftWidth: 2,
|
|
184
|
+
},
|
|
185
|
+
cornerTopRight: {
|
|
186
|
+
position: 'absolute',
|
|
187
|
+
top: 0,
|
|
188
|
+
right: 0,
|
|
189
|
+
width: 20,
|
|
190
|
+
height: 20,
|
|
191
|
+
borderTopWidth: 2,
|
|
192
|
+
borderRightWidth: 2,
|
|
193
|
+
},
|
|
194
|
+
cornerBottomLeft: {
|
|
195
|
+
position: 'absolute',
|
|
196
|
+
bottom: 0,
|
|
197
|
+
left: 0,
|
|
198
|
+
width: 20,
|
|
199
|
+
height: 20,
|
|
200
|
+
borderBottomWidth: 2,
|
|
201
|
+
borderLeftWidth: 2,
|
|
202
|
+
},
|
|
203
|
+
cornerBottomRight: {
|
|
204
|
+
position: 'absolute',
|
|
205
|
+
bottom: 0,
|
|
206
|
+
right: 0,
|
|
207
|
+
width: 20,
|
|
208
|
+
height: 20,
|
|
209
|
+
borderBottomWidth: 2,
|
|
210
|
+
borderRightWidth: 2,
|
|
211
|
+
},
|
|
212
|
+
});
|
|
213
|
+
|
|
214
|
+
export default ScannerChromeOverlay;
|