@unif/react-native-hms-scan 0.1.0
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/LICENSE +21 -0
- package/README.md +149 -0
- package/ReactNativeHmsScan.podspec +30 -0
- package/android/build.gradle +79 -0
- package/android/consumer-rules.pro +13 -0
- package/android/src/main/AndroidManifest.xml +23 -0
- package/android/src/main/java/com/unif/reactnativehmsscan/HmsScanModule.kt +192 -0
- package/android/src/main/java/com/unif/reactnativehmsscan/HmsScanResultMapper.kt +145 -0
- package/android/src/main/java/com/unif/reactnativehmsscan/HmsScanView.kt +257 -0
- package/android/src/main/java/com/unif/reactnativehmsscan/HmsScanViewManager.kt +66 -0
- package/android/src/main/java/com/unif/reactnativehmsscan/ReactNativeHmsScanPackage.kt +49 -0
- package/ios/HmsScanModule.h +20 -0
- package/ios/HmsScanModule.mm +161 -0
- package/ios/HmsScanResultMapper.h +45 -0
- package/ios/HmsScanResultMapper.mm +297 -0
- package/ios/HmsScanView.h +24 -0
- package/ios/HmsScanView.mm +322 -0
- package/lib/module/HmsScanView.js +43 -0
- package/lib/module/HmsScanView.js.map +1 -0
- package/lib/module/HmsScanViewNativeComponent.ts +44 -0
- package/lib/module/NativeHmsScan.js +11 -0
- package/lib/module/NativeHmsScan.js.map +1 -0
- package/lib/module/Scanner/DeniedOverlay.js +60 -0
- package/lib/module/Scanner/DeniedOverlay.js.map +1 -0
- package/lib/module/Scanner/ResultFail.js +79 -0
- package/lib/module/Scanner/ResultFail.js.map +1 -0
- package/lib/module/Scanner/ResultFocus.js +174 -0
- package/lib/module/Scanner/ResultFocus.js.map +1 -0
- package/lib/module/Scanner/ScanHint.js +44 -0
- package/lib/module/Scanner/ScanHint.js.map +1 -0
- package/lib/module/Scanner/ScanToolbar.js +103 -0
- package/lib/module/Scanner/ScanToolbar.js.map +1 -0
- package/lib/module/Scanner/ScanTopBar.js +87 -0
- package/lib/module/Scanner/ScanTopBar.js.map +1 -0
- package/lib/module/Scanner/Scanner.js +184 -0
- package/lib/module/Scanner/Scanner.js.map +1 -0
- package/lib/module/Scanner/Viewfinder.js +159 -0
- package/lib/module/Scanner/Viewfinder.js.map +1 -0
- package/lib/module/Scanner/scanChrome.js +23 -0
- package/lib/module/Scanner/scanChrome.js.map +1 -0
- package/lib/module/decodeImage.js +32 -0
- package/lib/module/decodeImage.js.map +1 -0
- package/lib/module/format.js +66 -0
- package/lib/module/format.js.map +1 -0
- package/lib/module/index.js +21 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/mock.js +30 -0
- package/lib/module/mock.js.map +1 -0
- package/lib/module/package.json +1 -0
- package/lib/module/permissions.js +28 -0
- package/lib/module/permissions.js.map +1 -0
- package/lib/module/types.js +46 -0
- package/lib/module/types.js.map +1 -0
- package/lib/typescript/jest.setup.d.ts +1 -0
- package/lib/typescript/jest.setup.d.ts.map +1 -0
- package/lib/typescript/package.json +1 -0
- package/lib/typescript/src/HmsScanView.d.ts +36 -0
- package/lib/typescript/src/HmsScanView.d.ts.map +1 -0
- package/lib/typescript/src/HmsScanViewNativeComponent.d.ts +32 -0
- package/lib/typescript/src/HmsScanViewNativeComponent.d.ts.map +1 -0
- package/lib/typescript/src/NativeHmsScan.d.ts +17 -0
- package/lib/typescript/src/NativeHmsScan.d.ts.map +1 -0
- package/lib/typescript/src/Scanner/DeniedOverlay.d.ts +7 -0
- package/lib/typescript/src/Scanner/DeniedOverlay.d.ts.map +1 -0
- package/lib/typescript/src/Scanner/ResultFail.d.ts +7 -0
- package/lib/typescript/src/Scanner/ResultFail.d.ts.map +1 -0
- package/lib/typescript/src/Scanner/ResultFocus.d.ts +12 -0
- package/lib/typescript/src/Scanner/ResultFocus.d.ts.map +1 -0
- package/lib/typescript/src/Scanner/ScanHint.d.ts +8 -0
- package/lib/typescript/src/Scanner/ScanHint.d.ts.map +1 -0
- package/lib/typescript/src/Scanner/ScanToolbar.d.ts +9 -0
- package/lib/typescript/src/Scanner/ScanToolbar.d.ts.map +1 -0
- package/lib/typescript/src/Scanner/ScanTopBar.d.ts +10 -0
- package/lib/typescript/src/Scanner/ScanTopBar.d.ts.map +1 -0
- package/lib/typescript/src/Scanner/Scanner.d.ts +34 -0
- package/lib/typescript/src/Scanner/Scanner.d.ts.map +1 -0
- package/lib/typescript/src/Scanner/Viewfinder.d.ts +11 -0
- package/lib/typescript/src/Scanner/Viewfinder.d.ts.map +1 -0
- package/lib/typescript/src/Scanner/scanChrome.d.ts +19 -0
- package/lib/typescript/src/Scanner/scanChrome.d.ts.map +1 -0
- package/lib/typescript/src/decodeImage.d.ts +12 -0
- package/lib/typescript/src/decodeImage.d.ts.map +1 -0
- package/lib/typescript/src/format.d.ts +13 -0
- package/lib/typescript/src/format.d.ts.map +1 -0
- package/lib/typescript/src/index.d.ts +10 -0
- package/lib/typescript/src/index.d.ts.map +1 -0
- package/lib/typescript/src/mock.d.ts +12 -0
- package/lib/typescript/src/mock.d.ts.map +1 -0
- package/lib/typescript/src/permissions.d.ts +9 -0
- package/lib/typescript/src/permissions.d.ts.map +1 -0
- package/lib/typescript/src/types.d.ts +62 -0
- package/lib/typescript/src/types.d.ts.map +1 -0
- package/package.json +174 -0
- package/src/HmsScanView.tsx +87 -0
- package/src/HmsScanViewNativeComponent.ts +44 -0
- package/src/NativeHmsScan.ts +24 -0
- package/src/Scanner/DeniedOverlay.tsx +59 -0
- package/src/Scanner/ResultFail.tsx +71 -0
- package/src/Scanner/ResultFocus.tsx +118 -0
- package/src/Scanner/ScanHint.tsx +38 -0
- package/src/Scanner/ScanToolbar.tsx +93 -0
- package/src/Scanner/ScanTopBar.tsx +74 -0
- package/src/Scanner/Scanner.tsx +238 -0
- package/src/Scanner/Viewfinder.tsx +115 -0
- package/src/Scanner/scanChrome.ts +20 -0
- package/src/decodeImage.ts +36 -0
- package/src/format.ts +93 -0
- package/src/index.tsx +35 -0
- package/src/mock.ts +43 -0
- package/src/permissions.ts +27 -0
- package/src/types.ts +138 -0
package/src/types.ts
ADDED
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
// ──────────────────────────────────────────────────────────────
|
|
2
|
+
// @unif/react-native-hms-scan —— 公共类型
|
|
3
|
+
//
|
|
4
|
+
// 这些是纯 JS/TS 类型与常量(不触碰原生),index 与 mock 都从这里导出。
|
|
5
|
+
// 码制 / 内容类型在原生侧(Android HmsScan.*_SCAN_TYPE / getScanTypeForm,
|
|
6
|
+
// iOS HMSScanFormatTypeCode / sceneType)已统一映射成下面的字符串枚举再回 JS。
|
|
7
|
+
// ──────────────────────────────────────────────────────────────
|
|
8
|
+
|
|
9
|
+
/** 统一码制枚举(两端归一)。 */
|
|
10
|
+
export type BarcodeFormat =
|
|
11
|
+
| 'QR_CODE'
|
|
12
|
+
| 'AZTEC'
|
|
13
|
+
| 'DATA_MATRIX'
|
|
14
|
+
| 'PDF417'
|
|
15
|
+
| 'CODABAR'
|
|
16
|
+
| 'CODE_39'
|
|
17
|
+
| 'CODE_93'
|
|
18
|
+
| 'CODE_128'
|
|
19
|
+
| 'EAN_8'
|
|
20
|
+
| 'EAN_13'
|
|
21
|
+
| 'UPC_A'
|
|
22
|
+
| 'UPC_E'
|
|
23
|
+
| 'ITF14'
|
|
24
|
+
| 'MULTI_FUNCTIONAL'
|
|
25
|
+
| 'UNKNOWN';
|
|
26
|
+
|
|
27
|
+
/** 所有可用码制(不含 UNKNOWN)。传给原生即"识别全部码制"。 */
|
|
28
|
+
export const ALL_BARCODE_FORMATS: readonly BarcodeFormat[] = [
|
|
29
|
+
'QR_CODE',
|
|
30
|
+
'AZTEC',
|
|
31
|
+
'DATA_MATRIX',
|
|
32
|
+
'PDF417',
|
|
33
|
+
'CODABAR',
|
|
34
|
+
'CODE_39',
|
|
35
|
+
'CODE_93',
|
|
36
|
+
'CODE_128',
|
|
37
|
+
'EAN_8',
|
|
38
|
+
'EAN_13',
|
|
39
|
+
'UPC_A',
|
|
40
|
+
'UPC_E',
|
|
41
|
+
'ITF14',
|
|
42
|
+
'MULTI_FUNCTIONAL',
|
|
43
|
+
] as const;
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* 码内容语义类型(尽力归一)。
|
|
47
|
+
* Android 来自 HmsScan.getScanTypeForm(),iOS 来自 sceneType(精度有限,未知归 OTHER)。
|
|
48
|
+
*/
|
|
49
|
+
export type BarcodeContentType =
|
|
50
|
+
| 'TEXT'
|
|
51
|
+
| 'URL'
|
|
52
|
+
| 'EMAIL'
|
|
53
|
+
| 'PHONE'
|
|
54
|
+
| 'SMS'
|
|
55
|
+
| 'WIFI'
|
|
56
|
+
| 'CONTACT'
|
|
57
|
+
| 'EVENT'
|
|
58
|
+
| 'LOCATION'
|
|
59
|
+
| 'DRIVER'
|
|
60
|
+
| 'ISBN'
|
|
61
|
+
| 'ARTICLE'
|
|
62
|
+
| 'OTHER';
|
|
63
|
+
|
|
64
|
+
/** 取景框/解码命中的角点(图像坐标系,单位 px)。 */
|
|
65
|
+
export interface ScanCornerPoint {
|
|
66
|
+
x: number;
|
|
67
|
+
y: number;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
/** 一次扫码/解码命中的结果。 */
|
|
71
|
+
export interface ScanResult {
|
|
72
|
+
/** 原始解码文本(Android getOriginalValue / iOS text)。 */
|
|
73
|
+
value: string;
|
|
74
|
+
/** 码制。 */
|
|
75
|
+
format: BarcodeFormat;
|
|
76
|
+
/** 内容语义类型(可能缺省)。 */
|
|
77
|
+
contentType?: BarcodeContentType;
|
|
78
|
+
/** 条码四角点(可能缺省)。 */
|
|
79
|
+
cornerPoints?: ScanCornerPoint[];
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
/** decodeImage 选项。 */
|
|
83
|
+
export interface DecodeImageOptions {
|
|
84
|
+
/** 限定识别码制;不传 = 全部。 */
|
|
85
|
+
formats?: BarcodeFormat[];
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
/** 相机权限状态。 */
|
|
89
|
+
export type CameraPermissionStatus =
|
|
90
|
+
| 'granted'
|
|
91
|
+
| 'denied'
|
|
92
|
+
| 'blocked'
|
|
93
|
+
| 'undetermined';
|
|
94
|
+
|
|
95
|
+
/** 错误码。 */
|
|
96
|
+
export type HmsScanErrorCode =
|
|
97
|
+
| 'E_NO_CAMERA_PERMISSION'
|
|
98
|
+
| 'E_NO_READ_PERMISSION'
|
|
99
|
+
| 'E_CAMERA_INIT'
|
|
100
|
+
| 'E_DECODE_FAILED'
|
|
101
|
+
| 'E_IMAGE_LOAD_FAILED'
|
|
102
|
+
| 'E_NO_RESULT'
|
|
103
|
+
| 'E_UNKNOWN';
|
|
104
|
+
|
|
105
|
+
/** 库统一抛出的错误类型。 */
|
|
106
|
+
export class HmsScanError extends Error {
|
|
107
|
+
readonly code: HmsScanErrorCode;
|
|
108
|
+
constructor(code: HmsScanErrorCode, message?: string) {
|
|
109
|
+
super(message ?? code);
|
|
110
|
+
this.name = 'HmsScanError';
|
|
111
|
+
this.code = code;
|
|
112
|
+
// 兼容 TS 继承内建类的 instanceof
|
|
113
|
+
Object.setPrototypeOf(this, HmsScanError.prototype);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
/**
|
|
118
|
+
* 业务层商品信息——`<Scanner>` 扫到条码后,由宿主通过 resolveProduct 解析返回,
|
|
119
|
+
* 用于聚焦款"浮层确认卡"展示。仅 name 必填,其余可缺省。
|
|
120
|
+
*/
|
|
121
|
+
export interface ScanProduct {
|
|
122
|
+
/** 商品名(必填)。 */
|
|
123
|
+
name: string;
|
|
124
|
+
/** 品牌(如 "统一")。 */
|
|
125
|
+
brand?: string;
|
|
126
|
+
/** 字母牌字符;缺省时取 brand 或 name 的首字。 */
|
|
127
|
+
brandChar?: string;
|
|
128
|
+
/** 条码;缺省时取扫到的 value。 */
|
|
129
|
+
barcode?: string;
|
|
130
|
+
/** 规格(如 "500ml × 15 瓶/箱")。 */
|
|
131
|
+
spec?: string;
|
|
132
|
+
/** 库存短描述(如 "充足")。 */
|
|
133
|
+
stockShort?: string;
|
|
134
|
+
/** 价格展示串(如 "¥5.50")。 */
|
|
135
|
+
price?: string;
|
|
136
|
+
/** 价格下方副标题,默认 "建议零售"。 */
|
|
137
|
+
priceCaption?: string;
|
|
138
|
+
}
|