@unif/react-native-hms-scan 0.6.2 → 2.0.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/README.md +3 -2
- package/android/src/main/AndroidManifest.xml +0 -9
- package/android/src/main/java/com/unif/reactnativehmsscan/HmsScanImage.kt +135 -0
- package/android/src/main/java/com/unif/reactnativehmsscan/HmsScanModule.kt +163 -147
- package/android/src/main/java/com/unif/reactnativehmsscan/HmsScanResultMapper.kt +17 -9
- package/android/src/main/java/com/unif/reactnativehmsscan/HmsScanView.kt +57 -19
- package/android/src/main/java/com/unif/reactnativehmsscan/HmsScanViewManager.kt +1 -1
- package/ios/HmsScanModule.mm +13 -37
- package/ios/HmsScanResultMapper.h +4 -3
- package/ios/HmsScanResultMapper.mm +31 -19
- package/ios/HmsScanView.h +1 -1
- package/ios/HmsScanView.mm +140 -25
- package/lib/module/HmsScanView/HmsScanView.js +66 -0
- package/lib/module/HmsScanView/HmsScanView.js.map +1 -0
- package/lib/module/HmsScanView/HmsScanView.web.js +26 -0
- package/lib/module/HmsScanView/HmsScanView.web.js.map +1 -0
- package/lib/module/HmsScanView/types.js +4 -0
- package/lib/module/HmsScanView/types.js.map +1 -0
- package/lib/module/HmsScanViewNativeComponent.ts +7 -5
- package/lib/module/NativeHmsScan.js +1 -1
- package/lib/module/NativeHmsScan.js.map +1 -1
- package/lib/module/ScanError.js +12 -0
- package/lib/module/ScanError.js.map +1 -0
- package/lib/module/Scanner/DeniedOverlay.js +1 -1
- package/lib/module/Scanner/DeniedOverlay.js.map +1 -1
- package/lib/module/Scanner/ResultFail.js +3 -2
- package/lib/module/Scanner/ResultFail.js.map +1 -1
- package/lib/module/Scanner/ResultFocus/ResultFocus.js +56 -0
- package/lib/module/Scanner/ResultFocus/ResultFocus.js.map +1 -0
- package/lib/module/Scanner/ResultFocus/styles.js +39 -0
- package/lib/module/Scanner/ResultFocus/styles.js.map +1 -0
- package/lib/module/Scanner/ResultFocus/types.js +4 -0
- package/lib/module/Scanner/ResultFocus/types.js.map +1 -0
- package/lib/module/Scanner/Scanner.js +11 -310
- package/lib/module/Scanner/Scanner.js.map +1 -1
- package/lib/module/Scanner/Scanner.web.js +29 -0
- package/lib/module/Scanner/Scanner.web.js.map +1 -0
- package/lib/module/Scanner/ScannerInner.js +310 -0
- package/lib/module/Scanner/ScannerInner.js.map +1 -0
- package/lib/module/Scanner/styles.js +11 -0
- package/lib/module/Scanner/styles.js.map +1 -0
- package/lib/module/Scanner/types.js +4 -0
- package/lib/module/Scanner/types.js.map +1 -0
- package/lib/module/constants.js +20 -0
- package/lib/module/constants.js.map +1 -0
- package/lib/module/decodeImage.js +29 -24
- package/lib/module/decodeImage.js.map +1 -1
- package/lib/module/decodeImage.web.js +7 -0
- package/lib/module/decodeImage.web.js.map +1 -0
- package/lib/module/errors.js +24 -0
- package/lib/module/errors.js.map +1 -0
- package/lib/module/format.js +53 -47
- package/lib/module/format.js.map +1 -1
- package/lib/module/index.js +5 -19
- package/lib/module/index.js.map +1 -1
- package/lib/module/index.web.js +8 -0
- package/lib/module/index.web.js.map +1 -0
- package/lib/module/mock.js +2 -23
- package/lib/module/mock.js.map +1 -1
- package/lib/module/permissions.js +24 -20
- package/lib/module/permissions.js.map +1 -1
- package/lib/module/permissions.web.js +10 -0
- package/lib/module/permissions.web.js.map +1 -0
- package/lib/module/types.js +1 -45
- package/lib/module/types.js.map +1 -1
- package/lib/typescript/src/HmsScanView/HmsScanView.d.ts +3 -0
- package/lib/typescript/src/HmsScanView/HmsScanView.d.ts.map +1 -0
- package/lib/typescript/src/HmsScanView/HmsScanView.web.d.ts +3 -0
- package/lib/typescript/src/HmsScanView/HmsScanView.web.d.ts.map +1 -0
- package/lib/typescript/src/HmsScanView/types.d.ts +12 -0
- package/lib/typescript/src/HmsScanView/types.d.ts.map +1 -0
- package/lib/typescript/src/HmsScanViewNativeComponent.d.ts +6 -4
- package/lib/typescript/src/HmsScanViewNativeComponent.d.ts.map +1 -1
- package/lib/typescript/src/NativeHmsScan.d.ts +3 -5
- package/lib/typescript/src/NativeHmsScan.d.ts.map +1 -1
- package/lib/typescript/src/ScanError.d.ts +7 -0
- package/lib/typescript/src/ScanError.d.ts.map +1 -0
- package/lib/typescript/src/Scanner/DeniedOverlay.d.ts.map +1 -1
- package/lib/typescript/src/Scanner/ResultFail.d.ts +2 -1
- package/lib/typescript/src/Scanner/ResultFail.d.ts.map +1 -1
- package/lib/typescript/src/Scanner/ResultFocus/ResultFocus.d.ts +4 -0
- package/lib/typescript/src/Scanner/ResultFocus/ResultFocus.d.ts.map +1 -0
- package/lib/typescript/src/Scanner/ResultFocus/styles.d.ts +36 -0
- package/lib/typescript/src/Scanner/ResultFocus/styles.d.ts.map +1 -0
- package/lib/typescript/src/Scanner/ResultFocus/types.d.ts +8 -0
- package/lib/typescript/src/Scanner/ResultFocus/types.d.ts.map +1 -0
- package/lib/typescript/src/Scanner/Scanner.d.ts +2 -45
- package/lib/typescript/src/Scanner/Scanner.d.ts.map +1 -1
- package/lib/typescript/src/Scanner/Scanner.web.d.ts +3 -0
- package/lib/typescript/src/Scanner/Scanner.web.d.ts.map +1 -0
- package/lib/typescript/src/Scanner/ScannerInner.d.ts +3 -0
- package/lib/typescript/src/Scanner/ScannerInner.d.ts.map +1 -0
- package/lib/typescript/src/Scanner/styles.d.ts +7 -0
- package/lib/typescript/src/Scanner/styles.d.ts.map +1 -0
- package/lib/typescript/src/Scanner/types.d.ts +20 -0
- package/lib/typescript/src/Scanner/types.d.ts.map +1 -0
- package/lib/typescript/src/constants.d.ts +8 -0
- package/lib/typescript/src/constants.d.ts.map +1 -0
- package/lib/typescript/src/decodeImage.d.ts +2 -12
- package/lib/typescript/src/decodeImage.d.ts.map +1 -1
- package/lib/typescript/src/decodeImage.web.d.ts +3 -0
- package/lib/typescript/src/decodeImage.web.d.ts.map +1 -0
- package/lib/typescript/src/errors.d.ts +6 -0
- package/lib/typescript/src/errors.d.ts.map +1 -0
- package/lib/typescript/src/format.d.ts +15 -12
- package/lib/typescript/src/format.d.ts.map +1 -1
- package/lib/typescript/src/index.d.ts +6 -7
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/lib/typescript/src/index.web.d.ts +9 -0
- package/lib/typescript/src/index.web.d.ts.map +1 -0
- package/lib/typescript/src/mock.d.ts +9 -8
- package/lib/typescript/src/mock.d.ts.map +1 -1
- package/lib/typescript/src/permissions.d.ts +4 -8
- package/lib/typescript/src/permissions.d.ts.map +1 -1
- package/lib/typescript/src/permissions.web.d.ts +4 -0
- package/lib/typescript/src/permissions.web.d.ts.map +1 -0
- package/lib/typescript/src/types.d.ts +31 -56
- package/lib/typescript/src/types.d.ts.map +1 -1
- package/package.json +16 -9
- package/src/HmsScanView/HmsScanView.tsx +67 -0
- package/src/HmsScanView/HmsScanView.web.tsx +22 -0
- package/src/HmsScanView/types.ts +17 -0
- package/src/HmsScanViewNativeComponent.ts +7 -5
- package/src/NativeHmsScan.ts +3 -5
- package/src/ScanError.ts +13 -0
- package/src/Scanner/DeniedOverlay.tsx +4 -2
- package/src/Scanner/ResultFail.tsx +23 -5
- package/src/Scanner/ResultFocus/ResultFocus.tsx +43 -0
- package/src/Scanner/ResultFocus/styles.ts +25 -0
- package/src/Scanner/ResultFocus/types.ts +8 -0
- package/src/Scanner/Scanner.tsx +14 -432
- package/src/Scanner/Scanner.web.tsx +26 -0
- package/src/Scanner/ScannerInner.tsx +391 -0
- package/src/Scanner/styles.ts +6 -0
- package/src/Scanner/types.ts +36 -0
- package/src/constants.ts +55 -0
- package/src/decodeImage.ts +35 -29
- package/src/decodeImage.web.ts +8 -0
- package/src/errors.ts +26 -0
- package/src/format.ts +77 -76
- package/src/index.tsx +17 -32
- package/src/index.web.tsx +22 -0
- package/src/mock.ts +21 -29
- package/src/permissions.ts +33 -20
- package/src/permissions.web.ts +9 -0
- package/src/types.ts +38 -126
- package/lib/module/HmsScanView.js +0 -43
- package/lib/module/HmsScanView.js.map +0 -1
- package/lib/module/Scanner/ResultFocus.js +0 -171
- package/lib/module/Scanner/ResultFocus.js.map +0 -1
- package/lib/typescript/src/HmsScanView.d.ts +0 -33
- package/lib/typescript/src/HmsScanView.d.ts.map +0 -1
- package/lib/typescript/src/Scanner/ResultFocus.d.ts +0 -14
- package/lib/typescript/src/Scanner/ResultFocus.d.ts.map +0 -1
- package/src/HmsScanView.tsx +0 -87
- package/src/Scanner/ResultFocus.tsx +0 -122
package/lib/module/format.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["SCAN_FORMAT_SET","SCAN_CONTENT_TYPE_SET","ScanError","coerceFormat","value","has","coerceContentType","undefined","formatsToCsv","Array","isArray","some","item","reason","message","Set","sort","join","formatConfiguration","csv","error","cornerPoints","points","filter","p","x","Number","isFinite","y","map","length","invalidResponse","parseResultsJson","json","data","JSON","parse","raw","format","result","contentType"],"sourceRoot":"../../src","sources":["format.ts"],"mappings":"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","ignoreList":[]}
|
package/lib/module/index.js
CHANGED
|
@@ -1,22 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
export { ALL_BARCODE_FORMATS, HmsScanError } from "./types.js";
|
|
9
|
-
// ── 码制工具 ──
|
|
10
|
-
export { coerceFormat, coerceContentType, formatsToCsv } from "./format.js";
|
|
11
|
-
|
|
12
|
-
// ── 底层 headless 相机组件 ──
|
|
13
|
-
export { HmsScanView } from "./HmsScanView.js";
|
|
14
|
-
// ── 图片识别 ──
|
|
15
|
-
export { decodeImage } from "./decodeImage.js";
|
|
16
|
-
|
|
17
|
-
// ── 相机权限 ──
|
|
18
|
-
export { getCameraPermissionStatus, requestCameraPermission } from "./permissions.js";
|
|
19
|
-
|
|
20
|
-
// ── 成品扫一扫页(聚焦款,浅色) ──
|
|
21
|
-
export { Scanner } from "./Scanner/Scanner.js";
|
|
3
|
+
export { ScanError } from "./ScanError.js";
|
|
4
|
+
export { HmsScanView } from './HmsScanView/HmsScanView';
|
|
5
|
+
export { decodeImage } from './decodeImage';
|
|
6
|
+
export { getCameraPermissionStatus, requestCameraPermission } from './permissions';
|
|
7
|
+
export { Scanner } from './Scanner/Scanner';
|
|
22
8
|
//# sourceMappingURL=index.js.map
|
package/lib/module/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["ScanError","HmsScanView","decodeImage","getCameraPermissionStatus","requestCameraPermission","Scanner"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;AAAA,SAASA,SAAS,QAAQ,gBAAa;AAavC,SAASC,WAAW,QAAQ,2BAA2B;AAEvD,SAASC,WAAW,QAAQ,eAAe;AAC3C,SACEC,yBAAyB,EACzBC,uBAAuB,QAClB,eAAe;AACtB,SAASC,OAAO,QAAQ,mBAAmB","ignoreList":[]}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
export { ScanError } from "./ScanError.js";
|
|
4
|
+
export { HmsScanView } from "./HmsScanView/HmsScanView.web.js";
|
|
5
|
+
export { decodeImage } from "./decodeImage.web.js";
|
|
6
|
+
export { getCameraPermissionStatus, requestCameraPermission } from "./permissions.web.js";
|
|
7
|
+
export { Scanner } from "./Scanner/Scanner.web.js";
|
|
8
|
+
//# sourceMappingURL=index.web.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["ScanError","HmsScanView","decodeImage","getCameraPermissionStatus","requestCameraPermission","Scanner"],"sourceRoot":"../../src","sources":["index.web.tsx"],"mappings":";;AAAA,SAASA,SAAS,QAAQ,gBAAa;AAavC,SAASC,WAAW,QAAQ,kCAA+B;AAE3D,SAASC,WAAW,QAAQ,sBAAmB;AAC/C,SACEC,yBAAyB,EACzBC,uBAAuB,QAClB,sBAAmB;AAC1B,SAASC,OAAO,QAAQ,0BAAuB","ignoreList":[]}
|
package/lib/module/mock.js
CHANGED
|
@@ -1,30 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
//
|
|
6
|
-
// 用法(消费者 jest setup 或单个测试文件):
|
|
7
|
-
//
|
|
8
|
-
// jest.mock('@unif/react-native-hms-scan', () =>
|
|
9
|
-
// require('@unif/react-native-hms-scan/mock')
|
|
10
|
-
// );
|
|
11
|
-
//
|
|
12
|
-
// 替换后 decodeImage / 权限方法都是 jest.fn;<HmsScanView> / <Scanner> 渲染为 null。
|
|
13
|
-
// 按需覆盖单次返回:
|
|
14
|
-
// (decodeImage as jest.Mock).mockResolvedValueOnce([{ value: '690...', format: 'EAN_13' }]);
|
|
15
|
-
|
|
16
|
-
// 纯 JS 类型 / 常量 / Error / 码制工具:保留真实实现(不碰原生)。
|
|
17
|
-
export * from "./types.js";
|
|
18
|
-
export { coerceFormat, coerceContentType, formatsToCsv } from "./format.js";
|
|
19
|
-
|
|
20
|
-
// ── 图片识别 ──
|
|
21
|
-
export const decodeImage = jest.fn((_uri, _options) => Promise.resolve([]));
|
|
22
|
-
|
|
23
|
-
// ── 相机权限 ──(默认已授权)
|
|
3
|
+
export { ScanError } from "./ScanError.js";
|
|
4
|
+
export const decodeImage = jest.fn(_input => Promise.resolve([]));
|
|
24
5
|
export const getCameraPermissionStatus = jest.fn(() => Promise.resolve('granted'));
|
|
25
6
|
export const requestCameraPermission = jest.fn(() => Promise.resolve('granted'));
|
|
26
|
-
|
|
27
|
-
// ── 组件 ──(渲染 null,避免触碰原生)
|
|
28
7
|
export const HmsScanView = () => null;
|
|
29
8
|
export const Scanner = () => null;
|
|
30
9
|
//# sourceMappingURL=mock.js.map
|
package/lib/module/mock.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["ScanError","decodeImage","jest","fn","_input","Promise","resolve","getCameraPermissionStatus","requestCameraPermission","HmsScanView","Scanner"],"sourceRoot":"../../src","sources":["mock.ts"],"mappings":";;AASA,SAASA,SAAS,QAAQ,gBAAa;AAcvC,OAAO,MAAMC,WAAW,GAAGC,IAAI,CAACC,EAAE,CAC/BC,MAAsC,IACrCC,OAAO,CAACC,OAAO,CAAC,EAAE,CACtB,CAAC;AACD,OAAO,MAAMC,yBAAyB,GAAGL,IAAI,CAACC,EAAE,CAC9C,MAAqCE,OAAO,CAACC,OAAO,CAAC,SAAS,CAChE,CAAC;AACD,OAAO,MAAME,uBAAuB,GAAGN,IAAI,CAACC,EAAE,CAC5C,MAAqCE,OAAO,CAACC,OAAO,CAAC,SAAS,CAChE,CAAC;AACD,OAAO,MAAMG,WAAiC,GAAGA,CAAA,KAAM,IAAI;AAC3D,OAAO,MAAMC,OAAyB,GAAGA,CAAA,KAAM,IAAI","ignoreList":[]}
|
|
@@ -1,28 +1,32 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
import NativeHmsScan from "./NativeHmsScan.js";
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
4
|
+
import { scanError } from "./errors.js";
|
|
5
|
+
import { ScanError } from "./ScanError.js";
|
|
6
|
+
async function permission(request) {
|
|
7
|
+
if (!NativeHmsScan) throw new ScanError({
|
|
8
|
+
reason: 'unavailable',
|
|
9
|
+
message: 'HMS Scan 原生模块未安装'
|
|
10
|
+
});
|
|
11
|
+
try {
|
|
12
|
+
const status = await (request ? NativeHmsScan.requestCameraPermission() : NativeHmsScan.getCameraPermissionStatus());
|
|
13
|
+
if (status === 'granted' || status === 'denied' || status === 'blocked' || status === 'undetermined') return status;
|
|
14
|
+
throw new ScanError({
|
|
15
|
+
reason: 'invalid_response',
|
|
16
|
+
message: '原生相机权限状态无法识别'
|
|
17
|
+
});
|
|
18
|
+
} catch (error) {
|
|
19
|
+
throw scanError(error, {
|
|
20
|
+
reason: 'unavailable',
|
|
21
|
+
message: '读取相机权限失败'
|
|
22
|
+
});
|
|
13
23
|
}
|
|
14
24
|
}
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
return normalize(await NativeHmsScan.getCameraPermissionStatus());
|
|
25
|
+
/** Reads the actual status without presenting a system permission prompt. */
|
|
26
|
+
export function getCameraPermissionStatus() {
|
|
27
|
+
return permission(false);
|
|
19
28
|
}
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
* 发起相机权限请求(必要时弹系统授权框),返回请求后的状态。
|
|
23
|
-
* 若用户已永久拒绝(blocked),需引导去系统设置开启。
|
|
24
|
-
*/
|
|
25
|
-
export async function requestCameraPermission() {
|
|
26
|
-
return normalize(await NativeHmsScan.requestCameraPermission());
|
|
29
|
+
export function requestCameraPermission() {
|
|
30
|
+
return permission(true);
|
|
27
31
|
}
|
|
28
32
|
//# sourceMappingURL=permissions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["NativeHmsScan","
|
|
1
|
+
{"version":3,"names":["NativeHmsScan","scanError","ScanError","permission","request","reason","message","status","requestCameraPermission","getCameraPermissionStatus","error"],"sourceRoot":"../../src","sources":["permissions.ts"],"mappings":";;AAAA,OAAOA,aAAa,MAAM,oBAAiB;AAC3C,SAASC,SAAS,QAAQ,aAAU;AACpC,SAASC,SAAS,QAAQ,gBAAa;AAGvC,eAAeC,UAAUA,CAACC,OAAgB,EAAiC;EACzE,IAAI,CAACJ,aAAa,EAChB,MAAM,IAAIE,SAAS,CAAC;IAClBG,MAAM,EAAE,aAAa;IACrBC,OAAO,EAAE;EACX,CAAC,CAAC;EACJ,IAAI;IACF,MAAMC,MAAM,GAAG,OAAOH,OAAO,GACzBJ,aAAa,CAACQ,uBAAuB,CAAC,CAAC,GACvCR,aAAa,CAACS,yBAAyB,CAAC,CAAC,CAAC;IAC9C,IACEF,MAAM,KAAK,SAAS,IACpBA,MAAM,KAAK,QAAQ,IACnBA,MAAM,KAAK,SAAS,IACpBA,MAAM,KAAK,cAAc,EAEzB,OAAOA,MAAM;IACf,MAAM,IAAIL,SAAS,CAAC;MAClBG,MAAM,EAAE,kBAAkB;MAC1BC,OAAO,EAAE;IACX,CAAC,CAAC;EACJ,CAAC,CAAC,OAAOI,KAAK,EAAE;IACd,MAAMT,SAAS,CAACS,KAAK,EAAE;MACrBL,MAAM,EAAE,aAAa;MACrBC,OAAO,EAAE;IACX,CAAC,CAAC;EACJ;AACF;AACA;AACA,OAAO,SAASG,yBAAyBA,CAAA,EAAkC;EACzE,OAAON,UAAU,CAAC,KAAK,CAAC;AAC1B;AACA,OAAO,SAASK,uBAAuBA,CAAA,EAAkC;EACvE,OAAOL,UAAU,CAAC,IAAI,CAAC;AACzB","ignoreList":[]}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { unsupportedScanError } from "./errors.js";
|
|
4
|
+
export async function getCameraPermissionStatus() {
|
|
5
|
+
throw unsupportedScanError();
|
|
6
|
+
}
|
|
7
|
+
export async function requestCameraPermission() {
|
|
8
|
+
throw unsupportedScanError();
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=permissions.web.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["unsupportedScanError","getCameraPermissionStatus","requestCameraPermission"],"sourceRoot":"../../src","sources":["permissions.web.ts"],"mappings":";;AAAA,SAASA,oBAAoB,QAAQ,aAAU;AAG/C,OAAO,eAAeC,yBAAyBA,CAAA,EAAkC;EAC/E,MAAMD,oBAAoB,CAAC,CAAC;AAC9B;AACA,OAAO,eAAeE,uBAAuBA,CAAA,EAAkC;EAC7E,MAAMF,oBAAoB,CAAC,CAAC;AAC9B","ignoreList":[]}
|
package/lib/module/types.js
CHANGED
|
@@ -1,48 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
// @unif/react-native-hms-scan —— 公共类型
|
|
5
|
-
//
|
|
6
|
-
// 这些是纯 JS/TS 类型与常量(不触碰原生),index 与 mock 都从这里导出。
|
|
7
|
-
// 码制 / 内容类型在原生侧(Android HmsScan.*_SCAN_TYPE / getScanTypeForm,
|
|
8
|
-
// iOS HMSScanFormatTypeCode / sceneType)已统一映射成下面的字符串枚举再回 JS。
|
|
9
|
-
// ──────────────────────────────────────────────────────────────
|
|
10
|
-
|
|
11
|
-
/** 统一码制枚举(两端归一)。 */
|
|
12
|
-
|
|
13
|
-
/** 所有可用码制(不含 UNKNOWN)。传给原生即"识别全部码制"。 */
|
|
14
|
-
export const ALL_BARCODE_FORMATS = ['QR_CODE', 'AZTEC', 'DATA_MATRIX', 'PDF417', 'CODABAR', 'CODE_39', 'CODE_93', 'CODE_128', 'EAN_8', 'EAN_13', 'UPC_A', 'UPC_E', 'ITF14', 'MULTI_FUNCTIONAL'];
|
|
15
|
-
|
|
16
|
-
/**
|
|
17
|
-
* 码内容语义类型(尽力归一)。
|
|
18
|
-
* Android 来自 HmsScan.getScanTypeForm(),iOS 来自 sceneType(精度有限,未知归 OTHER)。
|
|
19
|
-
*/
|
|
20
|
-
|
|
21
|
-
/** 取景框/解码命中的角点(图像坐标系,单位 px)。 */
|
|
22
|
-
|
|
23
|
-
/** 一次扫码/解码命中的结果。 */
|
|
24
|
-
|
|
25
|
-
/** decodeImage 选项。 */
|
|
26
|
-
|
|
27
|
-
/** `<HmsScanView>` / `<Scanner>` 通过回调上报的普通错误对象。 */
|
|
28
|
-
|
|
29
|
-
/** 相机权限状态。 */
|
|
30
|
-
|
|
31
|
-
/** 错误码。 */
|
|
32
|
-
|
|
33
|
-
/** 库统一抛出的错误类型。 */
|
|
34
|
-
export class HmsScanError extends Error {
|
|
35
|
-
constructor(code, message) {
|
|
36
|
-
super(message ?? code);
|
|
37
|
-
this.name = 'HmsScanError';
|
|
38
|
-
this.code = code;
|
|
39
|
-
// 兼容 TS 继承内建类的 instanceof
|
|
40
|
-
Object.setPrototypeOf(this, HmsScanError.prototype);
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
/**
|
|
45
|
-
* 业务层商品信息——`<Scanner>` 扫到条码后,由宿主通过 resolveProduct 解析返回,
|
|
46
|
-
* 用于聚焦款"浮层确认卡"展示。仅 name 必填,其余可缺省。
|
|
47
|
-
*/
|
|
3
|
+
export {};
|
|
48
4
|
//# sourceMappingURL=types.js.map
|
package/lib/module/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[
|
|
1
|
+
{"version":3,"names":[],"sourceRoot":"../../src","sources":["types.ts"],"mappings":"","ignoreList":[]}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { HmsScanViewProps } from './types';
|
|
2
|
+
export declare function HmsScanView({ formats, continuous, paused, torch, onScanResult, onScanError, onTorchState, ...viewProps }: HmsScanViewProps): import("react/jsx-runtime").JSX.Element;
|
|
3
|
+
//# sourceMappingURL=HmsScanView.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HmsScanView.d.ts","sourceRoot":"","sources":["../../../../src/HmsScanView/HmsScanView.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAEhD,wBAAgB,WAAW,CAAC,EAC1B,OAAO,EACP,UAAiB,EACjB,MAAc,EACd,KAAa,EACb,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,GAAG,SAAS,EACb,EAAE,gBAAgB,2CAiDlB"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { HmsScanViewProps } from './types';
|
|
2
|
+
export declare function HmsScanView({ onScanError, formats: _formats, paused: _paused, torch: _torch, continuous: _continuous, onScanResult: _onScanResult, onTorchState: _onTorchState, ...props }: HmsScanViewProps): import("react/jsx-runtime").JSX.Element;
|
|
3
|
+
//# sourceMappingURL=HmsScanView.web.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HmsScanView.web.d.ts","sourceRoot":"","sources":["../../../../src/HmsScanView/HmsScanView.web.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAEhD,wBAAgB,WAAW,CAAC,EAC1B,WAAW,EACX,OAAO,EAAE,QAAQ,EACjB,MAAM,EAAE,OAAO,EACf,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,WAAW,EACvB,YAAY,EAAE,aAAa,EAC3B,YAAY,EAAE,aAAa,EAC3B,GAAG,KAAK,EACT,EAAE,gBAAgB,2CAOlB"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { ViewProps } from 'react-native';
|
|
2
|
+
import type { RequestedScanFormat, ScanFailure, ScanResult, ScanTorchState } from '../types';
|
|
3
|
+
export interface HmsScanViewProps extends ViewProps {
|
|
4
|
+
formats?: readonly RequestedScanFormat[];
|
|
5
|
+
continuous?: boolean;
|
|
6
|
+
paused?: boolean;
|
|
7
|
+
torch?: boolean;
|
|
8
|
+
onScanResult?(results: readonly ScanResult[]): void;
|
|
9
|
+
onScanError?(error: Readonly<ScanFailure>): void;
|
|
10
|
+
onTorchState?(state: Readonly<ScanTorchState>): void;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/HmsScanView/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,EACV,mBAAmB,EACnB,WAAW,EACX,UAAU,EACV,cAAc,EACf,MAAM,UAAU,CAAC;AAElB,MAAM,WAAW,gBAAiB,SAAQ,SAAS;IACjD,OAAO,CAAC,EAAE,SAAS,mBAAmB,EAAE,CAAC;IACzC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,YAAY,CAAC,CAAC,OAAO,EAAE,SAAS,UAAU,EAAE,GAAG,IAAI,CAAC;IACpD,WAAW,CAAC,CAAC,KAAK,EAAE,QAAQ,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC;IACjD,YAAY,CAAC,CAAC,KAAK,EAAE,QAAQ,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC;CACtD"}
|
|
@@ -8,14 +8,16 @@ type ScanErrorEvent = Readonly<{
|
|
|
8
8
|
code: string;
|
|
9
9
|
message: string;
|
|
10
10
|
}>;
|
|
11
|
-
type
|
|
12
|
-
/** 环境是否暗到建议显示手电按钮(Android OnLightVisibleCallBack)。 */
|
|
11
|
+
type TorchStateEvent = Readonly<{
|
|
13
12
|
available: boolean;
|
|
13
|
+
hasAvailable: boolean;
|
|
14
|
+
lowLight: boolean;
|
|
15
|
+
hasLowLight: boolean;
|
|
14
16
|
/** 手电当前是否点亮。 */
|
|
15
17
|
on: boolean;
|
|
16
18
|
}>;
|
|
17
19
|
export interface NativeProps extends ViewProps {
|
|
18
|
-
/** 限定码制(逗号分隔的
|
|
20
|
+
/** 限定码制(逗号分隔的 ScanFormat),空串 = 全部。 */
|
|
19
21
|
formatsCsv?: WithDefault<string, ''>;
|
|
20
22
|
/** 连续扫码(命中后继续,不自动停)。 */
|
|
21
23
|
continuous?: WithDefault<boolean, true>;
|
|
@@ -25,7 +27,7 @@ export interface NativeProps extends ViewProps {
|
|
|
25
27
|
torch?: WithDefault<boolean, false>;
|
|
26
28
|
onScanResult?: DirectEventHandler<ScanResultEvent>;
|
|
27
29
|
onScanError?: DirectEventHandler<ScanErrorEvent>;
|
|
28
|
-
|
|
30
|
+
onTorchState?: DirectEventHandler<TorchStateEvent>;
|
|
29
31
|
}
|
|
30
32
|
declare const _default: import("react-native/Libraries/Utilities/codegenNativeComponent").NativeComponentType<NativeProps>;
|
|
31
33
|
export default _default;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HmsScanViewNativeComponent.d.ts","sourceRoot":"","sources":["../../../src/HmsScanViewNativeComponent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,EACV,kBAAkB,EAClB,WAAW,EACZ,MAAM,2CAA2C,CAAC;AAOnD,KAAK,eAAe,GAAG,QAAQ,CAAC;IAC9B,6BAA6B;IAC7B,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC,CAAC;AAEH,KAAK,cAAc,GAAG,QAAQ,CAAC;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC,CAAC;AAEH,KAAK,
|
|
1
|
+
{"version":3,"file":"HmsScanViewNativeComponent.d.ts","sourceRoot":"","sources":["../../../src/HmsScanViewNativeComponent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,EACV,kBAAkB,EAClB,WAAW,EACZ,MAAM,2CAA2C,CAAC;AAOnD,KAAK,eAAe,GAAG,QAAQ,CAAC;IAC9B,6BAA6B;IAC7B,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC,CAAC;AAEH,KAAK,cAAc,GAAG,QAAQ,CAAC;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC,CAAC;AAEH,KAAK,eAAe,GAAG,QAAQ,CAAC;IAC9B,SAAS,EAAE,OAAO,CAAC;IACnB,YAAY,EAAE,OAAO,CAAC;IACtB,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,EAAE,OAAO,CAAC;IACrB,gBAAgB;IAChB,EAAE,EAAE,OAAO,CAAC;CACb,CAAC,CAAC;AAEH,MAAM,WAAW,WAAY,SAAQ,SAAS;IAC5C,sCAAsC;IACtC,UAAU,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACrC,wBAAwB;IACxB,UAAU,CAAC,EAAE,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACxC,4BAA4B;IAC5B,MAAM,CAAC,EAAE,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACrC,mDAAmD;IACnD,KAAK,CAAC,EAAE,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAEpC,YAAY,CAAC,EAAE,kBAAkB,CAAC,eAAe,CAAC,CAAC;IACnD,WAAW,CAAC,EAAE,kBAAkB,CAAC,cAAc,CAAC,CAAC;IACjD,YAAY,CAAC,EAAE,kBAAkB,CAAC,eAAe,CAAC,CAAC;CACpD;;AAED,wBAAkE"}
|
|
@@ -2,10 +2,8 @@ import type { TurboModule } from 'react-native';
|
|
|
2
2
|
export interface Spec extends TurboModule {
|
|
3
3
|
/**
|
|
4
4
|
* 解码本地图片里的条码 / 二维码。
|
|
5
|
-
* @param uri
|
|
6
|
-
*
|
|
7
|
-
* 两端都不下载远程 URL,也不支持 ph:// / assets-library://。
|
|
8
|
-
* @param formatsCsv 限定码制(逗号分隔的 BarcodeFormat),空串 = 全部。
|
|
5
|
+
* @param uri 本地图片 file URI,由公共能力边界校验。
|
|
6
|
+
* @param formatsCsv 限定码制(逗号分隔的 ScanFormat),空串 = 全部。
|
|
9
7
|
* @returns JSON 编码的 ScanResult[](可能为空数组)。
|
|
10
8
|
*/
|
|
11
9
|
decodeImage(uri: string, formatsCsv: string): Promise<string>;
|
|
@@ -14,6 +12,6 @@ export interface Spec extends TurboModule {
|
|
|
14
12
|
/** 发起相机权限请求,返回请求后的状态字符串。 */
|
|
15
13
|
requestCameraPermission(): Promise<string>;
|
|
16
14
|
}
|
|
17
|
-
declare const _default: Spec;
|
|
15
|
+
declare const _default: Spec | null;
|
|
18
16
|
export default _default;
|
|
19
17
|
//# sourceMappingURL=NativeHmsScan.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NativeHmsScan.d.ts","sourceRoot":"","sources":["../../../src/NativeHmsScan.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAOhD,MAAM,WAAW,IAAK,SAAQ,WAAW;IACvC
|
|
1
|
+
{"version":3,"file":"NativeHmsScan.d.ts","sourceRoot":"","sources":["../../../src/NativeHmsScan.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAOhD,MAAM,WAAW,IAAK,SAAQ,WAAW;IACvC;;;;;OAKG;IACH,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAE9D,gEAAgE;IAChE,yBAAyB,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAE7C,4BAA4B;IAC5B,uBAAuB,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;CAC5C;;AAED,wBAAwD"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { ScanFailure } from './types';
|
|
2
|
+
export declare class ScanError extends Error implements ScanFailure {
|
|
3
|
+
readonly reason: ScanFailure['reason'];
|
|
4
|
+
readonly sourceCode?: string;
|
|
5
|
+
constructor(error: Readonly<ScanFailure>);
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=ScanError.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ScanError.d.ts","sourceRoot":"","sources":["../../../src/ScanError.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE3C,qBAAa,SAAU,SAAQ,KAAM,YAAW,WAAW;IACzD,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;IACvC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;gBACjB,KAAK,EAAE,QAAQ,CAAC,WAAW,CAAC;CAOzC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DeniedOverlay.d.ts","sourceRoot":"","sources":["../../../../src/Scanner/DeniedOverlay.tsx"],"names":[],"mappings":"AASA,UAAU,kBAAkB;IAC1B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,UAAU,EAAE,MAAM,IAAI,CAAC;CACxB;AAGD,wBAAgB,aAAa,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE,kBAAkB,
|
|
1
|
+
{"version":3,"file":"DeniedOverlay.d.ts","sourceRoot":"","sources":["../../../../src/Scanner/DeniedOverlay.tsx"],"names":[],"mappings":"AASA,UAAU,kBAAkB;IAC1B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,UAAU,EAAE,MAAM,IAAI,CAAC;CACxB;AAGD,wBAAgB,aAAa,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE,kBAAkB,2CAyBxE"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
interface ResultFailProps {
|
|
2
2
|
bottomInset: number;
|
|
3
|
+
failed?: boolean;
|
|
3
4
|
/** 重扫:回到取景重新扫描。(退出扫码页是外层工具栏「返回」的事。) */
|
|
4
5
|
onRescan: () => void;
|
|
5
6
|
}
|
|
6
|
-
export declare function ResultFail({ bottomInset, onRescan }: ResultFailProps): import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
export declare function ResultFail({ bottomInset, failed, onRescan }: ResultFailProps): import("react/jsx-runtime").JSX.Element;
|
|
7
8
|
export {};
|
|
8
9
|
//# sourceMappingURL=ResultFail.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ResultFail.d.ts","sourceRoot":"","sources":["../../../../src/Scanner/ResultFail.tsx"],"names":[],"mappings":"AAWA,UAAU,eAAe;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,uCAAuC;IACvC,QAAQ,EAAE,MAAM,IAAI,CAAC;CACtB;AAID,wBAAgB,UAAU,CAAC,EAAE,WAAW,EAAE,QAAQ,EAAE,EAAE,eAAe,
|
|
1
|
+
{"version":3,"file":"ResultFail.d.ts","sourceRoot":"","sources":["../../../../src/Scanner/ResultFail.tsx"],"names":[],"mappings":"AAWA,UAAU,eAAe;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,uCAAuC;IACvC,QAAQ,EAAE,MAAM,IAAI,CAAC;CACtB;AAID,wBAAgB,UAAU,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,eAAe,2CA0C5E"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { ResultFocusProps } from './types';
|
|
2
|
+
/** A raw result is selected here; interpreting it belongs to the consumer. */
|
|
3
|
+
export declare function ResultFocus({ result, bottomInset, onRescan, onConfirm, }: ResultFocusProps): import("react/jsx-runtime").JSX.Element;
|
|
4
|
+
//# sourceMappingURL=ResultFocus.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ResultFocus.d.ts","sourceRoot":"","sources":["../../../../../src/Scanner/ResultFocus/ResultFocus.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAGhD,8EAA8E;AAC9E,wBAAgB,WAAW,CAAC,EAC1B,MAAM,EACN,WAAW,EACX,QAAQ,EACR,SAAS,GACV,EAAE,gBAAgB,2CAyBlB"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { type ColorTokens } from '@unif/react-native-design';
|
|
2
|
+
export declare const styles: {
|
|
3
|
+
wrap: {
|
|
4
|
+
position: "absolute";
|
|
5
|
+
left: number;
|
|
6
|
+
right: number;
|
|
7
|
+
zIndex: number;
|
|
8
|
+
};
|
|
9
|
+
content: {
|
|
10
|
+
maxHeight: number;
|
|
11
|
+
marginVertical: number;
|
|
12
|
+
};
|
|
13
|
+
actions: {
|
|
14
|
+
flexDirection: "row";
|
|
15
|
+
columnGap: number;
|
|
16
|
+
};
|
|
17
|
+
};
|
|
18
|
+
export declare const makeStyles: (colors: ColorTokens) => {
|
|
19
|
+
badge: {
|
|
20
|
+
fontSize: number;
|
|
21
|
+
fontWeight: "600";
|
|
22
|
+
color: string;
|
|
23
|
+
};
|
|
24
|
+
format: {
|
|
25
|
+
fontSize: number;
|
|
26
|
+
color: string;
|
|
27
|
+
fontFamily: string;
|
|
28
|
+
marginTop: number;
|
|
29
|
+
};
|
|
30
|
+
value: {
|
|
31
|
+
fontSize: number;
|
|
32
|
+
lineHeight: number;
|
|
33
|
+
color: string;
|
|
34
|
+
};
|
|
35
|
+
};
|
|
36
|
+
//# sourceMappingURL=styles.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../../../src/Scanner/ResultFocus/styles.ts"],"names":[],"mappings":"AACA,OAAO,EAKL,KAAK,WAAW,EACjB,MAAM,2BAA2B,CAAC;AAEnC,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;CAIjB,CAAC;AACH,eAAO,MAAM,UAAU,GAAI,QAAQ,WAAW;;;;;;;;;;;;;;;;;CAU1C,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/Scanner/ResultFocus/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,IAAI,IAAI,CAAC;IACjB,SAAS,IAAI,IAAI,CAAC;CACnB"}
|
|
@@ -1,47 +1,4 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
|
|
3
|
-
/** 顶栏标题,默认 "扫一扫"。 */
|
|
4
|
-
title?: string;
|
|
5
|
-
/** 限定识别码制;不传 = 全部。 */
|
|
6
|
-
formats?: readonly BarcodeFormat[];
|
|
7
|
-
/** 取景态提示文案。 */
|
|
8
|
-
hintText?: string;
|
|
9
|
-
/** 顶部安全区(默认 54)。用 react-native-safe-area-context 时可传 insets.top。 */
|
|
10
|
-
topInset?: number;
|
|
11
|
-
/** 底部安全区(默认 34)。 */
|
|
12
|
-
bottomInset?: number;
|
|
13
|
-
/** 是否显示手电筒按钮,默认 true。手电由库内自管(Android 可用;iOS 为 best-effort,可在 iOS 上关掉)。 */
|
|
14
|
-
showTorch?: boolean;
|
|
15
|
-
/** 返回回调(退出扫码页,回到上一级);按钮在底部工具栏,与手电筒并排。 */
|
|
16
|
-
onClose?: () => void;
|
|
17
|
-
/** 扫码相机或权限检查出错时上报。 */
|
|
18
|
-
onScanError?: (error: ScanError) => void;
|
|
19
|
-
/**
|
|
20
|
-
* 扫到条码后由宿主解析商品信息(用于浮层确认卡)。
|
|
21
|
-
* 返回 null/undefined 视为"未识别",抛错亦然。不传则默认用扫到的原文当商品名。
|
|
22
|
-
*/
|
|
23
|
-
resolveProduct?: (result: ScanResult) => ScanProduct | null | undefined | Promise<ScanProduct | null | undefined>;
|
|
24
|
-
/** 用户点"确认":把结果带回上一级(宿主通常在此导航返回)。 */
|
|
25
|
-
onConfirm?: (product: ScanProduct, result: ScanResult) => void;
|
|
26
|
-
/**
|
|
27
|
-
* 自动确认:传 `onConfirm` 时,扫到并解析成功后**不显示结果卡**,直接触发
|
|
28
|
-
* `onConfirm(product, result)`;未传回调时仍显示结果卡。默认 `false`(显示结果卡,
|
|
29
|
-
* 由用户点"确定")。
|
|
30
|
-
* 适合"扫到即用、不需要二次确认"的场景。回调后相机暂停、不自动重扫——宿主通常在
|
|
31
|
-
* `onConfirm` 里导航离开;若需再扫由宿主控制(如重新挂载 `<Scanner>`)。
|
|
32
|
-
* 注:未识别(`resolveProduct` 返回 `null`/抛错)仍走失败态可重扫,不会误触发。
|
|
33
|
-
*/
|
|
34
|
-
autoConfirm?: boolean;
|
|
35
|
-
/**
|
|
36
|
-
* 点"相册":宿主用自己的图片选择器选图并返回本地 uri(取消则返回 null)。
|
|
37
|
-
* 库不内置图片选择器(遵循 RN 惯例):**传了才显示相册按钮**,不传则隐藏。
|
|
38
|
-
*/
|
|
39
|
-
pickImage?: () => Promise<string | null>;
|
|
40
|
-
}
|
|
41
|
-
/**
|
|
42
|
-
* 成品「扫一扫」界面(聚焦款)。底层 <HmsScanView> 出相机画面,取景框 / 工具栏 / 结果卡
|
|
43
|
-
* 全用 @unif/react-native-design 的主题令牌与组件绘制(统一风格),继承宿主主题与字号。
|
|
44
|
-
* 无外层 ThemeProvider 时采用 Design 默认主题。
|
|
45
|
-
*/
|
|
1
|
+
import type { ScannerProps } from './types';
|
|
2
|
+
/** Uses the current window's SafeAreaProvider, or measures a local one. */
|
|
46
3
|
export declare function Scanner(props: ScannerProps): import("react/jsx-runtime").JSX.Element;
|
|
47
4
|
//# sourceMappingURL=Scanner.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Scanner.d.ts","sourceRoot":"","sources":["../../../../src/Scanner/Scanner.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Scanner.d.ts","sourceRoot":"","sources":["../../../../src/Scanner/Scanner.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE5C,2EAA2E;AAC3E,wBAAgB,OAAO,CAAC,KAAK,EAAE,YAAY,2CAS1C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Scanner.web.d.ts","sourceRoot":"","sources":["../../../../src/Scanner/Scanner.web.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE5C,wBAAgB,OAAO,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,YAAY,2CAoBzD"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { ScannerProps } from './types';
|
|
2
|
+
export declare function ScannerInner({ title, hintText, formats, topInset, bottomInset, showTorch, autoConfirm, pickImage, onConfirm, onClose, onError, }: ScannerProps): import("react/jsx-runtime").JSX.Element;
|
|
3
|
+
//# sourceMappingURL=ScannerInner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ScannerInner.d.ts","sourceRoot":"","sources":["../../../../src/Scanner/ScannerInner.tsx"],"names":[],"mappings":"AA2BA,OAAO,KAAK,EAAS,YAAY,EAAkB,MAAM,SAAS,CAAC;AAEnE,wBAAgB,YAAY,CAAC,EAC3B,KAAa,EACb,QAA+B,EAC/B,OAAO,EACP,QAAQ,EACR,WAAW,EACX,SAAgB,EAChB,WAAmB,EACnB,SAAS,EACT,SAAS,EACT,OAAO,EACP,OAAO,GACR,EAAE,YAAY,2CA6Vd"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../../src/Scanner/styles.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,MAAM;;;;;CAEjB,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { RequestedScanFormat, ScannerImage, ScanFailure, ScanResult } from '../types';
|
|
2
|
+
export type Phase = 'init' | 'scan' | 'processing' | 'result' | 'empty' | 'imageError' | 'denied' | 'error' | 'done' | 'closed';
|
|
3
|
+
export interface ScannerProps {
|
|
4
|
+
title?: string;
|
|
5
|
+
hintText?: string;
|
|
6
|
+
formats?: readonly RequestedScanFormat[];
|
|
7
|
+
topInset?: number;
|
|
8
|
+
bottomInset?: number;
|
|
9
|
+
showTorch?: boolean;
|
|
10
|
+
autoConfirm?: boolean;
|
|
11
|
+
pickImage?(): Promise<ScannerImage | null>;
|
|
12
|
+
onConfirm(result: Readonly<ScanResult>): void;
|
|
13
|
+
onClose?(): void;
|
|
14
|
+
onError?(error: Readonly<ScanFailure>): void;
|
|
15
|
+
}
|
|
16
|
+
export interface SelectedResult {
|
|
17
|
+
result: Readonly<ScanResult>;
|
|
18
|
+
delivered: boolean;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/Scanner/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EACnB,YAAY,EACZ,WAAW,EACX,UAAU,EACX,MAAM,UAAU,CAAC;AAElB,MAAM,MAAM,KAAK,GACb,MAAM,GACN,MAAM,GACN,YAAY,GACZ,QAAQ,GACR,OAAO,GACP,YAAY,GACZ,QAAQ,GACR,OAAO,GACP,MAAM,GACN,QAAQ,CAAC;AACb,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,SAAS,mBAAmB,EAAE,CAAC;IACzC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,IAAI,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;IAC3C,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC;IAC9C,OAAO,CAAC,IAAI,IAAI,CAAC;IACjB,OAAO,CAAC,CAAC,KAAK,EAAE,QAAQ,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC;CAC9C;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC;IAC7B,SAAS,EAAE,OAAO,CAAC;CACpB"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { ScanFailure } from './types';
|
|
2
|
+
/** The one source for public scan formats and input validation. */
|
|
3
|
+
export declare const SCAN_FORMATS: readonly ["QR_CODE", "AZTEC", "DATA_MATRIX", "PDF417", "CODABAR", "CODE_39", "CODE_93", "CODE_128", "EAN_8", "EAN_13", "UPC_A", "UPC_E", "ITF14", "MULTI_FUNCTIONAL", "UNKNOWN"];
|
|
4
|
+
export declare const SCAN_CONTENT_TYPES: readonly ["TEXT", "URL", "EMAIL", "PHONE", "SMS", "WIFI", "CONTACT", "EVENT", "LOCATION", "DRIVER", "ISBN", "ARTICLE", "OTHER"];
|
|
5
|
+
export declare const SCAN_FORMAT_SET: ReadonlySet<string>;
|
|
6
|
+
export declare const SCAN_CONTENT_TYPE_SET: ReadonlySet<string>;
|
|
7
|
+
export declare const SCAN_ERROR_REASONS: Readonly<Record<string, ScanFailure['reason']>>;
|
|
8
|
+
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE3C,mEAAmE;AACnE,eAAO,MAAM,YAAY,kLAgBf,CAAC;AACX,eAAO,MAAM,kBAAkB,iIAcrB,CAAC;AAEX,eAAO,MAAM,eAAe,EAAE,WAAW,CAAC,MAAM,CAAyB,CAAC;AAC1E,eAAO,MAAM,qBAAqB,EAAE,WAAW,CAAC,MAAM,CAErD,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,QAAQ,CACvC,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC,CAYtC,CAAC"}
|